Ignore:
Timestamp:
May 22, 2019, 10:03:37 PM (5 years ago)
Author:
coas-nagasima
Message:

ビルドが通るよう更新

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 to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project
    77#--
    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#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
    5338#++
    5439
    55 # mikan through plugin: namespace が考æ
    56 ®ã•ã‚Œã¦ã„ない
    57 
    58 #==  スループラグインのå
    59 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹ã€€ã‹ã¤ (何もせず)スルーするセルを挿å
    60 ¥ã™ã‚‹ã‚¹ãƒ«ãƒ¼ãƒ—ラグイン
    61 #    スループラグインは ThroughPlugin の子クラスとして定義する
     40# mikan through plugin: namespace が考慮されていない
     41
     42#==  スループラグインの共通の親クラス かつ (何もせず)スルーするセルを挿入するスループラグイン
     43#    スループラグインは ThroughPlugin の子クラスとして定義する
    6244class 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 が生成したセルタイプのリスト
    9668  @@generated_celltype = {}
    9769
    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 の項を参照
    11481  def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell )
    11582    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                      # 呼び先のセル
    12186    @next_cell_port_name = next_cell_port_name
    12287    @next_cell_port_subscript = next_cell_port_subscript
     
    12792    @celltype = celltype
    12893    @plugin_arg_str = plugin_arg
    129     @plugin_arg_list = {}                       # プラグイン引数をパースした結果のハッシュ変数
     94    @plugin_arg_list = {}                       # プラグイン引数をパースした結果のハッシュ変数
    13095    @caller_cell     = caller_cell
    131     Join.set_through_info self                  # 引数で渡らない(後から追加された)ものは set_through_info で設定される
     96    Join.set_through_info self                  # 引数で渡らない(後から追加された)ものは set_through_info で設定される
    13297    print( "#{self.class.name}.new( '#{cell_name}', '#{plugin_arg}', '#{next_cell.get_name}', '#{next_cell_port_name}', #{celltype.get_name} )\n" )
    13398  end
    13499
    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 で呼び出される
    143106  def set_through_info( start_region, end_region, through_type, join, callee_cell, count )
    144107    @start_region = start_region
     
    149112    @count = count
    150113
    151     # preferred_region の設定
     114    # preferred_region の設定
    152115    case through_type
    153116    when :IN_THROUGH, :THROUGH
     
    160123  end
    161124
    162   #===  セルの名前を得る
     125  #===  セルの名前を得る
    163126  def get_cell_name
    164127    @cell_name
    165128  end
    166129
    167   #=== NamespacePath を得る
    168   # 生成するセルの namespace path を生成する
     130  #=== NamespacePath を得る
     131  # 生成するセルの namespace path を生成する
    169132  def get_cell_namespace_path
    170133#    nsp = @region.get_namespace.get_namespace_path
     
    173136  end
    174137
    175   #===  生成されたセルの受け口の名前を得る
     138  #===  生成されたセルの受け口の名前を得る
    176139  def get_through_entry_port_name
    177140    @entry_port_name
    178141  end
    179142
    180   #===  生成されたセルの受け口é
    181 åˆ—添数を得る
     143  #===  生成されたセルの受け口配列添数を得る
    182144  def get_through_entry_port_subscript
    183145    @entry_port_subscript
    184146  end
    185147
    186   #===  宣言コードの生成
    187   #      typedef, signature, celltype など(cell 以外)のコードを生成
    188   #          重複して生成してはならない(すでに生成されている場合は出力しないこと)
    189   #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     148  #===  宣言コードの生成
     149  #      typedef, signature, celltype など(cell 以外)のコードを生成
     150  #          重複して生成してはならない(すでに生成されている場合は出力しないこと)
     151  #file::        FILE       生成するファイル
    190152  def gen_plugin_decl_code( file )
    191153
    192     # このセルタイプ(同じシグニチャ)は既に生成されているか?
     154    # このセルタイプ(同じシグニチャ)は既に生成されているか?
    193155    if @@generated_celltype[ @ct_name ] == nil then
    194156      @@generated_celltype[ @ct_name ] = [ self ]
     
    235197  end
    236198
    237   #=== CDL ファイルの生成
    238   #file::     FILE    生成するファイル
     199  #=== CDL ファイルの生成
     200  #file::     FILE    生成するファイル
    239201  def gen_cdl_file( file )
    240202    gen_plugin_decl_code( file )
     
    242204  end
    243205
    244   #===  セルコードの生成
    245   #     through 指定により生じるセルコード(CDL)を生成する
    246   #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     206  #===  セルコードの生成
     207  #     through 指定により生じるセルコード(CDL)を生成する
     208  #file::        FILE       生成するファイル
    247209  def gen_through_cell_code( file )
    248210
     
    259221  end
    260222
    261   #=== 後ろのコードを生成
    262   #プラグインの後ろのコード (CDL) を生成
     223  #=== 後ろのコードを生成
     224  #プラグインの後ろのコード (CDL) を生成
    263225  #file:: File:
    264226  def self.gen_post_code( file )
    265     # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
     227    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
    266228    # file.print "/* '#{self.class.name}' post code */\n"
    267229  end
    268230
    269   #===  受け口関数の本体(C言語)を生成する
    270   #     é€šå¸¸ã§ã‚れば、ジェネレータは受け口関数のテンプレートを生成する
    271   #     ãƒ—ラグインの場合、変更するå¿
    272 è¦ã®ãªã„セルタイプコードを生成する
    273   #file::           FILE        出力å
    274 ˆãƒ•ã‚¡ã‚¤ãƒ«
     231  #===  受け口関数の本体(C言語)を生成する
     232  #     通常であれば、ジェネレータは受け口関数のテンプレートを生成する
     233  #     プラグインの場合、変更する必要のないセルタイプコードを生成する
     234  #file::           FILE        出力先ファイル
    275235  #b_singleton::    bool        true if singleton
    276236  #ct_name::        Symbol
     
    297257    p_cellcb = #{global_ct_name}_GET_CELLCB(idx);
    298258  }else{
    299      /* エラー処理コードをここに記述 */
     259     /* エラー処理コードをここに記述 */
    300260  }
    301261
     
    330290  end
    331291
    332   #=== Through プラグインの引数の名前を置換する
     292  #=== Through プラグインの引数の名前を置換する
    333293  def check_plugin_arg( ident, rhs )
    334294    rhs = subst_name rhs
     
    336296  end
    337297
    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  #   $$             … $ に置換
    358313  def subst_name( str )
    359     # セル名の置換
     314    # セル名の置換
    360315    str = str.gsub( /(^|[^\$])\$source\$/, "\\1#{@caller_cell.get_name}" )
    361316    str = str.gsub( /(^|[^\$])\$destination\$/, "\\1#{@callee_cell.get_name}" )
     
    364319    str = str.gsub( /(^|[^\$])\$next\$/, "\\1#{@next_cell.get_name}" )
    365320    str = str.gsub( /(^|[^\$])\$NEXT\$/, "\\1#{@next_cell.get_global_name}" )
    366     # region 名の置換
     321    # region 名の置換
    367322    str = str.gsub( /(^|[^\$])\$start_region\$/, "\\1#{@start_region.get_global_name}" )
    368323    str = str.gsub( /(^|[^\$])\$end_region\$/, "\\1#{@end_region.get_global_name}" )
     
    370325    str = str.gsub( /(^|[^\$])\$count\$/, "\\1#{@count}" )
    371326
    372     str = str.gsub( /\$\$/, "\$" )                       # $$ を $ に置換
     327    str = str.gsub( /\$\$/, "\$" )                       # $$ を $ に置換
    373328
    374329    return str
Note: See TracChangeset for help on using the changeset viewer.