- Timestamp:
- May 22, 2019, 10:03:37 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/ThroughPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ 53 38 #++ 54 39 55 # mikan through plugin: namespace ãèæ 56 ®ããã¦ããªã 57 58 #== ã¹ã«ã¼ãã©ã°ã¤ã³ã®å 59 ±éã®è¦ªã¯ã©ã¹ãã㤠ï¼ä½ãããï¼ã¹ã«ã¼ããã»ã«ãæ¿å 60 ¥ããã¹ã«ã¼ãã©ã°ã¤ã³ 61 # ã¹ã«ã¼ãã©ã°ã¤ã³ã¯ ThroughPlugin ã®åã¯ã©ã¹ã¨ãã¦å®ç¾©ãã 40 # mikan through plugin: namespace が考慮されていない 41 42 #== スループラグインの共通の親クラス かつ (何もせず)スルーするセルを挿入するスループラグイン 43 # スループラグインは ThroughPlugin の子クラスとして定義する 62 44 class ThroughPlugin < Plugin 63 #@cell_name:: Symbol çæããã»ã«åï¼è¤æ°ã»ã«ãçæããå ´åãåãå£å´ã®ã»ã«ï¼ 64 #@plugin_arg_str:: string through ã§æå®ãããå¼æ° 65 #@next_cell:: Cell å¼ã³å£ãçµåããã»ã« 66 #@next_cell_port_name:: Symbol å¼ã³å£ãçµåããåå£ã®åå 67 #@next_cell_port_subscript::Nil|Integer å¼ã³å£ãçµåããåå£ã®é 68 åæ·»æ°ï¼åãå£é 69 åã§ãªãå ´å nil 70 #@signature:: Signature ã·ã°ãã㣠71 #@celltype:: Celltype å¼ã³å 72 ã®ã»ã«ã®ã»ã«ã¿ã¤ã. through ãé£æ¥ããå ´åãæçµçãªå¼ã³å 73 ã®ã»ã«ã®ã»ã«ã¿ã¤ã 74 #@entry_port_name::Symbol çæããã»ã«ã®åãå£å "eThroughEntry" 75 #@call_port_name:: Symbol çæããã»ã«ã®å¼ã³å£å "cCall" 76 #@ct_name:: Symbol çæããã»ã«ã®ã»ã«ã¿ã¤ãå "t#{self.class.name}_#{@signature.get_global_name}" 77 #@plugin_arg_list:: Hash ãã©ã°ã¤ã³å¼æ°ããã¼ã¹ããçµæã®ããã·ã¥å¤æ° 78 #@caller_cell:: Cell å¼ã³å 79 ã®ã»ã«ï¼through ãã©ã°ã¤ã³ãé£æ¥ããå ´åã§ã¯ãæãå¼ã³å 80 ã®ã»ã«ï¼($source$) 81 # through ãã©ã°ã¤ã³ãåæµããã±ã¼ã¹ã§ã¯ã1ã¤ç®ã®å¼ã³å 82 ã»ã«ã®ã¿å¼æ°ã¨ãã¦ä¸ãããã 83 # å¾ã£ã¦ TracePlugin ã®å¼ã³å 84 ã®å¤å¥ã«å©ç¨ããå ´åã¯ãç°ãªãå¼ã³å 85 ããå¼ã°ããå¯è½æ§ããããã¨ã«æ³¨æããªãã¦ã¯ãªããªã 86 #@callee_cell:: Cell å¼ã³å 87 ã®ã»ã«($destination$) 88 #@plugin_arg_check_proc_tab:: [string => Proc] ãã©ã°ã¤ã³å¼æ°åâãã§ãã¯é¢æ° 89 # 以ä¸ã®å¤æ°ã¯ãinitialize ã§ã¯ãªããå¾ããè¨å®ããã 90 #@start_@region:: Region å§ã¾ãã®ãªã¼ã¸ã§ã³ï¼ caller_cell ã®ãªã¼ã¸ã§ã³ã¨ã¯ç°ãªãå¯è½æ§ããã ($start_region$) 91 #@end_region:: Region çµããã®ãªã¼ã¸ã§ã³ï¼ next_cell ã®ãªã¼ã¸ã§ã³ã¨ã¯ç°ãªãå¯è½æ§ããã ($end_region$) 92 #@region:: Region @start_region 㨠@end_region ã®ããããã§ãcell ãç½®ãã®ã好ã¾ãããªã¼ã¸ã§ã³ ($preferred_region$) 93 #@through_type:: Symbol :THROUGH, :TO_THROUGH, :IN_THROUGH, :OUT_THROUGH ã®ãããã 94 95 # ãã® Plugin ãçæããã»ã«ã¿ã¤ãã®ãªã¹ã 45 #@cell_name:: Symbol 生成するセル名(複数セルを生成する場合、受け口側のセル) 46 #@plugin_arg_str:: string through で指定された引数 47 #@next_cell:: Cell 呼び口を結合するセル 48 #@next_cell_port_name:: Symbol 呼び口を結合する受口の名前 49 #@next_cell_port_subscript::Nil|Integer 呼び口を結合する受口の配列添数.受け口配列でない場合 nil 50 #@signature:: Signature シグニチャ 51 #@celltype:: Celltype 呼び先のセルのセルタイプ. through が連接する場合、最終的な呼び先のセルのセルタイプ 52 #@entry_port_name::Symbol 生成するセルの受け口名 "eThroughEntry" 53 #@call_port_name:: Symbol 生成するセルの呼び口名 "cCall" 54 #@ct_name:: Symbol 生成するセルのセルタイプ名 "t#{self.class.name}_#{@signature.get_global_name}" 55 #@plugin_arg_list:: Hash プラグイン引数をパースした結果のハッシュ変数 56 #@caller_cell:: Cell 呼び元のセル.through プラグインが連接する場合では、最も呼び元のセル.($source$) 57 # through プラグインが合流するケースでは、1つ目の呼び元セルのみ引数として与えられる 58 # 従って TracePlugin の呼び元の判別に利用する場合は、異なる呼び元から呼ばれる可能性があることに注意しなくてはならない 59 #@callee_cell:: Cell 呼び先のセル($destination$) 60 #@plugin_arg_check_proc_tab:: [string => Proc] プラグイン引数名⇒チェック関数 61 # 以下の変数は、initialize ではなく、後から設定される 62 #@start_@region:: Region 始まりのリージョン: caller_cell のリージョンとは異なる可能性がある ($start_region$) 63 #@end_region:: Region 終わりのリージョン: next_cell のリージョンとは異なる可能性がある ($end_region$) 64 #@region:: Region @start_region と @end_region のいずれかで、cell を置くのが好ましいリージョン ($preferred_region$) 65 #@through_type:: Symbol :THROUGH, :TO_THROUGH, :IN_THROUGH, :OUT_THROUGH のいずれか 66 67 # この Plugin が生成したセルタイプのリスト 96 68 @@generated_celltype = {} 97 69 98 #=== ThroughPlugin ã®åæå 99 # through ãæå®ãããæç¹ã§çæãè¡ããã 100 # åæåã§ã¯ãæå®ãããå¼æ°ãè¨é²ããã«çãã 101 #cell_name:: Symbol çæãã¹ãã»ã«åï¼åå£å´ï¼ 102 #plugin_arg:: string through ã§æå®ãããå¼æ° 103 #next_cell:: Cell å¼ã³å£ãæ¥ç¶ããã»ã« 104 #next_cell_port_name:: Symbol å¼ã³å£ãæ¥ç¶ããåå£ã®åå 105 #next_cell_port_subscript:: Nil|Integer å¼ã³å£ãæ¥ç¶ããåå£é 106 åæ·»æ° 107 #signature:: Signature ã·ã°ãã㣠108 #celltype:: Celltype ã»ã«ã¿ã¤ã (å¼ã³å 109 ã®ã»ã«ã®ã»ã«ã¿ã¤ã) 110 #caller_cell:: Cell å¼ã³å 111 ã®ã»ã«ï¼@caller_cell ã®é 112 ãåç 113 § 70 #=== ThroughPlugin の初期化 71 # through が指定された時点で生成が行われる 72 # 初期化では、指定された引数を記録するに留める 73 #cell_name:: Symbol 生成すべきセル名(受口側) 74 #plugin_arg:: string through で指定された引数 75 #next_cell:: Cell 呼び口を接続するセル 76 #next_cell_port_name:: Symbol 呼び口を接続する受口の名前 77 #next_cell_port_subscript:: Nil|Integer 呼び口を接続する受口配列添数 78 #signature:: Signature シグニチャ 79 #celltype:: Celltype セルタイプ (呼び先のセルのセルタイプ) 80 #caller_cell:: Cell 呼び元のセル.@caller_cell の項を参照 114 81 def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell ) 115 82 super() 116 @cell_name = cell_name # çæãã¹ãã»ã«åï¼åãå£å´ã®ã»ã«åï¼ 117 # ãã®å¼ã³å 118 ã«å¥ã»ã«ãçæããå ´åããã®ååãæ¥é è¾ã¨ãã¹ã 119 @next_cell = next_cell # å¼ã³å 120 ã®ã»ã« 83 @cell_name = cell_name # 生成すべきセル名(受け口側のセル名) 84 # この呼び先に別セルを生成する場合、この名前を接頭辞とすべき 85 @next_cell = next_cell # 呼び先のセル 121 86 @next_cell_port_name = next_cell_port_name 122 87 @next_cell_port_subscript = next_cell_port_subscript … … 127 92 @celltype = celltype 128 93 @plugin_arg_str = plugin_arg 129 @plugin_arg_list = {} # ãã©ã°ã¤ã³å¼æ°ããã¼ã¹ããçµæã®ããã·ã¥å¤æ°94 @plugin_arg_list = {} # プラグイン引数をパースした結果のハッシュ変数 130 95 @caller_cell = caller_cell 131 Join.set_through_info self # å¼æ°ã§æ¸¡ããªã(å¾ãã追å ããã)ãã®ã¯ set_through_info ã§è¨å®ããã96 Join.set_through_info self # 引数で渡らない(後から追加された)ものは set_through_info で設定される 132 97 print( "#{self.class.name}.new( '#{cell_name}', '#{plugin_arg}', '#{next_cell.get_name}', '#{next_cell_port_name}', #{celltype.get_name} )\n" ) 133 98 end 134 99 135 #=== æ 136 å ±ãè¨å®ãã 137 # å 138 ±æãã£ã³ãã«ã®å ´å caller_cell, next_cell ã®ãããã® region ã§ããªãã±ã¼ã¹ããã 139 # å¾ãã追å ããã®ã§ initialize ã®å¼æ°ã§ã¯ãªããå¥ã¡ã½ããã§è¨å® 140 # ãã®ã¡ã½ããã¯ããªã¼ãã¼ã©ã¤ãããªãã§ãã ãã 141 # Join 㨠ThrougPlugin ã®éã®é£çµ¡ç¨ã§ãä»å¾ã¨ãå¼æ°ã追å ãããå¯è½æ§ããããã 142 # ãã®ã¡ã½ãã㯠V1.C.0.34 ã§ä½ç½®ã移åãããThroughPlugin#initialize ã§å¼ã³åºããã 100 #=== 情報を設定する 101 # 共有チャンネルの場合 caller_cell, next_cell のいずれの region でもないケースがある 102 # 後から追加したので initialize の引数ではなく、別メソッドで設定 103 # このメソッドは、オーバーライドしないでください 104 # Join と ThrougPlugin の間の連絡用で、今後とも引数が追加される可能性があるため 105 # このメソッドは V1.C.0.34 で位置が移動され、ThroughPlugin#initialize で呼び出される 143 106 def set_through_info( start_region, end_region, through_type, join, callee_cell, count ) 144 107 @start_region = start_region … … 149 112 @count = count 150 113 151 # preferred_region ã®è¨å®114 # preferred_region の設定 152 115 case through_type 153 116 when :IN_THROUGH, :THROUGH … … 160 123 end 161 124 162 #=== ã»ã«ã®ååãå¾ã125 #=== セルの名前を得る 163 126 def get_cell_name 164 127 @cell_name 165 128 end 166 129 167 #=== NamespacePath ãå¾ã168 # çæããã»ã«ã® namespace path ãçæãã130 #=== NamespacePath を得る 131 # 生成するセルの namespace path を生成する 169 132 def get_cell_namespace_path 170 133 # nsp = @region.get_namespace.get_namespace_path … … 173 136 end 174 137 175 #=== çæãããã»ã«ã®åãå£ã®ååãå¾ã138 #=== 生成されたセルの受け口の名前を得る 176 139 def get_through_entry_port_name 177 140 @entry_port_name 178 141 end 179 142 180 #=== çæãããã»ã«ã®åãå£é 181 åæ·»æ°ãå¾ã 143 #=== 生成されたセルの受け口配列添数を得る 182 144 def get_through_entry_port_subscript 183 145 @entry_port_subscript 184 146 end 185 147 186 #=== 宣è¨ã³ã¼ãã®çæ187 # typedef, signature, celltype ãªã©ï¼cell 以å¤ï¼ã®ã³ã¼ããçæ188 # éè¤ãã¦çæãã¦ã¯ãªããªãï¼ãã§ã«çæããã¦ããå ´åã¯åºåããªããã¨ï¼189 #file:: FILE çæãããã¡ã¤ã«148 #=== 宣言コードの生成 149 # typedef, signature, celltype など(cell 以外)のコードを生成 150 # 重複して生成してはならない(すでに生成されている場合は出力しないこと) 151 #file:: FILE 生成するファイル 190 152 def gen_plugin_decl_code( file ) 191 153 192 # ãã®ã»ã«ã¿ã¤ãï¼åãã·ã°ããã£ï¼ã¯æ¢ã«çæããã¦ãããï¼154 # このセルタイプ(同じシグニチャ)は既に生成されているか? 193 155 if @@generated_celltype[ @ct_name ] == nil then 194 156 @@generated_celltype[ @ct_name ] = [ self ] … … 235 197 end 236 198 237 #=== CDL ãã¡ã¤ã«ã®çæ238 #file:: FILE çæãããã¡ã¤ã«199 #=== CDL ファイルの生成 200 #file:: FILE 生成するファイル 239 201 def gen_cdl_file( file ) 240 202 gen_plugin_decl_code( file ) … … 242 204 end 243 205 244 #=== ã»ã«ã³ã¼ãã®çæ245 # through æå®ã«ããçããã»ã«ã³ã¼ã(CDL)ãçæãã246 #file:: FILE çæãããã¡ã¤ã«206 #=== セルコードの生成 207 # through 指定により生じるセルコード(CDL)を生成する 208 #file:: FILE 生成するファイル 247 209 def gen_through_cell_code( file ) 248 210 … … 259 221 end 260 222 261 #=== å¾ãã®ã³ã¼ããçæ262 # ãã©ã°ã¤ã³ã®å¾ãã®ã³ã¼ã (CDL) ãçæ223 #=== 後ろのコードを生成 224 #プラグインの後ろのコード (CDL) を生成 263 225 #file:: File: 264 226 def self.gen_post_code( file ) 265 # è¤æ°ã®ãã©ã°ã¤ã³ã® post_code ãä¸ã¤ã®ãã¡ã¤ã«ã«å«ã¾ããããã以ä¸ã®ãããªè¦åºããã¤ãããã¨227 # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること 266 228 # file.print "/* '#{self.class.name}' post code */\n" 267 229 end 268 230 269 #=== åãå£é¢æ°ã®æ¬ä½(Cè¨èª)ãçæãã 270 # é常ã§ããã°ãã¸ã§ãã¬ã¼ã¿ã¯åãå£é¢æ°ã®ãã³ãã¬ã¼ããçæãã 271 # ãã©ã°ã¤ã³ã®å ´åãå¤æ´ããå¿ 272 è¦ã®ãªãã»ã«ã¿ã¤ãã³ã¼ããçæãã 273 #file:: FILE åºåå 274 ãã¡ã¤ã« 231 #=== 受け口関数の本体(C言語)を生成する 232 # 通常であれば、ジェネレータは受け口関数のテンプレートを生成する 233 # プラグインの場合、変更する必要のないセルタイプコードを生成する 234 #file:: FILE 出力先ファイル 275 235 #b_singleton:: bool true if singleton 276 236 #ct_name:: Symbol … … 297 257 p_cellcb = #{global_ct_name}_GET_CELLCB(idx); 298 258 }else{ 299 /* ã¨ã©ã¼å¦çã³ã¼ããããã«è¨è¿°*/259 /* エラー処理コードをここに記述 */ 300 260 } 301 261 … … 330 290 end 331 291 332 #=== Through ãã©ã°ã¤ã³ã®å¼æ°ã®ååãç½®æãã292 #=== Through プラグインの引数の名前を置換する 333 293 def check_plugin_arg( ident, rhs ) 334 294 rhs = subst_name rhs … … 336 296 end 337 297 338 #=== ThroughPlugin#ååã®ç½®æ 339 # ãã©ã°ã¤ã³ãªãã·ã§ã³å¼æ°å 340 ã®æååãç½®æãã 341 # $source$ ⦠å¼ã³å 342 ã®ã»ã«å 343 # $destination$ ⦠å¼ã³å 344 ã®ã»ã«å 345 # $SOURCE$ ⦠å¼ã³å 346 ã®ã»ã«å (ãªã¼ã¸ã§ã³åã '_' ã§é£çµãã global_name) 347 # $DESTINATION$ ⦠å¼ã³å 348 ã®ã»ã«å (ãªã¼ã¸ã§ã³åã '_' ã§é£çµãã global_name) 349 # $next$ ⦠次ã®ã»ã«å 350 # è¤æ°ã® through ãã¤ãªãã£ã¦ããå ´åãããå¾ãã«æ¥ããã® 351 # $NEXT$ ⦠次ã®ã»ã«å (ãªã¼ã¸ã§ã³åã '_' ã§é£çµãã global_name) 352 # è¤æ°ã® through ãã¤ãªãã£ã¦ããå ´åãããå¾ãã«æ¥ããã® 353 # $start_region$ ⦠$source$ ã®ã»ã«ã®åå¨ãã region (global_name) 354 # $end_region$ ⦠$destination$ ã®ã»ã«ã®åå¨ãã region (global_name) 355 # $preferred_region$ ⦠é©å㪠region (global_name), start_region ã¾ã㯠end_region 356 # $count$ ⦠region éã® through ã®é©ç¨æ° 357 # $$ ⦠$ ã«ç½®æ 298 #=== ThroughPlugin#名前の置換 299 # プラグインオプション引数内の文字列を置換する 300 # $source$ … 呼び元のセル名 301 # $destination$ … 呼び先のセル名 302 # $SOURCE$ … 呼び元のセル名 (リージョン名を '_' で連結した global_name) 303 # $DESTINATION$ … 呼び先のセル名 (リージョン名を '_' で連結した global_name) 304 # $next$ … 次のセル名 305 # 複数の through がつながっている場合、すぐ後ろに来るもの 306 # $NEXT$ … 次のセル名 (リージョン名を '_' で連結した global_name) 307 # 複数の through がつながっている場合、すぐ後ろに来るもの 308 # $start_region$ … $source$ のセルの存在する region (global_name) 309 # $end_region$ … $destination$ のセルの存在する region (global_name) 310 # $preferred_region$ … 適切な region (global_name), start_region または end_region 311 # $count$ … region 間の through の適用数 312 # $$ … $ に置換 358 313 def subst_name( str ) 359 # ã»ã«åã®ç½®æ314 # セル名の置換 360 315 str = str.gsub( /(^|[^\$])\$source\$/, "\\1#{@caller_cell.get_name}" ) 361 316 str = str.gsub( /(^|[^\$])\$destination\$/, "\\1#{@callee_cell.get_name}" ) … … 364 319 str = str.gsub( /(^|[^\$])\$next\$/, "\\1#{@next_cell.get_name}" ) 365 320 str = str.gsub( /(^|[^\$])\$NEXT\$/, "\\1#{@next_cell.get_global_name}" ) 366 # region åã®ç½®æ321 # region 名の置換 367 322 str = str.gsub( /(^|[^\$])\$start_region\$/, "\\1#{@start_region.get_global_name}" ) 368 323 str = str.gsub( /(^|[^\$])\$end_region\$/, "\\1#{@end_region.get_global_name}" ) … … 370 325 str = str.gsub( /(^|[^\$])\$count\$/, "\\1#{@count}" ) 371 326 372 str = str.gsub( /\$\$/, "\$" ) # $$ ã $ ã«ç½®æ327 str = str.gsub( /\$\$/, "\$" ) # $$ を $ に置換 373 328 374 329 return str -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.