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

ビルドが通るよう更新

Location:
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib
Files:
88 edited

Legend:

Unmodified
Added
Removed
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/core/C_parser.tab.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    107107#               b_asm   = false
    108108
    109                 # euc のコメントを utf8 として扱うと、コメントの終わりを誤る問題の対策
     109                # euc のコメントを utf8 として扱うと、コメントの終わりを誤る問題の対策
    110110                TECS_LANG::set_kcode_binary
    111111
    112                 # 800U, 0xffLL など (整数リテラルにå
    113 ±é€šã®ä¿®é£¾å­)
     112                # 800U, 0xffLL など (整数リテラルに共通の修飾子)
    114113                integer_qualifier = "([Uu][Ll][Ll]|[Uu][Ll]|[Uu]|[Ll][Ll]|[Ll])?"
    115114
     
    126125                                if comment
    127126                                        case line
    128                                         # コメント終了
     127                                        # コメント終了
    129128                                        when /\A\*\//
    130129                                                comment = false
     
    134133                                else
    135134                                        case line
    136                                         # 空白、プリプロセスディレクティブ
     135                                        # 空白、プリプロセスディレクティブ
    137136                                        when /\A\s+/
    138137                                                ;
    139                                         # 識別子
     138                                        # 識別子
    140139                                        when /\A[a-zA-Z_]\w*/
    141140                                                word = $&
    142141                                                @q << [RESERVED[word] || :IDENTIFIER, Token.new(word.intern, file, lineno, col)]
    143                                         # 16 進数定数
     142                                        # 16 進数定数
    144143                                        when /\A0x[0-9A-Fa-f]+#{integer_qualifier}/
    145144                                                @q << [:HEX_CONSTANT, Token.new($&, file, lineno, col)]
    146                                         # 8 進数定数
     145                                        # 8 進数定数
    147146                                        when /\A0[0-7]+#{integer_qualifier}/
    148147                                                @q << [:OCTAL_CONSTANT, Token.new($&, file, lineno, col)]
    149                                         # 浮動小数定数
     148                                        # 浮動小数定数
    150149                                        when /\A[0-9]+\.([0-9]*)?([Ee][+-]?[0-9]+)?/
    151150                                                @q << [:FLOATING_CONSTANT, Token.new($&, file, lineno, col)]
    152                                         # 整数定数
     151                                        # 整数定数
    153152                                        when /\A\d+#{integer_qualifier}/
    154153                                        # when /\A\d+/
    155154                                                @q << [:INTEGER_CONSTANT, Token.new($&.to_i, file, lineno, col)]
    156                                         # 文字
     155                                        # 文字
    157156                                        when /\A'(?:[^'\\]|\\.)'/
    158157                                                @q << [:CHARACTER_LITERAL, Token.new($&, file, lineno, col)]
    159                                         # 文字列
    160 #                                       "#include  #include #include \"../systask/logtask.cfg\"       æœ€å¾Œã® " 忘れ)で無限ループ
     158                                        # 文字列
     159#                                       "#include  #include #include \"../systask/logtask.cfg\"       最後の " 忘れ)で無限ループ
    161160#                                       when /\A"(?:[^"\\]+|\\.)*"/
    162                                         when /\A"(?:[^"\\]|\\.)*"/   # これはうまく行くようだ
     161                                        when /\A"(?:[^"\\]|\\.)*"/   # これはうまく行くようだ
    163162                                                @q << [:STRING_LITERAL, Token.new($&, file, lineno, col)]
    164                                         # 行コメント
     163                                        # 行コメント
    165164                                        when /\A\/\/.*$/
    166                                                 # 読み飛ばすだけ
    167                                         # コメント開始
     165                                                # 読み飛ばすだけ
     166                                        # コメント開始
    168167                                        when /\A\/\*/
    169168                                                comment = true
     
    196195        }
    197196
    198         # 終了の印
     197        # 終了の印
    199198        @q << nil
    200199
     
    223222                        end
    224223
    225                         # TYPE_NAME トークンへ置き換え
     224                        # TYPE_NAME トークンへ置き換え
    226225                        if @b_no_type_name == false
    227226                                if token[0] == :IDENTIFIER && Namespace.is_typename?( token[1].val ) then
     
    232231                        end
    233232
    234                         if $debug then     # 070107 token 無効時ここを通さないようした (through 対応 -d の時に例外発生)
     233                        if $debug then     # 070107 token 無効時ここを通さないようした (through 対応 -d の時に例外発生)
    235234                                locale = @@current_locale[@@generator_nest]
    236235                                if token then
     
    262261        @@n_info = 0
    263262
    264         # このメソッドは構文解析、意味解析からのみ呼出し可(コード生成でエラー発生は不適切)
     263        # このメソッドは構文解析、意味解析からのみ呼出し可(コード生成でエラー発生は不適切)
    265264        def self.error( msg )
    266265                @@n_error += 1
     
    274273        end
    275274
    276         # このメソッドは構文解析、意味解析からのみ呼出し可(コード生成でウォーニング発生は不適切)
     275        # このメソッドは構文解析、意味解析からのみ呼出し可(コード生成でウォーニング発生は不適切)
    277276        def self.warning( msg )
    278277                @@n_warning += 1
     
    281280        end
    282281
    283         # このメソッドは構文解析、意味解析からのみ呼出し可
     282        # このメソッドは構文解析、意味解析からのみ呼出し可
    284283        def self.info( msg )
    285284                @@n_info += 1
     
    17961795module_eval(<<'.,.,', 'C_parser.y.rb', 228)
    17971796  def _reduce_83(val, _values, result)
    1798                         result = Expression.new( val[2] )    # ',' の後ろを採用
     1797                        result = Expression.new( val[2] )    # ',' の後ろを採用
    17991798               
    18001799    result
     
    18221821module_eval(<<'.,.,', 'C_parser.y.rb', 261)
    18231822  def _reduce_86(val, _values, result)
    1824                         result = CIntType.new( -3 )    # storage class は無視
     1823                        result = CIntType.new( -3 )    # storage class は無視
    18251824               
    18261825    result
     
    18301829module_eval(<<'.,.,', 'C_parser.y.rb', 265)
    18311830  def _reduce_87(val, _values, result)
    1832                         result = val[1]                # storage class は無視
     1831                        result = val[1]                # storage class は無視
    18331832               
    18341833    result
     
    25872586  def _reduce_268(val, _values, result)
    25882587                while true
    2589                         # ';' が表れるまで、トークンを読み飛ばす。
    2590                         # gcc の構文拡張に対応すべきだが、単純な実è£
    2591 ã¨ã—て、';' まで読み飛ばす。
    2592                         # トークン単位で読み飛ばしているので、文字列やコメントå†
    2593 ã® ';' は対象にならない。
     2588                        # ';' が表れるまで、トークンを読み飛ばす。
     2589                        # gcc の構文拡張に対応すべきだが、単純な実装として、';' まで読み飛ばす。
     2590                        # トークン単位で読み飛ばしているので、文字列やコメント内の ';' は対象にならない。
    25942591                        token = next_token
    25952592                        if token[1].val == ";"
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/core/C_parser.y.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2018 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$
     
    5540class C_parser
    5641rule
    57 # トップレベルの構文要素は C_parser
     42# トップレベルの構文要素は C_parser
    5843all: C_parser
    5944
    6045# Expr
    61 ##########################  式  ##########################
    62 # K&Rの文法(プログラミング言語C 第2版 付録)と一部異なる
    63 # argument_expression_list(関数引数), assignment_expression(代å
    64 ¥)がない
    65 # 式の result は、すべてé
    66 åˆ—で第一要素が識別シンボル、第二要素以下が引数
     46##########################  式  ##########################
     47# K&Rの文法(プログラミング言語C 第2版 付録)と一部異なる
     48# argument_expression_list(関数引数), assignment_expression(代入)がない
     49# 式の result は、すべて配列で第一要素が識別シンボル、第二要素以下が引数
    6750#
    68 # 2019/3/28 長島 下記のC99の構文に近づくよう変更
    69 #(読めないヘッダーファイルがあったため)
     51# 2019/3/28 長島 下記のC99の構文に近づくよう変更
     52#(読めないヘッダーファイルがあったため)
    7053# http://www.quut.com/c/ANSI-C-grammar-y-1999.html
    71 # å
    72 ƒã€
    73 ã®ã‚³ãƒ¡ãƒ³ãƒˆã¨åˆã‚ãªããªã£ã¦ã„ます
     54# 元々のコメントと合わなくなっています
    7455
    7556primary_expression
    7657                : namespace_identifier
    7758                { result = [ :IDENTIFIER, val[0] ] }     #1ok
    78 #        : IDENTIFIER   # mikan namespace への対応
     59#        : IDENTIFIER   # mikan namespace への対応
    7960#               { result = [ :IDENTIFIER, val[0] ] }
    8061#        | TRUE
     
    10384                { result << val[1] }
    10485
    105 # 関数呼び出しと後置インクリメント、デクリメント演算子がない
     86# 関数呼び出しと後置インクリメント、デクリメント演算子がない
    10687postfix_expression
    10788                : primary_expression
     
    11596                | postfix_expression '->' IDENTIFIER
    11697                { result = [ :OP_REF, val[0], val[2] ] }
    117                 | postfix_expression '++'       { result = val[0] }   # ++, -- は無視する
     98                | postfix_expression '++'       { result = val[0] }   # ++, -- は無視する
    11899                | postfix_expression '--'       { result = val[0] }
    119100                | '(' type_name ')' '{' initializer_list '}'
     
    125106
    126107
    127 # 前置インクリメント、デクリメント演算子がない
     108# 前置インクリメント、デクリメント演算子がない
    128109unary_expression
    129110                : postfix_expression
     
    134115                | SIZEOF '(' type_name ')'
    135116                { result = [ :OP_SIZEOF_TYPE, val[1] ] }
    136                 | '++' unary_expression                 { result = val[1] }   # ++, -- は無視する
     117                | '++' unary_expression                 { result = val[1] }   # ++, -- は無視する
    137118                | '--' unary_expression                 { result = val[1] }
    138119
     
    246227                | expression ',' assignment_expression
    247228                {
    248                         result = Expression.new( val[2] )    # ',' の後ろを採用
     229                        result = Expression.new( val[2] )    # ',' の後ろを採用
    249230                }
    250231
     
    264245
    265246# Types
    266 ##########################  宣言  ##########################
    267 # 宣言もK&Rと一部異なる
    268 
    269 # declarationはセルの属性で使われる
    270 # K&Rとの違い: storage classが指定できない、型が省略できない
     247##########################  宣言  ##########################
     248# 宣言もK&Rと一部異なる
     249
     250# declarationはセルの属性で使われる
     251# K&Rとの違い: storage classが指定できない、型が省略できない
    271252declaration
    272253                : declaration_specifiers init_declarator_list ';'
    273254#        : specifier_qualifier_list init_declarator_list ';'
    274255
    275 # declaration_specifiersは関数のパラメータで使われるが、
    276 # specifier_qualifier_listで十分かもしれない
     256# declaration_specifiersは関数のパラメータで使われるが、
     257# specifier_qualifier_listで十分かもしれない
    277258
    278259declaration_specifiers
    279260                : storage_class_specifier
    280261                {
    281                         result = CIntType.new( -3 )    # storage class は無視
     262                        result = CIntType.new( -3 )    # storage class は無視
    282263                }
    283264                | storage_class_specifier declaration_specifiers
    284265                {
    285                         result = val[1]                # storage class は無視
     266                        result = val[1]                # storage class は無視
    286267                }
    287268                | type_specifier
     
    350331                { set_no_type_name true; result = CBoolType.new }
    351332                | struct_specifier
    352                 { set_no_type_name true; result = val[0] } # set_no_type_name true は struct_tag でも呼ばれる
     333                { set_no_type_name true; result = val[0] } # set_no_type_name true は struct_tag でも呼ばれる
    353334                | union_specifier
    354                 { set_no_type_name true; result = CVoidType.new }  # void が宣言されたとする
     335                { set_no_type_name true; result = CVoidType.new }  # void が宣言されたとする
    355336                | enum_specifier
    356                 { set_no_type_name true; result = CVoidType.new }  # void が宣言されたとする
     337                { set_no_type_name true; result = CVoidType.new }  # void が宣言されたとする
    357338                | TYPE_NAME
    358339                { set_no_type_name true; result = CDefinedType.new( val[0].val ) }
    359340
    360 # mikan K&Rのstruct_or_union_specifierに相当するが、unionは使えない, bit field にも対応しない
     341# mikan K&Rのstruct_or_union_specifierに相当するが、unionは使えない, bit field にも対応しない
    361342struct_specifier                # mikan
    362343#        : STRUCT struct_tag '{'
     
    379360                        result = val[1]
    380361                }
    381 #        | STRUCT struct_tag   # mikan struct_tag は namespace 対応がå¿
    382 è¦
    383                 | struct_term struct_tag   # mikan struct_tag は namespace 対応がå¿
    384 è¦
     362#        | STRUCT struct_tag   # mikan struct_tag は namespace 対応が必要
     363                | struct_term struct_tag   # mikan struct_tag は namespace 対応が必要
    385364                {
    386365                        StructType.set_define( false )
     
    403382                }
    404383
    405 # ポインタ修飾子を追加
     384# ポインタ修飾子を追加
    406385struct_declaration
    407386                : declaration_specifiers struct_declarator_list ';'
     
    416395                        result = val[1]
    417396                }
    418                 # ビットフィールドを読み飛ばし
     397                # ビットフィールドを読み飛ばし
    419398                | declaration_specifiers struct_declarator_list ':' constant_expression ';'
    420399                {
     
    427406                        result = val[1]
    428407                }
    429                 | union_specifier ';'                       # 無名
    430                 | struct_specifier ';'                       # 無名
    431 
    432 
    433 
    434 # K&Rのspecifier_qualifier_listと同じ
    435 # 名前がまぎらわしかったのでtype_を付けた
     408                | union_specifier ';'                       # 無名
     409                | struct_specifier ';'                       # 無名
     410
     411
     412
     413# K&Rのspecifier_qualifier_listと同じ
     414# 名前がまぎらわしかったのでtype_を付けた
    436415specifier_qualifier_list
    437416                : type_specifier specifier_qualifier_list
     
    457436                { result << val[2] }
    458437
    459 # ビットフィールドは使えない
     438# ビットフィールドは使えない
    460439struct_declarator
    461440                : declarator
     
    466445#        : UNION union_tag '{' union_declaration_list '}'
    467446#        | UNION '{' union_declaration_list '}'
    468 #        | UNION union_tag   # mikan struct_tag は namespace 対応がå¿
    469 è¦
     447#        | UNION union_tag   # mikan struct_tag は namespace 対応が必要
    470448                : union_term union_tag '{' union_declaration_list '}'
    471449                | union_term '{' union_declaration_list '}'
    472                 | union_term union_tag   # mikan struct_tag は namespace 対応がå¿
    473 è¦
     450                | union_term union_tag   # mikan struct_tag は namespace 対応が必要
    474451
    475452union_term
     
    485462union_declaration
    486463                : declaration_specifiers union_declarator_list ';'
    487                 | union_specifier ';'                       # 無名
    488                 | struct_specifier ';'                      # 無名
     464                | union_specifier ';'                       # 無名
     465                | struct_specifier ';'                      # 無名
    489466
    490467union_declarator_list
     
    535512                }
    536513                | direct_declarator
    537                 | pointer TYPE_NAME     # 関数ポインタの typedef が二重定義の場合
     514                | pointer TYPE_NAME     # 関数ポインタの typedef が二重定義の場合
    538515                {
    539516                        result = Decl.new( val[1].val )
     
    562539                        result = val[0]
    563540                }
    564                 | direct_declarator '(' identifier_list ')'  # これは何のためにå¿
    565 è¦ï¼Ÿ 060211
     541                | direct_declarator '(' identifier_list ')'  # これは何のために必要? 060211
    566542                | direct_declarator '(' ')'
    567543                {
     
    599575                : parameter_list
    600576                | parameter_list ',' '.' '.' '.'
    601                 # mikan 可変長パラメータ,  ... の間のスペースが許される(手抜き)
     577                # mikan 可変長パラメータ,  ... の間のスペースが許される(手抜き)
    602578
    603579parameter_list
     
    607583#               {
    608584#                       val[0].add_param( val[2] )
    609 #                       # result = val[0] 不要
     585#                       # result = val[0] 不要
    610586#               }
    611587
    612588
    613 # パラメータ修飾子を追加
     589# パラメータ修飾子を追加
    614590parameter_declaration
    615591                : declaration_specifiers declarator
     
    620596#               }
    621597
    622         # 以下はエラーとする
    623 #        | declaration_specifiers       # 仮引数なしは、とりあえず扱わない 060210
     598        # 以下はエラーとする
     599#        | declaration_specifiers       # 仮引数なしは、とりあえず扱わない 060210
    624600#               {
    625601#                       unless val[0].kind_of?( VoidType ) then
     
    628604#                       result = nil
    629605#               }
    630                 | declaration_specifiers abstract_declarator    # 仮引数なし
    631                 | declaration_specifiers                                                # 仮引数なし
    632 
    633 
    634 identifier_list       # 060211  不用になった
     606                | declaration_specifiers abstract_declarator    # 仮引数なし
     607                | declaration_specifiers                                                # 仮引数なし
     608
     609
     610identifier_list       # 060211  不用になった
    635611        : IDENTIFIER
    636612        | identifier_list ',' IDENTIFIER
     
    662638                | direct_abstract_declarator '(' parameter_type_list ')'
    663639
    664 # assignment_expressionをconstant_expressionに変更
     640# assignment_expressionをconstant_expressionに変更
    665641initializer                     # mikan
    666642                : assignment_expression
     
    685661
    686662
    687 ##########################  ここからはCDL独自  ##########################
    688 
    689 #トップレベルの構文規則
     663##########################  ここからはCDL独自  ##########################
     664
     665#トップレベルの構文規則
    690666C_parser
    691667                :
     
    703679                | declaration
    704680                | ';'
    705                 | error   # エラー回復ポイント
     681                | error   # エラー回復ポイント
    706682
    707683typedef
     
    792768                : _ASM {
    793769                while true
    794                         # ';' が表れるまで、トークンを読み飛ばす。
    795                         # gcc の構文拡張に対応すべきだが、単純な実è£
    796 ã¨ã—て、';' まで読み飛ばす。
    797                         # トークン単位で読み飛ばしているので、文字列やコメントå†
    798 ã® ';' は対象にならない。
     770                        # ';' が表れるまで、トークンを読み飛ばす。
     771                        # gcc の構文拡張に対応すべきだが、単純な実装として、';' まで読み飛ばす。
     772                        # トークン単位で読み飛ばしているので、文字列やコメント内の ';' は対象にならない。
    799773                        token = next_token
    800774                        if token[1].val == ";"
     
    906880#               b_asm   = false
    907881
    908                 # euc のコメントを utf8 として扱うと、コメントの終わりを誤る問題の対策
     882                # euc のコメントを utf8 として扱うと、コメントの終わりを誤る問題の対策
    909883                TECS_LANG::set_kcode_binary
    910884
    911                 # 800U, 0xffLL など (整数リテラルにå
    912 ±é€šã®ä¿®é£¾å­)
     885                # 800U, 0xffLL など (整数リテラルに共通の修飾子)
    913886                integer_qualifier = "([Uu][Ll][Ll]|[Uu][Ll]|[Uu]|[Ll][Ll]|[Ll])?"
    914887
     
    925898                                if comment
    926899                                        case line
    927                                         # コメント終了
     900                                        # コメント終了
    928901                                        when /\A\*\//
    929902                                                comment = false
     
    933906                                else
    934907                                        case line
    935                                         # 空白、プリプロセスディレクティブ
     908                                        # 空白、プリプロセスディレクティブ
    936909                                        when /\A\s+/
    937910                                                ;
    938                                         # 識別子
     911                                        # 識別子
    939912                                        when /\A[a-zA-Z_]\w*/
    940913                                                word = $&
    941914                                                @q << [RESERVED[word] || :IDENTIFIER, Token.new(word.intern, file, lineno, col)]
    942                                         # 16 進数定数
     915                                        # 16 進数定数
    943916                                        when /\A0x[0-9A-Fa-f]+#{integer_qualifier}/
    944917                                                @q << [:HEX_CONSTANT, Token.new($&, file, lineno, col)]
    945                                         # 8 進数定数
     918                                        # 8 進数定数
    946919                                        when /\A0[0-7]+#{integer_qualifier}/
    947920                                                @q << [:OCTAL_CONSTANT, Token.new($&, file, lineno, col)]
    948                                         # 浮動小数定数
     921                                        # 浮動小数定数
    949922                                        when /\A[0-9]+\.([0-9]*)?([Ee][+-]?[0-9]+)?/
    950923                                                @q << [:FLOATING_CONSTANT, Token.new($&, file, lineno, col)]
    951                                         # 整数定数
     924                                        # 整数定数
    952925                                        when /\A\d+#{integer_qualifier}/
    953926                                        # when /\A\d+/
    954927                                                @q << [:INTEGER_CONSTANT, Token.new($&.to_i, file, lineno, col)]
    955                                         # 文字
     928                                        # 文字
    956929                                        when /\A'(?:[^'\\]|\\.)'/
    957930                                                @q << [:CHARACTER_LITERAL, Token.new($&, file, lineno, col)]
    958                                         # 文字列
    959 #                                       "#include  #include #include \"../systask/logtask.cfg\"       æœ€å¾Œã® " 忘れ)で無限ループ
     931                                        # 文字列
     932#                                       "#include  #include #include \"../systask/logtask.cfg\"       最後の " 忘れ)で無限ループ
    960933#                                       when /\A"(?:[^"\\]+|\\.)*"/
    961                                         when /\A"(?:[^"\\]|\\.)*"/   # これはうまく行くようだ
     934                                        when /\A"(?:[^"\\]|\\.)*"/   # これはうまく行くようだ
    962935                                                @q << [:STRING_LITERAL, Token.new($&, file, lineno, col)]
    963                                         # 行コメント
     936                                        # 行コメント
    964937                                        when /\A\/\/.*$/
    965                                                 # 読み飛ばすだけ
    966                                         # コメント開始
     938                                                # 読み飛ばすだけ
     939                                        # コメント開始
    967940                                        when /\A\/\*/
    968941                                                comment = true
     
    995968        }
    996969
    997         # 終了の印
     970        # 終了の印
    998971        @q << nil
    999972
     
    1022995                        end
    1023996
    1024                         # TYPE_NAME トークンへ置き換え
     997                        # TYPE_NAME トークンへ置き換え
    1025998                        if @b_no_type_name == false
    1026999                                if token[0] == :IDENTIFIER && Namespace.is_typename?( token[1].val ) then
     
    10311004                        end
    10321005
    1033                         if $debug then     # 070107 token 無効時ここを通さないようした (through 対応 -d の時に例外発生)
     1006                        if $debug then     # 070107 token 無効時ここを通さないようした (through 対応 -d の時に例外発生)
    10341007                                locale = @@current_locale[@@generator_nest]
    10351008                                if token then
     
    10611034        @@n_info = 0
    10621035
    1063         # このメソッドは構文解析、意味解析からのみ呼出し可(コード生成でエラー発生は不適切)
     1036        # このメソッドは構文解析、意味解析からのみ呼出し可(コード生成でエラー発生は不適切)
    10641037        def self.error( msg )
    10651038                @@n_error += 1
     
    10731046        end
    10741047
    1075         # このメソッドは構文解析、意味解析からのみ呼出し可(コード生成でウォーニング発生は不適切)
     1048        # このメソッドは構文解析、意味解析からのみ呼出し可(コード生成でウォーニング発生は不適切)
    10761049        def self.warning( msg )
    10771050                @@n_warning += 1
     
    10801053        end
    10811054
    1082         # このメソッドは構文解析、意味解析からのみ呼出し可
     1055        # このメソッドは構文解析、意味解析からのみ呼出し可
    10831056        def self.info( msg )
    10841057                @@n_info += 1
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/core/bnf.tab.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    9595  }
    9696
    97   # 指定子 '[]' å†
    98 ã§ã®ã¿ä½¿ç”¨ã§ãã‚‹ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰
     97  # 指定子 '[]' 内でのみ使用できるキーワード
    9998  RESERVED2 = {
    10099    # specifier
     
    113112    # port (entry)
    114113    'inline' => :INLINE,
    115     'ref_desc' => :REF_DESC,   # call も可
     114    'ref_desc' => :REF_DESC,   # call も可
    116115
    117116    # port (call)
     
    157156  }
    158157
    159   # 再帰的なパーサのためのスタック
     158  # 再帰的なパーサのためのスタック
    160159  @@generator_nest = -1
    161160  @@generator_stack = []
    162161  @@current_locale = []
    163162
    164   # import_C 中である
     163  # import_C 中である
    165164  @@import_C = false
    166165
    167   # すべての構文解析が完了した
     166  # すべての構文解析が完了した
    168167  @@b_end_all_parse = false
    169168
    170   # tag なし struct
     169  # tag なし struct
    171170  @@no_struct_tag_num = 0
    172171
    173172  def self.parse( file_name, plugin = nil, b_reuse = false )
    174     # パーサインスタンスを生成(別パーサで読み込む)
     173    # パーサインスタンスを生成(別パーサで読み込む)
    175174    parser = Generator.new
    176175
    177     # plugin から import されている場合の plugin 設定
     176    # plugin から import されている場合の plugin 設定
    178177    parser.set_plugin plugin
    179178
    180     # reuse フラグを設定
     179    # reuse フラグを設定
    181180    parser.set_reuse b_reuse
    182181
    183     # cdl をパース
     182    # cdl をパース
    184183    parser.parse( [file_name] )
    185184
    186     # 終期化 パーサスタックを戻す
     185    # 終期化 パーサスタックを戻す
    187186    parser.finalize
    188187  end
     
    204203  def self.get_plugin
    205204    if @@generator_stack[@@generator_nest] then
    206       # tecsgen 引数の cdl が import される場合は nil
     205      # tecsgen 引数の cdl が import される場合は nil
    207206      return @@generator_stack[@@generator_nest].get_plugin
    208207    else
     
    221220  def self.is_reuse?
    222221    if @@generator_stack[@@generator_nest] then
    223       # tecsgen 引数の cdl が import される場合は nil
     222      # tecsgen 引数の cdl が import される場合は nil
    224223      return @@generator_stack[@@generator_nest].is_reuse?
    225224    else
     
    251250      b_in_string = false
    252251
    253       # euc のコメントを utf8 として扱うと、コメントの終わりを誤る問題の対策
     252      # euc のコメントを utf8 として扱うと、コメントの終わりを誤る問題の対策
    254253      TECS_LANG::set_kcode_binary
    255254
     
    261260          TECSIO.foreach(file) {|line|
    262261            col = 1
    263 #            line.rstrip!         æ”¹è¡Œå«ã‚€æ–‡å­—列を扱うようになったので、ここで空白を取り除けなくなった
     262#            line.rstrip!         改行含む文字列を扱うようになったので、ここで空白を取り除けなくなった
    264263
    265264            until line.empty?
     
    267266              if b_in_comment
    268267                case line
    269                   # コメント終了
     268                  # コメント終了
    270269                when /\A\*\//
    271270                  b_in_comment = false
    272271                when /\A./
    273272                  ;
    274                 when /\s+/     # line.rstrip! を止めたため \n などの空白文字とまっちするルールがå¿
    275 è¦ã«ãªã£ãŸ
     273                when /\s+/     # line.rstrip! を止めたため \n などの空白文字とまっちするルールが必要になった
    276274                  ;
    277275                end
     
    281279                  @q <<  [:STRING_LITERAL, Token.new(string, file, lineno, col)]
    282280                  b_in_string = false
    283                 elsif line =~ /\A.*\\\n/     # 改行 \n は '.' にマッチしない
     281                elsif line =~ /\A.*\\\n/     # 改行 \n は '.' にマッチしない
    284282                  string += $&
    285                 elsif line =~ /\A.*\n/     # 改行 \n は '.' にマッチしない
     283                elsif line =~ /\A.*\n/     # 改行 \n は '.' にマッチしない
    286284                  string += line
    287                   # この位置では error メソッドは使えない (token 読出し前)
     285                  # この位置では error メソッドは使えない (token 読出し前)
    288286                  puts "#{file}:#{lineno}:#{col}: error: string literal has newline without escape"
    289287                  @@n_error += 1
     
    291289              else
    292290                case line
    293                 # 空白、プリプロセスディレクティブ
     291                # 空白、プリプロセスディレクティブ
    294292                when /\A\s+/
    295293                  ;
    296                 # 識別子
     294                # 識別子
    297295                when /\A[a-zA-Z_]\w*/
    298296                  word = $&
    299297                  @q << [RESERVED[word] || :IDENTIFIER, Token.new(word.intern, file, lineno, col)]
    300                 # 16 進数定数
     298                # 16 進数定数
    301299                when /\A0x[0-9A-Fa-f]+/
    302300                  @q << [:HEX_CONSTANT, Token.new($&, file, lineno, col)]
    303                 # 8 進数定数
     301                # 8 進数定数
    304302                when /\A0[0-7]+/
    305303                  @q << [:OCTAL_CONSTANT, Token.new($&, file, lineno, col)]
    306                 # 浮動小数定数
     304                # 浮動小数定数
    307305                when /\A[0-9]+\.([0-9]*)?([Ee][+-]?[0-9]+)?/
    308306                  @q << [:FLOATING_CONSTANT, Token.new($&, file, lineno, col)]
    309                 # 整数定数
     307                # 整数定数
    310308                when /\A\d+/
    311309                  @q << [:INTEGER_CONSTANT, Token.new($&.to_i, file, lineno, col)]
    312                 # 文字定数
     310                # 文字定数
    313311                when /\A'(?:[^'\\]|\\.)'/
    314312                  @q << [:CHARACTER_LITERAL, Token.new($&, file, lineno, col)]
    315                 # 文字列
    316 #                "#include  #include #include \"../systask/logtask.cfg\"       æœ€å¾Œã® " 忘れ)で無限ループ
     313                # 文字列
     314#                "#include  #include #include \"../systask/logtask.cfg\"       最後の " 忘れ)で無限ループ
    317315#                when /\A"(?:[^"\\]+|\\.)*"/
    318                 when /\A"(?:[^"\\]|\\.)*"/   # これはうまく行くようだ
     316                when /\A"(?:[^"\\]|\\.)*"/   # これはうまく行くようだ
    319317                  @q << [:STRING_LITERAL, Token.new($&, file, lineno, col)]
    320                 # 文字列 (改行あり)
     318                # 文字列 (改行あり)
    321319                when /\A"(?:[^"\\]|\\.)*\\\n$/
    322320                  string = $&
    323321                  b_in_string = true
    324                 # 文字列 (改行あり, escape なし)
     322                # 文字列 (改行あり, escape なし)
    325323                when /\A("(?:[^"\\]|\e\.)*)\n$/
    326324                  string = $1 + "\\\n"
    327325                  b_in_string = true
    328                   # この位置では error メソッドは使えない (token 読出し前) # mikan cdl_error ではない
     326                  # この位置では error メソッドは使えない (token 読出し前) # mikan cdl_error ではない
    329327                  puts "#{file}:#{lineno}:#{col}: error: string literal has newline without escape"
    330328                  @@n_error += 1
    331                 # 山括弧で囲まれた文字列
     329                # 山括弧で囲まれた文字列
    332330                # when /\A<[0-9A-Za-z_\. \/]+>/   # AB: angle bracke
    333                 when /\A<(?:[^>\\]|\\.)*>/   # これはうまく行くようだ
     331                when /\A<(?:[^>\\]|\\.)*>/   # これはうまく行くようだ
    334332                  @q << [:AB_STRING_LITERAL, Token.new($&, file, lineno, col)]
    335                 # 行コメント
     333                # 行コメント
    336334                when /\A\/\/.*$/
    337                   # 読み飛ばすだけ
    338                 # コメント開始
     335                  # 読み飛ばすだけ
     336                # コメント開始
    339337                when /\A\/\*/
    340338                  b_in_comment = true
    341                 # '>>', '<<' など
     339                # '>>', '<<' など
    342340                when /\A>>/, /\A<</, /\A==/, /\A!=/, /\A\&\&/, /\A\|\|/
    343341                  @q << [$&, Token.new($&, file, lineno, col)]
    344342                when /\A::/, /\A=>/, /\A<=/, /\A>=/
    345343                  @q << [$&, Token.new($&, file, lineno, col)]
    346                 # '(', ')' など一文字の記号、または未知の記号
     344                # '(', ')' など一文字の記号、または未知の記号
    347345                when /\A./
    348346                  @q << [$&, Token.new($&, file, lineno, col)]
     
    368366      }
    369367
    370       # 終了の印
     368      # 終了の印
    371369      @q << nil
    372370
     
    388386
    389387      if token[0] == :IDENTIFIER then
    390         # TYPE_NAME トークンへ置換え
     388        # TYPE_NAME トークンへ置換え
    391389        if Namespace.is_typename?( token[1].val ) then
    392390          token[0] = :TYPE_NAME
    393391        elsif @in_specifier && RESERVED2[ token[1].val.to_s ] then
    394           # 指定子キーワード( '[', ']' å†
    395 ã§ã®ã¿æœ‰åŠ¹)
     392          # 指定子キーワード( '[', ']' 内でのみ有効)
    396393          token[0] = RESERVED2[ token[1].val.to_s ]
    397394        end
    398395      end
    399396
    400       if $debug then     # 070107 token 無効時ここを通さないようした (through 対応 -d の時に例外発生)
     397      if $debug then     # 070107 token 無効時ここを通さないようした (through 対応 -d の時に例外発生)
    401398        locale = @@current_locale[@@generator_nest]
    402399        if token then
     
    430427  @@n_info = 0
    431428
    432   # このメソッドは構文解析、意味解析からのみ呼出し可(コード生成でエラー発生は不適切)
     429  # このメソッドは構文解析、意味解析からのみ呼出し可(コード生成でエラー発生は不適切)
    433430  def self.error( msg, *arg )
    434431    locale = nil
     
    440437
    441438    msg = TECSMsg.get_error_message( msg )
    442     # $1, $2, ... を arg で置換
     439    # $1, $2, ... を arg で置換
    443440    count = 1
    444441    arg.each{ |a|
     
    448445    }
    449446
    450     # import_C の中でのエラー?
     447    # import_C の中でのエラー?
    451448    if @@import_C then
    452449      C_parser.error( msg )
    453450    else
    454451
    455       # Node の記憶する 位置 (locale) を使用した場合、変更以前に比べ、
    456       # 問題発生箇所と異なる位置にエラーが出るため、構文解析中のエラー
    457       # は、解析中の位置を出力する.(new_XXX で owner が子要素のチェッ
    458       # クをすると owner の行番号が出てしまう点で、ずれが生じている)
     452      # Node の記憶する 位置 (locale) を使用した場合、変更以前に比べ、
     453      # 問題発生箇所と異なる位置にエラーが出るため、構文解析中のエラー
     454      # は、解析中の位置を出力する.(new_XXX で owner が子要素のチェッ
     455      # クをすると owner の行番号が出てしまう点で、ずれが生じている)
    459456
    460457      if @@b_end_all_parse == false || locale == nil then
     
    469466  end
    470467
    471   # このメソッドは構文解析、意味解析からのみ呼出し可(コード生成でウォーニング発生は不適切)
     468  # このメソッドは構文解析、意味解析からのみ呼出し可(コード生成でウォーニング発生は不適切)
    472469  def self.warning( msg, *arg )
    473470    locale = nil
     
    479476
    480477    msg = TECSMsg.get_warning_message( msg )
    481     # $1, $2, ... を arg で置換
     478    # $1, $2, ... を arg で置換
    482479    count = 1
    483480    arg.each{ |a|
     
    487484    }
    488485
    489     # import_C の中でのウォーニング?
     486    # import_C の中でのウォーニング?
    490487    if @@import_C then
    491488      C_parser.warning( msg )
     
    502499  end
    503500
    504   # このメソッドは構文解析、意味解析からのみ呼出し可
     501  # このメソッドは構文解析、意味解析からのみ呼出し可
    505502  def self.info( msg, *arg )
    506503    locale = nil
     
    512509
    513510    msg = TECSMsg.get_info_message( msg )
    514     # $1, $2, ... を arg で置換
     511    # $1, $2, ... を arg で置換
    515512    count = 1
    516513    arg.each{ |a|
     
    520517    }
    521518
    522     # import_C の中でのウォーニング?
     519    # import_C の中でのウォーニング?
    523520    if @@import_C then
    524521      C_parser.info( msg )
     
    555552  end
    556553
    557   #===  '[' specifier 始め
     554  #===  '[' specifier 始め
    558555  def set_in_specifier
    559556    # p "set_in_specifier"
     
    561558  end
    562559
    563   #=== ']' specifier 終わり
     560  #=== ']' specifier 終わり
    564561  def unset_in_specifier
    565562    # p "unset_in_specifier"
     
    567564  end
    568565
    569   # statement_specifier は構文解釈途中で参ç
    570 §ã—たいため
     566  # statement_specifier は構文解釈途中で参照したいため
    571567  @@statement_specifier_stack = []
    572568  def self.add_statement_specifier( ss )
     
    585581  end
    586582
    587   #=== すべての構文解析が完了したことを報告
     583  #=== すべての構文解析が完了したことを報告
    588584  def self.end_all_parse
    589585    @@b_end_all_parse = true
     
    23692365module_eval(<<'.,.,', 'bnf.y.rb', 76)
    23702366  def _reduce_13(val, _values, result)
    2371                         # 連接した文字列を1つの文字列にまとめる
     2367                        # 連接した文字列を1つの文字列にまとめる
    23722368                        str = "\"" + val[0].val.gsub( /\"(.*)\"/, "\\1" ) + val[1].val.gsub( /\"(.*)\"/, "\\1" ) + "\""
    23732369                        result = Token.new( str, val[0].file, val[0].lineno, val[0].col )
     
    29472943module_eval(<<'.,.,', 'bnf.y.rb', 379)
    29482944  def _reduce_104(val, _values, result)
    2949                         # tag が無い場合、å†
    2950 éƒ¨åã‚’与える
     2945                        # tag が無い場合、内部名を与える
    29512946                        result = StructType.new( :"TAG__#{@@no_struct_tag_num}__" )
    29522947                        @@no_struct_tag_num += 1
     
    32673262  def _reduce_153(val, _values, result)
    32683263                        val[0].add_param( val[2] )
    3269                         # result = val[0] 不要
     3264                        # result = val[0] 不要
    32703265               
    32713266    result
     
    34223417                                result = val[1]
    34233418                        else
    3424                                 # エラー:仮で val[0] を返す
     3419                                # エラー:仮で val[0] を返す
    34253420                                result = val[0]
    34263421                        end
     
    35683563                        obj = val[3]
    35693564                        if obj.kind_of?( Cell ) || obj.kind_of?( Signature ) || obj.kind_of?( Celltype ) || obj.kind_of?( CompositeCelltype )then
    3570                                 # cell, signature 以外は、指定子を置けない
     3565                                # cell, signature 以外は、指定子を置けない
    35713566                        else
    3572               Generator.get_statement_specifier   # クリア
     3567              Generator.get_statement_specifier   # クリア
    35733568              Generator.error( "G1009 unexpected specifier"  )
    35743569                        end
     
    39413936                                val[1].check
    39423937                        else
    3943                                 # mikan 関数のé
    3944 åˆ—も以下のメッセージになる
     3938                                # mikan 関数の配列も以下のメッセージになる
    39453939                                Generator.error( "G1010 Not function"  )
    39463940                                result = nil
     
    39973991  def _reduce_265(val, _values, result)
    39983992                        if val[3].kind_of? Port then
    3999                                 val[3].set_specifier val[1]  # 設定順序あり
     3993                                val[3].set_specifier val[1]  # 設定順序あり
    40003994                                Celltype.new_port( val[3] )
    40013995                        else
    4002                                 # Port 以外では指定子はエラー
     3996                                # Port 以外では指定子はエラー
    40033997                                Generator.error( "G1012 $1 : cannot put specifier here" , val[1] )
    40043998                        end
     
    42054199  def _reduce_298(val, _values, result)
    42064200                        val[3].each{ |i|       # i:Decl
    4207                                 i.set_kind( :ATTRIBUTE )   # 設定順序あり
     4201                                i.set_kind( :ATTRIBUTE )   # 設定順序あり
    42084202                                i.set_specifier_list( [val[1]] )
    42094203                                i.check
     
    42874281  def _reduce_309(val, _values, result)
    42884282                        val[3].each{ |i|       # i:Decl
    4289                                 i.set_kind( :VAR )   # 設定順序あり
     4283                                i.set_kind( :VAR )   # 設定順序あり
    42904284                                i.set_specifier_list( [val[1]] )
    42914285                                i.check
     
    45684562  def _reduce_354(val, _values, result)
    45694563                        if val[0].kind_of?( Port ) then
    4570                                 CompositeCelltype.new_port( val[0] )   # é
    4571 å»¶ã—て登録
     4564                                CompositeCelltype.new_port( val[0] )   # 遅延して登録
    45724565                        end
    45734566               
     
    45794572  def _reduce_355(val, _values, result)
    45804573                        if val[3].kind_of?( Port ) then
    4581                                 # port 以外 val[3] に有効な値がå
    4582 ¥ã£ã¦ã„ないので、以下のメソッドを適用できない
    4583                                 # 現状 port, cell 以外は指定子を受け付けない
    4584                                 # (しかし将来他の文も指定子を受け付ける可能性があるので、この位置に記述する)
     4574                                # port 以外 val[3] に有効な値が入っていないので、以下のメソッドを適用できない
     4575                                # 現状 port, cell 以外は指定子を受け付けない
     4576                                # (しかし将来他の文も指定子を受け付ける可能性があるので、この位置に記述する)
    45854577                                val[3].set_specifier( Generator.get_statement_specifier )
    4586                                 CompositeCelltype.new_port( val[3] )   # é
    4587 å»¶ã—て登録 (set_specifier 後)
     4578                                CompositeCelltype.new_port( val[3] )   # 遅延して登録 (set_specifier 後)
    45884579                        elsif val[3].kind_of?( Cell ) then
    4589                                 # Cell.end_of_parse にて設定
     4580                                # Cell.end_of_parse にて設定
    45904581                        else
    4591               Generator.get_statement_specifier   # クリア
     4582              Generator.get_statement_specifier   # クリア
    45924583              Generator.error( "G1013 unexpected specifier"  )
    45934584                        end
     
    48774868                        if obj.kind_of?( Cell ) then
    48784869                        else
    4879               Generator.get_statement_specifier   # クリア
     4870              Generator.get_statement_specifier   # クリア
    48804871              Generator.error( "G9999 unexpected specifier"  )
    48814872                        end
     
    51025093
    51035094
    5104 # ファイル => INCLUDE("header")のé
    5105 åˆ—
     5095# ファイル => INCLUDE("header")の配列
    51065096Include = Hash.new {|hash, key| hash[key] = []}
    51075097
     
    51575147
    51585148#= TECSIO
    5159 #  Ruby2.0(1.9) 対応に伴い導å
    5160 ¥ã—たクラス
    5161 #  SJIS 以外では、ASCII-8BIT としてå
    5162 ¥åŠ›ã™ã‚‹
     5149#  Ruby2.0(1.9) 対応に伴い導入したクラス
     5150#  SJIS 以外では、ASCII-8BIT として入力する
    51635151class TECSIO
    5164   def self.foreach(file) # ブロック引数 { |line| }
    5165     pr = Proc.new   # このメソッドのブロック引数を pr に代å
    5166 ¥
     5152  def self.foreach(file) # ブロック引数 { |line| }
     5153    pr = Proc.new   # このメソッドのブロック引数を pr に代入
    51675154    if $b_no_kcode then
    51685155          msg = "E".encode $Ruby19_File_Encode
    51695156      if( $Ruby19_File_Encode == "Shift_JIS" )
    51705157
    5171         # Shift JIS は、いったん Windows-31J として読み込ませ、Shift_JIS に変換させる.
    5172         # コメント等に含まれる SJIS に不適切な文字コードは '?' または REPLACEMENT CHARACTER に変換される.
    5173         # EUC や UTF-8 で記述された CDL が混在していても、Ruby 例外が発生することなく処理を進めることができる.
    5174         # 文字コード指定が SJIS であって、文字列リテラルの中に、文字コードがSJIS 以外の非 ASCII が含まれている場合、
    5175         # Ruby 1.8 の tecsgen では文字コード指定に影響なく処理されたものが、Ruby 1.9 以降では '?' に置き換わる可能性がある.
     5158        # Shift JIS は、いったん Windows-31J として読み込ませ、Shift_JIS に変換させる.
     5159        # コメント等に含まれる SJIS に不適切な文字コードは '?' または REPLACEMENT CHARACTER に変換される.
     5160        # EUC や UTF-8 で記述された CDL が混在していても、Ruby 例外が発生することなく処理を進めることができる.
     5161        # 文字コード指定が SJIS であって、文字列リテラルの中に、文字コードがSJIS 以外の非 ASCII が含まれている場合、
     5162        # Ruby 1.8 の tecsgen では文字コード指定に影響なく処理されたものが、Ruby 1.9 以降では '?' に置き換わる可能性がある.
    51765163
    51775164        mode = "r:Windows-31J"
     
    51975184  end
    51985185
    5199   #=== 文字コードが相違する場合一致させる
    5200   # msg と str の文字コードが相違する場合、str を msg の文字コードに変換する
    5201   # 変換不可の文字コードは '?' (utf-8 の場合 U+FFFD (REPLACEMENT CHARACTER )) に変換
     5186  #=== 文字コードが相違する場合一致させる
     5187  # msg と str の文字コードが相違する場合、str を msg の文字コードに変換する
     5188  # 変換不可の文字コードは '?' (utf-8 の場合 U+FFFD (REPLACEMENT CHARACTER )) に変換
    52025189  #
    5203   # このメソッドは、エラーメッセージ出力でも使用されていることに注意.
     5190  # このメソッドは、エラーメッセージ出力でも使用されていることに注意.
    52045191  #
    52055192  #msg_enc::Encode | String
    52065193  def self.str_code_convert( msg, str )
    52075194    if $b_no_kcode == false then
    5208       return str                          # Ruby V1.8 まで
     5195      return str                          # Ruby V1.8 まで
    52095196    end
    52105197    if msg.encoding != str.encoding then
    5211       option = { :invalid => :replace, :undef => :replace }   # 例外を発生させず、'?' に変換する(utf-8 は 0xfffd)
     5198      option = { :invalid => :replace, :undef => :replace }   # 例外を発生させず、'?' に変換する(utf-8 は 0xfffd)
    52125199      # return str.encode( msg.encoding, option )
    52135200      str = str.encode( "utf-8", option )
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/core/bnf.y.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2018 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$
     
    5540class Generator
    5641rule
    57 # トップレベルの構文要素はcomponent_description
     42# トップレベルの構文要素はcomponent_description
    5843all: component_description
    5944
    6045# Expr
    61 ##########################  式  ##########################
    62 # K&Rの文法(プログラミング言語C 第2版 付録)と一部異なる
    63 # argument_expression_list(関数引数), assignment_expression(代å
    64 ¥)がない
    65 # 式の result は、すべてé
    66 åˆ—で第一要素が識別シンボル、第二要素以下が引数
     46##########################  式  ##########################
     47# K&Rの文法(プログラミング言語C 第2版 付録)と一部異なる
     48# argument_expression_list(関数引数), assignment_expression(代入)がない
     49# 式の result は、すべて配列で第一要素が識別シンボル、第二要素以下が引数
    6750
    6851primary_expression
     
    9275        | string_literal_list STRING_LITERAL
    9376                {
    94                         # 連接した文字列を1つの文字列にまとめる
     77                        # 連接した文字列を1つの文字列にまとめる
    9578                        str = "\"" + val[0].val.gsub( /\"(.*)\"/, "\\1" ) + val[1].val.gsub( /\"(.*)\"/, "\\1" ) + "\""
    9679                        result = Token.new( str, val[0].file, val[0].lineno, val[0].col )
    9780                }
    9881
    99 # 関数呼び出しと後置インクリメント、デクリメント演算子がない
     82# 関数呼び出しと後置インクリメント、デクリメント演算子がない
    10083postfix_expression
    10184        : primary_expression
     
    10790                { result = [ :OP_REF, val[0], val[2] ] }
    10891
    109 # 前置インクリメント、デクリメント演算子がない
     92# 前置インクリメント、デクリメント演算子がない
    11093unary_expression
    11194        : postfix_expression
     
    202185
    203186
    204 # コンマ演算子が使えない
     187# コンマ演算子が使えない
    205188expression
    206189        : conditional_expression
     
    227210
    228211# Types
    229 ##########################  宣言  ##########################
    230 # 宣言もK&Rと一部異なる
    231 
    232 # declarationはセルの属性で使われる
    233 # K&Rとの違い: storage classが指定できない、型が省略できない
     212##########################  宣言  ##########################
     213# 宣言もK&Rと一部異なる
     214
     215# declarationはセルの属性で使われる
     216# K&Rとの違い: storage classが指定できない、型が省略できない
    234217declaration
    235218        : type_specifier_qualifier_list init_declarator_list ';'
     
    241224                }
    242225
    243 # declaration_specifiersは関数のパラメータで使われるが、
    244 # type_specifier_qualifier_listで十分かもしれない
     226# declaration_specifiersは関数のパラメータで使われるが、
     227# type_specifier_qualifier_listで十分かもしれない
    245228# Oyama
    246 # const, volatile は単独で型にならないので変形
    247 # const と volatile が同å±
    248 ã™ã‚‹ã“とはないので、繰返し指定できないようにした
    249 # type_specifier も繰返し指定できるå¿
    250 è¦ã¯ãªã„ (singed など単独で型にはならない)
     229# const, volatile は単独で型にならないので変形
     230# const と volatile が同居することはないので、繰返し指定できないようにした
     231# type_specifier も繰返し指定できる必要はない (singed など単独で型にはならない)
    251232declaration_specifiers
    252233        : type_specifier
     
    268249                { val[0].set_initializer( val[2] ) }
    269250
    270 # INT8から下はK&Rにない
     251# INT8から下はK&Rにない
    271252# Oyama
    272 # signed, unsigned は単独で型にならないので、構文要素として分離
     253# signed, unsigned は単独で型にならないので、構文要素として分離
    273254type_specifier
    274255        : VOID  { result = VoidType.new }
     
    278259        | enum_specifier
    279260        | TYPE_NAME     { result = DefinedType.new( val[0].val ) }
    280 #        | IDENTIFIER   { result = DefinedType.new( val[0].val ) }   # reduce/reduce conflict が起こってしまう
     261#        | IDENTIFIER   { result = DefinedType.new( val[0].val ) }   # reduce/reduce conflict が起こってしまう
    281262        | sign_int_type
    282263        | char_type
     
    373354                }
    374355
    375 sign    # TECS では signed, unsigned 単独では型にできない
     356sign    # TECS では signed, unsigned 単独では型にできない
    376357        : SIGNED        { result = :SIGNED }
    377358        | UNSIGNED      { result = :UNSIGNED }
    378359
    379 # result[0] :CHAR などのトークン、result[1] :CONST, :VOLATILE など
     360# result[0] :CHAR などのトークン、result[1] :CONST, :VOLATILE など
    380361sign_int_type
    381362        : sign int_type
     
    386367        | int_type
    387368
    388 # K&Rのstruct_or_union_specifierに相当するが、unionは使えない
     369# K&Rのstruct_or_union_specifierに相当するが、unionは使えない
    389370struct_specifier                # mikan
    390371        : STRUCT struct_tag '{'
     
    397378        | STRUCT
    398379                {
    399                         # tag が無い場合、å†
    400 éƒ¨åã‚’与える
     380                        # tag が無い場合、内部名を与える
    401381                        result = StructType.new( :"TAG__#{@@no_struct_tag_num}__" )
    402382                        @@no_struct_tag_num += 1
     
    408388                        result = val[1]
    409389                }
    410         | STRUCT struct_tag   # mikan struct_tag は namespace 対応がå¿
    411 è¦
     390        | STRUCT struct_tag   # mikan struct_tag は namespace 対応が必要
    412391                {
    413392                        StructType.set_define( false )
     
    424403                { result = StructType.new( val[0].val ) }
    425404
    426 # ポインタ修飾子を追加
     405# ポインタ修飾子を追加
    427406struct_declaration
    428407        :                                type_specifier_qualifier_list struct_declarator_list ';'
     
    459438
    460439
    461 # K&Rのspecifier_qualifier_listと同じ
    462 # 名前がまぎらわしかったのでtype_を付けた
     440# K&Rのspecifier_qualifier_listと同じ
     441# 名前がまぎらわしかったのでtype_を付けた
    463442type_specifier_qualifier_list
    464 # Oyama type_specifier を繰り返して指定することはなくなった (sign_int_type としたため)
     443# Oyama type_specifier を繰り返して指定することはなくなった (sign_int_type としたため)
    465444#        : type_specifier type_specifier_qualifier_list
    466445        : type_specifier
     
    470449                        result = val[1]
    471450                }
    472 # mikan Oyama type_qualifier だけでは型指定にならない : 構文エラーとするより、意味エラーとした方が親切
     451# mikan Oyama type_qualifier だけでは型指定にならない : 構文エラーとするより、意味エラーとした方が親切
    473452#        | type_qualifier
    474453
     
    480459                { result << val[2] }
    481460
    482 # ビットフィールドは使えない
     461# ビットフィールドは使えない
    483462struct_declarator
    484463        : declarator
    485464
    486 # enumの種類を追加
     465# enumの種類を追加
    487466enum_specifier          # mikan
    488467        : enum_type            '{' enumerator_list '}'
     
    538517                        result = val[0]
    539518                }
    540 #        | direct_declarator '(' identifier_list ')'  # これは何のためにå¿
    541 è¦ï¼Ÿ 060211
     519#        | direct_declarator '(' identifier_list ')'  # これは何のために必要? 060211
    542520        | direct_declarator '(' ')'
    543521                {
     
    572550        : parameter_list
    573551        | parameter_list ',' '...'
    574                 # mikan 可変長パラメータ
     552                # mikan 可変長パラメータ
    575553
    576554parameter_list
     
    580558                {
    581559                        val[0].add_param( val[2] )
    582                         # result = val[0] 不要
    583                 }
    584 
    585 
    586 # パラメータ修飾子を追加
     560                        # result = val[0] 不要
     561                }
     562
     563
     564# パラメータ修飾子を追加
    587565parameter_declaration
    588566#        : spec_L parameter_specifier_list spec_R declaration_specifiers declarator
     
    595573                }
    596574
    597         # 以下はエラーとする
    598         | declaration_specifiers declarator # parameter_specifier なしは扱わない
     575        # 以下はエラーとする
     576        | declaration_specifiers declarator # parameter_specifier なしは扱わない
    599577                {
    600578                        Generator.error( "G1001 need specifier for \'$1\'" , val[1].get_name )
    601579                        result = nil
    602580                }
    603         | declaration_specifiers        # 仮引数なしは、とりあえず扱わない 060210
     581        | declaration_specifiers        # 仮引数なしは、とりあえず扱わない 060210
    604582                {
    605583                        unless val[0].instance_of?( VoidType ) then
     
    608586                        result = nil
    609587                }
    610 #        | '[' parameter_specifier_list ']' declaration_specifiers # 同 060210
    611         | parameter_specifier_list_bracket declaration_specifiers # 同 060210
     588#        | '[' parameter_specifier_list ']' declaration_specifiers # 060210
     589        | parameter_specifier_list_bracket declaration_specifiers # 060210
    612590                {
    613591                        unless val[1].instance_of?( VoidType ) then
     
    650628                                result = val[1]
    651629                        else
    652                                 # エラー:仮で val[0] を返す
     630                                # エラー:仮で val[0] を返す
    653631                                result = val[0]
    654632                        end
    655633                }
    656                 # mikan abstract_declarator が pointer 以外ではうまく動かない、とりあえず '*' CAST のみ救った
     634                # mikan abstract_declarator が pointer 以外ではうまく動かない、とりあえず '*' CAST のみ救った
    657635
    658636abstract_declarator             # mikan
     
    663641direct_abstract_declarator
    664642        : '(' abstract_declarator ')'
    665                 { result = val[1] }  # 関数ポインタ型を救う
     643                { result = val[1] }  # 関数ポインタ型を救う
    666644        | '[' ']'
    667645                {
     
    702680                }
    703681
    704 # assignment_expressionをconstant_expressionに変更
     682# assignment_expressionをconstant_expressionに変更
    705683initializer                     # mikan
    706684        : constant_expression
     
    726704
    727705
    728 ##########################  ここからはCDL独自  ##########################
    729 
    730 #トップレベルの構文規則
    731 #コンポーネント記述
     706##########################  ここからはCDL独自  ##########################
     707
     708#トップレベルの構文規則
     709#コンポーネント記述
    732710component_description
    733711        : component_description specified_statement
     
    742720                        obj = val[3]
    743721                        if obj.kind_of?( Cell ) || obj.kind_of?( Signature ) || obj.kind_of?( Celltype ) || obj.kind_of?( CompositeCelltype )then
    744                                 # cell, signature 以外は、指定子を置けない
     722                                # cell, signature 以外は、指定子を置けない
    745723                        else
    746               Generator.get_statement_specifier   # クリア
     724              Generator.get_statement_specifier   # クリア
    747725              Generator.error( "G1009 unexpected specifier"  )
    748726                        end
    749727                }
    750                 # これと同じ記述が composite_celltype にもある
     728                # これと同じ記述が composite_celltype にもある
    751729
    752730statement
     
    764742        | import_C
    765743        | generate_statement
    766         | error   # エラー回復ポイント
     744        | error   # エラー回復ポイント
    767745
    768746       
     
    803781        | IDENTIFIER '[' constant_expression ']' '.' IDENTIFIER '.' IDENTIFIER '=' initializer
    804782                {  result = [ :NORMAL_ALLOC, val[0], val[2], val[5], val[7], val[9] ] }
    805 # mikan 将来的な拡張 ('*' でまとめて指定可能とする)
     783# mikan 将来的な拡張 ('*' でまとめて指定可能とする)
    806784#        | IDENTIFIER '.' IDENTIFIER '.' '*'        '=' initializer
    807785#               {  result = [ val[0], val[ ], val[ ], val[ ] ] }
     
    828806
    829807const_statement
    830         : declaration   # 定数定義
     808        : declaration   # 定数定義
    831809                {
    832810                        val[0].each { |decl|
     
    883861                        }
    884862                }
    885                 # mikan   typedef_specifier 未処置
     863                # mikan   typedef_specifier 未処置
    886864
    887865
     
    903881        : IDENTIFIER
    904882                {result = Namespace.new(val[0].val)}
    905                 # namespace インスタンスに statement を記憶させるためここで生成
     883                # namespace インスタンスに statement を記憶させるためここで生成
    906884
    907885statement_list
     
    915893                { result = val[0].append!( val[2].val ) }
    916894
    917 #シグニチャ
     895#シグニチャ
    918896signature
    919897        : SIGNATURE signature_name '{' function_head_list '}' ';'
     
    924902                {result = Signature.new( val[0].val ) }
    925903
    926 function_head_list     # result:  function_head のé
    927 åˆ—
     904function_head_list     # result:  function_head の配列
    928905#        : function_head
    929906#               { result = NamedList.new( val[0], "function" ) }
     
    942919                                val[1].check
    943920                        else
    944                                 # mikan 関数のé
    945 åˆ—も以下のメッセージになる
     921                                # mikan 関数の配列も以下のメッセージになる
    946922                                Generator.error( "G1010 Not function"  )
    947923                                result = nil
     
    959935
    960936
    961 #セルタイプ
     937#セルタイプ
    962938celltype
    963939        : CELLTYPE celltype_name '{' celltype_statement_list '}' ';'
     
    985961                {
    986962                        if val[3].kind_of? Port then
    987                                 val[3].set_specifier val[1]  # 設定順序あり
     963                                val[3].set_specifier val[1]  # 設定順序あり
    988964                                Celltype.new_port( val[3] )
    989965                        else
    990                                 # Port 以外では指定子はエラー
     966                                # Port 以外では指定子はエラー
    991967                                Generator.error( "G1012 $1 : cannot put specifier here" , val[1] )
    992968                        end
     
    999975        | require
    1000976        | factory
    1001 #        | error       # エラー回復ポイント  (#513 無限ループに陥るケースがあるので、ここでのエラー回復は取りやめ)
     977#        | error       # エラー回復ポイント  (#513 無限ループに陥るケースがあるので、ここでのエラー回復は取りやめ)
    1002978
    1003979celltype_statement_specifier_list
     
    1016992
    1017993alloc_list2
    1018         : alloc2                        { result = [ val[0] ] }    # 受け口のアロケータ指定
    1019         | alloc                         { result = [ val[0] ] }    # å†
    1020 éƒ¨ã‚»ãƒ«ã®ã‚¢ãƒ­ã‚±ãƒ¼ã‚¿æŒ‡å®š
     994        : alloc2                        { result = [ val[0] ] }    # 受け口のアロケータ指定
     995        | alloc                         { result = [ val[0] ] }    # 内部セルのアロケータ指定
    1021996        | alloc_list2 ',' alloc2        { result << val[2] }
    1022997        | alloc_list2 ',' alloc         { result << val[2] }
    1023998
    1024999alloc2
    1025         : IDENTIFIER '.' IDENTIFIER '=' initializer    # å†
    1026 éƒ¨ã‚¢ãƒ­ã‚±ãƒ¼ã‚¿ (デバドラ向きアロケータ)指定
     1000        : IDENTIFIER '.' IDENTIFIER '=' initializer    # 内部アロケータ (デバドラ向きアロケータ)指定
    10271001                {  result = [ :INTERNAL_ALLOC, val[0].val, val[2].val, val[4] ] }
    1028         | IDENTIFIER '.' IDENTIFIER '<=' initializer   # 多段リレーモデル向きアロケータ指定
     1002        | IDENTIFIER '.' IDENTIFIER '<=' initializer   # 多段リレーモデル向きアロケータ指定
    10291003                {  result = [ :RELAY_ALLOC, val[0].val, val[2].val, val[4] ] }
    10301004
    10311005
    1032 #呼び口、受け口
     1006#呼び口、受け口
    10331007port
    10341008        : port_type namespace_signature_name port_name ';'
     
    10561030
    10571031
    1058 #属性
     1032#属性
    10591033attribute
    10601034        : ATTRIBUTE '{' attribute_declaration_list '}' ';'
     
    10801054                {
    10811055                        val[3].each{ |i|       # i:Decl
    1082                                 i.set_kind( :ATTRIBUTE )   # 設定順序あり
     1056                                i.set_kind( :ATTRIBUTE )   # 設定順序あり
    10831057                                i.set_specifier_list( [val[1]] )
    10841058                                i.check
     
    10991073        : STRING_LITERAL
    11001074
    1101 #å†
    1102 éƒ¨å¤‰æ•°
     1075#内部変数
    11031076var
    11041077        : VAR '{' var_declaration_list '}' ';'
     
    11221095                {
    11231096                        val[3].each{ |i|       # i:Decl
    1124                                 i.set_kind( :VAR )   # 設定順序あり
     1097                                i.set_kind( :VAR )   # 設定順序あり
    11251098                                i.set_specifier_list( [val[1]] )
    11261099                                i.check
     
    11321105        : SIZE_IS  '(' expression ')'   { result = [:SIZE_IS,val[2]] }
    11331106
    1134 # リクワイア
     1107# リクワイア
    11351108require
    11361109        : REQUIRE namespace_identifier '.' IDENTIFIER';'                            # mikan namespace #1
     
    11431116                }
    11441117
    1145 #ファクトリ
     1118#ファクトリ
    11461119factory
    11471120        : factory_head '{' factory_function_list '}' ';'
     
    11521125
    11531126factory_function_list
    1154         :                                         # 空
     1127        :                                         #
    11551128        | factory_function_list factory_function
    11561129
     
    11641137        : IDENTIFIER
    11651138
    1166 arg_list     # factory の write 関数の第三引数以降
     1139arg_list     # factory の write 関数の第三引数以降
    11671140        : IDENTIFIER
    11681141                { result = [ [ :IDENTIFIER, val[0].val ] ] }
     
    11741147                { result << [ :STRING_LITERAL, val[2].val ] }
    11751148
    1176 #セル生成
     1149#セル生成
    11771150cell
    11781151        : CELL namespace_celltype_name cell_name '{'
     
    11801153          join_list '}' ';'
    11811154                { result = Cell.end_of_parse true }
    1182         | CELL namespace_celltype_name cell_name ';'   # oyama プロトタイプ宣言
     1155        | CELL namespace_celltype_name cell_name ';'   # oyama プロトタイプ宣言
    11831156                        { result = Cell.end_of_parse false }
    11841157
     
    11921165
    11931166join_list
    1194         :   # 空行  061007
     1167        :   # 空行  061007
    11951168        | join_list specified_join
    11961169        | join_list reverse_join
     
    12351208                        Cell.new_join( result, true )
    12361209                }
    1237         | cae_name '=' initializer ';'     # 初期化子: '{', '}' も可
     1210        | cae_name '=' initializer ';'     # 初期化子: '{', '}' も可
    12381211                {
    12391212                        result = Join.new( val[0].val, nil, val[2] )
     
    12791252        : constant_expression
    12801253
    1281 #複合種
     1254#複合種
    12821255composite_celltype
    12831256        : COMPOSITE composite_celltype_name '{' composite_celltype_statement_list '}' ';'
     
    12991272                {
    13001273                        if val[0].kind_of?( Port ) then
    1301                                 CompositeCelltype.new_port( val[0] )   # é
    1302 å»¶ã—て登録
     1274                                CompositeCelltype.new_port( val[0] )   # 遅延して登録
    13031275                        end
    13041276                }
     
    13061278                {
    13071279                        if val[3].kind_of?( Port ) then
    1308                                 # port 以外 val[3] に有効な値がå
    1309 ¥ã£ã¦ã„ないので、以下のメソッドを適用できない
    1310                                 # 現状 port, cell 以外は指定子を受け付けない
    1311                                 # (しかし将来他の文も指定子を受け付ける可能性があるので、この位置に記述する)
     1280                                # port 以外 val[3] に有効な値が入っていないので、以下のメソッドを適用できない
     1281                                # 現状 port, cell 以外は指定子を受け付けない
     1282                                # (しかし将来他の文も指定子を受け付ける可能性があるので、この位置に記述する)
    13121283                                val[3].set_specifier( Generator.get_statement_specifier )
    1313                                 CompositeCelltype.new_port( val[3] )   # é
    1314 å»¶ã—て登録 (set_specifier 後)
     1284                                CompositeCelltype.new_port( val[3] )   # 遅延して登録 (set_specifier 後)
    13151285                        elsif val[3].kind_of?( Cell ) then
    1316                                 # Cell.end_of_parse にて設定
     1286                                # Cell.end_of_parse にて設定
    13171287                        else
    1318               Generator.get_statement_specifier   # クリア
     1288              Generator.get_statement_specifier   # クリア
    13191289              Generator.error( "G1013 unexpected specifier"  )
    13201290                        end
     
    13261296        | internal_cell
    13271297        | export_join
    1328 #        | error       # エラー回復ポイント  (#513 無限ループに陥るケースがあるので、ここでのエラー回復は取りやめ)
     1298#        | error       # エラー回復ポイント  (#513 無限ループに陥るケースがあるので、ここでのエラー回復は取りやめ)
    13291299
    13301300composite_celltype_statement_specifier_list
     
    13541324                }
    13551325
    1356 #属性
     1326#属性
    13571327composite_attribute
    13581328        : ATTRIBUTE '{' composite_attribute_declaration_list '}' ';'
     
    13851355
    13861356internal_join_list
    1387         :   # 空行  061007
     1357        :   # 空行  061007
    13881358        | internal_join_list specified_join
    13891359        | internal_join_list external_join
    13901360        | internal_join_list reverse_join
    13911361
    1392 external_join  # cell å†
    1393 ã«è¨˜è¿°ã™ã‚‹å‘¼ã³å£ã®å¤–部結合
     1362external_join  # cell 内に記述する呼び口の外部結合
    13941363        : internal_cell_elem_name '=>' COMPOSITE '.' export_name ';'
    13951364                {       Cell.external_join( val[0].val, val[4].val, true )      }
    13961365        | internal_cell_elem_name '=>' export_name ';'
    13971366                {       Cell.external_join( val[0].val, val[2].val, false )     }
    1398         # 以前の文法では、呼び口側も cell の外に記述していた
    1399         # その時の実è£
    1400 ã‚’
    1401 
    1402 export_join    # cell 外に記述する受け口の外部結合
     1367        # 以前の文法では、呼び口側も cell の外に記述していた
     1368        # その時の実装を
     1369
     1370export_join    # cell 外に記述する受け口の外部結合
    14031371        : export_name '=>' internal_ref_cell_name '.' internal_cell_elem_name ';'
    14041372                {
     
    14211389        : IDENTIFIER
    14221390
    1423 # リージョン
     1391# リージョン
    14241392region
    14251393        : spec_L region_specifier_list spec_R REGION region_name '{'  region_statement '}' ';'
     
    14361404        : IN_THROUGH '(' plugin_name ',' plugin_arg ')'
    14371405                { Region.new_in_through( val[2].val, val[4].val ) }
    1438         | IN_THROUGH '(' ')'   # in 許可
     1406        | IN_THROUGH '(' ')'   # in 許可
    14391407                { Region.new_in_through }
    14401408        | OUT_THROUGH '(' plugin_name ',' plugin_arg ')'
    14411409                { Region.new_out_through( val[2].val, val[4].val ) }
    1442         | OUT_THROUGH '(' ')'  # out 許可
     1410        | OUT_THROUGH '(' ')'  # out 許可
    14431411                { Region.new_out_through() }
    14441412        | TO_THROUGH '(' namespace_region_name ',' plugin_name ',' plugin_arg ')'
    14451413                { Region.new_to_through( val[2], val[4].val, val[6].val ) }
    1446         | TO_THROUGH '('namespace_region_name ')'  # to 許可
     1414        | TO_THROUGH '('namespace_region_name ')'  # to 許可
    14471415                { Region.new_to_through( val[2], nil, nil ) }
    14481416        | NODE
     
    14711439                        if obj.kind_of?( Cell ) then
    14721440                        else
    1473               Generator.get_statement_specifier   # クリア
     1441              Generator.get_statement_specifier   # クリア
    14741442              Generator.error( "G9999 unexpected specifier"  )
    14751443                        end
     
    14901458namespace_region_name
    14911459         : :IDENTIFIER
    1492                 { result = [ val[0].val ] }  # mikan é
    1493 åˆ—であるå¿
    1494 è¦ã¯ãªã„
     1460                { result = [ val[0].val ] }  # mikan 配列である必要はない
    14951461#        : namespace_identifier
    14961462
    1497 # 指定子の括弧 (in, out などのキーワード切り替えのため分離)
     1463# 指定子の括弧 (in, out などのキーワード切り替えのため分離)
    14981464spec_L
    14991465        : '['  { set_in_specifier }
     
    16521618  }
    16531619
    1654   # 指定子 '[]' å†
    1655 ã§ã®ã¿ä½¿ç”¨ã§ãã‚‹ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰
     1620  # 指定子 '[]' 内でのみ使用できるキーワード
    16561621  RESERVED2 = {
    16571622    # specifier
     
    16701635    # port (entry)
    16711636    'inline' => :INLINE,
    1672     'ref_desc' => :REF_DESC,   # call も可
     1637    'ref_desc' => :REF_DESC,   # call も可
    16731638
    16741639    # port (call)
     
    17141679  }
    17151680
    1716   # 再帰的なパーサのためのスタック
     1681  # 再帰的なパーサのためのスタック
    17171682  @@generator_nest = -1
    17181683  @@generator_stack = []
    17191684  @@current_locale = []
    17201685
    1721   # import_C 中である
     1686  # import_C 中である
    17221687  @@import_C = false
    17231688
    1724   # すべての構文解析が完了した
     1689  # すべての構文解析が完了した
    17251690  @@b_end_all_parse = false
    17261691
    1727   # tag なし struct
     1692  # tag なし struct
    17281693  @@no_struct_tag_num = 0
    17291694
    17301695  def self.parse( file_name, plugin = nil, b_reuse = false )
    1731     # パーサインスタンスを生成(別パーサで読み込む)
     1696    # パーサインスタンスを生成(別パーサで読み込む)
    17321697    parser = Generator.new
    17331698
    1734     # plugin から import されている場合の plugin 設定
     1699    # plugin から import されている場合の plugin 設定
    17351700    parser.set_plugin plugin
    17361701
    1737     # reuse フラグを設定
     1702    # reuse フラグを設定
    17381703    parser.set_reuse b_reuse
    17391704
    1740     # cdl をパース
     1705    # cdl をパース
    17411706    parser.parse( [file_name] )
    17421707
    1743     # 終期化 パーサスタックを戻す
     1708    # 終期化 パーサスタックを戻す
    17441709    parser.finalize
    17451710  end
     
    17611726  def self.get_plugin
    17621727    if @@generator_stack[@@generator_nest] then
    1763       # tecsgen 引数の cdl が import される場合は nil
     1728      # tecsgen 引数の cdl が import される場合は nil
    17641729      return @@generator_stack[@@generator_nest].get_plugin
    17651730    else
     
    17781743  def self.is_reuse?
    17791744    if @@generator_stack[@@generator_nest] then
    1780       # tecsgen 引数の cdl が import される場合は nil
     1745      # tecsgen 引数の cdl が import される場合は nil
    17811746      return @@generator_stack[@@generator_nest].is_reuse?
    17821747    else
     
    18081773      b_in_string = false
    18091774
    1810       # euc のコメントを utf8 として扱うと、コメントの終わりを誤る問題の対策
     1775      # euc のコメントを utf8 として扱うと、コメントの終わりを誤る問題の対策
    18111776      TECS_LANG::set_kcode_binary
    18121777
     
    18181783          TECSIO.foreach(file) {|line|
    18191784            col = 1
    1820 #            line.rstrip!         æ”¹è¡Œå«ã‚€æ–‡å­—列を扱うようになったので、ここで空白を取り除けなくなった
     1785#            line.rstrip!         改行含む文字列を扱うようになったので、ここで空白を取り除けなくなった
    18211786
    18221787            until line.empty?
     
    18241789              if b_in_comment
    18251790                case line
    1826                   # コメント終了
     1791                  # コメント終了
    18271792                when /\A\*\//
    18281793                  b_in_comment = false
    18291794                when /\A./
    18301795                  ;
    1831                 when /\s+/     # line.rstrip! を止めたため \n などの空白文字とまっちするルールがå¿
    1832 è¦ã«ãªã£ãŸ
     1796                when /\s+/     # line.rstrip! を止めたため \n などの空白文字とまっちするルールが必要になった
    18331797                  ;
    18341798                end
     
    18381802                  @q <<  [:STRING_LITERAL, Token.new(string, file, lineno, col)]
    18391803                  b_in_string = false
    1840                 elsif line =~ /\A.*\\\n/     # 改行 \n は '.' にマッチしない
     1804                elsif line =~ /\A.*\\\n/     # 改行 \n は '.' にマッチしない
    18411805                  string += $&
    1842                 elsif line =~ /\A.*\n/     # 改行 \n は '.' にマッチしない
     1806                elsif line =~ /\A.*\n/     # 改行 \n は '.' にマッチしない
    18431807                  string += line
    1844                   # この位置では error メソッドは使えない (token 読出し前)
     1808                  # この位置では error メソッドは使えない (token 読出し前)
    18451809                  puts "#{file}:#{lineno}:#{col}: error: string literal has newline without escape"
    18461810                  @@n_error += 1
     
    18481812              else
    18491813                case line
    1850                 # 空白、プリプロセスディレクティブ
     1814                # 空白、プリプロセスディレクティブ
    18511815                when /\A\s+/
    18521816                  ;
    1853                 # 識別子
     1817                # 識別子
    18541818                when /\A[a-zA-Z_]\w*/
    18551819                  word = $&
    18561820                  @q << [RESERVED[word] || :IDENTIFIER, Token.new(word.intern, file, lineno, col)]
    1857                 # 16 進数定数
     1821                # 16 進数定数
    18581822                when /\A0x[0-9A-Fa-f]+/
    18591823                  @q << [:HEX_CONSTANT, Token.new($&, file, lineno, col)]
    1860                 # 8 進数定数
     1824                # 8 進数定数
    18611825                when /\A0[0-7]+/
    18621826                  @q << [:OCTAL_CONSTANT, Token.new($&, file, lineno, col)]
    1863                 # 浮動小数定数
     1827                # 浮動小数定数
    18641828                when /\A[0-9]+\.([0-9]*)?([Ee][+-]?[0-9]+)?/
    18651829                  @q << [:FLOATING_CONSTANT, Token.new($&, file, lineno, col)]
    1866                 # 整数定数
     1830                # 整数定数
    18671831                when /\A\d+/
    18681832                  @q << [:INTEGER_CONSTANT, Token.new($&.to_i, file, lineno, col)]
    1869                 # 文字定数
     1833                # 文字定数
    18701834                when /\A'(?:[^'\\]|\\.)'/
    18711835                  @q << [:CHARACTER_LITERAL, Token.new($&, file, lineno, col)]
    1872                 # 文字列
    1873 #                "#include  #include #include \"../systask/logtask.cfg\"       æœ€å¾Œã® " 忘れ)で無限ループ
     1836                # 文字列
     1837#                "#include  #include #include \"../systask/logtask.cfg\"       最後の " 忘れ)で無限ループ
    18741838#                when /\A"(?:[^"\\]+|\\.)*"/
    1875                 when /\A"(?:[^"\\]|\\.)*"/   # これはうまく行くようだ
     1839                when /\A"(?:[^"\\]|\\.)*"/   # これはうまく行くようだ
    18761840                  @q << [:STRING_LITERAL, Token.new($&, file, lineno, col)]
    1877                 # 文字列 (改行あり)
     1841                # 文字列 (改行あり)
    18781842                when /\A"(?:[^"\\]|\\.)*\\\n$/
    18791843                  string = $&
    18801844                  b_in_string = true
    1881                 # 文字列 (改行あり, escape なし)
     1845                # 文字列 (改行あり, escape なし)
    18821846                when /\A("(?:[^"\\]|\e\.)*)\n$/
    18831847                  string = $1 + "\\\n"
    18841848                  b_in_string = true
    1885                   # この位置では error メソッドは使えない (token 読出し前) # mikan cdl_error ではない
     1849                  # この位置では error メソッドは使えない (token 読出し前) # mikan cdl_error ではない
    18861850                  puts "#{file}:#{lineno}:#{col}: error: string literal has newline without escape"
    18871851                  @@n_error += 1
    1888                 # 山括弧で囲まれた文字列
     1852                # 山括弧で囲まれた文字列
    18891853                # when /\A<[0-9A-Za-z_\. \/]+>/   # AB: angle bracke
    1890                 when /\A<(?:[^>\\]|\\.)*>/   # これはうまく行くようだ
     1854                when /\A<(?:[^>\\]|\\.)*>/   # これはうまく行くようだ
    18911855                  @q << [:AB_STRING_LITERAL, Token.new($&, file, lineno, col)]
    1892                 # 行コメント
     1856                # 行コメント
    18931857                when /\A\/\/.*$/
    1894                   # 読み飛ばすだけ
    1895                 # コメント開始
     1858                  # 読み飛ばすだけ
     1859                # コメント開始
    18961860                when /\A\/\*/
    18971861                  b_in_comment = true
    1898                 # '>>', '<<' など
     1862                # '>>', '<<' など
    18991863                when /\A>>/, /\A<</, /\A==/, /\A!=/, /\A\&\&/, /\A\|\|/
    19001864                  @q << [$&, Token.new($&, file, lineno, col)]
    19011865                when /\A::/, /\A=>/, /\A<=/, /\A>=/
    19021866                  @q << [$&, Token.new($&, file, lineno, col)]
    1903                 # '(', ')' など一文字の記号、または未知の記号
     1867                # '(', ')' など一文字の記号、または未知の記号
    19041868                when /\A./
    19051869                  @q << [$&, Token.new($&, file, lineno, col)]
     
    19251889      }
    19261890
    1927       # 終了の印
     1891      # 終了の印
    19281892      @q << nil
    19291893
     
    19451909
    19461910      if token[0] == :IDENTIFIER then
    1947         # TYPE_NAME トークンへ置換え
     1911        # TYPE_NAME トークンへ置換え
    19481912        if Namespace.is_typename?( token[1].val ) then
    19491913          token[0] = :TYPE_NAME
    19501914        elsif @in_specifier && RESERVED2[ token[1].val.to_s ] then
    1951           # 指定子キーワード( '[', ']' å†
    1952 ã§ã®ã¿æœ‰åŠ¹)
     1915          # 指定子キーワード( '[', ']' 内でのみ有効)
    19531916          token[0] = RESERVED2[ token[1].val.to_s ]
    19541917        end
    19551918      end
    19561919
    1957       if $debug then     # 070107 token 無効時ここを通さないようした (through 対応 -d の時に例外発生)
     1920      if $debug then     # 070107 token 無効時ここを通さないようした (through 対応 -d の時に例外発生)
    19581921        locale = @@current_locale[@@generator_nest]
    19591922        if token then
     
    19871950  @@n_info = 0
    19881951
    1989   # このメソッドは構文解析、意味解析からのみ呼出し可(コード生成でエラー発生は不適切)
     1952  # このメソッドは構文解析、意味解析からのみ呼出し可(コード生成でエラー発生は不適切)
    19901953  def self.error( msg, *arg )
    19911954    locale = nil
     
    19971960
    19981961    msg = TECSMsg.get_error_message( msg )
    1999     # $1, $2, ... を arg で置換
     1962    # $1, $2, ... を arg で置換
    20001963    count = 1
    20011964    arg.each{ |a|
     
    20051968    }
    20061969
    2007     # import_C の中でのエラー?
     1970    # import_C の中でのエラー?
    20081971    if @@import_C then
    20091972      C_parser.error( msg )
    20101973    else
    20111974
    2012       # Node の記憶する 位置 (locale) を使用した場合、変更以前に比べ、
    2013       # 問題発生箇所と異なる位置にエラーが出るため、構文解析中のエラー
    2014       # は、解析中の位置を出力する.(new_XXX で owner が子要素のチェッ
    2015       # クをすると owner の行番号が出てしまう点で、ずれが生じている)
     1975      # Node の記憶する 位置 (locale) を使用した場合、変更以前に比べ、
     1976      # 問題発生箇所と異なる位置にエラーが出るため、構文解析中のエラー
     1977      # は、解析中の位置を出力する.(new_XXX で owner が子要素のチェッ
     1978      # クをすると owner の行番号が出てしまう点で、ずれが生じている)
    20161979
    20171980      if @@b_end_all_parse == false || locale == nil then
     
    20261989  end
    20271990
    2028   # このメソッドは構文解析、意味解析からのみ呼出し可(コード生成でウォーニング発生は不適切)
     1991  # このメソッドは構文解析、意味解析からのみ呼出し可(コード生成でウォーニング発生は不適切)
    20291992  def self.warning( msg, *arg )
    20301993    locale = nil
     
    20361999
    20372000    msg = TECSMsg.get_warning_message( msg )
    2038     # $1, $2, ... を arg で置換
     2001    # $1, $2, ... を arg で置換
    20392002    count = 1
    20402003    arg.each{ |a|
     
    20442007    }
    20452008
    2046     # import_C の中でのウォーニング?
     2009    # import_C の中でのウォーニング?
    20472010    if @@import_C then
    20482011      C_parser.warning( msg )
     
    20592022  end
    20602023
    2061   # このメソッドは構文解析、意味解析からのみ呼出し可
     2024  # このメソッドは構文解析、意味解析からのみ呼出し可
    20622025  def self.info( msg, *arg )
    20632026    locale = nil
     
    20692032
    20702033    msg = TECSMsg.get_info_message( msg )
    2071     # $1, $2, ... を arg で置換
     2034    # $1, $2, ... を arg で置換
    20722035    count = 1
    20732036    arg.each{ |a|
     
    20772040    }
    20782041
    2079     # import_C の中でのウォーニング?
     2042    # import_C の中でのウォーニング?
    20802043    if @@import_C then
    20812044      C_parser.info( msg )
     
    21122075  end
    21132076
    2114   #===  '[' specifier 始め
     2077  #===  '[' specifier 始め
    21152078  def set_in_specifier
    21162079    # p "set_in_specifier"
     
    21182081  end
    21192082
    2120   #=== ']' specifier 終わり
     2083  #=== ']' specifier 終わり
    21212084  def unset_in_specifier
    21222085    # p "unset_in_specifier"
     
    21242087  end
    21252088
    2126   # statement_specifier は構文解釈途中で参ç
    2127 §ã—たいため
     2089  # statement_specifier は構文解釈途中で参照したいため
    21282090  @@statement_specifier_stack = []
    21292091  def self.add_statement_specifier( ss )
     
    21422104  end
    21432105
    2144   #=== すべての構文解析が完了したことを報告
     2106  #=== すべての構文解析が完了したことを報告
    21452107  def self.end_all_parse
    21462108    @@b_end_all_parse = true
     
    21502112
    21512113
    2152 # ファイル => INCLUDE("header")のé
    2153 åˆ—
     2114# ファイル => INCLUDE("header")の配列
    21542115Include = Hash.new {|hash, key| hash[key] = []}
    21552116
     
    22052166
    22062167#= TECSIO
    2207 #  Ruby2.0(1.9) 対応に伴い導å
    2208 ¥ã—たクラス
    2209 #  SJIS 以外では、ASCII-8BIT としてå
    2210 ¥åŠ›ã™ã‚‹
     2168#  Ruby2.0(1.9) 対応に伴い導入したクラス
     2169#  SJIS 以外では、ASCII-8BIT として入力する
    22112170class TECSIO
    2212   def self.foreach(file) # ブロック引数 { |line| }
    2213     pr = Proc.new   # このメソッドのブロック引数を pr に代å
    2214 ¥
     2171  def self.foreach(file) # ブロック引数 { |line| }
     2172    pr = Proc.new   # このメソッドのブロック引数を pr に代入
    22152173    if $b_no_kcode then
    22162174          msg = "E".encode $Ruby19_File_Encode
    22172175      if( $Ruby19_File_Encode == "Shift_JIS" )
    22182176
    2219         # Shift JIS は、いったん Windows-31J として読み込ませ、Shift_JIS に変換させる.
    2220         # コメント等に含まれる SJIS に不適切な文字コードは '?' または REPLACEMENT CHARACTER に変換される.
    2221         # EUC や UTF-8 で記述された CDL が混在していても、Ruby 例外が発生することなく処理を進めることができる.
    2222         # 文字コード指定が SJIS であって、文字列リテラルの中に、文字コードがSJIS 以外の非 ASCII が含まれている場合、
    2223         # Ruby 1.8 の tecsgen では文字コード指定に影響なく処理されたものが、Ruby 1.9 以降では '?' に置き換わる可能性がある.
     2177        # Shift JIS は、いったん Windows-31J として読み込ませ、Shift_JIS に変換させる.
     2178        # コメント等に含まれる SJIS に不適切な文字コードは '?' または REPLACEMENT CHARACTER に変換される.
     2179        # EUC や UTF-8 で記述された CDL が混在していても、Ruby 例外が発生することなく処理を進めることができる.
     2180        # 文字コード指定が SJIS であって、文字列リテラルの中に、文字コードがSJIS 以外の非 ASCII が含まれている場合、
     2181        # Ruby 1.8 の tecsgen では文字コード指定に影響なく処理されたものが、Ruby 1.9 以降では '?' に置き換わる可能性がある.
    22242182
    22252183        mode = "r:Windows-31J"
     
    22452203  end
    22462204
    2247   #=== 文字コードが相違する場合一致させる
    2248   # msg と str の文字コードが相違する場合、str を msg の文字コードに変換する
    2249   # 変換不可の文字コードは '?' (utf-8 の場合 U+FFFD (REPLACEMENT CHARACTER )) に変換
     2205  #=== 文字コードが相違する場合一致させる
     2206  # msg と str の文字コードが相違する場合、str を msg の文字コードに変換する
     2207  # 変換不可の文字コードは '?' (utf-8 の場合 U+FFFD (REPLACEMENT CHARACTER )) に変換
    22502208  #
    2251   # このメソッドは、エラーメッセージ出力でも使用されていることに注意.
     2209  # このメソッドは、エラーメッセージ出力でも使用されていることに注意.
    22522210  #
    22532211  #msg_enc::Encode | String
    22542212  def self.str_code_convert( msg, str )
    22552213    if $b_no_kcode == false then
    2256       return str                          # Ruby V1.8 まで
     2214      return str                          # Ruby V1.8 まで
    22572215    end
    22582216    if msg.encoding != str.encoding then
    2259       option = { :invalid => :replace, :undef => :replace }   # 例外を発生させず、'?' に変換する(utf-8 は 0xfffd)
     2217      option = { :invalid => :replace, :undef => :replace }   # 例外を発生させず、'?' に変換する(utf-8 は 0xfffd)
    22602218      # return str.encode( msg.encoding, option )
    22612219      str = str.encode( "utf-8", option )
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/core/componentobj.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2019 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$
     
    5439
    5540# STAGE:
    56 # このメンテナンス状況はよろしくない
    57 #  B    bnf.y.rb から呼出される
    58 #  P    parse 段階で呼出される(bnf.y.rb から直接呼出されるわけではないが、構文木生成を行う)
    59 #  S    P の中から呼出されるが、構文木生成するわけではなく意味チェックする
    60 #  G    コード生成(この段階で、構文木は完å
    61 ¨ã§ã‚る.不完å
    62 ¨ãªã‚‰ã‚¨ãƒ©ãƒ¼ã§æ‰“ちきられている)
    63 #                                                   factory の第一引数 "format" の後ろの引数
    64 
    65 # mikan 以下は ruby の mix in で実現できるかもしれない
    66 # Nestable を継承した場合、クラス変数は Nestable のものがå
    67 ±æœ‰ã•ã‚Œã‚‹ï¼ˆåˆ¥ã«ã—たかった)
     41# このメンテナンス状況はよろしくない
     42#  B    bnf.y.rb から呼出される
     43#  P    parse 段階で呼出される(bnf.y.rb から直接呼出されるわけではないが、構文木生成を行う)
     44#  S    P の中から呼出されるが、構文木生成するわけではなく意味チェックする
     45#  G    コード生成(この段階で、構文木は完全である.不完全ならエラーで打ちきられている)
     46#                                                   factory の第一引数 "format" の後ろの引数
     47
     48# mikan 以下は ruby の mix in で実現できるかもしれない
     49# Nestable を継承した場合、クラス変数は Nestable のものが共有される(別にしたかった)
    6850# class Nestable
    6951#   @@nest_stack_index = -1
     
    9072#  @name:: Symbol
    9173#  @global_name:: Symbol
    92 #  @function_head_list:: NamedList : FuncHead のインスタンスが要素
    93 #  @func_name_to_id::  {String}  :  関数名を添字とするé
    94 åˆ—で id を記憶する.id は signature の出現順番 (1から始まる)
    95 #  @context:: string : コンテキスト名
    96 #  @b_callback:: bool: callback : コールバック用のシグニチャ
    97 #  @b_deviate:: bool: deviate : 逸脱(pointer level mismatch を出さない)
    98 #  @b_checked_as_allocator_signature:: bool:  アロケータシグニチャとしてチェック済み
    99 #  @b_empty:: Bool: 空(関数が一つもない状æ
    100 ‹)
    101 #  @descriptor_list:: nil | { Signature => ParamDecl }  最後の ParamDecl しか記憶しないことに注意
    102 #  @generate:: [ Symbol, String, Plugin ]  = [ PluginName, option, Plugin ] Plugin は生成後に追加される
     74#  @function_head_list:: NamedList : FuncHead のインスタンスが要素
     75#  @func_name_to_id::  {String}  :  関数名を添字とする配列で id を記憶する.id は signature の出現順番 (1から始まる)
     76#  @context:: string : コンテキスト名
     77#  @b_callback:: bool: callback : コールバック用のシグニチャ
     78#  @b_deviate:: bool: deviate : 逸脱(pointer level mismatch を出さない)
     79#  @b_checked_as_allocator_signature:: bool:  アロケータシグニチャとしてチェック済み
     80#  @b_empty:: Bool: 空(関数が一つもない状態)
     81#  @descriptor_list:: nil | { Signature => ParamDecl }  最後の ParamDecl しか記憶しないことに注意
     82#  @generate:: [ Symbol, String, Plugin ]  = [ PluginName, option, Plugin ] Plugin は生成後に追加される
    10383
    10484  include PluginModule
     
    123103
    124104  # STAGE: P
    125   # このメソッドは parse 中のみ呼び出される
     105  # このメソッドは parse 中のみ呼び出される
    126106  def self.get_current
    127107    @@current_object
     
    134114    @name = name
    135115    Namespace.new_signature( self )
    136     set_namespace_path # @NamespacePath の設定
     116    set_namespace_path # @NamespacePath の設定
    137117    if "#{Namespace.get_global_name}" == "" then
    138118      @global_name = @name
     
    158138    @function_head_list = function_head_list
    159139
    160     # id を割付ける
     140    # id を割付ける
    161141    id = 1
    162142    function_head_list.get_items.each{ |f|
     
    180160  end
    181161
    182   #=== Signature# signature の指定子を設定
     162  #=== Signature# signature の指定子を設定
    183163  # STAGE: B
    184164  #spec_list::      [ [ :CONTEXT,  String ], ... ]
    185165  #                     s[0]        s[1]
    186166  def set_specifier_list( spec_list )
    187     return if spec_list == nil  # 空ならば何もしない
     167    return if spec_list == nil  # 空ならば何もしない
    188168
    189169    spec_list.each { |s|
     
    235215  end
    236216
    237   #=== Signature# 関数名から signature å†
    238 ã® id を得る
     217  #=== Signature# 関数名から signature 内の id を得る
    239218  def get_id_from_func_name func_name
    240219    @func_name_to_id[ func_name ]
    241220  end
    242221
    243   #=== Signature# context を得る
    244   # context 文字列を返す "task", "non-task", "any"
    245   # 未指定時のデフォルトとして task を返す
     222  #=== Signature# context を得る
     223  # context 文字列を返す "task", "non-task", "any"
     224  # 未指定時のデフォルトとして task を返す
    246225  def get_context
    247226    if @context then
     
    252231  end
    253232
    254   #=== Signature# signaure のすべての関数のすべてのパラメータをたどる
    255   #block:: ブロックを引数に取る
    256   # ブロックは2つの引数を受け取る  Decl, ParamDecl     ( Decl: 関数ヘッダ )
    257   # Port クラスにも each_param がある(同じ働き)
    258   def each_param # ブロック引数 { |func_decl, param_decl| }
    259     fha = get_function_head_array                       # 呼び口または受け口のシグニチャの関数é
    260 åˆ—
    261     return if fha == nil                                # nil なら文法エラーで有効値が設定されなかった
    262 
    263     pr = Proc.new   # このメソッドのブロック引数を pr に代å
    264 ¥
    265     fha.each{ |fh|  # fh: FuncHead                      # 関数é
    266 åˆ—中の各関数頭部
    267       fd = fh.get_declarator                            # fd: Decl  (関数頭部からDeclarotorを得る)
    268       if fd.is_function? then                           # fd が関数でなければ、すでにエラー
    269         fd.get_type.get_paramlist.get_items.each{ |par| # すべてのパラメータについて
     233  #=== Signature# signaure のすべての関数のすべてのパラメータをたどる
     234  #block:: ブロックを引数に取る
     235  # ブロックは2つの引数を受け取る  Decl, ParamDecl     ( Decl: 関数ヘッダ )
     236  # Port クラスにも each_param がある(同じ働き)
     237  def each_param # ブロック引数 { |func_decl, param_decl| }
     238    fha = get_function_head_array                       # 呼び口または受け口のシグニチャの関数配列
     239    return if fha == nil                                # nil なら文法エラーで有効値が設定されなかった
     240
     241    pr = Proc.new   # このメソッドのブロック引数を pr に代入
     242    fha.each{ |fh|  # fh: FuncHead                      # 関数配列中の各関数頭部
     243      fd = fh.get_declarator                            # fd: Decl  (関数頭部からDeclarotorを得る)
     244      if fd.is_function? then                           # fd が関数でなければ、すでにエラー
     245        fd.get_type.get_paramlist.get_items.each{ |par| # すべてのパラメータについて
    270246          pr.call( fd, par )
    271247        }
     
    274250  end
    275251
    276   #=== Signature# 正当なアロケータ シグニチャかテストする
    277   # alloc, dealloc 関数を持つかどうか、第一引き数がそれぞれ、整数、ポインタ、第二引き数が、ポインタへのポインタ、なし
     252  #=== Signature# 正当なアロケータ シグニチャかテストする
     253  # alloc, dealloc 関数を持つかどうか、第一引き数がそれぞれ、整数、ポインタ、第二引き数が、ポインタへのポインタ、なし
    278254  def is_allocator?
    279255
    280     # 一回だけチェックする
     256    # 一回だけチェックする
    281257    if @b_checked_as_allocator_signature == true then
    282258      return true
     
    284260    @b_checked_as_allocator_signature = true
    285261
    286     fha = get_function_head_array                       # 呼び口または受け口のシグニチャの関数é
    287 åˆ—
    288     if fha == nil then                                  # nil なら文法エラーで有効値が設定されなかった
     262    fha = get_function_head_array                       # 呼び口または受け口のシグニチャの関数配列
     263    if fha == nil then                                  # nil なら文法エラーで有効値が設定されなかった
    289264      return false
    290265    end
    291266
    292267    found_alloc = false; found_dealloc = false
    293     fha.each{ |fh|  # fh: FuncHead                      # 関数é
    294 åˆ—中の各関数頭部
    295       fd = fh.get_declarator                            # fd: Decl  (関数頭部からDeclarotorを得る)
    296       if fd.is_function? then                           # fd が関数でなければ、すでにエラー
     268    fha.each{ |fh|  # fh: FuncHead                      # 関数配列中の各関数頭部
     269      fd = fh.get_declarator                            # fd: Decl  (関数頭部からDeclarotorを得る)
     270      if fd.is_function? then                           # fd が関数でなければ、すでにエラー
    297271        func_name = fd.get_name.to_sym
    298272        if func_name == :alloc then
     
    303277                ! params[0].get_type.get_original_type.kind_of?( IntType ) ||
    304278                params[0].get_direction != :IN then
    305               # 第一引数が int 型でない
     279              # 第一引数が int 型でない
    306280              if ! params[0].instance_of?( ParamDecl ) ||
    307281                  ! params[0].get_type.kind_of?( PtrType ) ||
     
    309283                  params[0].get_type.get_type.get_type.kind_of?( PtrType ) ||
    310284                  params[0].get_direction != :OUT then
    311                 # 第一引数がポインタ型でもない
     285                # 第一引数がポインタ型でもない
    312286                cdl_error3( @locale, "S1003 $1: \'alloc\' 1st parameter neither [in] integer type nor [out] double pointer type", @name )
    313287              end
     
    317291                params[1].get_type.get_type.get_type.kind_of?( PtrType ) ||
    318292                params[0].get_direction != :IN then
    319               # (第一引数が整数で) 第二引数がポインタでない
     293              # (第一引数が整数で) 第二引数がポインタでない
    320294              cdl_error3( @locale, "S1004 $1: \'alloc\' 2nd parameter not [in] double pointer" , @name )
    321295            end
     
    332306                params[0].get_direction != :IN then
    333307              cdl_error3( @locale, "S1006 $1: \'dealloc\' 1st parameter not [in] pointer type" , @name )
    334 #            elsif params[1] != nil then    # 第二引き数はチェックしない
     308#            elsif params[1] != nil then    # 第二引き数はチェックしない
    335309#              cdl_error3( @locale, "S1007 Error message is changed to empty" )
    336310#                 cdl_error3( @locale, "S1007 $1: \'dealloc\' cannot has 2nd parameter" , @name )
     
    354328  end
    355329
    356   #=== Signature# シグニチャプラグイン (generate 指定子)
     330  #=== Signature# シグニチャプラグイン (generate 指定子)
    357331  def signature_plugin
    358332    plugin_name = @generate[0]
     
    384358end
    385359
    386   #== Signature# 引数で参ç
    387 §ã•ã‚Œã¦ã„ã‚‹ Descriptor 型のリストを
    388   #RETURN:: Hash { Signature => ParamDecl }:  複数の ParamDecl から参ç
    389 §ã•ã‚Œã¦ã„る場合、最後のものしか返さない
     360  #== Signature# 引数で参照されている Descriptor 型のリストを
     361  #RETURN:: Hash { Signature => ParamDecl }:  複数の ParamDecl から参照されている場合、最後のものしか返さない
    390362  def get_descriptor_list
    391363    @descriptor_list
     
    402374  end
    403375
    404   #== Signature# 引数で参ç
    405 §ã•ã‚Œã¦ã„ã‚‹ Descriptor 型のリストを作成する
     376  #== Signature# 引数で参照されている Descriptor 型のリストを作成する
    406377  def set_descriptor_list
    407378    desc_list = { }
    408379    # p "has_desc #{@name}"
    409     fha = get_function_head_array                       # 呼び口または受け口のシグニチャの関数é
    410 åˆ—
    411     if fha == nil then                                  # nil の場合、自己参ç
    412 §ã«ã‚ˆã‚‹ã‚±ãƒ¼ã‚¹ã¨ä»®å®š
     380    fha = get_function_head_array                       # 呼び口または受け口のシグニチャの関数配列
     381    if fha == nil then                                  # nil の場合、自己参照によるケースと仮定
    413382      @descriptor_list = desc_list
    414383      return desc_list
    415384    end
    416385    fha.each{ |fh|
    417       fd = fh.get_declarator                            # fd: Decl  (関数頭部からDeclarotorを得る)
    418       if fd.is_function? then                           # fd が関数でなければ、すでにエラー
     386      fd = fh.get_declarator                            # fd: Decl  (関数頭部からDeclarotorを得る)
     387      if fd.is_function? then                           # fd が関数でなければ、すでにエラー
    419388        params = fd.get_type.get_paramlist.get_items
    420389        if params then
     
    443412  end
    444413
    445   #=== Signature# 引数に Descriptor があるか?
     414  #=== Signature# 引数に Descriptor があるか?
    446415  def has_descriptor?
    447416    if get_descriptor_list == nil then
    448       # end_of_parse が呼び出される前に has_descriptor? が呼び出された
    449       # 呼び出しå
    450 ƒã¯ DescriptorType#initialize
    451       # この場合、同じシグニチャå†
    452 ã®å¼•æ•°ãŒ Descriptor 型である
     417      # end_of_parse が呼び出される前に has_descriptor? が呼び出された
     418      # 呼び出し元は DescriptorType#initialize
     419      # この場合、同じシグニチャ内の引数が Descriptor 型である
    453420      return true
    454421    elsif get_descriptor_list.length > 0 then
     
    459426  end
    460427
    461   #=== Signature# コールバックか?
    462   # 指定子 callback が指定されていれば true
     428  #=== Signature# コールバックか?
     429  # 指定子 callback が指定されていれば true
    463430  def is_callback?
    464431    @b_callback
    465432  end
    466433
    467   #=== Signature# 逸脱か?
    468   # 指定子 deviate が指定されていれば true
     434  #=== Signature# 逸脱か?
     435  # 指定子 deviate が指定されていれば true
    469436  def is_deviate?
    470437    @b_deviate
    471438  end
    472439
    473   #=== Signature# 空か?
     440  #=== Signature# 空か?
    474441  def is_empty?
    475442    @b_empty
    476443  end
    477444
    478   #=== Signature# Push Pop Allocator がå¿
    479 è¦ã‹ï¼Ÿ
    480   # Transparent RPC の場合 oneway かつ in のé
    481 åˆ—(size_is, count_is, string のいずれかで修飾)がある
     445  #=== Signature# Push Pop Allocator が必要か?
     446  # Transparent RPC の場合 oneway かつ in の配列(size_is, count_is, string のいずれかで修飾)がある
    482447  def need_PPAllocator?( b_opaque = false )
    483     fha = get_function_head_array                       # 呼び口または受け口のシグニチャの関数é
    484 åˆ—
     448    fha = get_function_head_array                       # 呼び口または受け口のシグニチャの関数配列
    485449    fha.each{ |fh|
    486450      fd = fh.get_declarator
     
    508472
    509473module CelltypePluginModule
    510   #=== Celltype# セルタイププラグイン (generate 指定子)
     474  #=== Celltype# セルタイププラグイン (generate 指定子)
    511475  def celltype_plugin
    512476    plugin_name = @generate[0]
     
    515479  end
    516480
    517   #=== Celltype# セルタイププラグインをこのセルタイプに適用
     481  #=== Celltype# セルタイププラグインをこのセルタイプに適用
    518482  def apply_plugin( plugin_name, option )
    519483
     
    543507    end
    544508
    545     # 既に存在するセルに new_cell を適用
     509    # 既に存在するセルに new_cell を適用
    546510    @cell_list.each{ |cell|
    547511      apply_plugin_cell plugin_object, cell
     
    583547# @factory_list::   Factory[]
    584548# @ct_factory_list::    Factory[] :    celltype factory
    585 # @cell_list:: Cell[] : 定義のみ (V1.0.0.2 以降)
    586 # @ordered_cell_list:: Cell[] : ID 順に順序付けされたセルリスト、最適化以降有効 (リンク単位ごとに生成されなおす)
     549# @cell_list:: Cell[] : 定義のみ (V1.0.0.2 以降)
     550# @ordered_cell_list:: Cell[] : ID 順に順序付けされたセルリスト、最適化以降有効 (リンク単位ごとに生成されなおす)
    587551# @singleton:: bool
    588552# @idx_is_id:: bool
     
    590554# @b_need_ptab:: bool: true if having cells in multi-domain
    591555# @active:: bool
    592 # @b_reuse:: bool :  reuse 指定されて import された(template 不要)
    593 # @generate:: [ Symbol, String, Plugin ]  = [ PluginName, option, Plugin ] Plugin は生成後に追加される
    594 # @generate_list:: [ [ Symbol, String, Plugin ], ... ]   generate 文で追加された generate
     556# @b_reuse:: bool :  reuse 指定されて import された(template 不要)
     557# @generate:: [ Symbol, String, Plugin ]  = [ PluginName, option, Plugin ] Plugin は生成後に追加される
     558# @generate_list:: [ [ Symbol, String, Plugin ], ... ]   generate 文で追加された generate
    595559#
    596560# @n_attribute_ro:: int >= 0    none specified
     
    599563# @n_var:: int >= 0
    600564# @n_var_size_is:: int >= 0     # of [size_is] specified vars # mikan count_is
    601 # @n_var_omit:: int >= 0        # of [omit] specified vars # mikan var の omit は有?
     565# @n_var_omit:: int >= 0        # of [omit] specified vars # mikan var の omit は有?
    602566# @n_var_init:: int >= 0        # of vars with initializer
    603567# @n_call_port:: int >= 0       # dynamic ports are included
    604568# @n_call_port_array:: int >= 0  # dynamic ports are included
    605 # @n_call_port_omitted_in_CB:: int >= 0   æœ€é©åŒ–で省略される呼び口
     569# @n_call_port_omitted_in_CB:: int >= 0   最適化で省略される呼び口
    606570# @n_call_port_dynamic:: int >= 0  #
    607571# @n_call_port_array_dynamic:: int >= 0
     
    611575# @n_entry_port_array:: int >= 0
    612576# @n_entry_port_inline:: int >= 0
    613 # @n_cell_gen:: int >= 0  生成するセルの数.コード生成の頭で算出する.意味解析段階では参ç
    614 §ä¸å¯
    615 # @id_base:: Integer : cell の ID の最小値(最大値は @id_base + @n_cell)
     577# @n_cell_gen:: int >= 0  生成するセルの数.コード生成の頭で算出する.意味解析段階では参照不可
     578# @id_base:: Integer : cell の ID の最小値(最大値は @id_base + @n_cell)
    616579#
    617 # @b_cp_optimized:: bool : 呼び口最適化実施
    618 # @plugin:: PluginObject      このセルタイプがプラグインにより生成された CDL から生成された場合に有効。
    619 #                              generate の指定は @generate にプラグインが保持される
     580# @b_cp_optimized:: bool : 呼び口最適化実施
     581# @plugin:: PluginObject      このセルタイプがプラグインにより生成された CDL から生成された場合に有効。
     582#                              generate の指定は @generate にプラグインが保持される
    620583#
    621 # @included_header:: Hash :  include されたヘッダファイル
    622 # @domain_roots::Hash { DomainTypeName(Symbol) => [ Region ] }  ドメインタイプ名と Region のé
    623 åˆ— (optimize.rb で設定)
    624 #                                               ãƒ«ãƒ¼ãƒˆãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã¯ãƒ‰ãƒ¡ã‚¤ãƒ³åãŒã€€nil
     584# @included_header:: Hash :  include されたヘッダファイル
     585# @domain_roots::Hash { DomainTypeName(Symbol) => [ Region ] }  ドメインタイプ名と Region の配列 (optimize.rb で設定)
     586#                                               ルートリージョンはドメイン名が nil
    625587
    626588  include PluginModule
     
    692654
    693655    @plugin = Generator.get_plugin
    694       # plugin の場合 PluginObject が返される
    695     # å
    696 ƒã® Generator から呼出された Generator の中でパースおよび意味チェックされている
     656      # plugin の場合 PluginObject が返される
     657    # 元の Generator から呼出された Generator の中でパースおよび意味チェックされている
    697658
    698659    # if @plugin then
    699     #  # plugin 生成されるセルタイプは再利用ではない   #833 不å
    700 ·åˆä¿®æ­£
     660    #  # plugin 生成されるセルタイプは再利用ではない   #833 不具合修正
    701661    #  @b_reuse = false
    702662    # else
     
    715675
    716676    Namespace.new_celltype( self )
    717     set_namespace_path # @NamespacePath の設定
     677    set_namespace_path # @NamespacePath の設定
    718678    set_specifier_list( Generator.get_statement_specifier )
    719679
     
    727687  end
    728688
    729   #== Celltype#ドメインルートを返す
    730   # @domain_roots の説明を参ç
    731 §
     689  #== Celltype#ドメインルートを返す
     690  # @domain_roots の説明を参照
    732691  def get_domain_roots
    733692    @domain_roots
     
    736695  # Celltype# end_of_parse
    737696  def end_of_parse
    738     # 属性・変数のチェック
     697    # 属性・変数のチェック
    739698    check_attribute
    740699
    741     # アロケータ呼び口をå†
    742 éƒ¨ç”Ÿæˆ
     700    # アロケータ呼び口を内部生成
    743701    generate_allocator_port
    744702
    745     # リレーアロケータ、å†
    746 éƒ¨ã‚¢ãƒ­ã‚±ãƒ¼ã‚¿ã®è¨­å®š
     703    # リレーアロケータ、内部アロケータの設定
    747704    @port.each { |p|
    748705      p.set_allocator_instance
     
    814771      end
    815772      if a.get_initializer then
    816         # 登録後にチェックしても問題ない(attr を参ç
    817 §ã§ããªã„ので、自己参ç
    818 §ã—ない)
     773        # 登録後にチェックしても問題ない(attr を参照できないので、自己参照しない)
    819774        a.get_type.check_init( @locale, a.get_identifier, a.get_initializer, :ATTRIBUTE )
    820775      end
     
    822777  end
    823778
    824   #=== Celltype# celltype の attribute/var のチェック
     779  #=== Celltype# celltype の attribute/var のチェック
    825780  # STAGE:  S
    826781  #
    827   # このメソッドは celltype のパースが完了した時点で呼出される.
     782  # このメソッドは celltype のパースが完了した時点で呼出される.
    828783  def check_attribute
    829     # attribute の size_is 指定が妥当かチェック
     784    # attribute の size_is 指定が妥当かチェック
    830785    (@attribute+@var).each{ |a|
    831786      if a.get_size_is then
    832787        if ! a.get_type.kind_of?( PtrType ) then
    833           # size_is がポインタ型以外に指定された
     788          # size_is がポインタ型以外に指定された
    834789          cdl_error( "S1011 $1: size_is specified for non-pointer type" , a.get_identifier )
    835790        else
    836791
    837           # 参ç
    838 §ã™ã‚‹å¤‰æ•°ãŒå­˜åœ¨ã—、計算可能な型かチェックする
    839           size = a.get_size_is.eval_const( @name_list )  # C_EXP の可能性あり
     792          # 参照する変数が存在し、計算可能な型かチェックする
     793          size = a.get_size_is.eval_const( @name_list )  # C_EXP の可能性あり
    840794          init = a.get_initializer
    841795          if init then
    842796            if ! init.instance_of?( Array ) then
    843               # 初期化子がé
    844 åˆ—ではない
     797              # 初期化子が配列ではない
    845798              cdl_error( "S1012 $1: unsuitable initializer, need array initializer" , a.get_identifier )
    846799            elsif size.kind_of?( Integer ) && size < init.length then
    847               # size_is 指定された個数よりも初期化子のé
    848 åˆ—要素が多い
     800              # size_is 指定された個数よりも初期化子の配列要素が多い
    849801              cdl_error( "S1013 $1: too many initializer, $2 for $3" , a.get_identifier, init.length, size )
    850             # elsif a.get_size_is.eval_const( nil ) == nil  # C_EXP の可能性あり
     802            # elsif a.get_size_is.eval_const( nil ) == nil  # C_EXP の可能性あり
    851803            end
    852804
     
    858810              ( a.get_initializer.instance_of?( Expression ) &&
    859811                a.get_initializer.eval_const2(@name_list).instance_of?( Array ) ) then
    860             # size_is 指定されていないポインタが Array で初期化されていたら、エラー
     812            # size_is 指定されていないポインタが Array で初期化されていたら、エラー
    861813            cdl_error( "S1159 $1: non-size_is pointer cannot be initialized with array initializer" , a.get_identifier )
    862814          end
     
    870822  end
    871823
    872   #=== Celltype# アロケータ呼び口を生成
    873   #    send, receive 引数のアロケータを呼出すための呼び口を生成
     824  #=== Celltype# アロケータ呼び口を生成
     825  #    send, receive 引数のアロケータを呼出すための呼び口を生成
    874826  def generate_allocator_port
    875827    @port.each { |port|
    876       # ポートのすべてのパラメータを辿る
     828      # ポートのすべてのパラメータを辿る
    877829      port.each_param { |port, fd, par|
    878         case par.get_direction                        # 引数の方向指定子 (in, out, inout, send, receive )
     830        case par.get_direction                        # 引数の方向指定子 (in, out, inout, send, receive )
    879831        when :SEND, :RECEIVE
    880832          if par.get_allocator then
    881             cp_name = :"#{port.get_name}_#{fd.get_name}_#{par.get_name}"     # アロケータ呼び口の名前
    882             #           ãƒãƒ¼ãƒˆå          関数名         ãƒ‘ラメータ名
    883             # alloc_sig_path = [ par.get_allocator.get_name ]  # mikan Namespace アロケータ呼び口のシグニチャ #1
     833            cp_name = :"#{port.get_name}_#{fd.get_name}_#{par.get_name}"     # アロケータ呼び口の名前
     834            #           ポート名          関数名         パラメータ名
     835            # alloc_sig_path = [ par.get_allocator.get_name ]  # mikan Namespace アロケータ呼び口のシグニチャ #1
    884836            alloc_sig_path = par.get_allocator.get_namespace_path
    885             array_size = port.get_array_size            # 呼び口または受け口é
    886 åˆ—のサイズ
    887             created_port = Port.new( cp_name, alloc_sig_path, :CALL, array_size ) # 呼び口を生成
     837            array_size = port.get_array_size            # 呼び口または受け口配列のサイズ
     838            created_port = Port.new( cp_name, alloc_sig_path, :CALL, array_size ) # 呼び口を生成
    888839            created_port.set_allocator_port( port, fd, par )
    889840            if port.is_optional? then
     
    893844              created_port.set_omit
    894845            end
    895             new_port( created_port )                    # セルタイプに新しい呼び口を追加
     846            new_port( created_port )                    # セルタイプに新しい呼び口を追加
    896847          # else
    897848          #  already error "not found or not signature" in class ParamDecl
     
    910861  end
    911862
    912   #=== Celltype# 新しいå†
    913 éƒ¨å¤‰æ•°
     863  #=== Celltype# 新しい内部変数
    914864  #var:: [Decl]
    915865  def new_var( var )
     
    924874      @name_list.add_item( i )
    925875
    926       # size_is 指定されたé
    927 åˆ—? mikan  count_is
     876      # size_is 指定された配列? mikan  count_is
    928877      if i.get_size_is then
    929878        @n_var_size_is += 1
     
    941890  end
    942891
    943   #=== Celltype# celltype の指定子を設定
     892  #=== Celltype# celltype の指定子を設定
    944893  def set_specifier_list( spec_list )
    945894    return if spec_list == nil
     
    976925
    977926  def new_require( ct_or_cell_nsp, ep_name, cp_name )
    978     # Require: set_owner するものがない
     927    # Require: set_owner するものがない
    979928    obj = Namespace.find( ct_or_cell_nsp )    #1
    980929    if obj.instance_of? Celltype then
    981       # Celltype 名で指定
     930      # Celltype 名で指定
    982931      ct = obj
    983932    elsif obj.instance_of? Cell then
    984       # Cell 名で指定
     933      # Cell 名で指定
    985934      ct = obj.get_celltype
    986935    elsif obj == nil then
     
    993942
    994943    if( ! ct.is_singleton? ) then
    995       # シングルトンではない
     944      # シングルトンではない
    996945      cdl_error( "S1018 $1 : not singleton cell" , obj.get_name )
    997946    end
    998947
    999     # 受け口を探す
     948    # 受け口を探す
    1000949    obj2 = ct.find( ep_name )
    1001950    if( ( ! obj2.instance_of? Port ) || obj2.get_port_type != :ENTRY ) then
     
    1008957
    1009958    if obj2.get_signature == nil then
    1010       # signature が未定義:既にエラー
     959      # signature が未定義:既にエラー
    1011960      return
    1012961    end
     
    1014963    require_call_port_prefix = :_require_call_port
    1015964    if cp_name == nil then
    1016       # 関数名重複チェック
     965      # 関数名重複チェック
    1017966      @require.each{ |req|
    1018967        unless req[0].to_s =~ /^#{require_call_port_prefix}/ then
    1019           next     # 名前ありの require は関数名重複チェックしない
     968          next     # 名前ありの require は関数名重複チェックしない
    1020969        end
    1021970        port = req[2]
    1022971        if port.get_signature == obj2.get_signature then
    1023           # 同じ signature (すべて同じ関数名を持つ)個別に出すのではなく、まとめてエラーとする
     972          # 同じ signature (すべて同じ関数名を持つ)個別に出すのではなく、まとめてエラーとする
    1024973          cdl_error( "S1021 $1 : require cannot have same signature with \'$2\'" , obj2.get_name, port.get_name )
    1025974          next
    1026975        end
    1027976        port.get_signature.get_function_head_array.each{ |f|
    1028           # mikan ここは、namedList からの検索にならないの?(効率が悪い)
     977          # mikan ここは、namedList からの検索にならないの?(効率が悪い)
    1029978          obj2.get_signature.get_function_head_array.each{ |f2|
    1030979            if( f.get_name == f2.get_name ) then
     
    1042991      b_has_name = true
    1043992    end
    1044     # require を追加
     993    # require を追加
    1045994    @require << [ cp_name, obj, obj2 ]  # [ lhs:cp_name, rhs:Celltype, rhs:Port ]
    1046995
    1047     # require port を追加 (呼び口として追加する。ただし require をセットしておく)
     996    # require port を追加 (呼び口として追加する。ただし require をセットしておく)
    1048997    port = Port.new( cp_name, obj2.get_signature.get_namespace_path, :CALL )
    1049998    port.set_require( b_has_name )
     
    10771026  end
    10781027
    1079   #=== Celltype#dynamic の適合性チェック
     1028  #=== Celltype#dynamic の適合性チェック
    10801029  def check_dynamic_join
    10811030    return if ! $verbose
    10821031    @port.each{ |port|
    10831032      signature = port.get_signature
    1084       next if signature == nil   # すでにエラー
     1033      next if signature == nil   # すでにエラー
    10851034      if port.is_dynamic? then
    10861035        dbgPrint( "[DYNAMIC] checking dynamic port: #{@global_name}.#{port.get_name}\n" )
     
    11331082  end
    11341083  def find_ref_desc_port signature
    1135     if signature == nil then  # すでにエラー
     1084    if signature == nil then  # すでにエラー
    11361085      return nil
    11371086    end
     
    11431092    return nil
    11441093  end
    1145   #=== Celltype#ディスクリプタ型でシグニチャが一致し dyn_ref に対応づく引数を探す
    1146   #dyn_ref::Symbol: :DYNAMIC=ディスクリプタを得る手段となる引数を探す.:REF_DESC=渡す手段となる引数を探す
     1094  #=== Celltype#ディスクリプタ型でシグニチャが一致し dyn_ref に対応づく引数を探す
     1095  #dyn_ref::Symbol: :DYNAMIC=ディスクリプタを得る手段となる引数を探す.:REF_DESC=渡す手段となる引数を探す
    11471096  def find_descriptor_param signature, dyn_ref
    11481097    param_list = []
     
    11861135  end
    11871136
    1188   #=== Celltype# celltype に新しい cell を追加
     1137  #=== Celltype# celltype に新しい cell を追加
    11891138  #cell:: Cell
    1190   # 新しいセルをセルタイプに追加.
    1191   # セルの構文解釈の最後でこのメソドを呼出される.
    1192   # シングルトンセルが同じ linkunit に複数ないかチェック
     1139  # 新しいセルをセルタイプに追加.
     1140  # セルの構文解釈の最後でこのメソドを呼出される.
     1141  # シングルトンセルが同じ linkunit に複数ないかチェック
    11931142  def new_cell( cell )
    11941143    dbgPrint "Celltype#new_cell( #{cell.get_name} )\n"
    1195     # Celltype では Cell の set_owner しない
    1196     # シングルトンで、プロトタイプ宣言でない場合、コード生成対象リージョンの場合
     1144    # Celltype では Cell の set_owner しない
     1145    # シングルトンで、プロトタイプ宣言でない場合、コード生成対象リージョンの場合
    11971146    if @singleton  then
    11981147      @cell_list.each{ |c|
     
    12041153    @cell_list << cell
    12051154
    1206     # プラグインにより生成されたセルタイプか ?
     1155    # プラグインにより生成されたセルタイプか ?
    12071156    if @plugin then
    12081157      @plugin.new_cell cell
    12091158    end
    12101159
    1211     # セルタイププラグインの適用
     1160    # セルタイププラグインの適用
    12121161    celltype_plugin_new_cell cell
    12131162  end
    12141163
    1215   #=== Celltype# セルタイプは INIB を持つか?
    1216   # セルタイプが INIB を持つかどうかを判定する
    1217   # $rom == false のとき:  INIB を持たない. (すべては CB に置かれる)
    1218   # $rom == true のとき、INIB に置かれるものが一つでも存在すれば INIB を持つ
    1219   #   INIB に置かれるものは
    1220   #     attribute (omit のものは除く.現仕様では rw のものはない)
    1221   #     size_is を伴う var
    1222   #     å‘¼ã³å£ï¼ˆãŸã ã—、最適化で不要となるものは除く)
     1164  #=== Celltype# セルタイプは INIB を持つか?
     1165  # セルタイプが INIB を持つかどうかを判定する
     1166  # $rom == false のとき:  INIB を持たない. (すべては CB に置かれる)
     1167  # $rom == true のとき、INIB に置かれるものが一つでも存在すれば INIB を持つ
     1168  #   INIB に置かれるものは
     1169  #     attribute (omit のものは除く.現仕様では rw のものはない)
     1170  #     size_is を伴う var
     1171  #     呼び口(ただし、最適化で不要となるものは除く)
    12231172  def has_INIB?
    12241173
     
    12341183  end
    12351184
    1236   #=== Celltype# セルタイプは CB を持つか?
    1237   # $rom == true のとき、いかのものが置かれる.それらの一つでも存在すれば CB を持つ
    1238   #   size_is が指定されていない var
    1239   #   rw 指定された attribute (現仕様では存在しない)
    1240   # $rom == false のとき、いかのものが置かれる.それらの一つでも存在すれば CB を持つ
     1185  #=== Celltype# セルタイプは CB を持つか?
     1186  # $rom == true のとき、いかのものが置かれる.それらの一つでも存在すれば CB を持つ
     1187  #   size_is が指定されていない var
     1188  #   rw 指定された attribute (現仕様では存在しない)
     1189  # $rom == false のとき、いかのものが置かれる.それらの一つでも存在すれば CB を持つ
    12411190  #   attribute
    12421191  #   var
    1243   #   å‘¼ã³å£ï¼ˆãŸã ã—、最適化で不要となるものは除く)
     1192  #   呼び口(ただし、最適化で不要となるものは除く)
    12441193  def has_CB?
    12451194    if $rom then
     
    12511200  end
    12521201
    1253   #=== Celltype# SET_CB_INIB_POINTER, INITIALIZE_CB がå¿
    1254 è¦ã‹
     1202  #=== Celltype# SET_CB_INIB_POINTER, INITIALIZE_CB が必要か
    12551203  def need_CB_initializer?
    12561204    @n_var_init > 0 || has_CB? || ( @n_call_port_dynamic && $ram_initializer )
    12571205  end
    12581206
    1259   #=== Celltype# 逆require の結合を生成する
     1207  #=== Celltype# 逆require の結合を生成する
    12601208  def create_reverse_require_join cell
    12611209    @port.each{ |p|
     
    12641212  end
    12651213
    1266   #=== Celltype# singleton セルを得る
    1267   #region:: Region   : singleton を探す Region
    1268   # 距離が最も近いものを返す
    1269   # mikan 本当は region の範囲の singleton を探すå¿
    1270 è¦ãŒã‚ã‚‹
     1214  #=== Celltype# singleton セルを得る
     1215  #region:: Region   : singleton を探す Region
     1216  # 距離が最も近いものを返す
     1217  # mikan 本当は region の範囲の singleton を探す必要がある
    12711218  def get_singleton_cell region
    12721219    cell = nil
    1273     dist = 999999999 # mikan 制限値(これは十分すぎるほどデカイが)
    1274     # require: celltype で指定
     1220    dist = 999999999 # mikan 制限値(これは十分すぎるほどデカイが)
     1221    # require: celltype で指定
    12751222    @cell_list.each{ |c|
    1276       # 到達可能で最も近いセルを探す(複数の singleton があるかもしれない)
     1223      # 到達可能で最も近いセルを探す(複数の singleton があるかもしれない)
    12771224      d = region.distance( c.get_region )
    12781225      #debug
     
    12931240  end
    12941241
    1295   #=== Celltype# セルタイププラグインを得る
     1242  #=== Celltype# セルタイププラグインを得る
    12961243  def get_celltype_plugin
    12971244    if @generate then
     
    13201267  end
    13211268
    1322   #=== Celltype# アクティブではないか
    1323   # このメソッドでは active の他に factory (singleton においては FACTORYを含む)がなければ inactive とする
     1269  #=== Celltype# アクティブではないか
     1270  # このメソッドでは active の他に factory (singleton においては FACTORYを含む)がなければ inactive とする
    13241271  def is_inactive?
    13251272    if @active == false && @factory_list.length == 0 &&
     
    13421289  end
    13431290
    1344   #=== Celltype# コード生成するå¿
    1345 è¦ãŒã‚るか判定
    1346   # セルの個数が 0 ならセルタイプコードは生成不要
     1291  #=== Celltype# コード生成する必要があるか判定
     1292  # セルの個数が 0 ならセルタイプコードは生成不要
    13471293  def need_generate?
    13481294    @n_cell_gen > 0
    13491295  end
    13501296
    1351   #=== Celltype# require 呼び口の結合を行う
     1297  #=== Celltype# require 呼び口の結合を行う
    13521298  # STAGE: S
    1353   # セルタイプの require 呼び口について、結合を行う
    1354   # セルが生成されないかチェックを行う
     1299  # セルタイプの require 呼び口について、結合を行う
     1300  # セルが生成されないかチェックを行う
    13551301  def set_require_join
    13561302    @require.each{ |req|
     
    13681314  end
    13691315
    1370   #=== Celltype# inline 受け口しかないか?
    1371   # 受け口が無い場合、すべての受け口が inline とはしない
     1316  #=== Celltype# inline 受け口しかないか?
     1317  # 受け口が無い場合、すべての受け口が inline とはしない
    13721318  def is_all_entry_inline?
    13731319    @n_entry_port == @n_entry_port_inline && @n_entry_port > 0
     
    14081354# @n_var:: int >= 0
    14091355# @n_var_size_is:: int >= 0     # of [size_is] specified cells # mikan count_is
    1410 # @n_var_omit:: int >= 0        # of [omit] specified  cells # mikan var の omit は有?
     1356# @n_var_omit:: int >= 0        # of [omit] specified  cells # mikan var の omit は有?
    14111357# @n_call_port:: int >= 0
    14121358# @n_call_port_array:: int >= 0
    1413 # @n_call_port_omitted_in_CB:: int >= 0   æœ€é©åŒ–で省略される呼び口
     1359# @n_call_port_omitted_in_CB:: int >= 0   最適化で省略される呼び口
    14141360# @n_entry_port:: int >= 0
    14151361# @n_entry_port_array:: int >= 0
    14161362    (indent+1).times { print "  " }
    14171363    puts "@n_entry_port_inline #{@n_entry_port_inline}"
    1418 # @n_cell:: int >= 0  コード生成の頭で算出する.意味解析段階では参ç
    1419 §ä¸å¯
    1420 # @id_base:: Integer : cell の ID の最小値(最大値は @id_base + @n_cell)
     1364# @n_cell:: int >= 0  コード生成の頭で算出する.意味解析段階では参照不可
     1365# @id_base:: Integer : cell の ID の最小値(最大値は @id_base + @n_cell)
    14211366
    14221367  end
     
    14241369
    14251370class Cell < NSBDNode # < Nestable
    1426 # @name:: Symbol : composite celltype のå†
    1427 å´ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã§ã¯å¤–のセル
    1428 # @global_name:: Symbol : C で使える名前(namespace を含む)
    1429 # @local_name:: str : cell celltype name { ... } の name
     1371# @name:: Symbol : composite celltype の内側のインスタンスでは外のセル
     1372# @global_name:: Symbol : C で使える名前(namespace を含む)
     1373# @local_name:: str : cell celltype name { ... } の name
    14301374# @celltype:: Celltype | CompositeCelltype
    14311375# @join_list:: NamedList
     
    14341378# @b_prototype:: bool:  prototype specified in current parsing cell. (@b_defined is used to determine whether definition done)
    14351379# @b_duplicate:: bool:  definition duplicate
    1436 # @b_checked::   bool:  set_definition_join が済んでいる場合 true
    1437 # @require_joined_list:: {cp_name=>true}:  set_require_join が済んでいる呼び口は true
     1380# @b_checked::   bool:  set_definition_join が済んでいる場合 true
     1381# @require_joined_list:: {cp_name=>true}:  set_require_join が済んでいる呼び口は true
    14381382# @f_ref:: refercenced from others
    1439 # @entry_array_max_subscript:: { @port=>Integer } : 受け口é
    1440 åˆ—のé
    1441 åˆ—添数の最大値(添数無し受け口é
    1442 åˆ—対応)
     1383# @entry_array_max_subscript:: { @port=>Integer } : 受け口配列の配列添数の最大値(添数無し受け口配列対応)
    14431384# @plugin::     Plugin: avialble if cell is generated by plugin generated cdl code.
    1444 # @referenced_port_list:: { Port => Integer } : 受け口の参ç
    1445 §æ•°
    1446 #                                               ã™ã¹ã¦ã®æ„å‘³è§£æž(through, composite展開)が終わった後に設定する
    1447 #                                               é€†require ポートに対して複数の結合がないかチェックする
    1448 # @generate:: [ Symbol, String, Plugin ]  = [ PluginName, option, Plugin ] Plugin は生成後に追加される
     1385# @referenced_port_list:: { Port => Integer } : 受け口の参照数
     1386#                                               すべての意味解析(through, composite展開)が終わった後に設定する
     1387#                                               逆require ポートに対して複数の結合がないかチェックする
     1388# @generate:: [ Symbol, String, Plugin ]  = [ PluginName, option, Plugin ] Plugin は生成後に追加される
    14491389# @b_post_code_generated:: Bool: true if generated in tmp_plugin_post_code.cdl
    14501390#
    1451 # composite のためインスタンス変数
     1391# composite のためインスタンス変数
    14521392# @in_composite:: bool : true if in composite celltype
    14531393# @compositecelltypejoin_list:: NamedList : item= CompositeCelltypeJoin ( if @in_composite )
    14541394# @f_cloned:: bool : true if cloned (instantiate of composite consist cell)
    1455 # @my_clone:: Cell : Composite cell で in_composite = true の場合のみ有効(直前の clone を一時記憶)
    1456 # @cell_list:: Cell[local_name] : Composite cell で clone した後のリスト cell_list
    1457 # @cell_list2:: [ Cell ] : Composite cell で clone した後のリスト cell_list
    1458 #                          @cell_list2 は composite å†
    1459 ã§ã®å‡ºç¾é † 
     1395# @my_clone:: Cell : Composite cell で in_composite = true の場合のみ有効(直前の clone を一時記憶)
     1396# @cell_list:: Cell[local_name] : Composite cell で clone した後のリスト cell_list
     1397# @cell_list2:: [ Cell ] : Composite cell で clone した後のリスト cell_list
     1398#                          @cell_list2 は composite 内での出現順 
    14601399#
    1461 # region のためのインスタンス変数
    1462 # @region:: Region (属するregion)
     1400# region のためのインスタンス変数
     1401# @region:: Region (属するregion)
    14631402#
    1464 # allocator のためのインスタンス変数
     1403# allocator のためのインスタンス変数
    14651404# @alloc_list::  [ [ NORMAL_ALLOC, ep_name, func_name, param_name, expr ], ... ]
    1466 #   å—け口側のアロケータへの結合を記憶。以下のメソッドで追加される
    1467 #      set_specifier … cell 定義時にアロケータ指定されている場合
    1468 #      create_relay_allocator_join … リレーアロケータの場合
     1405#   受け口側のアロケータへの結合を記憶。以下のメソッドで追加される
     1406#      set_specifier … cell 定義時にアロケータ指定されている場合
     1407#      create_relay_allocator_join … リレーアロケータの場合
    14691408#
    1470 # ID のためのインスタンス変数(optimize.rb にて設定)
    1471 # @id:: Integer : コード生成直前に設定  (プロトタイプ宣言の場合は -1 のまま放置)
    1472 # @id_specified::Integer : 指定された id
     1409# ID のためのインスタンス変数(optimize.rb にて設定)
     1410# @id:: Integer : コード生成直前に設定  (プロトタイプ宣言の場合は -1 のまま放置)
     1411# @id_specified::Integer : 指定された id
    14731412# @restrict_list::{ entry_name => { func_name, [ region_path_str, ... ] } }
    14741413# @restrict_list2::{ entry_name => { func_name, [ domain_root_region, ... ] } }
    1475 # @b_restrict_referenced::Bool: restrict_list が参ç
    1476 §ã‚ŒãŸ
     1414# @b_restrict_referenced::Bool: restrict_list が参照れた
    14771415
    14781416=begin
    1479 # Cell クラスは、以下のものを扱う
    1480 # 1)普通のセル
    1481 # 2)composite セルタイプのセル
    1482 # 3)composite セルタイプのå†
    1483 å´ã®ã‚»ãƒ« (@in_composite)   # composite のå†
    1484 å´ã® composite セルタイプのセルもある
     1417# Cell クラスは、以下のものを扱う
     1418# 1)普通のセル
     1419# 2)composite セルタイプのセル
     1420# 3)composite セルタイプの内側のセル (@in_composite)   # composite の内側の composite セルタイプのセルもある
    14851421#
    1486 # 2) は CellOfComposite クラスとして分けたほうがよいかもしれない
    1487 #    expand (composite セルの展開) は CellOfComposite にのみå¿
    1488 è¦ãªãƒ¡ã‚½ãƒƒãƒ‰ã§ã‚ã‚‹
    1489 #    get_real_cell, get_real_port など @celltype.instance_of?( CompositeCelltype ) の判定がなくすっきりする
    1490 #    ただ、分離しても、メンテナンスすべき範囲が切り離されてしまい、忘れやすくなる問題とのトレードオフかも
     1422# 2) は CellOfComposite クラスとして分けたほうがよいかもしれない
     1423#    expand (composite セルの展開) は CellOfComposite にのみ必要なメソッドである
     1424#    get_real_cell, get_real_port など @celltype.instance_of?( CompositeCelltype ) の判定がなくすっきりする
     1425#    ただ、分離しても、メンテナンスすべき範囲が切り離されてしまい、忘れやすくなる問題とのトレードオフかも
    14911426#
    1492 # 3) は CellInCompoiste クラスとして分けたほうがよいかもしれない
    1493 #    @in_composite で判定している処理を切り離せる (上記 2) よりも分離は容易ではない)
    1494 #    clone_for_composite は CellInCompoiste にのみå¿
    1495 è¦ãªãƒ¡ã‚½ãƒƒãƒ‰ã§ã‚ã‚‹
    1496 #    ただし、clone 後に Cell, CellOfComposite に変化するå¿
    1497 è¦ãŒã‚るので、clone ではなく new する実è£
    1498 ã«å¤‰æ›´ã™ã‚‹å¿
    1499 è¦ãŒã‚ã‚‹
     1427# 3) は CellInCompoiste クラスとして分けたほうがよいかもしれない
     1428#    @in_composite で判定している処理を切り離せる (上記 2) よりも分離は容易ではない)
     1429#    clone_for_composite は CellInCompoiste にのみ必要なメソッドである
     1430#    ただし、clone 後に Cell, CellOfComposite に変化する必要があるので、clone ではなく new する実装に変更する必要がある
    15001431#
    15011432=end
     
    15071438  @@current_object = nil
    15081439
    1509   # 定義されたすべてのセル(出現順. namespace に影響されない)
    1510   @@cell_list = []     # composite のå†
    1511 éƒ¨ã®ã‚»ãƒ«ã‚’含まない
    1512   @@cell_list2 = []    # composite のå†
    1513 éƒ¨ã®ã‚»ãƒ«ã‚’含む (å
    1514 ƒã®ã‚»ãƒ«ã‚’含む)
    1515                        # 意味解析後 make_cell_list2 にて設定される
     1440  # 定義されたすべてのセル(出現順. namespace に影響されない)
     1441  @@cell_list = []     # composite の内部のセルを含まない
     1442  @@cell_list2 = []    # composite の内部のセルを含む (元のセルを含む)
     1443                       # 意味解析後 make_cell_list2 にて設定される
    15161444
    15171445  def self.push
     
    15331461    @region = Region.get_current
    15341462
    1535     # celltype のplugin/存在をチェック
     1463    # celltype のplugin/存在をチェック
    15361464    object = Namespace.find( ct_path )    #1
    15371465    if object == nil then
    1538       # mikan celltype の名前が不完å
    1539 ¨ "::ct1ct2" になる
     1466      # mikan celltype の名前が不完全 "::ct1ct2" になる
    15401467      cdl_error( "S1027 \'$1\' celltype not found" , ct_path.get_path_str )
    15411468    elsif ! object.instance_of?( Celltype ) && ! object.instance_of?( CompositeCelltype ) then
    1542       # mikan celltype の名前が不完å
    1543 ¨
     1469      # mikan celltype の名前が不完全
    15441470      cdl_error( "S1028 \'$1\' not celltype" , ct_path.get_path_str )
    15451471    else
     
    15921518    end
    15931519
    1594     # この時点ではプロトタイプか、定義か分らないが、自己参ç
    1595 §ã®ãŸã‚ã«ç™»éŒ²
    1596     # set_f_def で再度登録しなおす
    1597     # Celltype への登録は、end_of_parse で行う
     1520    # この時点ではプロトタイプか、定義か分らないが、自己参照のために登録
     1521    # set_f_def で再度登録しなおす
     1522    # Celltype への登録は、end_of_parse で行う
    15981523    if @in_composite then
    15991524      cell_prev = CompositeCelltype.find( name )
     
    16021527      end
    16031528    else
    1604       # cell_prev = Namespace.find( [ name ] )   # 親まで捜しにいく
     1529      # cell_prev = Namespace.find( [ name ] )   # 親まで捜しにいく
    16051530      cell_prev = Namespace.get_current.find( name )
    16061531      if cell_prev == nil then
    16071532        Namespace.new_cell( self )
    1608         set_namespace_path # @NamespacePath の設定
     1533        set_namespace_path # @NamespacePath の設定
    16091534      end
    16101535    end
     
    16131538      if ! cell_prev.instance_of?( Cell ) then
    16141539        cdl_error( "S1029 $1 mismatch with previous one" , name )
    1615         # celltype が一致しているか ?
     1540        # celltype が一致しているか ?
    16161541      elsif get_celltype != cell_prev.get_celltype then
    16171542        cdl_error( "S1030 $1: celltype mismatch with previous one" , name )
    16181543      else
    1619         # region が一致しているか?
     1544        # region が一致しているか?
    16201545        if ! cell_prev.get_region.equal? get_region then
    16211546          cdl_error( "S1031 $1 region \'$2\' mismatch  with previous one \'$3\'" , name, @region.get_name, cell_prev.get_region.get_name )
     
    16231548
    16241549        @@current_object = cell_prev
    1625         # この時点では、まだプロトタイプ宣言か定義か分らない
    1626         # 以前が定義であって、今回も定義の場合、重複エラーである
     1550        # この時点では、まだプロトタイプ宣言か定義か分らない
     1551        # 以前が定義であって、今回も定義の場合、重複エラーである
    16271552      end
    16281553    end
     
    16341559    dbgPrint "Cell new_cell: #{@global_name} #{@in_composite} #{self}\n"
    16351560
    1636     # å†
    1637 éƒ¨ã‚¢ãƒ­ã‚±ãƒ¼ã‚¿ã‚’ @alloc_list に追加
     1561    # 内部アロケータを @alloc_list に追加
    16381562    if @celltype.instance_of? CompositeCelltype then
    16391563      @celltype.get_internal_allocator_list.each{ |cell, cp_internal_name, port_name, fd_name, par_name, ext_alloc_ent|
    16401564        nsp = NamespacePath.new( @name, false )
    1641         rhs = Expression.new( [:OP_DOT, [:IDENTIFIER, nsp], Token.new( ext_alloc_ent.to_s.to_sym, nil, nil, nil ) ] )  #1 構文解析段階なので locale 不要
     1565        rhs = Expression.new( [:OP_DOT, [:IDENTIFIER, nsp], Token.new( ext_alloc_ent.to_s.to_sym, nil, nil, nil ) ] )  #1 構文解析段階なので locale 不要
    16421566
    16431567        @alloc_list << [:NORMAL_ALLOC,port_name,nil,fd_name,par_name,rhs]
     
    16471571  end
    16481572
    1649   #=== Cell# cell の定義
    1650   # 本体(join)の定義の直前に呼び出される
     1573  #=== Cell# cell の定義
     1574  # 本体(join)の定義の直前に呼び出される
    16511575  def self.new_def
    16521576    @@current_object.new_def
    16531577  end
    16541578
    1655   #=== Cell# cell の定義
    1656   # 本体(join)の定義の直前に呼び出される
    1657   # このメソッドは cell tCelltype Cell { };  '{', '}' の部分がある場合に呼出される
     1579  #=== Cell# cell の定義
     1580  # 本体(join)の定義の直前に呼び出される
     1581  # このメソッドは cell tCelltype Cell { };  '{', '}' の部分がある場合に呼出される
    16581582  def new_def
    16591583    set_specifier_list( Generator.get_statement_specifier )
    16601584
    1661     # prototype 指定子ないか
     1585    # prototype 指定子ないか
    16621586    if ! @b_prototype then
    1663       # 二重定義のチェック
     1587      # 二重定義のチェック
    16641588      if @b_defined == true then
    16651589        cdl_error( "S1032 $1: duplicate cell" , @name )
    16661590        dbgPrint "previous: #{@prev_locale[0]}: line #{@prev_locale[1]} '#{@name}' defined here\n"
    16671591
    1668         # セルの重複定義エラーの処置
    1669         # 前の定義は捨てる
     1592        # セルの重複定義エラーの処置
     1593        # 前の定義は捨てる
    16701594        @join_list = NamedList.new( nil, "in cell '#{@name}'" )
    16711595      end
     
    16801604  end
    16811605
    1682   #===  Cell# 新しい結合をチェック
     1606  #===  Cell# 新しい結合をチェック
    16831607  # STAGE:   P
    16841608  #
    1685   #join::  Join : 新しい結合
    1686   #b_regular:: bool : 通常の場所 (bnf.y.rb)からならば true, それ以外(allocator, require) では false
     1609  #join::  Join : 新しい結合
     1610  #b_regular:: bool : 通常の場所 (bnf.y.rb)からならば true, それ以外(allocator, require) では false
    16871611  def new_join( join, b_regular = false )
    16881612    join.set_owner self
    16891613
    1690     # composite の新文法対応.
    1691     # composite の中のセルで、attribute の定義である場合
    1692     # cell å†
    1693 ã® attr_ext = composite.attr; 構文を処理
     1614    # composite の新文法対応.
     1615    # composite の中のセルで、attribute の定義である場合
     1616    # cell 内の attr_ext = composite.attr; 構文を処理
    16941617    if @in_composite then
    16951618      if @celltype then
    1696         if @celltype.find(join.get_name).instance_of?( Decl ) then # mikan a::b で指定されていたものがエラーにならないかも
     1619        if @celltype.find(join.get_name).instance_of?( Decl ) then # mikan a::b で指定されていたものがエラーにならないかも
    16971620          rhs = join.get_rhs
    16981621          if rhs.instance_of? Expression then
    16991622            ele = rhs.get_elements
    1700             if( ele[0]==:IDENTIFIER )then    #  attr = attr_ext (右辺単é 
    1701 ï¼‰ã‹ï¼Ÿ #1
    1702               if( CompositeCelltype.has_attribute?(ele[1].get_name ) )then    # mikan a::b.ePort がエラーにならないかも
    1703                 ident = ele[1].get_name   # 右辺は attribute.
     1623            if( ele[0]==:IDENTIFIER )then    #  attr = attr_ext (右辺単項)か? #1
     1624              if( CompositeCelltype.has_attribute?(ele[1].get_name ) )then    # mikan a::b.ePort がエラーにならないかも
     1625                ident = ele[1].get_name   # 右辺は attribute.
    17041626              else
    1705                 # 右辺は attribute にないのであれば、定数のはず
    1706                 # 定数は下へ渡す (cell の join にする)
     1627                # 右辺は attribute にないのであれば、定数のはず
     1628                # 定数は下へ渡す (cell の join にする)
    17071629                ident = nil
    17081630              end
    17091631            else
    1710               if join.get_rhs.eval_const2(nil) == nil then   # 定数式ではないか?
    1711                 # 右辺が、単一のシンボルでない場合、現状は扱えない
     1632              if join.get_rhs.eval_const2(nil) == nil then   # 定数式ではないか?
     1633                # 右辺が、単一のシンボルでない場合、現状は扱えない
    17121634                cdl_error( "S1033 rhs expression is not supported. Only attribute is permitted on current version."  )
    17131635                return
    17141636              else
    1715                 # 定数は下へ渡す (cell の join にする)
     1637                # 定数は下へ渡す (cell の join にする)
    17161638                ident = nil
    17171639              end
     
    17191641
    17201642            if ident then
    1721               # attr = attr; のような参ç
    1722 §ã¯ã‚¨ãƒ©ãƒ¼ (a = composite.a とするå¿
    1723 è¦ãŒã‚ã‚‹)
     1643              # attr = attr; のような参照はエラー (a = composite.a とする必要がある)
    17241644              if @celltype.find( ident ) then
    17251645                cdl_error( "S1034 $1 : cannot refer to $2\'s attribute here. Use \'composite.$3\' to refer to composite celltype\'s" , ident, @celltype.get_name, ident )
     
    17271647            end
    17281648          elsif rhs.instance_of? Array then
    1729             if rhs[0] == :COMPOSITE then   # 右辺は composite.attr の形式
     1649            if rhs[0] == :COMPOSITE then   # 右辺は composite.attr の形式
    17301650              ident = rhs[1].to_sym
    17311651            else
    1732               ident = nil    # 右辺は { 10, -10 } の形式
     1652              ident = nil    # 右辺は { 10, -10 } の形式
    17331653            end
    17341654          else
    1735             ident = nil      # 右辺は C_EXP の形式
     1655            ident = nil      # 右辺は C_EXP の形式
    17361656          end
    17371657
    1738           # ident が見つかった(右辺は単一の ident)
     1658          # ident が見つかった(右辺は単一の ident)
    17391659          if ident then
    1740             # composite の旧文法の構文処理へ渡す.セル外の attr_ext = Cell.attr; 構文の処理に渡す
     1660            # composite の旧文法の構文処理へ渡す.セル外の attr_ext = Cell.attr; 構文の処理に渡す
    17411661            #                        export_name, internal_cell_name, internal_cell_elem_name
    1742             decl = CompositeCelltype.new_join( ident, @name, join.get_name, :ATTRIBUTE )  # mikan a::b.ePort がエラーにならないかも
     1662            decl = CompositeCelltype.new_join( ident, @name, join.get_name, :ATTRIBUTE )  # mikan a::b.ePort がエラーにならないかも
    17431663            if ! decl.instance_of? Decl then
    17441664              return
     
    17481668              return
    17491669            end
    1750             # 以下の旧文法実è£
    1751 ã«æ¸¡ã™ï¼Ž
    1752             # 旧文法では cell に初期値を与えることで、composite で属性の初期値を指定することができた
    1753             # attribute で指定された初期値を cell の属性として処理させる
     1670            # 以下の旧文法実装に渡す.
     1671            # 旧文法では cell に初期値を与えることで、composite で属性の初期値を指定することができた
     1672            # attribute で指定された初期値を cell の属性として処理させる
    17541673            join.change_rhs( ini )
    17551674          else
    1756             # ident がない.定数式
     1675            # ident がない.定数式
    17571676          end
    17581677        else
    1759           # celltype の属性として、この join の名前がない
    1760           # 以下の join.set_definition の中でエラーとなる
     1678          # celltype の属性として、この join の名前がない
     1679          # 以下の join.set_definition の中でエラーとなる
    17611680        end
    17621681      else
    1763         return    # celltype がない.すでにエラー
     1682        return    # celltype がない.すでにエラー
    17641683      end
    17651684    elsif join.get_rhs.instance_of? Array then
    17661685      rhs = join.get_rhs
    17671686      if rhs[0] == :COMPOSITE then
    1768         # composite の中でないのに attr = composite.attr が使われた
     1687        # composite の中でないのに attr = composite.attr が使われた
    17691688        cdl_error( "S1035 composite : cannot specify out of composite celltype definition"  )
    17701689        return
     
    17721691    end
    17731692
    1774     # 以下 composite 文法変更前からある処理
    1775 
    1776     # 既に左辺が同じ名前の初期化が存在するか?
    1777     j = @join_list.get_item( join.get_name )   # mikan NamespacePath がパスを持っている
    1778     if j.instance_of? Join then    # mikan ここでは j が Join or Nil 以外は、ないはず
     1693    # 以下 composite 文法変更前からある処理
     1694
     1695    # 既に左辺が同じ名前の初期化が存在するか?
     1696    j = @join_list.get_item( join.get_name )   # mikan NamespacePath がパスを持っている
     1697    if j.instance_of? Join then    # mikan ここでは j が Join or Nil 以外は、ないはず
    17791698
    17801699      # debug
    17811700      dbgPrint "add_array_member: #{@name} port: #{j.get_port_name} rhs: #{j.get_rhs}, #{join.get_port_name} #{join.get_rhs}\n"
    1782       # 呼び口é
    1783 åˆ—(であると仮定して)要素を追加
     1701      # 呼び口配列(であると仮定して)要素を追加
    17841702      j.add_array_member join
    17851703
     
    17901708    end
    17911709
    1792     # if get_owner then   # error S1030 発生時 get_owner が見つからなくて例外になる
     1710    # if get_owner then   # error S1030 発生時 get_owner が見つからなくて例外になる
    17931711    #   dbgPrint "Cell#new_join: #{get_owner.get_name}.#{@name}\n"
    17941712    # else
     
    18041722  end
    18051723
    1806   #=== Cell.新しい逆結合
     1724  #=== Cell.新しい逆結合
    18071725  def self.new_reverse_join( reverse_join )
    18081726    @@current_object.new_reverse_join( reverse_join )
    18091727  end
    18101728
    1811   #=== Cell#新しい逆結合
     1729  #=== Cell#新しい逆結合
    18121730  def new_reverse_join( reverse_join )
    18131731    dbgPrint( "new_reverse_join name=#{reverse_join.get_name}\n")
     
    18341752  end
    18351753
    1836   #=== Cell#逆結合から結合を生成
     1754  #=== Cell#逆結合から結合を生成
    18371755  # STAGE: S
    18381756  def create_reverse_join
     
    18441762#      @reverse_join_list.get_items.each{ |rj|
    18451763      @reverse_join_list.each{ |rj|
    1846         # 逆結合のæƒ
    1847 å ±ã‚’å¾—ã‚‹
     1764        # 逆結合の情報を得る
    18481765        ep_name = rj.get_name
    18491766        ep_subscript, cp_cell_nsp, cp_name, cp_subscript = rj.get_rhs_cell_and_port
    18501767
    1851         # 呼び口側のセルと、そのセルタイプ
     1768        # 呼び口側のセルと、そのセルタイプ
    18521769        if ! @in_composite then
    18531770          cell = Namespace.find cp_cell_nsp
     
    18911808  end
    18921809
    1893   #=== Cell# cell å†
    1894 ã«è¨˜è¿°ã™ã‚‹å‘¼ã³å£ã®å¤–部結合
    1895   # internal_cell_elem_name:: string : 呼び口名
    1896   # export_name:: string: composite の外部にå
    1897 ¬é–‹ã™ã‚‹å‘¼ã³å£å
    1898   #  呼び口を外部結合する.
    1899   #  このメソッドは、composite の中の cell でしか呼ばれない.
     1810  #=== Cell# cell 内に記述する呼び口の外部結合
     1811  # internal_cell_elem_name:: string : 呼び口名
     1812  # export_name:: string: composite の外部に公開する呼び口名
     1813  #  呼び口を外部結合する.
     1814  #  このメソッドは、composite の中の cell でしか呼ばれない.
    19001815  def external_join( internal_cell_elem_name, export_name, b_composite )
    19011816
    1902     # cCall => composite.cCall; ではないか?
     1817    # cCall => composite.cCall; ではないか?
    19031818    if( b_composite == false )then
    1904       # cCall => cCall; のような場合
     1819      # cCall => cCall; のような場合
    19051820      if @celltype.find( export_name ) then
    19061821        cdl_error( "S1036 $1 : cannot refer to $2\'s here. Use \'composite.$3\' to refer to composite celltype\'s" , export_name, @celltype.get_name, export_name )
    19071822      end
    19081823    end
    1909     # composite の旧文法における、cell 外の cCall = Cell.cCall; の構文処理に渡す
     1824    # composite の旧文法における、cell 外の cCall = Cell.cCall; の構文処理に渡す
    19101825    CompositeCelltype.new_join( export_name, @name,  internal_cell_elem_name, :CALL )
    19111826  end
     
    19191834
    19201835  def end_of_parse f_def
    1921     if @b_prototype then  # prototype 指定子あったか?
    1922       f_def = false       # プロトタイプ宣言とする
     1836    if @b_prototype then  # prototype 指定子あったか?
     1837      f_def = false       # プロトタイプ宣言とする
    19231838      @b_prototype = false
    19241839    end
    19251840    if f_def == false then
    1926       # cell tCelltype Cell; の形式の場合
    1927       # f_def == true の場合 new_def で、呼出される
     1841      # cell tCelltype Cell; の形式の場合
     1842      # f_def == true の場合 new_def で、呼出される
    19281843      set_specifier_list( Generator.get_statement_specifier )
    19291844    end
     
    19381853  end
    19391854
    1940   #=== Cell# プロトタイプ宣言(false)か定義(true)かを設定
    1941   #    このメソッドは構文解釈の最後に呼出される
     1855  #=== Cell# プロトタイプ宣言(false)か定義(true)かを設定
     1856  #    このメソッドは構文解釈の最後に呼出される
    19421857  #f_def::     bool     false if prototype, true if definition
    19431858  def set_f_def f_def
     
    19481863    if ! @in_composite then
    19491864      # if @celltype.instance_of? Celltype then
    1950       if @celltype then  # composite でも呼びだす, エラー時 nil
     1865      if @celltype then  # composite でも呼びだす, エラー時 nil
    19511866        @celltype.new_cell self
    19521867      end
     
    19591874    @f_ref = true
    19601875
    1961     # composite のå†
    1962 éƒ¨ã‚»ãƒ«ã‚’参ç
    1963 §ã•ã‚ŒãŸã“とにする
    1964     # 今のところ問題ないが、未参ç
    1965 §ã§ã‚るべきものまで参ç
    1966 §ã•ã‚ŒãŸã“とになる
     1876    # composite の内部セルを参照されたことにする
     1877    # 今のところ問題ないが、未参照であるべきものまで参照されたことになる
    19671878    if @cell_list then
    19681879      @cell_list.each{ |cn,cell|
     
    19721883  end
    19731884
    1974   #=== Cell# cell の指定子を設定
     1885  #=== Cell# cell の指定子を設定
    19751886  # STAGE:  B
    19761887  #
    1977   #    bnf.y.rb の statement_specifiler_list
     1888  #    bnf.y.rb statement_specifiler_list
    19781889  #spec_list::      [ :ALLOCATOR, [ [ :NORMAL_ALLOC, ep_name, subscript, func_name, param_name, expr ], ... ] ]
    19791890  #                     s[0]      s[1]   a[0]        a[1]       a[2]        a[3]     a[4]       a[5]
    1980   #    セルに指定されたアロケータ指定子
    1981   #    a[1] の subscript はこのメソッドの中で Expression から Integer に評価される
    1982   #    受け口側に生成されるアロケータ呼び口の結合をå†
    1983 éƒ¨ç”Ÿæˆã™ã‚‹
    1984   #    呼び口側は Port の create_allocator_join にて生成
    1985   #    リレーアロケータの場合 create_relay_allocator_join にて生成す
     1891  #    セルに指定されたアロケータ指定子
     1892  #    a[1] の subscript はこのメソッドの中で Expression から Integer に評価される
     1893  #    受け口側に生成されるアロケータ呼び口の結合を内部生成する
     1894  #    呼び口側は Port の create_allocator_join にて生成
     1895  #    リレーアロケータの場合 create_relay_allocator_join にて生成す
    19861896  def set_specifier_list( spec_list )
    1987     return if spec_list == nil  # 空ならば何もしない
     1897    return if spec_list == nil  # 空ならば何もしない
    19881898
    19891899    dbgPrint( "set_spec_list: #{@name}\n" )
    1990     b_generate = false   # generate が指定された
     1900    b_generate = false   # generate が指定された
    19911901
    19921902    spec_list.each{ |s|
    19931903      case s[0]             # statement_specifier
    19941904      when :ALLOCATOR       # [allocator(ePort.func.param=allocCell.eA,ePort.func2.param=allocCell.eA)]
    1995         s[1].each { |a|     # alloc_list : allocator のå†
    1996 éƒ¨ã® ',' で区切られた部分のé
    1997 åˆ—
    1998           cp_name = :"#{a[0+1]}_#{a[2+1]}_#{a[3+1]}"    # アロケータ呼び口の名前:'=' の左辺を '.' に変えて '_' で連結
     1905        s[1].each { |a|     # alloc_list : allocator の内部の ',' で区切られた部分の配列
     1906          cp_name = :"#{a[0+1]}_#{a[2+1]}_#{a[3+1]}"    # アロケータ呼び口の名前:'=' の左辺を '.' に変えて '_' で連結
    19991907          # p "#{a[0]} #{a[0+1]} #{a[2+1]} #{a[3+1]} #{cp_name}"
    20001908          if a[1+1] then
     
    20041912            subscript = nil
    20051913          end
    2006           # アロケータ呼び口の結合を生成
    2007           join = Join.new( cp_name, subscript, a[4+1] )   # 構文解析段階なので locale 不要
     1914          # アロケータ呼び口の結合を生成
     1915          join = Join.new( cp_name, subscript, a[4+1] )   # 構文解析段階なので locale 不要
    20081916          dbgPrint( "new allocator join #{cp_name} #{subscript} #{a[4+1]}\n" )
    20091917          Cell.new_join( join )
     
    20511959  def get_allocator_list
    20521960
    2053     # 意味チェック(set_definition)されていない?
    2054     # relay アロケータの場合、セルの意味チェックが行われていないと、@alloc_list が完成しない
     1961    # 意味チェック(set_definition)されていない?
     1962    # relay アロケータの場合、セルの意味チェックが行われていないと、@alloc_list が完成しない
    20551963    if @b_checked == false then
    20561964      set_definition_join
     
    20631971  end
    20641972
    2065   #=== id 指定子の値を設定
    2066   # このメソッドは、プラグインで cell の生成順序を制御したい場合のために設けた
    2067   # 通常の id 指定子では使っていない
     1973  #=== id 指定子の値を設定
     1974  # このメソッドは、プラグインで cell の生成順序を制御したい場合のために設けた
     1975  # 通常の id 指定子では使っていない
    20681976  def set_specified_id id
    20691977    if Integer( id ) != id || id <= 0 then
     
    20761984  end
    20771985
    2078   #=== Cell# セルプラグイン (generate 指定子)
     1986  #=== Cell# セルプラグイン (generate 指定子)
    20791987  def cell_plugin
    20801988    plugin_name = @generate[0]
     
    20891997
    20901998    plClass = load_plugin( plugin_name, CellPlugin )
    2091     # return if plClass == nil # 従来と仕様が変わるので、継続する
     1999    # return if plClass == nil # 従来と仕様が変わるので、継続する
    20922000    if $verbose then
    20932001      print "new cell plugin: plugin_object = #{plClass.class.name}.new( #{@name}, #{option} )\n"
     
    21092017  end
    21102018
    2111   #=== Cell# cell を composite セルタイプのセル用に clone する
    2112   #name::        string : 親 cell の名前  (cell tComposite cell1 での cell1)
    2113   #global_name:: string : 親 cell の global_name
    2114   #join_array::  Join[] : composite の cell の join で、この cell に対応するもの
    2115   #ct_name::     string : 親セルのセルタイプ名
    2116   #region::      Region : å
    2117 ƒã®ã‚»ãƒ«ãŒå±žã™ã‚‹ region
    2118   #このメソッドは CompositeCelltype の expand から呼出される
     2019  #=== Cell# cell を composite セルタイプのセル用に clone する
     2020  #name::        string : 親 cell の名前  (cell tComposite cell1 での cell1)
     2021  #global_name:: string : 親 cell の global_name
     2022  #join_array::  Join[] : composite の cell の join で、この cell に対応するもの
     2023  #ct_name::     string : 親セルのセルタイプ名
     2024  #region::      Region : 元のセルが属する region
     2025  #このメソッドは CompositeCelltype の expand から呼出される
    21192026  def clone_for_composite( name, global_name, namespacePath, join_array, ct_name, region, plugin, locale )
    21202027
     
    21252032    @my_clone = self.clone
    21262033
    2127     # clone したセルのå†
    2128 éƒ¨ã«æŒã¤åå‰æƒ
    2129 å ±ã‚’調整する
     2034    # clone したセルの内部に持つ名前情報を調整する
    21302035    @my_clone.set_cloned( name, global_name, namespacePath, join_array, ct_name, region, plugin, locale )
    21312036
    2132     # @celltype == nil は以前にセルタイプ未定義エラー
     2037    # @celltype == nil は以前にセルタイプ未定義エラー
    21332038    if @b_defined == true && @celltype != nil then
    21342039      if @celltype.instance_of?( Celltype ) then
    2135         # celltype に登録(コード生成の対象となる)
     2040        # celltype に登録(コード生成の対象となる)
    21362041        @celltype.new_cell( @my_clone )
    21372042      end
     
    21412046  end
    21422047
    2143   #=== Cell# clone されたセルのå†
    2144 éƒ¨ã«æŒã¤åå‰æƒ
    2145 å ±ã‚’調整する
    2146   #name::        string : 親 cell の名前  (cell tComposite cell1 での cell1)
    2147   #global_name:: string : 親 cell の global_name
    2148   #join_array::  Join[] : composite の cell の join で、この cell に対応するもの
    2149   #parent_ct_name:: string : 親セルのセルタイプ名(composite セルタイプ)
    2150   #  このメソッドはすぐ上の clone_for_composite から呼出され、clone されたセルを整える
     2048  #=== Cell# clone されたセルの内部に持つ名前情報を調整する
     2049  #name::        string : 親 cell の名前  (cell tComposite cell1 での cell1)
     2050  #global_name:: string : 親 cell の global_name
     2051  #join_array::  Join[] : composite の cell の join で、この cell に対応するもの
     2052  #parent_ct_name:: string : 親セルのセルタイプ名(composite セルタイプ)
     2053  #  このメソッドはすぐ上の clone_for_composite から呼出され、clone されたセルを整える
    21512054  def set_cloned( name, global_name, namespacePath, join_array, parent_ct_name, region, plugin, locale )
    21522055
     
    21652068    @f_cloned = true
    21662069
    2167     # Namespace.new_cell( self )  # mikan namespace 対応
    2168     region.new_cell( self )  # mikan  namespace に cell を置けないことを仮定
    2169 
    2170     # join_list : NamedList の clone を作る
     2070    # Namespace.new_cell( self )  # mikan namespace 対応
     2071    region.new_cell( self )  # mikan  namespace に cell を置けないことを仮定
     2072
     2073    # join_list : NamedList の clone を作る
    21712074    if @celltype then
    21722075      dbgPrint "set_cloned: #{@celltype.get_name} #{@name} #{region.get_name}\n"
     
    21812084    @cell_list2 = []
    21822085
    2183     # このセルのグローバル名を与える
    2184     # C_EXP の$id$ 置換はこのセルの名前になる
     2086    # このセルのグローバル名を与える
     2087    # C_EXP の$id$ 置換はこのセルの名前になる
    21852088    join_array.each { |j|
    21862089      @join_list.change_item j
     
    21882091  end
    21892092
    2190   #=== clone されたセルが composite の場合、å†
    2191 éƒ¨ã‚»ãƒ«ã‚’展開する
    2192   #self:: clone されたセルでなければならない
     2093  #=== clone されたセルが composite の場合、内部セルを展開する
     2094  #self:: clone されたセルでなければならない
    21932095  def expand_inner
    21942096    if ! @f_cloned then
     
    21962098    end
    21972099
    2198     # clone しようとするセルが composit セルタイプ?
     2100    # clone しようとするセルが composit セルタイプ?
    21992101    if @celltype.instance_of?( CompositeCelltype ) then
    2200       # composite cell を再帰的に展開
     2102      # composite cell を再帰的に展開
    22012103      @cell_list, @cell_list2 = @celltype.expand( @name, @global_name, @NamespacePath, @join_list, @region, @plugin, @locale )
    22022104    end
    22032105  end
    22042106
    2205   #=== Cell# clone された cell の join_list の右辺の変更
    2206   #  呼び口の右辺の cell を他の clone された cell に置換え
     2107  #=== Cell# clone された cell の join_list の右辺の変更
     2108  #  呼び口の右辺の cell を他の clone された cell に置換え
    22072109  def change_rhs_port cloned_cell_list
    22082110
     
    22472149  end
    22482150
    2249   #=== Cell# 生成されるセルか?
    2250   # 最適化、コード生成中に、対象となる region に属する場合 true を返す
     2151  #=== Cell# 生成されるセルか?
     2152  # 最適化、コード生成中に、対象となる region に属する場合 true を返す
    22512153  def is_generate?
    22522154    if $generating_region == nil then
    2253       # 構文解釈、意味解析段階で呼ばれると例外発生
     2155      # 構文解釈、意味解析段階で呼ばれると例外発生
    22542156      raise "is_generate? called before optimizing"
    22552157    end
     
    22632165  end
    22642166
    2265   #=== Cell# composite å†
    2266 éƒ¨ã®è¤‡è£½ã•ã‚ŒãŸã‚»ãƒ«ã‹ï¼Ÿ
    2267   # composite 定義のå†
    2268 éƒ¨ã®ã‚»ãƒ« (@in_composite = true) ではない
     2167  #=== Cell# composite 内部の複製されたセルか?
     2168  # composite 定義の内部のセル (@in_composite = true) ではない
    22692169  def is_cloned?
    22702170    @f_cloned
    22712171  end
    22722172
    2273   #=== Cell# composite å†
    2274 éƒ¨ã®ã‚»ãƒ«ã‹ï¼Ÿ
     2173  #=== Cell# composite 内部のセルか?
    22752174  def is_in_composite?
    22762175    @in_composite
    22772176  end
    22782177
    2279   #=== Cell# composite のセルか?
     2178  #=== Cell# composite のセルか?
    22802179  def is_of_composite?
    22812180    if @celltype.kind_of? CompositeCelltype
     
    22862185  end
    22872186
    2288   #=== Cell# tmp_plugin_post_code.cdl で生成されたセルか?
     2187  #=== Cell# tmp_plugin_post_code.cdl で生成されたセルか?
    22892188  def post_code_generated?
    22902189    @b_post_code_generated
    22912190  end
    22922191
    2293   # composite cell の port に対応するå†
    2294 éƒ¨ã® cell の port の名前(リンク時にå¿
    2295 è¦ãªåå‰ï¼‰
     2192  # composite cell の port に対応する内部の cell の port の名前(リンク時に必要な名前)
    22962193  def get_real_global_name port_name
    22972194    if @celltype.instance_of?( CompositeCelltype ) then
     
    23212218  end
    23222219
    2323   #=== Cell# セルの受け口 port_name に対する実際のセル名、受け口名を '_' で連結
    2324   #    namespace 名 + '_' + セル名 + '_' + 受け口名   ï¼ˆã“のセルが composite ならば展開後のセル名、受け口名)
     2220  #=== Cell# セルの受け口 port_name に対する実際のセル名、受け口名を '_' で連結
     2221  #    namespace 名 + '_' + セル名 + '_' + 受け口名   (このセルが composite ならば展開後のセル名、受け口名)
    23252222  def get_real_global_port_name port_name
    23262223
    2327     # composite か?
     2224    # composite か?
    23282225    if @celltype.instance_of?( CompositeCelltype ) then
    23292226
     
    23362233      }
    23372234
    2338       # セルタイプå†
    2339 ã§ port_name の CompositeCelltypeJoin を探す(コード生成段階ではå¿
    2340 ãšè¦‹ã¤ã‹ã‚‹ï¼‰
     2235      # セルタイプ内で port_name の CompositeCelltypeJoin を探す(コード生成段階では必ず見つかる)
    23412236      cj = @celltype.find_export( port_name )
    23422237
     
    23442239      dbgPrint "   composite join name: #{cj.get_name}  cell: #{cj.get_cell_name}  cell elem: #{cj.get_cell_elem_name}\n"
    23452240
    2346       # composite のå†
    2347 éƒ¨ã®ã‚»ãƒ«ã«å¯¾ã—再帰的に get_real_global_port_name を適用
     2241      # composite の内部のセルに対し再帰的に get_real_global_port_name を適用
    23482242      name = @cell_list[ "#{cj.get_cell_name}" ].get_real_global_port_name( cj.get_cell_elem_name )
    23492243      return name
     
    23572251  end
    23582252
    2359   #=== Cell# PORT (celltype の定義) を得る
     2253  #=== Cell# PORT (celltype の定義) を得る
    23602254  def get_real_port( port_name )
    23612255
    2362     # composite か?
     2256    # composite か?
    23632257    if @celltype.instance_of?( CompositeCelltype ) then
    23642258
    2365       # セルタイプå†
    2366 ã§ port_name の CompositeCelltypeJoin を探す(コード生成段階ではå¿
    2367 ãšè¦‹ã¤ã‹ã‚‹ï¼‰
     2259      # セルタイプ内で port_name の CompositeCelltypeJoin を探す(コード生成段階では必ず見つかる)
    23682260      cj = @celltype.find_export( port_name )
    23692261
    2370       # composite のå†
    2371 éƒ¨ã®ã‚»ãƒ«ã«å¯¾ã—再帰的に get_real_port を適用
     2262      # composite の内部のセルに対し再帰的に get_real_port を適用
    23722263      port = @cell_list[ "#{cj.get_cell_name}" ].get_real_port( cj.get_cell_elem_name )
    23732264      return port
     
    23782269  end
    23792270
    2380   #=== Cell# cell を得る
    2381   #    composite でなければ自分自身を返す
     2271  #=== Cell# cell を得る
     2272  #    composite でなければ自分自身を返す
    23822273  def get_real_cell( port_name )
    23832274
    2384     # composite か?
     2275    # composite か?
    23852276    if @celltype.instance_of?( CompositeCelltype ) then
    23862277
    2387       # セルタイプå†
    2388 ã§ port_name の CompositeCelltypeJoin を探す(コード生成段階ではå¿
    2389 ãšè¦‹ã¤ã‹ã‚‹ï¼‰
     2278      # セルタイプ内で port_name の CompositeCelltypeJoin を探す(コード生成段階では必ず見つかる)
    23902279      # print "get_real_cell: cell=#{@name} port=#{port_name}\n"
    23912280      # pp @cell_list
    23922281      cj = @celltype.find_export( port_name )
    23932282
    2394       # composite のå†
    2395 éƒ¨ã®ã‚»ãƒ«ã«å¯¾ã—再帰的に get_real_port を適用
     2283      # composite の内部のセルに対し再帰的に get_real_port を適用
    23962284      cell = @cell_list[ "#{cj.get_cell_name}" ].get_real_cell( cj.get_cell_elem_name )
    23972285      return cell
     
    24122300  end
    24132301
    2414   #=== Cell# 受け口のport の参ç
    2415 §ã‚«ã‚¦ãƒ³ãƒˆã‚’アップする
    2416   #port_name:: Symbol  : ポート名
     2302  #=== Cell# 受け口のport の参照カウントをアップする
     2303  #port_name:: Symbol  : ポート名
    24172304  def port_referenced port
    24182305    if @referenced_port_list[ port ] then
     
    24222309    end
    24232310
    2424     # composite か?
     2311    # composite か?
    24252312    if @celltype.instance_of?( CompositeCelltype ) then
    24262313
    2427       # セルタイプå†
    2428 ã§ port_name の CompositeCelltypeJoin を探す(コード生成段階ではå¿
    2429 ãšè¦‹ã¤ã‹ã‚‹ï¼‰
     2314      # セルタイプ内で port_name の CompositeCelltypeJoin を探す(コード生成段階では必ず見つかる)
    24302315      cj = @celltype.find_export( port.get_name )
    24312316
    24322317      dbgPrint " port_referenced: #{@celltype.get_name} #{@name} cj=#{cj&&(cj.get_name)||"nil"}\n"
    24332318
    2434       if cj then  # 既にエラー
    2435         # composite のå†
    2436 éƒ¨ã®ã‚»ãƒ«ã«å¯¾ã—再帰的に get_real_port を適用
     2319      if cj then  # 既にエラー
     2320        # composite の内部のセルに対し再帰的に get_real_port を適用
    24372321        cell = @cell_list[ "#{cj.get_cell_name}" ]
    24382322        if cell && cell.get_celltype then
     
    24572341  end
    24582342
    2459   #Cell#属性の初期値を得る
    2460   #attr_name::Symbol  å¿
    2461 ãšåˆæœŸåŒ–されていないと Ruby 例外となる
     2343  #Cell#属性の初期値を得る
     2344  #attr_name::Symbol  必ず初期化されていないと Ruby 例外となる
    24622345  def get_attr_initializer attr_name
    24632346    val = @join_list.get_item( attr_name )
     
    24992382  end
    25002383
    2501   #=== Cell# 受け口é
    2502 åˆ—の添数の最大値を設定
     2384  #=== Cell# 受け口配列の添数の最大値を設定
    25032385  def set_entry_port_max_subscript( port, num )
    25042386    dbgPrint( "set_entry_port_max_subscript: #{@name}.#{port.get_name}: #{num}\n" )
     
    25112393  end
    25122394
    2513   #=== Cell# composite のå†
    2514 å´ã‚»ãƒ«ã®å—け口é
    2515 åˆ—の添数の最大値を設定
     2395  #=== Cell# composite の内側セルの受け口配列の添数の最大値を設定
    25162396  def set_entry_inner_port_max_subscript( port, num )
    25172397    if @cell_list == nil then
    2518       return    # プロトタイプ宣言しかされていなくて、å†
    2519 å´ã‚»ãƒ«ãŒå±•é–‹ã•ã‚Œã¦ã„ない or composite 展開前
    2520     end
    2521 
    2522     # composite のå†
    2523 å´ã®ã‚»ãƒ«ã«ä¼æ’­
     2398      return    # プロトタイプ宣言しかされていなくて、内側セルが展開されていない or composite 展開前
     2399    end
     2400
     2401    # composite の内側のセルに伝播
    25242402    if @celltype.instance_of? CompositeCelltype then
    25252403      dbgPrint "set_entry_inner_port_max_subscript #{@name} #{@port} #{num} cell_list.len=#{@cell_list.length}\n"
     
    25382416  end
    25392417
    2540   #=== Cell# 受け口é
    2541 åˆ—の添数の最大値を返す
    2542   # 長さは +1 する
    2543   # 1つもない場合は -1 を返す
     2418  #=== Cell# 受け口配列の添数の最大値を返す
     2419  # 長さは +1 する
     2420  # 1つもない場合は -1 を返す
    25442421  def get_entry_port_max_subscript( port )
    25452422    subscript = @entry_array_max_subscript[port]
     
    25502427  end
    25512428
    2552   #=== Cell# リレーアロケータの結合を生成
     2429  #=== Cell# リレーアロケータの結合を生成
    25532430  # STAGE: S
    2554   # 呼び口側の結合をå
    2555 ƒã«å—け口側の結合を生成
     2431  # 呼び口側の結合を元に受け口側の結合を生成
    25562432  def create_relay_allocator_join
    25572433
    2558     # celltype がなければチェックしない(既にエラー)
     2434    # celltype がなければチェックしない(既にエラー)
    25592435    return if @celltype == nil
    25602436
    2561     # relay allocator を生成
     2437    # relay allocator を生成
    25622438    @celltype.get_port_list.each { |p|
    25632439      ail = p.get_allocator_instance
     
    25652441        dbgPrint "create_relay_allocator_join: #{@name}, #{p.get_name}\n"
    25662442        if p.get_array_size then
    2567           # mikan relay allocator が array に対応できてもよいのでは?
     2443          # mikan relay allocator が array に対応できてもよいのでは?
    25682444          cdl_error( "S1040 array not supported for relay allocator"  )
    25692445          next
     
    25732449          if ai2[0] == :RELAY_ALLOC then
    25742450            dbgPrint "create_relay_allocator_join: #{@name}, #{name}\n"
    2575             # 呼び口側の結合を取り出す
     2451            # 呼び口側の結合を取り出す
    25762452            ja = @join_list.get_item( :"#{ai2[3]}_#{ai2[4]}_#{ai2[5]}" )
    25772453            if ja == nil then
    2578               # 見つからない場合
     2454              # 見つからない場合
    25792455              found = false
    25802456             
    2581               # composite å†
    2582 ã§å¤–部に結合されているか
     2457              # composite 内で外部に結合されているか
    25832458              if @in_composite then
    25842459                @compositecelltypejoin_list.get_items.each { |cj|
     
    25972472                cdl_error( "S1041 \'$1_$2_$3\': not joined. cannot create internal join for relay allocator" , ai2[3], ai2[4], ai2[5] )
    25982473                print( "      In cell #{get_name}\n" )
    2599                 # join が未結合であることのエラーは二度でる (S1043)
     2474                # join が未結合であることのエラーは二度でる (S1043)
    26002475              end
    2601               next    # 打ち切る
     2476              next    # 打ち切る
    26022477            end
    26032478
    26042479            b_export = false
    2605             # composite å†
    2606 ã®ã‚»ãƒ«ã§ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã•ã‚Œã¦ã„るかチェック
    2607             #  mikan エクスポート側と、こちら側で、リレーå
    2608 ˆãŒä¸€è‡´ã™ã‚‹ã‹ãƒã‚§ãƒƒã‚¯ãŒå¿
    2609 è¦
     2480            # composite 内のセルでエクスポートされているかチェック
     2481            #  mikan エクスポート側と、こちら側で、リレー先が一致するかチェックが必要
    26102482            if @compositecelltypejoin_list then
    2611               # export されているか調べる
     2483              # export されているか調べる
    26122484              @compositecelltypejoin_list.get_items.each{ |cj|
    2613                 # 属性名と composite の export する名前は一致するか
     2485                # 属性名と composite の export する名前は一致するか
    26142486                if p.get_name == cj.get_cell_elem_name then
    26152487                  print "export : #{p.get_name}\n"
    2616                   b_export = true    # 属性は export されているので、とりあえず未初期化とはしない
     2488                  b_export = true    # 属性は export されているので、とりあえず未初期化とはしない
    26172489                  break
    26182490                end
     
    26212493            end
    26222494
    2623             # mikan é
    2624 åˆ—
     2495            # mikan 配列
    26252496            am = nil
    26262497            if am then
     
    26292500                subscript = ja2.get_subscript
    26302501                if b_export == false then
    2631                   # CompositeCelltype の場合、å†
    2632 å´ã®ã‚»ãƒ«ã§ç”Ÿæˆã•ã›ã‚‹
     2502                  # CompositeCelltype の場合、内側のセルで生成させる
    26332503                  join = Join.new( :"#{p.get_name}_#{ai2[1]}_#{ai2[2]}", subscript, rhs, @loacle )
    26342504                  # p ( "#{p.get_name}_#{ai2[1]}_#{ai2[2]}", subscript, rhs )
    26352505                  new_join( join )
    26362506                  join.set_definition( @celltype.find(join.get_name) )
    2637                   # mikan relay mismatch チェックができていない(下方を参ç
    2638 §ï¼‰
     2507                  # mikan relay mismatch チェックができていない(下方を参照)
    26392508                end
    26402509                @alloc_list << [ :NORMAL_ALLOC, p.get_name, subscript, ai2[1], ai2[2], rhs ]
     
    26422511            else
    26432512              if b_export == false then
    2644                 # CompositeCelltype の場合、å†
    2645 å´ã®ã‚»ãƒ«ã§ç”Ÿæˆã•ã›ã‚‹
     2513                # CompositeCelltype の場合、内側のセルで生成させる
    26462514                join = Join.new( :"#{p.get_name}_#{ai2[1]}_#{ai2[2]}", nil, ja.get_rhs, @locale )
    26472515                new_join( join )
     
    26532521                                      "#{p.get_name}_#{ai2[1]}_#{ai2[2]}",
    26542522                                      "#{ai2[3]}_#{ai2[4]}_#{ai2[5]}" )
    2655                     # 本当は composite の呼び口と受け口の間で行うべきだが、å†
    2656 éƒ¨ã§å¤šæ®µæŽ¥ç¶šã•ã‚Œã¦ã„る場合
     2523                    # 本当は composite の呼び口と受け口の間で行うべきだが、内部で多段接続されている場合
    26572524                  else
    26582525                    dbgPrint "relay success:  #{p.get_name}_#{ai2[1]}_#{ai2[2]}=>#{ai2[3]}_#{ai2[4]}_#{ai2[5]} #{jr.get_rhs_cell2.get_name}.#{jr.get_rhs_port2} \n"
     
    26692536  end
    26702537
    2671   #=== Cell# @@cell_list2 を作る
    2672   # @@cell_list2 は、出現順に composite å†
    2673 ã‚’含むセルのリスト
     2538  #=== Cell# @@cell_list2 を作る
     2539  # @@cell_list2 は、出現順に composite 内を含むセルのリスト
    26742540  def self.make_cell_list2
    26752541    @@cell_list.each{ |c|
     
    26792545  end
    26802546
    2681   #=== Cell# @@cell_list2 を得る
    2682   # composite å†
    2683 ã‚’含む (compositeも含む)
    2684   # 意味解析後に作成される
     2547  #=== Cell# @@cell_list2 を得る
     2548  # composite 内を含む (compositeも含む)
     2549  # 意味解析後に作成される
    26852550  def self.get_cell_list2
    26862551    @@cell_list2
    26872552  end
    26882553
    2689   #=== Cell# @@cell_list を得る
    2690   #composite の中を含まない
     2554  #=== Cell# @@cell_list を得る
     2555  #composite の中を含まない
    26912556  def self.get_cell_list
    26922557    @@cell_list
    26932558  end
    26942559
    2695   #=== Cell# reverse_join を生成する
     2560  #=== Cell# reverse_join を生成する
    26962561  def self.create_reverse_join
    26972562    @@cell_list.each{ |c|
     
    27052570  end
    27062571
    2707   #=== Cell# reverse_require_join を生成する
     2572  #=== Cell# reverse_require_join を生成する
    27082573  def self.create_reverse_require_join
    27092574    @@cell_list2.each{ |c|
     
    27112576      # if c.is_generate? then
    27122577        if ct then
    2713           # self への呼び口側の結合を生成
     2578          # self への呼び口側の結合を生成
    27142579          ct.create_reverse_require_join c
    27152580        end
     
    27182583  end
    27192584
    2720   #=== Cell# 受け口のport の参ç
    2721 §ã‚«ã‚¦ãƒ³ãƒˆã‚’設定する
    2722   # self は呼びå
    2723 ƒã®ã‚»ãƒ«
    2724   # 呼びå
    2725 ˆã‚»ãƒ«ã®å—け口の参ç
    2726 §ã‚«ã‚¦ãƒ³ãƒˆã‚’アップする
     2585  #=== Cell# 受け口のport の参照カウントを設定する
     2586  # self は呼び元のセル
     2587  # 呼び先セルの受け口の参照カウントをアップする
    27272588  def set_port_reference_count
    27282589    @join_list.get_items.each { |j|
    27292590      if j.get_definition.instance_of? Port then
    27302591        am = j.get_array_member2
    2731         if am then             # 呼び口é
    2732 åˆ—
     2592        if am then             # 呼び口配列
    27332593          am.each { |j2|
    2734             next if j2 == nil    # optional で一部が欠落しているケース
     2594            next if j2 == nil    # optional で一部が欠落しているケース
    27352595            cell = j2.get_rhs_cell2
    2736             next if cell == nil     # 右辺が見つからなかった.既にエラー
     2596            next if cell == nil     # 右辺が見つからなかった.既にエラー
    27372597            port = cell.get_celltype.find( j2.get_rhs_port2 )
    27382598            dbgPrint( "set_port_reference_count: #{@name}.#{j2.get_name} => #{cell.get_name}.#{port.get_name}\n")
     
    27412601        else
    27422602          cell = j.get_rhs_cell2
    2743           next if cell == nil || cell.get_celltype == nil     # 右辺が見つからなかった.既にエラー
     2603          next if cell == nil || cell.get_celltype == nil     # 右辺が見つからなかった.既にエラー
    27442604          port = cell.get_celltype.find( j.get_rhs_port2 )
    27452605          if port == nil then
    27462606            dbgPrint "set_port_ref: #{@name}.#{j.get_name} = #{cell.get_name}.#{j.get_rhs_port2}\n"
    2747             # through プラグインで生成されたセルの受け口が見つからないケース (のハズ)
     2607            # through プラグインで生成されたセルの受け口が見つからないケース (のハズ)
    27482608            cdl_error( "entry '$1' not found in '$2' refered from $3.$4", j.get_rhs_port2, cell.get_name, @name, j.get_name )
    27492609            next
     
    27562616  end
    27572617
    2758   #=== Cell# 結合(Join)のチェック
    2759   #     Join は呼び口の結合または attribute の初期化
     2618  #=== Cell# 結合(Join)のチェック
     2619  #     Join は呼び口の結合または attribute の初期化
    27602620  #
    2761   #  mikan このメソッドは、以下の4つのチェックからなるが、分割したほうがより適切な長さのメソッドになる
    2762   #  ・リレーアロケータの生成 => create_relay_allocator_join
    2763   #  ・未結合の呼び口のチェック
    2764   #  ・ポインタ型がé
    2765 åˆ—で初期化される場合のチェック
    2766   #  ・未初期化の属性のチェック
     2621  #  mikan このメソッドは、以下の4つのチェックからなるが、分割したほうがより適切な長さのメソッドになる
     2622  #  ・リレーアロケータの生成 => create_relay_allocator_join
     2623  #  ・未結合の呼び口のチェック
     2624  #  ・ポインタ型が配列で初期化される場合のチェック
     2625  #  ・未初期化の属性のチェック
    27672626  def check_join
    27682627
    2769     # celltype がなければチェックしない(既にエラー)
     2628    # celltype がなければチェックしない(既にエラー)
    27702629    return if @celltype == nil
    27712630    return if @b_defined == false
    2772     return if @f_cloned == true    # å†
    2773 éƒ¨ã‚»ãƒ«ã«ã¤ã„ては、composite の定義時にチェックされている
     2631    return if @f_cloned == true    # 内部セルについては、composite の定義時にチェックされている
    27742632
    27752633    # debug
     
    27792637    # end
    27802638
    2781     # 未結合の呼び口のチェック
     2639    # 未結合の呼び口のチェック
    27822640    @celltype.get_port_list.each { |p|
    27832641
    2784       # 呼び口でなければ、チェックしない
     2642      # 呼び口でなければ、チェックしない
    27852643      next if p.get_port_type != :CALL
    27862644
     
    27882646      dbgPrint "check_join: #{@name} #{get_celltype.get_name} #{p.get_name}\n"
    27892647
    2790       # 結合リストの中から呼び口名に一致するものを取りだす
     2648      # 結合リストの中から呼び口名に一致するものを取りだす
    27912649      j = @join_list.get_item( p.get_name )
    27922650
    27932651      if j == nil then
    2794         # 未結合の呼び口
    2795 
    2796         # composite celltype のå†
    2797 éƒ¨ã®å ´åˆã€composite celltype が export する呼び口に結合されているか探す
     2652        # 未結合の呼び口
     2653
     2654        # composite celltype の内部の場合、composite celltype が export する呼び口に結合されているか探す
    27982655        found = false
    27992656        if @in_composite then
    2800           # composite celltype の export するものすべてから探す
    2801           # (export するものの右辺値から探すために get_item ではダメ)
     2657          # composite celltype の export するものすべてから探す
     2658          # (export するものの右辺値から探すために get_item ではダメ)
    28022659          @compositecelltypejoin_list.get_items.each{ |cj|
    2803             # 呼び口名と composite の export する名前は一致するか
     2660            # 呼び口名と composite の export する名前は一致するか
    28042661            if p.get_name == cj.get_cell_elem_name then
    28052662              found = true
     
    28082665        end
    28092666
    2810         # 呼び口é
    2811 åˆ—の場合 optional でå
    2812 ¨ã¦ã®è¦ç´ ãŒåˆæœŸåŒ–されない場合に、ここへ来る
     2667        # 呼び口配列の場合 optional で全ての要素が初期化されない場合に、ここへ来る
    28132668        if ! found && ! p.is_require? && ! p.is_optional? then
    28142669          if ! p.is_allocator_port? then
     
    28192674        end
    28202675      elsif p.get_array_size.kind_of? Integer then
    2821         # 添数あり呼び口é
    2822 åˆ—の場合、すべての添数要素が初期化されているかチェックする
     2676        # 添数あり呼び口配列の場合、すべての添数要素が初期化されているかチェックする
    28232677
    28242678        am = j.get_array_member2
    28252679        if( am )then
    2826           # join はé
    2827 åˆ—
    2828 
    2829           # 呼び口é
    2830 åˆ—定義でのé
    2831 åˆ—の大きさ
     2680          # join は配列
     2681
     2682          # 呼び口配列定義での配列の大きさ
    28322683          length = p.get_array_size
    28332684
    2834           # é
    2835 åˆ—の大きさが呼び口é
    2836 åˆ—定義と結合定義で一致するか?
     2685          # 配列の大きさが呼び口配列定義と結合定義で一致するか?
    28372686          if am.length != length then
    28382687            if ! p.is_optional? || am.length >= length then
    2839               # optional の場合、要素数が少なすぎるのは OK
     2688              # optional の場合、要素数が少なすぎるのは OK
    28402689              cdl_error( "S1044 $1: array initializer too many or few, $2 for $3" , p.get_name, am.length, length )
    28412690            end
    28422691
    2843             # am の要素に nil を追加しておく (#_CPA_# のコード生成時、このé
    2844 åˆ—要素数分生成)
     2692            # am の要素に nil を追加しておく (#_CPA_# のコード生成時、この配列要素数分生成)
    28452693            i = am.length
    28462694            while i < length
     
    28502698          end
    28512699
    2852 #          # é
    2853 åˆ—要素の抜けがないかチェック
    2854 #          if am.length < length then  # 満たない場合既にエラーだが要素のある範囲でチェック
     2700#          # 配列要素の抜けがないかチェック
     2701#          if am.length < length then  # 満たない場合既にエラーだが要素のある範囲でチェック
    28552702#            length = am.length
    28562703#          end
     
    28622709              end
    28632710            else
    2864               # 生成されないリージョンへの結合かチェック
     2711              # 生成されないリージョンへの結合かチェック
    28652712              if ! @in_composite then
    28662713                am[i].check_region2
     
    28712718
    28722719        # else
    2873         # join が非é
    2874 åˆ—であれば、既にエラー
     2720        # join が非配列であれば、既にエラー
    28752721        end
    28762722      elsif j.get_array_member then
    2877         # 添数なし呼び口é
    2878 åˆ—の場合
     2723        # 添数なし呼び口配列の場合
    28792724        am = j.get_array_member2
    28802725        length = am.length
     
    28892734        end
    28902735
    2891         # 生成されないリージョンへの結合かチェック
     2736        # 生成されないリージョンへの結合かチェック
    28922737        if ! @in_composite then
    28932738          am.each { |join|
     
    28982743        end
    28992744      else
    2900         # 呼び口[é
    2901 åˆ—」でない場合
    2902 
    2903         # 生成されないリージョンへの結合かチェック
     2745        # 呼び口[配列」でない場合
     2746
     2747        # 生成されないリージョンへの結合かチェック
    29042748        if ! @in_composite then
    29052749          j.check_region2
     
    29092753    }
    29102754
    2911     # ポインタ型がé
    2912 åˆ—で初期化される場合のチェック
     2755    # ポインタ型が配列で初期化される場合のチェック
    29132756    (@celltype.get_attribute_list+@celltype.get_var_list).each { |a|
    29142757      if a.get_size_is then
    29152758
    29162759        if a.instance_of? CompositeCelltypeJoin then
    2917           # 既にエラーになっている
     2760          # 既にエラーになっている
    29182761          # cdl_error( "S1047 size_is pointer cannot be exposed for composite attribute"  )
    29192762          next
     
    29252768          size = a.get_size_is.eval_const( @join_list, @celltype.get_name_list )
    29262769          a.get_type.set_scs( a.get_size_is, nil, nil, nil, false )
    2927           if( ! size.kind_of? Integer )then               # C_EXP の可能性あり
    2928             # mikan 多分ここでのエラー発生は不要、eval_const の中で変数が存在しない、型が不適切などのエラーになるはず
     2770          if( ! size.kind_of? Integer )then               # C_EXP の可能性あり
     2771            # mikan 多分ここでのエラー発生は不要、eval_const の中で変数が存在しない、型が不適切などのエラーになるはず
    29292772            cdl_error( "S1049 $1: size_is arg not constant" , a.get_name )
    29302773          else
     
    29422785              end
    29432786            else
    2944               # size_is 引数がセルで指定されていて、初期化子がセルタイプで指定されているケースのチェック
     2787              # size_is 引数がセルで指定されていて、初期化子がセルタイプで指定されているケースのチェック
    29452788              ini = a.get_initializer
    29462789              if ini.instance_of? Expression
     
    29572800      else
    29582801        if ! a.instance_of? CompositeCelltypeJoin then
    2959           # composite は size_is 指定できない
     2802          # composite は size_is 指定できない
    29602803          if a.get_type.kind_of?( PtrType ) then
    29612804            j = @join_list.get_item( a.get_identifier )
    29622805            if j && j.get_rhs.instance_of?( Array ) then
    2963               ## size_is 指定されていないポインタが Array で初期化されていたら、エラーとする
     2806              ## size_is 指定されていないポインタが Array で初期化されていたら、エラーとする
    29642807              cdl_error( "S1169 $1: non-size_is pointer cannot be initialized with array initializer" , a.get_identifier )
    29652808            end
     
    29692812    }
    29702813
    2971     # 未初期化の属性をチェック
     2814    # 未初期化の属性をチェック
    29722815    @celltype.get_attribute_list.each { |a|
    29732816      b_init = false
    29742817      # self.show_tree 1
    2975       if a.get_initializer then                               # セルタイプで初期化されている
     2818      if a.get_initializer then                               # セルタイプで初期化されている
    29762819        b_init = true
    2977         # @in_composite で export されている場合には、この初期値は使われない
    2978         # export されている、いないに関わらず、初期化されていることが保証される
    2979       elsif @join_list.get_item( a.get_name ) then            # セルで初期化されている
     2820        # @in_composite で export されている場合には、この初期値は使われない
     2821        # export されている、いないに関わらず、初期化されていることが保証される
     2822      elsif @join_list.get_item( a.get_name ) then            # セルで初期化されている
    29802823        b_init = true
    29812824      elsif @in_composite && @compositecelltypejoin_list then
    2982         # 属性が export されているか調べる。export されていれば未初期化とはしない
    2983         # mikan リニアサーチ
     2825        # 属性が export されているか調べる。export されていれば未初期化とはしない
     2826        # mikan リニアサーチ
    29842827        @compositecelltypejoin_list.get_items.each{ |cj|
    2985           # 属性名と composite の export する名前は一致するか
     2828          # 属性名と composite の export する名前は一致するか
    29862829          if a.get_name.to_sym == cj.get_cell_elem_name.to_sym then
    2987             b_init = true    # 属性は export されているので、とりあえず未初期化とはしない
     2830            b_init = true    # 属性は export されているので、とりあえず未初期化とはしない
    29882831          end
    29892832        }
    29902833        if b_init then
    2991           # size_is の引数がマッチするかチェックする
    2992           # å†
    2993 éƒ¨ã‚»ãƒ«ã® size_is をエクスポートする size_is とマッチするかチェックする
    2994           # å†
    2995 éƒ¨ã‚»ãƒ«ã¨ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã§åå‰ã‚’変えている可能性があるので、å†
    2996 éƒ¨ã‚»ãƒ«ã® size_is の名前を変換した上でチェックする
     2834          # size_is の引数がマッチするかチェックする
     2835          # 内部セルの size_is をエクスポートする size_is とマッチするかチェックする
     2836          # 内部セルとエクスポートで名前を変えている可能性があるので、内部セルの size_is の名前を変換した上でチェックする
    29972837          if a.get_size_is then
    29982838            ### p "attr: get_size_is"
     
    30002840            if cj.get_port_decl.instance_of? Decl then
    30012841              ### p "attr: get_size_is 2"
    3002               # cj_size_is は、外部å
    3003 ¬é–‹ã•ã‚Œã‚‹ attr の size_is
     2842              # cj_size_is は、外部公開される attr の size_is
    30042843              cj_size_is = cj.get_port_decl.get_size_is
    30052844              if cj_size_is == nil then
     
    30102849              remain = exprs
    30112850              inner_to_export = {}
    3012                           ### exprs に含まれる識別子を抜き出し、対応する export される名前を探す
     2851                          ### exprs に含まれる識別子を抜き出し、対応する export される名前を探す
    30132852              while remain != "" && remain != nil
    30142853                ### p "remain ", remain
    3015                 remain =~ /([^\w]*)([_A-Za-z][\w\d]*)/   # 変数名文字列を取り出す
     2854                remain =~ /([^\w]*)([_A-Za-z][\w\d]*)/   # 変数名文字列を取り出す
    30162855                                if $2 == nil then
    30172856                                                break
     
    30202859                remain = $'
    30212860                ### p exprs, $1, $2, $'
    3022                 # size_is に含まれる変数は、composite で export されているか
     2861                # size_is に含まれる変数は、composite で export されているか
    30232862                cj2 = nil
    30242863                @compositecelltypejoin_list.get_items.each{ |cj2t|
     
    30332872                if cj2.get_port_decl.instance_of? Decl then
    30342873                   decl2 = cj2.get_port_decl
    3035                    # å†
    3036 éƒ¨ã®åå‰ã¨å¤–部の名前の対応関係を記憶
     2874                   # 内部の名前と外部の名前の対応関係を記憶
    30372875                   inner_to_export[arg_name] = decl2.get_name
    3038                 # else cj2 は Port (既にエラー)
     2876                # else cj2 は Port (既にエラー)
    30392877                end
    30402878              end
    3041               # å†
    3042 éƒ¨ã®åå‰ã‚’外部の名前で置換
     2879              # 内部の名前を外部の名前で置換
    30432880              inner_to_export.each{ |arg_name, exp_name|
    30442881                ### p "changing #{arg_name}=>#{exp_name}"
    30452882                # exprs.gsub!( Regexp.new("#{arg_name}[^0-9A-Za-z_]"), exp_name.to_s )
    3046                 exprs.gsub!( Regexp.new("#{arg_name}(\\W)"), exp_name.to_s+"\\1" )  # 文字列末尾にないケース
    3047                 exprs.gsub!( Regexp.new("#{arg_name}\\Z"), exp_name.to_s )          # 文字列末尾にあるケース
     2883                exprs.gsub!( Regexp.new("#{arg_name}(\\W)"), exp_name.to_s+"\\1" )  # 文字列末尾にないケース
     2884                exprs.gsub!( Regexp.new("#{arg_name}\\Z"), exp_name.to_s )          # 文字列末尾にあるケース
    30482885              }
    30492886              ### p "changed: #{exprs} #{cj_size_is.to_s}"
     
    30512888                cdl_error( "S1172 \'$1\' size_is argument mismatch with exporting one \'$2\'", a.get_name, cj.get_name )
    30522889              end
    3053             # else cj は Port (既にエラー)
     2890            # else cj は Port (既にエラー)
    30542891            end
    30552892          end
     
    30642901  end
    30652902
    3066   #=== Cell# 逆 require をチェックする
    3067   # 逆 require 指定された受け口に複数の結合がないかチェックする
    3068   # composite のå†
    3069 éƒ¨ã‚»ãƒ« (f_cloned=true) もチェックする
     2903  #=== Cell# 逆 require をチェックする
     2904  # 逆 require 指定された受け口に複数の結合がないかチェックする
     2905  # composite の内部セル (f_cloned=true) もチェックする
    30702906  def check_reverse_require
    3071     # celltype がなければチェックしない(既にエラー)
     2907    # celltype がなければチェックしない(既にエラー)
    30722908    return if @celltype == nil
    30732909    return if @b_defined == false
    30742910
    30752911    # p "check reverse require   #{@name}"
    3076     # 逆require 指定された受け口に複数の結合がないかチェック
     2912    # 逆require 指定された受け口に複数の結合がないかチェック
    30772913    @referenced_port_list.each{ |port,count|
    30782914      # p port.class, count
     
    30842920  end
    30852921
    3086   #=== Cell# require 呼び口の結合を行う
     2922  #=== Cell# require 呼び口の結合を行う
    30872923  # STAGE: S
    3088   #cp_name:: Symbol           : 呼び口名
    3089   #cell_or_t:: Celltype|Cell  : celltype の require の右辺で指定されたセルタイプまたはセル
    3090   #port::  Port               : celltype の Port オブジェクト
     2924  #cp_name:: Symbol           : 呼び口名
     2925  #cell_or_t:: Celltype|Cell  : celltype の require の右辺で指定されたセルタイプまたはセル
     2926  #port::  Port               : celltype の Port オブジェクト
    30912927  def set_require_join( cp_name, cell_or_ct, port )
    30922928
    3093     # set_require_join は2度呼び出される
    3094     # 2度目は post コードを生成した後       #####  いったん見合わせ(重複エラーを見逃す)
     2929    # set_require_join は2度呼び出される
     2930    # 2度目は post コードを生成した後       #####  いったん見合わせ(重複エラーを見逃す)
    30952931    # if @require_joined_list[ cp_name ] then
    30962932    #   return
     
    31092945      end
    31102946    else
    3111       # require: cell で指定
     2947      # require: cell で指定
    31122948      cell = cell_or_ct
    31132949      if @region.distance( cell.get_region ) == nil then
     
    31192955      cdl_warning( "W1003 $1 : require call port overridden in $2" , cp_name, @name )
    31202956    else
    3121       # require の join を生成(呼び口の結合)
     2957      # require の join を生成(呼び口の結合)
    31222958#      rhs = Expression.new( [ :OP_DOT, [ :IDENTIFIER, Token.new( cell.get_name, nil, nil, nil ) ],
    31232959      nsp = NamespacePath.new( cell.get_name, false, cell.get_namespace )
     
    31322968  end
    31332969
    3134   #=== Cell# Join の definition の設定とチェック
     2970  #=== Cell# Join の definition の設定とチェック
    31352971  # STAGE: S
    31362972  def set_definition_join
    3137     return if @celltype == nil    # 既にエラー:打ち切る
    3138     return if @b_defined == false # プロトタイプ宣言のみ
    3139     return if @b_checked == true  # 既に設定(チェック)済み
     2973    return if @celltype == nil    # 既にエラー:打ち切る
     2974    return if @b_defined == false # プロトタイプ宣言のみ
     2975    return if @b_checked == true  # 既に設定(チェック)済み
    31402976
    31412977    dbgPrint "set_definition_join in #{@name}\n"
    31422978
    3143     # relay allocator をたどって再å
    3144 ¥ã—ないよう、å
    3145 ˆé ­ã§ @b_checked を true にする
     2979    # relay allocator をたどって再入しないよう、先頭で @b_checked を true にする
    31462980    @b_checked = true
    31472981
     
    31492983      check_restrict_list
    31502984     
    3151       # compoiste セルのクローンされたものは、set_definition 不要
    3152       # å
    3153 ƒã® join は既に definition されている
    3154       # å
    3155 ƒã®ã‚»ãƒ«ã«ãŠã„て、代å
    3156 ¥ãƒã‚§ãƒƒã‚¯ã•ã‚Œã¦ã„るので、二重にチェック(through適用)されてしまう
     2985      # compoiste セルのクローンされたものは、set_definition 不要
     2986      # 元の join は既に definition されている
     2987      # 元のセルにおいて、代入チェックされているので、二重にチェック(through適用)されてしまう
    31572988      @join_list.get_items.each{ |join|
    31582989        dbgPrint " set_definition_join: checking #{@name}.#{join.get_name}\n"
     
    31602991          port = @celltype.find(join.get_name)
    31612992          join.get_array_member2.each { |am|
    3162             if am == nil then   # 未結合の場合、エラーチェックは check_join
     2993            if am == nil then   # 未結合の場合、エラーチェックは check_join
    31632994              if port && ! port.is_optional? then
    3164                 # テスト用にエラーメッセージ出力
     2995                # テスト用にエラーメッセージ出力
    31652996                # cdl_error( "TEMPORAL set_definition_join: uninitialized array member"  )
    31662997              end
     
    31763007    end
    31773008
    3178     # リレー join は through プラグイン生成後にしかできない
    3179     # through 後に結合å
    3180 ˆãŒå
    3181 ¥ã‚Œæ›¿ãˆã‚‰ã‚Œã‚‹
     3009    # リレー join は through プラグイン生成後にしかできない
     3010    # through 後に結合先が入れ替えられる
    31823011    create_relay_allocator_join
    31833012
    3184     # composite セルの展開
     3013    # composite セルの展開
    31853014    if ! @in_composite && ! @f_cloned && @celltype.instance_of?( CompositeCelltype ) then
    3186       # composite セルタイプå†
    3187 ã® composite は展開しない
    3188       # compoiste セル展開中の composite は展開しない (CompositeCelltype::expand å†
    3189 ã§å†å¸°çš„に expnad)
     3015      # composite セルタイプ内の composite は展開しない
     3016      # compoiste セル展開中の composite は展開しない (CompositeCelltype::expand 内で再帰的に expnad)
    31903017      expand
    31913018    end
    31923019  end
    31933020
    3194   #=== Cell# composite セルの展開
    3195   # このセルが composite セルタイプ
     3021  #=== Cell# composite セルの展開
     3022  # このセルが composite セルタイプ
    31963023  def expand
    31973024
     
    31993026    dbgPrint "=====    expanding   #{@name}     =====\n"
    32003027
    3201     # composite celltype の cell を展開
     3028    # composite celltype の cell を展開
    32023029    @cell_list, @cell_list2 = @celltype.expand( @name, @global_name, @NamespacePath, @join_list, @region, @plugin, @locale )
    32033030
    3204     # プロトタイプが参ç
    3205 §ã•ã‚Œã¦ã„る場合、子も参ç
    3206 §ã•ã‚Œã¦ã„ることにする
     3031    # プロトタイプが参照されている場合、子も参照されていることにする
    32073032    if @f_ref then
    32083033      dbgPrint "expand: set_f_ref\n"
     
    32113036  end
    32123037
    3213   #=== Cell#å†
    3214 éƒ¨ã‚»ãƒ«ã®å—け口添数最大値を設定
     3038  #=== Cell#内部セルの受け口添数最大値を設定
    32153039  def set_max_entry_port_inner_cell
    32163040    if @cell_list == nil then
     
    32203044    dbgPrint "set_max_entry_port_inner_cell name=#{@name} entry_array_max_subscript.len=#{@entry_array_max_subscript.length}\n"
    32213045
    3222     # プロトタイプ宣言で設定されていたものを反映する
     3046    # プロトタイプ宣言で設定されていたものを反映する
    32233047    @entry_array_max_subscript.each{ |port,name|
    32243048      dbgPrint "set_entry_inner_port_max_subscript( #{port}, #{name} )\n"
     
    32273051  end
    32283052
    3229   #=== Cell#restrict を追加
     3053  #=== Cell#restrict を追加
    32303054  def add_restrict( entry_name, func_name, region_name_list )
    32313055    if @restrict_list[ entry_name ] == nil then
     
    32603084            else
    32613085              cdl_info( "I9999 $1: restrict calling domain to $2, which is same domain as the cell locates", @name, rp.to_s )
    3262               # restrict を同じドメインを指定してもよいこととする (HRP3)
    3263               # KernelDoamin å†
    3264 ã®ã‚»ãƒ«ã«å¯¾ã—、KernelDomain に restrict している場合、
    3265               # 無所属経由で結合されているが、KernelDomain から呼出すことを想定した許可
     3086              # restrict を同じドメインを指定してもよいこととする (HRP3)
     3087              # KernelDoamin 内のセルに対し、KernelDomain に restrict している場合、
     3088              # 無所属経由で結合されているが、KernelDomain から呼出すことを想定した許可
    32663089            end
    32673090          else
     
    33113134
    33123135  #=== Cell#get_callable_regions( entry_name, func_name )
    3313   # func_name=nil の場合、entry_name の可否をチェック数る
    3314   # nil が返る場合、制限されていないことを意味する
     3136  # func_name=nil の場合、entry_name の可否をチェック数る
     3137  # nil が返る場合、制限されていないことを意味する
    33153138  def get_restricted_regions( entry_name, func_name )
    33163139    # p "get_restricted_regions #{@name}"
     
    33273150
    33283151  #=== Cell#has_ineffective_restrict_specifier
    3329   # restrict 指定子が指定されていて、参ç
    3330 §ã•ã‚Œã¦ã„ない場合 true
    3331   # 参ç
    3332 §ã¯ã€HRPSVCPlugin のみ
     3152  # restrict 指定子が指定されていて、参照されていない場合 true
     3153  # 参照は、HRPSVCPlugin のみ
    33333154  def has_ineffective_restrict_specifier
    33343155    if @restrict_list.length != 0 && @b_restrict_referenced == false then
     
    33583179      puts "entry array #{port.get_name}: max subscript=#{num}"
    33593180    }
    3360     if @cell_list then   # ここで @cell_list が nil なのは Bug
     3181    if @cell_list then   # ここで @cell_list が nil なのは Bug
    33613182      (indent+1).times { print "  " }
    33623183      puts "cloned cell list:"
     
    33823203          subscript = ""
    33833204        end
    3384         # アロケータ呼び口の結合を生成
     3205        # アロケータ呼び口の結合を生成
    33853206        (indent+2).times { print "  " }
    33863207        puts "#{cp_name}#{subscript} = #{a[4+1]}"
     
    34073228# @real_singleton:: bool : has singleton cell in this composite celltype
    34083229# @real_active:: bool : has active cell in this composite celltype
    3409 # @name_list:: NamedList item: Decl (attribute), Port エクスポート定義
     3230# @name_list:: NamedList item: Decl (attribute), Port エクスポート定義
    34103231# @internal_allocator_list:: [ [cell, internal_cp_name, port_name, func_name, param_name, ext_alloc_ent], ... ]
    3411 # @generate:: [ Symbol, String, Plugin ]  = [ PluginName, option, Plugin ] Plugin は生成後に追加される
    3412 # @generate_list:: [ [ Symbol, String, Plugin ], ... ]   generate 文で追加された generate
     3232# @generate:: [ Symbol, String, Plugin ]  = [ PluginName, option, Plugin ] Plugin は生成後に追加される
     3233# @generate_list:: [ [ Symbol, String, Plugin ], ... ]   generate 文で追加された generate
    34133234
    34143235  @@nest_stack_index = -1
     
    34533274
    34543275    Namespace.new_compositecelltype( self )
    3455     set_namespace_path # @NamespacePath の設定
     3276    set_namespace_path # @NamespacePath の設定
    34563277
    34573278    @port_list = []
     
    34693290  # CompositeCelltype#end_of_parse
    34703291  def end_of_parse
    3471     # singleton に関するチェック
     3292    # singleton に関するチェック
    34723293    if @b_singleton && @real_singleton == nil then
    34733294      cdl_warning( "W1004 $1 : specified singleton but has no singleton in this celltype" , @name )
     
    34783299    end
    34793300
    3480     # active に関するチェック
     3301    # active に関するチェック
    34813302    if @b_active && @real_active == nil then
    34823303      cdl_error( "S1054 $1 : specified active but has no active in this celltype" , @name )
     
    34853306    end
    34863307
    3487     # @allocator_instance を設定する
     3308    # @allocator_instance を設定する
    34883309    @name_list.get_items.each{ |n|
    34893310      if n.instance_of? Port then
     
    34923313    }
    34933314
    3494     # リレーアロケータの entry 側
     3315    # リレーアロケータの entry 側
    34953316    @port_list.each{ |p|
    34963317      if p.get_port_type == :ENTRY then
     
    35063327      end
    35073328    }
    3508     # mikan relay が正しく抜けているかチェックされていない
    3509 
    3510     # callback 結合
     3329    # mikan relay が正しく抜けているかチェックされていない
     3330
     3331    # callback 結合
    35113332    @cell_list_in_composite.get_items.each{ |c|
    35123333      ct = c.get_celltype
     
    35163337    }
    35173338
    3518     # 意味解析
     3339    # 意味解析
    35193340    @cell_list_in_composite.get_items.each{ |c|
    35203341      c.set_definition_join
    35213342    }
    35223343
    3523     # cell の未結合の呼び口がないかチェック
     3344    # cell の未結合の呼び口がないかチェック
    35243345    @cell_list_in_composite.get_items.each{ |c|
    35253346      c.check_join
     
    35273348    }
    35283349
    3529     # 呼び口の結合について、export とå†
    3530 éƒ¨çµåˆã®ä¸¡æ–¹ãŒãªã„かチェック
    3531     # リレーアロケータ、å†
    3532 éƒ¨ã‚¢ãƒ­ã‚±ãƒ¼ã‚¿ã®è¨­å®š
     3350    # 呼び口の結合について、export と内部結合の両方がないかチェック
     3351    # リレーアロケータ、内部アロケータの設定
    35333352    @port_list.each{ |p|
    35343353      p.check_dup_init
    35353354    }
    35363355
    3537     # すべてのエクスポート定義に対応した呼び口、受け口、属性が存在するかチェック
     3356    # すべてのエクスポート定義に対応した呼び口、受け口、属性が存在するかチェック
    35383357    @name_list.get_items.each{ |n|
    35393358      if( @export_name_list.get_item( n.get_name ) == nil )then
     
    35423361    }
    35433362
    3544     # å†
    3545 éƒ¨ã‚¢ãƒ­ã‚±ãƒ¼ã‚¿ã‚’設定する
     3363    # 内部アロケータを設定する
    35463364    @internal_allocator_list.each{ |cell, cp_internal_name, port_name, fd_name, par_name, ext_alloc_ent|
    35473365      res = ext_alloc_ent.get_allocator_rhs_elements( :INTERNAL_ALLOC )
     
    35643382    }
    35653383
    3566     # composite プラグイン
     3384    # composite プラグイン
    35673385    if @generate then
    35683386      celltype_plugin
     
    35793397    cell.set_owner self  # Cell (in_omposite)
    35803398    @cell_list_in_composite.add_item( cell )
    3581     if cell.get_celltype then    # nil ならば、すでにセルタイプなしエラー
     3399    if cell.get_celltype then    # nil ならば、すでにセルタイプなしエラー
    35823400      if cell.get_celltype.is_singleton? then
    35833401        @real_singleton = cell
     
    36013419    @cell_list << cell
    36023420
    3603     # セルタイププラグインの適用
     3421    # セルタイププラグインの適用
    36043422    celltype_plugin_new_cell cell
    36053423  end
    36063424
    3607   #=== CompositeCelltype# CompositeCelltypeJoin を作成
     3425  #=== CompositeCelltype# CompositeCelltypeJoin を作成
    36083426  # STAGE: B
    3609   #export_name:: Symbol : 外部にå
    3610 ¬é–‹ã™ã‚‹åå‰
    3611   #internal_cell_name:: Symbol : å†
    3612 éƒ¨ã‚»ãƒ«å
    3613   #internal_cell_elem_name:: Symbol : å†
    3614 éƒ¨ã‚»ãƒ«ã®è¦ç´ åï¼ˆå‘¼ã³å£åã€å—け口名、属性名のいずれか)
    3615   #type::  :CALL, :ENTRY, :ATTRIBUTE のいずれか(構文要素としてあるべきもの)
    3616   #RETURN:: Decl | Port : エクスポート定義
    3617   # new_join は
    3618   #   cCall => composite.cCall;     (セルå†
    3619 )
    3620   #   attr = composite.attr;        (セルå†
    3621 )
    3622   #   composite.eEnt => cell2.eEnt; (セル外)
    3623   # の構文要素の出現に対して呼び出される
     3427  #export_name:: Symbol : 外部に公開する名前
     3428  #internal_cell_name:: Symbol : 内部セル名
     3429  #internal_cell_elem_name:: Symbol : 内部セルの要素名(呼び口名、受け口名、属性名のいずれか)
     3430  #type::  :CALL, :ENTRY, :ATTRIBUTE のいずれか(構文要素としてあるべきもの)
     3431  #RETURN:: Decl | Port : エクスポート定義
     3432  # new_join は
     3433  #   cCall => composite.cCall;     (セル内)
     3434  #   attr = composite.attr;        (セル内)
     3435  #   composite.eEnt => cell2.eEnt; (セル外)
     3436  # の構文要素の出現に対して呼び出される
    36243437  def new_join( export_name, internal_cell_name,
    36253438                 internal_cell_elem_name, type )
     
    36343447
    36353448    celltype = cell.get_celltype
    3636     return if celltype == nil   # celltype == nil ならすでにエラー
    3637 
    3638     # å†
    3639 éƒ¨ã‚»ãƒ«ã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—から対応要素を探す
    3640     # このメソッドは、構文上、呼び口、受け口、属性が記述できる箇所から呼出される
    3641     # 構文上の呼出し位置(記述位置)と、要素が対応したものかチェック
     3449    return if celltype == nil   # celltype == nil ならすでにエラー
     3450
     3451    # 内部セルのセルタイプから対応要素を探す
     3452    # このメソッドは、構文上、呼び口、受け口、属性が記述できる箇所から呼出される
     3453    # 構文上の呼出し位置(記述位置)と、要素が対応したものかチェック
    36423454    obj = celltype.find( internal_cell_elem_name )
    36433455    if obj.instance_of?( Decl ) then
     
    36473459      elsif type != :ATTRIBUTE then
    36483460        cdl_error( "S1059 \'$1\' : exporting attribute. write in cell or use \'=\' to export attribute" , export_name )
    3649         # return 次のエラーを避けるために処理続行し、付け加えてみる
     3461        # return 次のエラーを避けるために処理続行し、付け加えてみる
    36503462      end
    36513463    elsif obj.instance_of?( Port ) then
    36523464      if obj.get_port_type != type then
    36533465        cdl_error( "S1060 \'$1\' : port type mismatch. $2 type is allowed here." , export_name, type )
    3654         # return 次のエラーを避けるために処理続行し、付け加えてみる
     3466        # return 次のエラーを避けるために処理続行し、付け加えてみる
    36553467      end
    36563468    else
     
    36603472    end
    36613473
    3662     # エクスポート定義と一致するかどうかチェック
     3474    # エクスポート定義と一致するかどうかチェック
    36633475    obj2 = @name_list.get_item( export_name )
    36643476    if( obj2 == nil )then
     
    36763488        elsif obj.get_signature != obj2.get_signature then
    36773489          if obj.get_signature != nil && obj2.get_signature != nil then
    3678             # nil ならば既にエラーなので報告しない
     3490            # nil ならば既にエラーなので報告しない
    36793491            cdl_error( "S1066 $1 : signature \'$2\' mismatch with previous definition \'$3\'" , export_name, obj.get_signature.get_name, obj2.get_signature.get_name )
    36803492          end
     
    37053517    if obj.instance_of?( Decl ) then
    37063518      # attribute
    3707 #      # å†
    3708 éƒ¨ã‹ã‚‰å¤–部へ複数の結合がないかチェック
     3519#      # 内部から外部へ複数の結合がないかチェック
    37093520#      found = false
    37103521#      @attr_list.each{ |a|
     
    37193530    else
    37203531      # call/entry port
    3721 #      # å†
    3722 éƒ¨ã‹ã‚‰å¤–部へ複数の結合がないかチェック
     3532#      # 内部から外部へ複数の結合がないかチェック
    37233533#      found = false
    37243534#      @port_list.each{ |port|
     
    37333543    end
    37343544
    3735     # join を @export_name_list に登録(重複チェックとともに,後で行われる CompositeCelltypeJoin の clone に備える)
     3545    # join を @export_name_list に登録(重複チェックとともに,後で行われる CompositeCelltypeJoin の clone に備える)
    37363546    if obj.instance_of?( Decl ) && @export_name_list.get_item( export_name ) then
    3737       # 既に存在する。追加しない。新仕様では、@export_name_list に同じ名前が含まれることがある。
     3547      # 既に存在する。追加しない。新仕様では、@export_name_list に同じ名前が含まれることがある。
    37383548    elsif obj.instance_of?( Port ) && obj.get_port_type == :CALL && @export_name_list.get_item( export_name ) then
    3739       # 既に存在する。追加しない。新仕様では、@export_name_list に同じ名前が含まれることがある。
     3549      # 既に存在する。追加しない。新仕様では、@export_name_list に同じ名前が含まれることがある。
    37403550    else
    37413551      @export_name_list.add_item( join )
    37423552    end
    37433553
    3744     # export するポートに含まれる send/receive パラメータのアロケータ(allocator)呼び口をセルと結合
     3554    # export するポートに含まれる send/receive パラメータのアロケータ(allocator)呼び口をセルと結合
    37453555    if obj2.instance_of? Port then
    37463556      obj2.each_param{ |port, fd, par|
    3747         case par.get_direction                        # 引数の方向指定子 (in, out, inout, send, receive )
     3557        case par.get_direction                        # 引数の方向指定子 (in, out, inout, send, receive )
    37483558        when :SEND, :RECEIVE
    3749           cp_name = :"#{port.get_name}_#{fd.get_name}_#{par.get_name}"     # アロケータ呼び口の名前
    3750           #            ポート名         é–¢æ•°å         ãƒ‘ラメータ名
     3559          cp_name = :"#{port.get_name}_#{fd.get_name}_#{par.get_name}"     # アロケータ呼び口の名前
     3560          #            ポート名         関数名         パラメータ名
    37513561          cp_internal_name = :"#{internal_cell_elem_name}_#{fd.get_name}_#{par.get_name}"
    37523562
    3753           # リレーアロケータ or å†
    3754 éƒ¨ã‚¢ãƒ­ã‚±ãƒ¼ã‚¿æŒ‡å®šãŒãªã•ã‚Œã¦ã„る場合、アロケータ呼び口を追加しない
    3755           # この時点では get_allocator_instance では得られないため tmp を得る
     3563          # リレーアロケータ or 内部アロケータ指定がなされている場合、アロケータ呼び口を追加しない
     3564          # この時点では get_allocator_instance では得られないため tmp を得る
    37563565          if port.get_allocator_instance_tmp then
    37573566            found = false
     
    37613570
    37623571                if s[0] == :INTERNAL_ALLOC then
    3763                   # å†
    3764 éƒ¨ã‚¢ãƒ­ã‚±ãƒ¼ã‚¿ã®å ´åˆ    # mikan これはå†
    3765 éƒ¨ã®ã‚»ãƒ«ã«ç›´çµã™ã‚‹ã€‚外部のポートに改めるべき
     3572                  # 内部アロケータの場合    # mikan これは内部のセルに直結する。外部のポートに改めるべき
    37663573                  @internal_allocator_list << [ cell, cp_internal_name, port.get_name, fd.get_name, par.get_name, s[3] ]
    37673574                end
     
    37733580          end
    37743581
    3775           # 外部アロケータの場合
     3582          # 外部アロケータの場合
    37763583          new_join( cp_name, internal_cell_name, cp_internal_name, :CALL )
    37773584        end
     
    37793586    end
    37803587
    3781     # エクスポート定義を返す
     3588    # エクスポート定義を返す
    37823589    return obj2
    37833590  end
     
    38013608    @name_list.add_item port
    38023609
    3803     # export するポートに含まれる send/receive パラメータのアロケータ呼び口の export を生成してポートに追加
    3804     # この時点ではå†
    3805 éƒ¨ã‚¢ãƒ­ã‚±ãƒ¼ã‚¿ã‹ã©ã†ã‹åˆ¤æ–­ã§ããªã„ので、とりあえず生成しておく
     3610    # export するポートに含まれる send/receive パラメータのアロケータ呼び口の export を生成してポートに追加
     3611    # この時点では内部アロケータかどうか判断できないので、とりあえず生成しておく
    38063612    port.each_param { |port, fd, par|
    3807       case par.get_direction                        # 引数の方向指定子 (in, out, inout, send, receive )
     3613      case par.get_direction                        # 引数の方向指定子 (in, out, inout, send, receive )
    38083614      when :SEND, :RECEIVE
    3809         #### リレーアロケータ or å†
    3810 éƒ¨ã‚¢ãƒ­ã‚±ãƒ¼ã‚¿æŒ‡å®šãŒãªã•ã‚Œã¦ã„る場合、アロケータ呼び口を追加しない
    3811         # å†
    3812 éƒ¨ã‚¢ãƒ­ã‚±ãƒ¼ã‚¿æŒ‡å®šãŒãªã•ã‚Œã¦ã„る場合、アロケータ呼び口を追加しない
    3813         # この時点では get_allocator_instance では得られないため tmp を得る
     3615        #### リレーアロケータ or 内部アロケータ指定がなされている場合、アロケータ呼び口を追加しない
     3616        # 内部アロケータ指定がなされている場合、アロケータ呼び口を追加しない
     3617        # この時点では get_allocator_instance では得られないため tmp を得る
    38143618        if port.get_allocator_instance_tmp then
    38153619          found = false
     
    38263630
    38273631        if par.get_allocator then
    3828           cp_name = :"#{port.get_name}_#{fd.get_name}_#{par.get_name}"     # アロケータ呼び口の名前
    3829           #           ãƒãƒ¼ãƒˆå          関数名         ãƒ‘ラメータ名
    3830           alloc_sig_path = [ par.get_allocator.get_name ]  # mikan Namespace アロケータ呼び口のシグニチャ
    3831           array_size = port.get_array_size            # 呼び口または受け口é
    3832 åˆ—のサイズ
    3833           created_port = Port.new( cp_name, alloc_sig_path, :CALL, array_size ) # 呼び口を生成
     3632          cp_name = :"#{port.get_name}_#{fd.get_name}_#{par.get_name}"     # アロケータ呼び口の名前
     3633          #           ポート名          関数名         パラメータ名
     3634          alloc_sig_path = [ par.get_allocator.get_name ]  # mikan Namespace アロケータ呼び口のシグニチャ
     3635          array_size = port.get_array_size            # 呼び口または受け口配列のサイズ
     3636          created_port = Port.new( cp_name, alloc_sig_path, :CALL, array_size ) # 呼び口を生成
    38343637          created_port.set_allocator_port( port, fd, par )
    38353638          if port.is_omit? then
    38363639            created_port.set_omit
    38373640          end
    3838           new_port( created_port )           # セルタイプに新しい呼び口を追加
     3641          new_port( created_port )           # セルタイプに新しい呼び口を追加
    38393642        # else
    38403643        #   already error
     
    38533656    attribute.each { |a|
    38543657      a.set_owner self   # Decl (CompositeCelltype)
    3855       # V1.1.0.10 composite の attr の size_is は可となった
     3658      # V1.1.0.10 composite の attr の size_is は可となった
    38563659      # if a.get_size_is then
    38573660      #  cdl_error( "S1070 $1: size_is pointer cannot be exposed for composite attribute" , a.get_name )
     
    38643667  end
    38653668
    3866   #=== CompositeCelltype# 逆require の結合を生成する
     3669  #=== CompositeCelltype# 逆require の結合を生成する
    38673670  def create_reverse_require_join cell
    38683671    @name_list.get_items.each{ |n|
     
    38893692    return @name_list.get_item( name )
    38903693
    3891     # 従来仕様
     3694    # 従来仕様
    38923695#    cj = @export_name_list.get_item( name )
    38933696#p "#{name}, #{cj.get_port_decl}"
     
    38993702  end
    39003703
    3901   #=== CompositeCelltype# export する CompositeCelltypeJoin を得る
     3704  #=== CompositeCelltype# export する CompositeCelltypeJoin を得る
    39023705  #name:: string:
    3903   # attribute の場合、同じ名前に対し複数存在する可能性があるが、最初のものしか返さない
     3706  # attribute の場合、同じ名前に対し複数存在する可能性があるが、最初のものしか返さない
    39043707  def find_export name
    39053708    return @export_name_list.get_item( name )
    39063709  end
    39073710
    3908   #=== CompositeCelltype# composite celltype の cell を展開
    3909   #name:: string: Composite cell の名前
    3910   #global_name:: string: Composite cell の global name (C 言語名)
    3911   #join_list:: NamedList : Composite cell に対する Join の NamedList
     3711  #=== CompositeCelltype# composite celltype の cell を展開
     3712  #name:: string: Composite cell の名前
     3713  #global_name:: string: Composite cell の global name (C 言語名)
     3714  #join_list:: NamedList : Composite cell に対する Join の NamedList
    39123715  #RETURN:
    39133716  # [ { name => cell }, [ cell, ... ] ]
    3914   #  戻り値 前は 名前⇒cloneされたå†
    3915 éƒ¨ã‚»ãƒ«ã€å¾Œã‚ã¯ composite の出現順のリスト
     3717  #  戻り値 前は 名前⇒cloneされた内部セル、後ろは composite の出現順のリスト
    39163718  def expand( name, global_name, namespacePath, join_list, region, plugin, locale )
    39173719
     
    39223724    }
    39233725 
    3924     # 展開で clone されたセルのリスト、右辺は Cell (composite の場合 composite な cell の clone)
     3726    # 展開で clone されたセルのリスト、右辺は Cell (composite の場合 composite な cell の clone)
    39253727    clone_cell_list = {}
    39263728    clone_cell_list2 = []
    39273729    clone_cell_list3 = {}
    39283730
    3929     #  composite å†
    3930 éƒ¨ã®ã™ã¹ã¦ã® cell について
     3731    #  composite 内部のすべての cell について
    39313732    @cell_list_in_composite.get_items.each { |c|
    39323733
     
    39343735      dbgPrint "expand : cell #{c.get_name}\n"
    39353736
    3936       # Join のé
    3937 åˆ—
     3737      # Join の配列
    39383738      ja = []
    39393739
    3940       # CompositeCelltype が export する呼び口、受け口、属性のリストについて
     3740      # CompositeCelltype が export する呼び口、受け口、属性のリストについて
    39413741      # @export_name_list.get_items.each{ |cj|  # cj: CompositeCelltypeJoin
    3942       # 新仕様では、@export_name_list にå
    3943 ¥ã£ã¦ã„ない attr がありうる
     3742      # 新仕様では、@export_name_list に入っていない attr がありうる
    39443743      (@port_list+@attr_list).each{ |cj|        # cj: CompositeCelltypeJoin
    39453744
     
    39473746        dbgPrint "        cj : #{cj.get_name}\n"
    39483747
    3949         # CompositeCelltypeJoin (export) の対象セルか?
     3748        # CompositeCelltypeJoin (export) の対象セルか?
    39503749        if cj.match?( c ) then
    39513750
    3952           # 対象セルå†
    3953 ã® CompositeCelltype の export する Join (attribute または call port)
     3751          # 対象セル内の CompositeCelltype の export する Join (attribute または call port)
    39543752          j = join_list.get_item( cj.get_name )
    39553753
     
    39623760
    39633761          if j then
    3964             # 呼び口、属性の場合
    3965             #  ComositeCell 用のもの(j) を対象セル用に clone (@through_list もコピーされる)
     3762            # 呼び口、属性の場合
     3763            #  ComositeCell 用のもの(j) を対象セル用に clone (@through_list もコピーされる)
    39663764            # p "expand: cloning Join #{j.get_name} #{@name} #{name}"
    39673765            jc = j.clone_for_composite( @name, name, locale )
     
    39713769            # p "cn #{jc.get_name} #{cj.get_cell_elem_name}"
    39723770
    3973             # 対象セルの呼び口または属性の名前に変更
     3771            # 対象セルの呼び口または属性の名前に変更
    39743772            jc.change_name( cj.get_cell_elem_name )
    39753773
    3976             # 対象セルに対する Join のé
    3977 åˆ—
     3774            # 対象セルに対する Join の配列
    39783775            ja << jc
    39793776          end
     
    39873784      dbgPrint "expand : clone #{name}_#{c.get_name}\n"
    39883785
    3989       # セルの clone を生成
     3786      # セルの clone を生成
    39903787#      clone_cell_list[ "#{name}_#{c.get_name}" ] =  c.clone_for_composite( name, global_name, ja )
    39913788      c2 =  c.clone_for_composite( name, global_name, namespacePath, ja, @name, region, plugin, locale )
     
    39983795    clone_cell_list.each { |nm,c|
    39993796      dbgPrint "  cloned: #{nm} = #{c.get_global_name}\n"
    4000       # join の owner を clone されたセルに変更する V1.1.0.25
     3797      # join の owner を clone されたセルに変更する V1.1.0.25
    40013798      c.get_join_list.get_items.each{ |j|
    40023799        j.set_cloned( clone_cell_list[ "#{c.get_local_name}" ] )
     
    40113808  end
    40123809
    4013   #=== CompositeCelltype 指定子リストの設定
     3810  #=== CompositeCelltype 指定子リストの設定
    40143811  def set_specifier_list( spec_list )
    40153812    return if spec_list == nil
     
    40513848
    40523849  def get_var_list
    4053     []   # 空のé
    4054 åˆ—を返す
     3850    []   # 空の配列を返す
    40553851  end
    40563852
     
    40603856
    40613857  #== CompositeCelltype#get_real_celltype
    4062   # port_name に接続されているå†
    4063 éƒ¨ã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—ã‚’å¾—ã‚‹
     3858  # port_name に接続されている内部のセルタイプを得る
    40643859  def get_real_celltype( port_name )
    40653860    cj = find_export port_name
     
    40723867  end
    40733868
    4074   #== CompositeCelltype# generate 指定子のæƒ
    4075 å ±
    4076   # CompositeCelltype には generate が指定できないので nil を返す
    4077   # Celltype::@generate を参ç
    4078 §ã®ã“と
     3869  #== CompositeCelltype# generate 指定子の情報
     3870  # CompositeCelltype には generate が指定できないので nil を返す
     3871  # Celltype::@generate を参照のこと
    40793872  def get_celltype_plugin
    40803873    nil
     
    40893882  end
    40903883
    4091   #=== CompositeCelltype# アクティブではない
    4092   # active ではないに加え、å
    4093 ¨ã¦ã®å†
    4094 éƒ¨ã‚»ãƒ«ã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—が inactive の場合に inactive
    4095   # (å†
    4096 éƒ¨ã®ã‚»ãƒ«ãŒ active または factory を持っている)
     3884  #=== CompositeCelltype# アクティブではない
     3885  # active ではないに加え、全ての内部セルのセルタイプが inactive の場合に inactive
     3886  # (内部のセルが active または factory を持っている)
    40973887  def is_inactive?
    40983888    if @b_active == false then
    40993889      @cell_list_in_composite.get_items.each{ |c|
    41003890        if c.get_celltype && c.get_celltype.is_inactive? == false then
    4101           # c.get_celltype == nil の場合はセルタイプ未定義ですでにエラー
     3891          # c.get_celltype == nil の場合はセルタイプ未定義ですでにエラー
    41023892          return false
    41033893        end
     
    41393929
    41403930
    4141 #== 構文要素:口を表すクラス(セルタイプの呼び口、受け口)
     3931#== 構文要素:口を表すクラス(セルタイプの呼び口、受け口)
    41423932class Port < BDNode
    41433933# @name::  str
     
    41453935# @port_type::  :CALL, :ENTRY
    41463936# @array_size:: nil: not array, "[]": sizeless, Integer: sized array
    4147 # @reverse_require_cell_path:: NamespacePath :     é€†require呼びå
    4148 ƒã‚»ãƒ«  mikan namespace (呼び口のみ指定可能)
    4149 # @reverse_require_callport_name:: Symbol:  逆require呼びå
    4150 ƒã‚»ãƒ«ã®å‘¼ã³å£å
     3937# @reverse_require_cell_path:: NamespacePath :     逆require呼び元セル  mikan namespace (呼び口のみ指定可能)
     3938# @reverse_require_callport_name:: Symbol:  逆require呼び元セルの呼び口名
    41513939#
    4152 # set_allocator_port によって設定される.設定された場合、このポートはアロケータポートである。
    4153 # @allocator_port:: Port : この呼び口ができるå
    4154 ƒã¨ãªã£ãŸå‘¼ã³å£ã¾ãŸã¯å—け口
    4155 # @allocator_func_decl:: Decl : この呼び口ができるå
    4156 ƒã¨ãªã£ãŸå‘¼ã³å£ã¾ãŸã¯å—け口の関数
    4157 # @allocator_param_decl:: ParamDecl : この呼び口ができるå
    4158 ƒã¨ãªã£ãŸå‘¼ã³å£ã¾ãŸã¯å—け口のパラメータ
     3940# set_allocator_port によって設定される.設定された場合、このポートはアロケータポートである。
     3941# @allocator_port:: Port : この呼び口ができる元となった呼び口または受け口
     3942# @allocator_func_decl:: Decl : この呼び口ができる元となった呼び口または受け口の関数
     3943# @allocator_param_decl:: ParamDecl : この呼び口ができる元となった呼び口または受け口のパラメータ
    41593944#
    4160 # set_specifier によって設定される(
     3945# set_specifier によって設定される(
    41613946# @allocator_instance:: Hash : {"func_param" => [ :RELAY_ALLOC, func_name, param_name, rhs_cp_name, rhs_func_name, rhs_param_name ]}
    41623947#                                               [:INTERNAL_ALLOC, func_name, param_name, rhs_ep_name ]
     
    41643949#                                                                                    function    parameter   rhs
    41653950#
    4166 # @b_require:: bool : require により生成された call port の場合 true
    4167 # @b_has_name:: bool : require : 名前ありのリクワイア呼び口
    4168 # @b_inline:: bool : entry port のみ
    4169 # @b_omit:: bool : omit 指定子が指定された (call port のみ)
    4170 # @b_optional:: bool : call port のみ
    4171 # @b_ref_desc:: bool :  ref_desc キーワードが指定された
    4172 # @b_dynamic:: bool :  dynamic キーワードが指定された (呼び口のみ)
     3951# @b_require:: bool : require により生成された call port の場合 true
     3952# @b_has_name:: bool : require : 名前ありのリクワイア呼び口
     3953# @b_inline:: bool : entry port のみ
     3954# @b_omit:: bool : omit 指定子が指定された (call port のみ)
     3955# @b_optional:: bool : call port のみ
     3956# @b_ref_desc:: bool :  ref_desc キーワードが指定された
     3957# @b_dynamic:: bool :  dynamic キーワードが指定された (呼び口のみ)
    41733958#
    41743959# optimize::
    4175 # @celltype:: 属するセルタイプ
     3960# @celltype:: 属するセルタイプ
    41763961#
    4177 # :CALL の場合の最適化
    4178 # @b_VMT_useless:: bool                     # VMT 関数テーブルを使用しない
    4179 # @b_skelton_useless:: bool                 # スケルトン関数不要   (true の時、受け口関数を呼出す)
    4180 # @b_cell_unique:: bool                     # 呼びå
    4181 ˆã¯å”¯ä¸€ã®ã‚»ãƒ«
    4182 # @only_callee_port:: Port                  # 唯一の呼びå
    4183 ˆãƒãƒ¼ãƒˆ
    4184 # @only_callee_cell:: Cell                  # 唯一の呼びå
    4185 ˆã‚»ãƒ« (@b_PEPDES_in_CB_useless = true の時有効)
     3962# :CALL の場合の最適化
     3963# @b_VMT_useless:: bool                     # VMT 関数テーブルを使用しない
     3964# @b_skelton_useless:: bool                 # スケルトン関数不要   (true の時、受け口関数を呼出す)
     3965# @b_cell_unique:: bool                     # 呼び先は唯一のセル
     3966# @only_callee_port:: Port                  # 唯一の呼び先ポート
     3967# @only_callee_cell:: Cell                  # 唯一の呼び先セル (@b_PEPDES_in_CB_useless = true の時有効)
    41863968#
    4187 # :ENTRY の場合の最適化(呼び口最適化と同じ変数名を使用)
    4188 # @b_VMT_useless:: bool                     # VMT 関数テーブルが不要
    4189 # @b_skelton_useless:: bool                 # スケルトン関数不要
     3969# :ENTRY の場合の最適化(呼び口最適化と同じ変数名を使用)
     3970# @b_VMT_useless:: bool                     # VMT 関数テーブルが不要
     3971# @b_skelton_useless:: bool                 # スケルトン関数不要
    41903972
    41913973  def initialize( name, sig_path, port_type, array_size = nil, reverse_require_cell_path = nil, reverse_require_entry_port_name = nil )
     
    42033985        @array_size = array_size.eval_const(nil)
    42043986      else
    4205         @array_size = array_size   # これはアロケータ呼び口の場合(å
    4206 ƒã®å‘¼ã³å£ã§æ—¢ã«è©•ä¾¡æ¸ˆã¿ï¼‰
     3987        @array_size = array_size   # これはアロケータ呼び口の場合(元の呼び口で既に評価済み)
    42073988      end
    42083989      if @array_size == nil then
     
    42194000    object = Namespace.find( sig_path )    #1
    42204001    if object == nil then
    4221       # mikan signature の名前が不完å
    4222 ¨
     4002      # mikan signature の名前が不完全
    42234003      cdl_error( "S1075 \'$1\' signature not found" , sig_path )
    42244004    elsif ! object.instance_of?( Signature ) then
    4225       # mikan signature の名前が不完å
    4226 ¨
     4005      # mikan signature の名前が不完全
    42274006      cdl_error( "S1076 \'$1\' not signature" , sig_path )
    42284007    else
     
    42314010    end
    42324011
    4233     # 逆require
     4012    # require
    42344013    @reverse_require_cell_path       = nil
    42354014    @reverse_require_entry_port_name = nil
     
    42414020        @reverse_require_entry_port_name = reverse_require_entry_port_name
    42424021
    4243         # 受け口é
    4244 åˆ—か?
     4022        # 受け口配列か?
    42454023        if array_size then
    42464024          cdl_error( "S1153 $1: cannot be entry port array for fixed join port", @name )
    42474025        end
    42484026
    4249         # 呼び口のセルタイプを探す
     4027        # 呼び口のセルタイプを探す
    42504028        ct_or_cell = Namespace.find( @reverse_require_cell_path )  #1
    42514029        if ct_or_cell.instance_of? Cell then
     
    42624040
    42634041        if ct == nil then
    4264           return    # 既にエラー
    4265         end
    4266 
    4267         # 添え字なしの呼び口é
    4268 åˆ—か?
     4042          return    # 既にエラー
     4043        end
     4044
     4045        # 添え字なしの呼び口配列か?
    42694046        port = ct.find( @reverse_require_entry_port_name )
    42704047        if port == nil || port.get_port_type != :CALL
     
    42894066  end
    42904067
    4291   #=== Port#最適化に関する変数をリセットする
    4292   # Region ごとに最適化のやりなおしをするため、リセットする
     4068  #=== Port#最適化に関する変数をリセットする
     4069  # Region ごとに最適化のやりなおしをするため、リセットする
    42934070  def reset_optimize
    42944071    if @port_type == :CALL then
    42954072      # call port optimize
    4296       @b_VMT_useless = false                     # VMT 不要 (true の時 VMT を介することなく呼出す)
    4297       @b_skelton_useless = false                 # スケルトン関数不要   (true の時、受け口関数を呼出す)
    4298       @b_cell_unique = false                     # 唯一の呼びå
    4299 ˆã‚»ãƒ«
    4300       @only_callee_port = nil                    # 唯一の呼びå
    4301 ˆãƒãƒ¼ãƒˆ
    4302       @only_callee_cell = nil                    # 唯一の呼びå
    4303 ˆã‚»ãƒ«
     4073      @b_VMT_useless = false                     # VMT 不要 (true の時 VMT を介することなく呼出す)
     4074      @b_skelton_useless = false                 # スケルトン関数不要   (true の時、受け口関数を呼出す)
     4075      @b_cell_unique = false                     # 唯一の呼び先セル
     4076      @only_callee_port = nil                    # 唯一の呼び先ポート
     4077      @only_callee_cell = nil                    # 唯一の呼び先セル
    43044078    else
    43054079      # entry port optimize
    43064080      if $unopt || $unopt_entry then
    4307         # 最適化なし
    4308         @b_VMT_useless = false                     # VMT 不要 (true の時 VMT を介することなく呼出す)
    4309         @b_skelton_useless = false                 # スケルトン関数不要   (true の時、受け口関数を呼出す)
     4081        # 最適化なし
     4082        @b_VMT_useless = false                     # VMT 不要 (true の時 VMT を介することなく呼出す)
     4083        @b_skelton_useless = false                 # スケルトン関数不要   (true の時、受け口関数を呼出す)
    43104084      else
    4311         # 最適化あり
    4312         @b_VMT_useless = true                      # VMT 不要 (true の時 VMT を介することなく呼出す)
    4313         @b_skelton_useless = true                  # スケルトン関数不要   (true の時、受け口関数を呼出す)
     4085        # 最適化あり
     4086        @b_VMT_useless = true                      # VMT 不要 (true の時 VMT を介することなく呼出す)
     4087        @b_skelton_useless = true                  # スケルトン関数不要   (true の時、受け口関数を呼出す)
    43144088      end
    43154089    end
     
    43404114  end
    43414115
    4342   #=== Port# アロケータポートの設定
    4343   #port:: Port : send/receive のあった呼び口または受け口
    4344   #fd:: Decl : 関数の declarator
    4345   #par:: ParamDecl : send/receive のあった引数
    4346   # この呼び口が生成されるもとになった呼び口または受け口のæƒ
    4347 å ±ã‚’設定
     4116  #=== Port# アロケータポートの設定
     4117  #port:: Port : send/receive のあった呼び口または受け口
     4118  #fd:: Decl : 関数の declarator
     4119  #par:: ParamDecl : send/receive のあった引数
     4120  # この呼び口が生成されるもとになった呼び口または受け口の情報を設定
    43484121  def set_allocator_port( port, fd, par )
    43494122    @allocator_port = port
     
    43774150  end
    43784151
    4379   #=== Port# require 呼び口が名前を持つ?
    4380   # require 限定
     4152  #=== Port# require 呼び口が名前を持つ?
     4153  # require 限定
    43814154  def has_name?
    43824155    @b_has_name
     
    43914164  end
    43924165
    4393   #=== Port# omit 指定されている?
     4166  #=== Port# omit 指定されている?
    43944167  def is_omit?
    43954168    @b_omit || ( @signature && @signature.is_empty? )
     
    44004173  end
    44014174
    4402   def set_VMT_useless                     # VMT 関数テーブルを使用しない
     4175  def set_VMT_useless                     # VMT 関数テーブルを使用しない
    44034176   @b_VMT_useless = true
    44044177  end
    44054178
    4406   def set_skelton_useless                 # スケルトン関数不要   (true の時、受け口関数を呼出す)
     4179  def set_skelton_useless                 # スケルトン関数不要   (true の時、受け口関数を呼出す)
    44074180    @b_skelton_useless = true
    44084181  end
    44094182
    4410   def set_cell_unique                     # 呼びå
    4411 ˆã‚»ãƒ«ã¯ä¸€ã¤ã ã‘
     4183  def set_cell_unique                     # 呼び先セルは一つだけ
    44124184    @b_cell_unique = true
    44134185  end
    44144186
    4415   #=== Port# 呼び口/受け口の指定子の設定
    4416   # inline, allocator の指定
     4187  #=== Port# 呼び口/受け口の指定子の設定
     4188  # inline, allocator の指定
    44174189  def set_specifier spec_list
    44184190    spec_list.each { |s|
     
    44674239        dyn_ref = "ref_desc"
    44684240      end
    4469       if @b_omit then     # is_omit? は is_empty? も含んでいるので使えない
     4241      if @b_omit then     # is_omit? は is_empty? も含んでいるので使えない
    44704242        cdl_error( "S9999 omit cannot be specified with $1", dyn_ref  )
    44714243      elsif @signature && @signature.is_empty? then
     
    44804252  end
    44814253
    4482   #=== Port# リレーアロケータ、å†
    4483 éƒ¨ã‚¢ãƒ­ã‚±ãƒ¼ã‚¿ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’設定
    4484   # 呼び口の前方参ç
    4485 §å¯èƒ½ãªã‚ˆã†ã«ã€ã‚»ãƒ«ã‚¿ã‚¤ãƒ—の解釈の最後で行う
     4254  #=== Port# リレーアロケータ、内部アロケータのインスタンスを設定
     4255  # 呼び口の前方参照可能なように、セルタイプの解釈の最後で行う
    44864256  def set_allocator_instance
    44874257    if @allocator_instance_tmp == nil then
     
    44964266      case alloc_type
    44974267      when :INTERNAL_ALLOC
    4498         if ! @owner.instance_of? CompositeCelltype then # ミスを防ぐために composite でなければとした
    4499           cdl_error( "S1081 self allocator not supported yet"  )   # mikan これはサポートされているはず。要調査 12/1/15
     4268        if ! @owner.instance_of? CompositeCelltype then # ミスを防ぐために composite でなければとした
     4269          cdl_error( "S1081 self allocator not supported yet"  )   # mikan これはサポートされているはず。要調査 12/1/15
    45004270          next
    45014271        end
     
    45044274        # OK
    45054275      when :NORMAL_ALLOC
    4506         # ここへ来るのは composite の受け口で右辺が "eEnt.func.param" 形式で指定されていた場合
     4276        # ここへ来るのは composite の受け口で右辺が "eEnt.func.param" 形式で指定されていた場合
    45074277        cdl_error( "S1174 $1 not suitable for lhs, suitable lhs: 'func.param'", "#{ai[1]}.#{ai[3]}.#{ai[4]}" )
    45084278        next
     
    45114281      end
    45124282
    4513       # '=' 左辺(func_name,param_name)は実在するか?
    4514       if @signature then       # signature = nil なら既にエラー
     4283      # '=' 左辺(func_name,param_name)は実在するか?
     4284      if @signature then       # signature = nil なら既にエラー
    45154285        fh = @signature.get_function_head( ai[1] )
    45164286        if fh == nil then
     
    45204290        decl = fh.get_declarator
    45214291        if ! decl.is_function? then
    4522           next   # 既にエラー
     4292          next   # 既にエラー
    45234293        end
    45244294        paramdecl = decl.get_type.get_paramlist.find( ai[2] )
     
    45374307      end
    45384308
    4539       # 重複指定がないか?
     4309      # 重複指定がないか?
    45404310      if @allocator_instance[ "#{@name}_#{ai[1]}_#{ai[2]}" ] then
    45414311        cdl_error( "S1085 duplicate allocator specifier for \'$1_$2\'" , ai[1], ai[2] )
    45424312      end
    45434313
    4544       # 右辺のチェック
     4314      # 右辺のチェック
    45454315      case alloc_type
    45464316      when :INTERNAL_ALLOC
     
    45524322        end
    45534323
    4554         ep_name = ele[1]   # アロケータ受け口名
     4324        ep_name = ele[1]   # アロケータ受け口名
    45554325        ep = @owner.find ep_name.get_path[0]  # mikan "a::b"
    45564326        if ep == nil || ! ep.instance_of?( Port ) || ep.get_port_type != :ENTRY || ! ep.get_signature.is_allocator? then
    45574327          cdl_error( "S1175 $1 not found or not allocator entry port for $2" , ep_name, ai[1] )
    45584328        end
    4559         # 右辺チェック終わり
     4329        # 右辺チェック終わり
    45604330        # ai2 = [ :INTERNAL_ALLOC, func_name, param_name, rhs_ep_name ]
    45614331        ai2 = [ ai[0], ai[1], ai[2], ep_name ]
     
    45694339          #    ele[0]    ele[1][0]  ele[1][1][0]  ele[1][1][1]        ele[1][2]    ele[2]
    45704340          #      name_space_path.Token(1).Token(2) === call_port.func.param
    4571           #  mikan Expression#analyze_cell_join_expression の変種を作成して置き換えるべき
     4341          #  mikan Expression#analyze_cell_join_expression の変種を作成して置き換えるべき
    45724342
    45734343          cdl_error( "S1176 rhs not in 'call_port.func.param' form for for $1_$2" , ai[1], ai[2] )   # S1086
     
    45754345        end
    45764346        func_name = ele[1][2]; cp_name = ele[1][1][1].get_name; param_name = ele[2].to_sym
    4577         cp = @owner.find cp_name    # リレーするå
    4578 ˆã®å‘¼ã³å£
     4347        cp = @owner.find cp_name    # リレーする先の呼び口
    45794348        if cp then
    4580 # mikan cp が呼び口であることのチェック(属性の場合もある)
    4581 # mikan 受け口から受け口へのリレーへの対応 (呼び口から呼び口へのリレーはありえない)  <=== 文法にかかわる事é 
    4582 ï¼ˆå‘¼ã³å£å´ã§ã‚¢ãƒ­ã‚±ãƒ¼ã‚¿ãŒæ±ºå®šã•ã‚Œã‚‹ï¼‰
     4349# mikan cp が呼び口であることのチェック(属性の場合もある)
     4350# mikan 受け口から受け口へのリレーへの対応 (呼び口から呼び口へのリレーはありえない)  <=== 文法にかかわる事項(呼び口側でアロケータが決定される)
    45834351          sig = cp.get_signature
    45844352          if sig && @signature then
     
    45904358            decl = fh.get_declarator
    45914359            if ! decl.is_function? then
    4592               next   # 既にエラー
     4360              next   # 既にエラー
    45934361            end
    45944362            paramdecl = decl.get_type.get_paramlist.find( param_name )
     
    46094377
    46104378            # else
    4611             # sig == nil ならば既にエラー
     4379            # sig == nil ならば既にエラー
    46124380          end
    46134381        else
     
    46204388          next
    46214389        end
    4622         # 右辺チェック終わり
     4390        # 右辺チェック終わり
    46234391        # ai2 = [ :RELAY_ALLOC, func_name, param_name, rhs_cp_name, rhs_func_name, rhs_param_name ]
    46244392        ai2 = [ ai[0], ai[1], ai[2], cp_name, func_name, param_name ]
     
    46334401  end
    46344402
    4635   def is_VMT_useless?                     # VMT 関数テーブルを使用しない
     4403  def is_VMT_useless?                     # VMT 関数テーブルを使用しない
    46364404    if @port_type == :ENTRY && $unopt_entry == true then
    4637       # プラグインから $unopt_entry を設定するケースのため
    4638       # ここで読み出すときに、false を返す (reset_optimize での設定変更は速すぎる)
     4405      # プラグインから $unopt_entry を設定するケースのため
     4406      # ここで読み出すときに、false を返す (reset_optimize での設定変更は速すぎる)
    46394407      return false
    46404408    else
     
    46434411  end
    46444412
    4645   def is_skelton_useless?                 # スケルトン関数不要   (true の時、受け口関数を呼出す)
     4413  def is_skelton_useless?                 # スケルトン関数不要   (true の時、受け口関数を呼出す)
    46464414    if @port_type == :ENTRY && $unopt_entry == true then
    4647       # プラグインから $unopt_entry を設定するケースのため
    4648       # ここで読み出すときに、false を返す (reset_optimize での設定変更は速すぎる)
     4415      # プラグインから $unopt_entry を設定するケースのため
     4416      # ここで読み出すときに、false を返す (reset_optimize での設定変更は速すぎる)
    46494417      return false
    46504418    else
     
    46534421  end
    46544422
    4655   def is_cell_unique?                     # 呼びå
    4656 ˆã®ã‚»ãƒ«ã¯ä¸€ã¤ï¼Ÿ
     4423  def is_cell_unique?                     # 呼び先のセルは一つ?
    46574424    @b_cell_unique
    46584425  end
    46594426
    4660   #=== Port# 受け口最適化の設定
    4661   # この受け口を参ç
    4662 §ã™ã‚‹å‘¼ã³å£ãŒ VMT, skelton をå¿
    4663 è¦ã¨ã—ているかどうかを設定
    4664   # 一つでも呼び口がå¿
    4665 è¦ã¨ã—ている(すなわち b_*_useless が false)場合は、
    4666   # この受け口の最適化を false とする
     4427  #=== Port# 受け口最適化の設定
     4428  # この受け口を参照する呼び口が VMT, skelton を必要としているかどうかを設定
     4429  # 一つでも呼び口が必要としている(すなわち b_*_useless が false)場合は、
     4430  # この受け口の最適化を false とする
    46674431  def set_entry_VMT_skelton_useless( b_VMT_useless, b_skelton_useless )
    46684432    if ! b_VMT_useless then
     
    46744438  end
    46754439
    4676   #=== Port# 唯一の結合å
    4677 ˆã‚’設定
    4678   # 最適化で使用
    4679   #  b_VMT_useless == true || b_skelton_useless == true の時に設定される
    4680   #  optional の場合 callee_cell, callee_port が nil となる
     4440  #=== Port# 唯一の結合先を設定
     4441  # 最適化で使用
     4442  #  b_VMT_useless == true || b_skelton_useless == true の時に設定される
     4443  #  optional の場合 callee_cell, callee_port が nil となる
    46814444  def set_only_callee( callee_port, callee_cell )
    46824445    @only_callee_port = callee_port
     
    46844447  end
    46854448
    4686   #=== Port# 唯一の結合å
    4687 ˆãƒãƒ¼ãƒˆã‚’返す(compositeの場合実セル)
    4688   # optional 呼び口で未結合の場合 nil を返す
     4449  #=== Port# 唯一の結合先ポートを返す(compositeの場合実セル)
     4450  # optional 呼び口で未結合の場合 nil を返す
    46894451  def get_real_callee_port
    46904452    if @only_callee_cell then
     
    46934455  end
    46944456
    4695   #=== Port# 唯一の結合å
    4696 ˆã‚»ãƒ«ã‚’返す(compositeの場合実セル)
    4697   # optional 呼び口で未結合の場合 nil を返す
     4457  #=== Port# 唯一の結合先セルを返す(compositeの場合実セル)
     4458  # optional 呼び口で未結合の場合 nil を返す
    46984459  def get_real_callee_cell
    46994460    if @only_callee_cell then
     
    47104471  end
    47114472
    4712   #=== Port# 逆require の結合を生成する
     4473  #=== Port# 逆require の結合を生成する
    47134474  # STAGE: S
    47144475  def create_reverse_require_join cell
     
    47174478    end
    47184479
    4719     # 呼びå
    4720 ƒã‚»ãƒ«ã‚’探す
     4480    # 呼び元セルを探す
    47214481    ct_or_cell = Namespace.find( @reverse_require_cell_path )   # mikan namespace    #1
    47224482    if ct_or_cell.instance_of? Cell then
     
    47244484      ct = cell2.get_celltype
    47254485      if ct == nil then
    4726         return    # 既にエラー
     4486        return    # 既にエラー
    47274487      end
    47284488    elsif ct_or_cell.instance_of? Celltype then
     
    47344494      ct = ct_or_cell
    47354495    else
    4736       # 既にエラー:無視
     4496      # 既にエラー:無視
    47374497      return
    47384498    end
    47394499
    4740     # 結合を生成する
     4500    # 結合を生成する
    47414501    dbgPrint "create_reverse_require_join #{cell2.get_name}.#{@reverse_require_entry_port_name}[] = #{cell.get_name}.#{@name}"
    47424502    nsp = NamespacePath.new( cell.get_name, false, cell.get_namespace )
     
    47504510  end
    47514511
    4752   #=== Port# signature のすべての関数のすべてのパラメータをたどる
    4753   #block:: ブロックを引数として取る(ruby の文法で書かない)
    4754   #  ブロックは3つの引数を受け取る(Port, Decl,      ParamDecl)    Decl: 関数ヘッダ
    4755   # Signature クラスにも each_param がある(同じ働き)
    4756   def each_param # ブロック引数{  |port, func_decl, param_decl| }
    4757     return if @signature == nil                         # signature 未定義(既にエラー)
    4758     fha = @signature.get_function_head_array            # 呼び口または受け口のシグニチャの関数é
    4759 åˆ—
    4760     return if fha == nil                                # nil なら文法エラーで有効値が設定されなかった
    4761 
    4762     pr = Proc.new   # このメソッドのブロック引数を pr に代å
    4763 ¥
     4512  #=== Port# signature のすべての関数のすべてのパラメータをたどる
     4513  #block:: ブロックを引数として取る(ruby の文法で書かない)
     4514  #  ブロックは3つの引数を受け取る(Port, Decl,      ParamDecl)    Decl: 関数ヘッダ
     4515  # Signature クラスにも each_param がある(同じ働き)
     4516  def each_param # ブロック引数{  |port, func_decl, param_decl| }
     4517    return if @signature == nil                         # signature 未定義(既にエラー)
     4518    fha = @signature.get_function_head_array            # 呼び口または受け口のシグニチャの関数配列
     4519    return if fha == nil                                # nil なら文法エラーで有効値が設定されなかった
     4520
     4521    pr = Proc.new   # このメソッドのブロック引数を pr に代入
    47644522    port = self
    4765     fha.each{ |fh|  # fh: FuncHead                      # 関数é
    4766 åˆ—中の各関数頭部
    4767       fd = fh.get_declarator                            # fd: Decl  (関数頭部からDeclarotorを得る)
    4768       if fd.is_function? then                           # fd が関数でなければ、すでにエラー
    4769         fd.get_type.get_paramlist.get_items.each{ |par| # すべてのパラメータについて
     4523    fha.each{ |fh|  # fh: FuncHead                      # 関数配列中の各関数頭部
     4524      fd = fh.get_declarator                            # fd: Decl  (関数頭部からDeclarotorを得る)
     4525      if fd.is_function? then                           # fd が関数でなければ、すでにエラー
     4526        fd.get_type.get_paramlist.get_items.each{ |par| # すべてのパラメータについて
    47704527          pr.call( port, fd, par )
    47714528        }
     
    47744531  end
    47754532
    4776   #=== Port# 逆require指定されている?
     4533  #=== Port# 逆require指定されている?
    47774534  def is_reverse_required?
    47784535    @reverse_require_cell_path != nil
     
    48264583#== Namespace
    48274584#
    4828 # root namespace だけ、Region クラスのインスタンスとして生成される
    4829 # root namespace は、root region をå
    4830 ¼ã­ã‚‹ãŸã‚
     4585# root namespace だけ、Region クラスのインスタンスとして生成される
     4586# root namespace は、root region を兼ねるため
    48314587#
    4832 # @cell_list は Region の場合にのみ持つ (mikan @cell_list 関連は Region に移すべき)
     4588# @cell_list は Region の場合にのみ持つ (mikan @cell_list 関連は Region に移すべき)
    48334589#
    48344590class Namespace < NSBDNode
    4835 # @name::  Symbol     # root の場合 "::" (String)
     4591# @name::  Symbol     # root の場合 "::" (String)
    48364592# @global_name:: str
    48374593# @name_list:: NamedList   Signature,Celltype,CompositeCelltype,Cell,Typedef,Namespace
    48384594# @struct_tag_list:: NamedList : StructType
    4839 # @namespace_list:: Namespace[] : Region は Namespace の子クラスであり、含まれる
     4595# @namespace_list:: Namespace[] : Region は Namespace の子クラスであり、含まれる
    48404596# @signature_list:: Sginature[]
    48414597# @celltype_list:: Celltype[]
     
    48434599# @cell_list:: Cell[]
    48444600# @typedef_list:: Typedef[]
    4845 # @decl_list:: ( Typedef | StructType | EnumType )[]   ä¾å­˜é–¢ä¿‚がある場合に備えて、順番どおりにé
    4846 åˆ—に格納 mikan enum
     4601# @decl_list:: ( Typedef | StructType | EnumType )[]   依存関係がある場合に備えて、順番どおりに配列に格納 mikan enum
    48474602# @const_decl_list:: Decl[]
    4848 # @cache_n_cells:: Integer :  get_n_cells の結果をキャッシュする
    4849 # @cache_generating_region:: Region :  get_n_cells の結果をキャッシュするしているリージョン
    4850 
    4851   # mikan namespace の push, pop
    4852 
    4853   # namespace 階層用のスタック
     4603# @cache_n_cells:: Integer :  get_n_cells の結果をキャッシュする
     4604# @cache_generating_region:: Region :  get_n_cells の結果をキャッシュするしているリージョン
     4605
     4606  # mikan namespace push, pop
     4607
     4608  # namespace 階層用のスタック
    48544609  @@namespace_stack = []      # @@namespace_stack[0] = "::" (generator.rb)
    48554610  @@namespace_sp = -1
    48564611
    4857   # Generator ネスト用のスタック (namespace 階層用のスタックを対比する)
     4612  # Generator ネスト用のスタック (namespace 階層用のスタックを対比する)
    48584613  @@nest_stack_index = -1
    48594614  @@nest_stack = []
     
    48614616  @@root_namespace = nil
    48624617
    4863   # Generator ネスト用スタックの push, pop (クラスメソッド)
     4618  # Generator ネスト用スタックの push, pop (クラスメソッド)
    48644619  def self.push
    48654620    dbgPrint "push Namespace\n"
     
    48814636  end
    48824637
    4883   # namespace 階層用スタックの push, pop (インスタンスメソッド)
     4638  # namespace 階層用スタックの push, pop (インスタンスメソッド)
    48844639  def push ns
    48854640    @@namespace_sp += 1
     
    49034658    if( name == "::" )then
    49044659      if( @@root_namespace != nil )then
    4905         # root は一回のみ生成できる
     4660        # root は一回のみ生成できる
    49064661        raise "try to re-create root namespace"
    49074662      end
     
    49124667      if ns.kind_of? Namespace then
    49134668        dbgPrint "namespace: re-appear #{@name}\n"
    4914         # 登録済み namespace の再登録
     4669        # 登録済み namespace の再登録
    49154670        ns.push ns
    49164671        return
     
    49234678    end
    49244679
    4925     if @@namespace_sp >= 0 then   # root は除外
     4680    if @@namespace_sp >= 0 then   # root は除外
    49264681      @@namespace_stack[@@namespace_sp].new_namespace( self )
    49274682    end
    49284683    push self
    49294684
    4930     @global_name = Namespace.get_global_name    # stack 登録後取る
     4685    @global_name = Namespace.get_global_name    # stack 登録後取る
    49314686    @name_list = NamedList.new( nil, "symbol in namespace '#{@name}'" )
    49324687    @struct_tag_list = NamedList.new( nil, "struct tag" )
     
    49434698    @cache_generating_region = nil
    49444699    if @NamespacePath == nil then
    4945       # root namespace の場合は設定済 (親 namespace が見つからず例外になる)
    4946       set_namespace_path # @NamespacePath の設定
     4700      # root namespace の場合は設定済 (親 namespace が見つからず例外になる)
     4701      set_namespace_path # @NamespacePath の設定
    49474702    end
    49484703  end
     
    49564711  end
    49574712
    4958   #=== Namespace:: global_name を得る
    4959   # parse 中のみこのメソッドは使える
     4713  #=== Namespace:: global_name を得る
     4714  # parse 中のみこのメソッドは使える
    49604715  # STAGE: P
    4961   def self.get_global_name    # parse 中有効
     4716  def self.get_global_name    # parse 中有効
    49624717    if @@namespace_sp <= 0 then
    49634718      return ""
     
    49784733  end
    49794734
    4980   #=== Namespace#セルの個数を得る
    4981   # 子 region が linkunit, node 指定されていれば、含めない(別のリンク単位)
    4982   # プロトタイプ宣言のもののみの個数を含めない
    4983   # mikan namespace 下に cell を置けない仕様になると、このメソッドは Region のものでよい
    4984   # mikan 上記の場合 instance_of? Namespace の条件判定は不要となる
     4735  #=== Namespace#セルの個数を得る
     4736  # 子 region が linkunit, node 指定されていれば、含めない(別のリンク単位)
     4737  # プロトタイプ宣言のもののみの個数を含めない
     4738  # mikan namespace 下に cell を置けない仕様になると、このメソッドは Region のものでよい
     4739  # mikan 上記の場合 instance_of? Namespace の条件判定は不要となる
    49854740  def get_n_cells
    49864741    if @cache_generating_region == $generating_region then
    4987       # このメソッドは繰り返し呼び出されるため、結果をキャッシュする
     4742      # このメソッドは繰り返し呼び出されるため、結果をキャッシュする
    49884743      return @cache_n_cells
    49894744    end
     
    49914746    count = 0
    49924747    @cell_list.each{ |c|
    4993       # 定義かプロトタイプ宣言だけかは、new_cell の段階で判断できないため、カウントしなおす
     4748      # 定義かプロトタイプ宣言だけかは、new_cell の段階で判断できないため、カウントしなおす
    49944749      if c.get_f_def == true then
    49954750        # print "get_n_cells: cell: #{c.get_name}\n"
     
    50024757        count += ns.get_n_cells
    50034758      else
    5004         # ns は Region である
     4759        # ns は Region である
    50054760        rt = ns.get_region_type
    50064761        # print "get_n_cells: region: #{ns.get_name}: #{rt}\n"
    50074762        if rt == :NODE || rt == :LINKUNIT then
    5008           # 別の linkunit なので加算しない
     4763          # 別の linkunit なので加算しない
    50094764        else
    50104765          count += ns.get_n_cells
     
    50184773  end
    50194774
    5020   #=== Namespace.find : in_path で示されるオブジェクトを探す
     4775  #=== Namespace.find : in_path で示されるオブジェクトを探す
    50214776  #in_path:: NamespacePath
    5022   #in_path:: Array : 古い形式
     4777  #in_path:: Array : 古い形式
    50234778  #  path [ "::", "ns1", "ns2" ]   absolute
    50244779  #  path [ "ns1", "ns2" ]         relative
     
    50354790      if name == "::" then
    50364791        i = 1
    5037         name = path[i]   # 構文的にå¿
    5038 ãšå­˜åœ¨
     4792        name = path[i]   # 構文的に必ず存在
    50394793        object = @@root_namespace.find( name )  # root
    50404794      else
    5041         # 相対パス
     4795        # 相対パス
    50424796        i = 0
    50434797        object = @@namespace_stack[@@namespace_sp].find_one( name ) # crrent
     
    50724826
    50734827      unless object.kind_of?( Namespace ) then
    5074         # クラスメソッドå†
    5075 ã§ cdl_error を呼び出すことはできない
    5076         # また、前方参ç
    5077 §å¯¾å¿œå¾Œã€æ­£ç¢ºãªè¡Œç•ªå·ãŒå‡ºãªã„問題も生じる
     4828        # クラスメソッド内で cdl_error を呼び出すことはできない
     4829        # また、前方参照対応後、正確な行番号が出ない問題も生じる
    50784830        # cdl_error( "S1092 \'$1\' not namespace" , name )
    5079         # このメソッドから nil が帰った場合 "not found" が出るので、ここでは出さない
     4831        # このメソッドから nil が帰った場合 "not found" が出るので、ここでは出さない
    50804832        return nil
    50814833      end
     
    50934845  end
    50944846
    5095   #=== Namespace# namespace から探す。見つからなければ親 namespace から探す
     4847  #=== Namespace# namespace から探す。見つからなければ親 namespace から探す
    50964848  def self.find_one( name )
    50974849    return @@namespace_stack[@@namespace_sp].find_one( name )
     
    51014853
    51024854    object = find( name )
    5103     # これは出すぎ
     4855    # これは出すぎ
    51044856    # dbgPrint "in '#{@name}' find '#{name}' object #{object ? object.class : "Not found"}\n"
    51054857
     
    51184870
    51194871  def self.find_tag( name )
    5120     # mikan tag : namespace の path に対応しない
    5121     # namespace の中にあっても、root namespace にあるものと見なされる
    5122     # よって カレント namespace から根に向かって探す
     4872    # mikan tag : namespace の path に対応しない
     4873    # namespace の中にあっても、root namespace にあるものと見なされる
     4874    # よって カレント namespace から根に向かって探す
    51234875    i = @@namespace_sp
    51244876    while i >= 0
     
    51964948  end
    51974949
    5198   #=== Namespace# 参ç
    5199 §ã•ã‚Œã¦ã„るが、未定義のセルを探す
    5200   # プロトタイプ宣言だけで定義されていないケースをエラーとする
    5201   # 受動の未結合セルについて警告する
     4950  #=== Namespace# 参照されているが、未定義のセルを探す
     4951  # プロトタイプ宣言だけで定義されていないケースをエラーとする
     4952  # 受動の未結合セルについて警告する
    52024953  def check_ref_but_undef
    52034954    @cell_list.each { |c|
    5204       if ! c.get_f_def then   # Namespace の @cell_list にはプロトタイプが含まれるケースあり
     4955      if ! c.get_f_def then   # Namespace の @cell_list にはプロトタイプが含まれるケースあり
    52054956        if c.get_f_ref then
    52064957          c.cdl_error( "S1093 $1 : undefined cell" , c.get_namespace_path.get_path_str )
     
    52254976  end
    52264977
    5227   #=== Namespace# セルの受け口の参ç
    5228 §ã‚«ã‚¦ãƒ³ãƒˆã‚’設定する
     4978  #=== Namespace# セルの受け口の参照カウントを設定する
    52294979  def set_port_reference_count
    52304980    @cell_list.each { |c|
     
    52424992
    52434993  def new_structtype( struct )
    5244     # struct.set_owner self   # StructType (Namespace) # StructType は BDNode ではない
     4994    # struct.set_owner self   # StructType (Namespace) # StructType は BDNode ではない
    52454995    dup = @struct_tag_list.get_item(struct.get_name)
    52464996    if dup != nil then
    52474997      if struct.same? dup then
    5248         # 同じものが typedef された
     4998        # 同じものが typedef された
    52494999        # p "#{struct.get_name}"
    52505000        return
     
    52705020      if typedef_type.get_type_str == dup_type.get_type_str &&
    52715021          typedef_type.get_type_str_post == dup_type.get_type_str_post then
    5272         # 同じものが typedef された
    5273         # ここへ来るのは C で関数ポインタを typedef しているケース
    5274         # 以下のように二重に定義されている場合は type_specifier_qualifier_list として扱われる
     5022        # 同じものが typedef された
     5023        # ここへ来るのは C で関数ポインタを typedef しているケース
     5024        # 以下のように二重に定義されている場合は type_specifier_qualifier_list として扱われる
    52755025        #    typedef long LONG;
    52765026        #    typedef long LONG;
    5277         # bnf.y.rb では declarator に TYPE_NAME を許さないので、ここへ来ることはない
     5027        # bnf.y.rb では declarator に TYPE_NAME を許さないので、ここへ来ることはない
    52785028        # p "#{typedef.get_declarator.get_type.get_type_str} #{typedef.get_name} #{typedef.get_declarator.get_type.get_type_str_post}"
    52795029        return
     
    53165066  def new_const_decl( decl )
    53175067    decl.set_owner self   # Decl (Namespace:const)
    5318     if ! decl.is_const? then                    # const 修飾さていること
     5068    if ! decl.is_const? then                    # const 修飾さていること
    53195069      if decl.is_type?( PtrType ) then
    53205070        cdl_error( "S1094 $1: pointer is not constant. check \'const\'" , decl.get_name )
     
    53245074    elsif ! decl.is_type?( IntType ) && ! decl.is_type?( FloatType ) &&
    53255075        ! decl.is_type?( BoolType ) && ! decl.is_type?( PtrType ) then
    5326                                             # IntType, FloatType であること
     5076                                            # IntType, FloatType であること
    53275077      cdl_error( "S1096 $1: should be int, float, bool or pointer type" , decl.get_name )
    5328     elsif decl.get_initializer == nil then   # 初期値を持つこと
     5078    elsif decl.get_initializer == nil then   # 初期値を持つこと
    53295079      cdl_error( "S1097 $1: has no initializer" , decl.get_name )
    5330 #    elsif decl.get_initializer.eval_const(nil) == nil then  #eval_const は check_init で呼出されるので二重チェック
    5331 #                                            # mikan 初期値が型に対し適切であること
     5080#    elsif decl.get_initializer.eval_const(nil) == nil then  #eval_const は check_init で呼出されるので二重チェック
     5081#                                            # mikan 初期値が型に対し適切であること
    53325082#      cdl_error( "S1098 $1: has unsuitable initializer" , decl.get_name )
    53335083    else
     
    53515101 ###
    53525102
    5353   #=== Namespace# すべてのセルの require ポートを設定
     5103  #=== Namespace# すべてのセルの require ポートを設定
    53545104  # STAGE: S
    53555105  def set_require_join
     
    53575107      ct.set_require_join
    53585108    }
    5359     # すべての namespace について require ポートをセット
     5109    # すべての namespace について require ポートをセット
    53605110    @namespace_list.each{ |ns|
    53615111      ns.set_require_join
     
    53635113  end
    53645114
    5365   #=== Namespace# Join への definition の設定とチェック
    5366   # セルタイプに属するすべてのセルに対して実施
     5115  #=== Namespace# Join への definition の設定とチェック
     5116  # セルタイプに属するすべてのセルに対して実施
    53675117  def set_definition_join
    5368     # celltype のコードを生成
     5118    # celltype のコードを生成
    53695119    @cell_list.each { |c|
    53705120      dbgPrint "set_definition_join #{c.get_name}\n"
     
    53775127
    53785128  #=== Namespace# set_max_entry_port_inner_cell
    5379   # セルタイプに属するすべてのセルに対して実施
     5129  # セルタイプに属するすべてのセルに対して実施
    53805130  def set_max_entry_port_inner_cell
    5381     # celltype のコードを生成
     5131    # celltype のコードを生成
    53825132    @cell_list.each { |c|
    53835133      c.set_max_entry_port_inner_cell
     
    53885138  end
    53895139
    5390   #=== Namespace# セルの結合をチェックする
     5140  #=== Namespace# セルの結合をチェックする
    53915141  def check_join
    53925142    @cell_list.each { |c|
     
    54005150  end
    54015151
    5402   #== Namespace# ルートか?
    5403   # ルートネームスペース と ルートリージョンは同じ
     5152  #== Namespace# ルートか?
     5153  # ルートネームスペース と ルートリージョンは同じ
    54045154  def is_root?
    54055155    @name == "::"
    54065156  end
    54075157
    5408   #== Namespace# ルートを得る
    5409   # ルートリージョンとルートネームスペースは同じオブジェクト
     5158  #== Namespace# ルートを得る
     5159  # ルートリージョンとルートネームスペースは同じオブジェクト
    54105160  def self.get_root
    54115161    @@root_namespace
    54125162  end
    54135163
    5414   #== Namespace (Region) に属するセルのリスト
     5164  #== Namespace (Region) に属するセルのリスト
    54155165  def get_cell_list
    54165166    @cell_list
    54175167  end
    54185168
    5419   #== Namespace (Region)# 子リージョンのリスト
     5169  #== Namespace (Region)# 子リージョンのリスト
    54205170  #
    5421   # リージョンは Namespace クラスで namespace として記憶されている
     5171  # リージョンは Namespace クラスで namespace として記憶されている
    54225172  def get_region_list
    54235173    @namespace_list
     
    54415191#
    54425192# available if definition is Port
    5443 # @cell_name:: string : 右辺のセルの名前
    5444 # @cell:: Cell  : 右辺のセル
    5445 # @celltype:: Celltype : 右辺のセルタイプ
    5446 # @port_name:: string : 右辺の受け口名
    5447 # @port:: Port : 右辺の受け口
     5193# @cell_name:: string : 右辺のセルの名前
     5194# @cell:: Cell  : 右辺のセル
     5195# @celltype:: Celltype : 右辺のセルタイプ
     5196# @port_name:: string : 右辺の受け口名
     5197# @port:: Port : 右辺の受け口
    54485198# @array_member:: rhs array : available only for first appear in the same name
    54495199# @array_member2:: Join array : available only for first appear in the same name
    5450 # @rhs_subscript:: nil : not array, >=0: 右辺の添数
     5200# @rhs_subscript:: nil : not array, >=0: 右辺の添数
    54515201#
    54525202
    54535203# @through_list::  @cp_through_list + @region_through_list
    5454 #  以下の構造を持つ(@cp_through_list の構造はå
    5455 ±é€šï¼‰
    5456 # @cp_through_list::  呼び口に指定された through
     5204#  以下の構造を持つ(@cp_through_list の構造は共通)
     5205# @cp_through_list::  呼び口に指定された through
    54575206#   [ [plugin_name, cell_name, plugin_arg], [plugin_name2, cell_name2, plugin_arg], ... ]
    5458 # @region_through_list::  region に指定された through
     5207# @region_through_list::  region に指定された through
    54595208#   [ [plugin_name, cell_name, plugin_arg, region], [plugin_name2, cell_name2, plugin_arg, region2], ... ]
    54605209#
    5461 # @through_generated_list:: [Plugin_class object, ...]: @through_list に対応
    5462 # @region_through_generated_list:: [Plugin_class object, ...]: @region_through_list に対応
     5210# @through_generated_list:: [Plugin_class object, ...]: @through_list に対応
     5211# @region_through_generated_list:: [Plugin_class object, ...]: @region_through_list に対応
    54635212#
    54645213
    54655214  include PluginModule
    54665215
    5467   #=== Join# 初期化
    5468   #name:: string: 名前(属性名、呼び口名)
    5469   #subscript:: Nil=非é
    5470 åˆ—, -1="[]", N="[N]"
    5471   #rhs:: Expression: 右辺の式
     5216  #=== Join# 初期化
     5217  #name:: string: 名前(属性名、呼び口名)
     5218  #subscript:: Nil=非配列, -1="[]", N="[N]"
     5219  #rhs:: Expression: 右辺の式
    54725220  def initialize( name, subscript, rhs, locale = nil )
    54735221    # dbgPrint "Join#new: #{name}, #{subscript} #{rhs.eval_const(nil)}\n"
     
    54815229    @name = name
    54825230    if subscript.instance_of?( Expression ) then
    5483        #mikan é
    5484 åˆ—添数が整数であることを未チェック
     5231       #mikan 配列添数が整数であることを未チェック
    54855232       @subscript = subscript.eval_const(nil)
    54865233       if @subscript == nil then
     
    54945241    @definition = nil
    54955242
    5496     # é
    5497 åˆ—要素を設定
    5498     # 本当は、初出の要素のみ設定するのが適当
    5499     # new_join で add_array_member の中で初出要素の array_member に対し設定する
     5243    # 配列要素を設定
     5244    # 本当は、初出の要素のみ設定するのが適当
     5245    # new_join で add_array_member の中で初出要素の array_member に対し設定する
    55005246    if @subscript == -1 then
    55015247      @array_member  = [self]
     
    55155261  end
    55165262
    5517   #===  Join# 左辺に対応する celltype の定義を設定するとともにチェックする
     5263  #===  Join# 左辺に対応する celltype の定義を設定するとともにチェックする
    55185264  # STAGE:   S
    55195265  #
    5520   #     ä»£å
    5521 ¥å¯èƒ½ã‹ãƒã‚§ãƒƒã‚¯ã™ã‚‹
    5522   #definition:: Decl (attribute,varの時) または Port (callの時) または nil (definition が見つからなかった時)
     5266  #     代入可能かチェックする
     5267  #definition:: Decl (attribute,varの時) または Port (callの時) または nil (definition が見つからなかった時)
    55235268
    55245269  def set_definition( definition )
     
    55265271    dbgPrint "set_definition: #{@owner.get_name}.#{@name} = #{definition.class}\n"
    55275272
    5528     # 二重チェックの防止
     5273    # 二重チェックの防止
    55295274    if @definition then
    5530       # set_definition を個別に行うケースで、二重に行われる可能性がある(異常ではない)
    5531       # 二重に set_definition が実行されると through が二重に適用されてしまう
     5275      # set_definition を個別に行うケースで、二重に行われる可能性がある(異常ではない)
     5276      # 二重に set_definition が実行されると through が二重に適用されてしまう
    55325277      # cdl_warning( "W9999 $1, internal error: set_definition duplicate", @name )
    55335278      return
     
    55365281    @definition = definition
    55375282
    5538     # mikan 左辺値、右辺値の型チェックなど
     5283    # mikan 左辺値、右辺値の型チェックなど
    55395284    if @definition.instance_of?( Decl ) then
    55405285      check_var_init
    55415286    elsif @definition.instance_of?( Port ) then
    55425287      check_call_port_init
    5543       if @definition.get_port_type == :CALL then   # :ENTRY ならエラー。無視しない
     5288      if @definition.get_port_type == :CALL then   # :ENTRY ならエラー。無視しない
    55445289        check_and_gen_through
    5545         create_allocator_join  # through プラグイン生成した後でないと、挿å
    5546 ¥å‰ã®ã‚»ãƒ«ã®ã‚¢ãƒ­ã‚±ãƒ¼ã‚¿ã‚’結合してしまう
     5290        create_allocator_join  # through プラグイン生成した後でないと、挿入前のセルのアロケータを結合してしまう
    55475291      end
    55485292    elsif @definition == nil then
     
    55535297  end
    55545298
    5555   #=== Join# 変数の初期化チェック
     5299  #=== Join# 変数の初期化チェック
    55565300  def check_var_init
    5557     # attribute, var の場合
     5301    # attribute, var の場合
    55585302    if @definition.get_kind == :ATTRIBUTE then
    55595303#        check_cell_cb_init( definition.get_type, @rhs )
    5560       # 右辺で初期化可能かチェック
     5304      # 右辺で初期化可能かチェック
    55615305      @definition.get_type.check_init( @locale, @definition.get_identifier, @rhs, :ATTRIBUTE )
    55625306    elsif @definition.get_kind == :VAR then
    5563       # var は初期化できない
     5307      # var は初期化できない
    55645308      cdl_error( "S1100 $1: cannot initialize var" , @name )
    55655309    else
     
    55695313  end
    55705314
    5571   #=== Join# 呼び口の初期化チェック
     5315  #=== Join# 呼び口の初期化チェック
    55725316  def check_call_port_init
    55735317    ### Port
    55745318
    5575     # 左辺は受け口か(受け口を初期化しようとしている)?
     5319    # 左辺は受け口か(受け口を初期化しようとしている)?
    55765320    if @definition.get_port_type == :ENTRY then
    55775321      cdl_error( "S1101 \'$1\' cannot initialize entry port" , @name )
     
    55795323    end
    55805324
    5581 #      # é
    5582 åˆ—添数の整合性チェック
    5583 #      # 呼び口の定義で、非é
    5584 åˆ—なら添数なし、添数なしé
    5585 åˆ—なら添数なし、添数ありé
    5586 åˆ—なら添数あり
     5325#      # 配列添数の整合性チェック
     5326#      # 呼び口の定義で、非配列なら添数なし、添数なし配列なら添数なし、添数あり配列なら添数あり
    55875327    as = @definition.get_array_size
    55885328    if ( @subscript == nil && as != nil ) then
     
    56075347#    end
    56085348
    5609     # mikan Expression の get_type で型導出させる方がスマート
    5610     # mikan '=' の左辺がé
    5611 åˆ—かどうか未チェック
    5612     #(1) '=' の右辺は "Cell.ePort" の形式か?
    5613     #     æ¼”算子は "."  かつ "." の左辺が :IDENTIFIER
    5614     #     "." の右辺はチェック不要 (synatax 的に :IDENTIFIER)
    5615     #(2) "Cell" は存在するか?(名前が一致するものはあるか)
    5616     #(3) "Cell" は cell か?
    5617     #(4) "Cell" の celltype は有効か? (無効なら既にエラー)
    5618     #(5) "ePort" は "Cell" の celltype å†
    5619 ã«å­˜åœ¨ã™ã‚‹ã‹ï¼Ÿ
    5620     #(6) "ePort" は entry port か?
    5621     #(7) signature は一致するか
    5622 
    5623     # 右辺がない(以前の段階でエラー)
     5349    # mikan Expression の get_type で型導出させる方がスマート
     5350    # mikan '=' の左辺が配列かどうか未チェック
     5351    #(1) '=' の右辺は "Cell.ePort" の形式か?
     5352    #     演算子は "."  かつ "." の左辺が :IDENTIFIER
     5353    #     "." の右辺はチェック不要 (synatax 的に :IDENTIFIER)
     5354    #(2) "Cell" は存在するか?(名前が一致するものはあるか)
     5355    #(3) "Cell" は cell か?
     5356    #(4) "Cell" の celltype は有効か? (無効なら既にエラー)
     5357    #(5) "ePort" は "Cell" の celltype 内に存在するか?
     5358    #(6) "ePort" は entry port か?
     5359    #(7) signature は一致するか
     5360
     5361    # 右辺がない(以前の段階でエラー)
    56245362    return unless @rhs
    56255363
    5626     # cCall = composite.cCall; のチェック.この形式は属性用
    5627     # 呼び口を export するには cCall => composite.cCall; の形式を用いる
     5364    # cCall = composite.cCall; のチェック.この形式は属性用
     5365    # 呼び口を export するには cCall => composite.cCall; の形式を用いる
    56285366    if @rhs.instance_of?( Array ) == true && @rhs[0] == :COMPOSITE then
    56295367      cdl_error( "S1107 to export port, use \'cCall => composite.cCall\'"  )
     
    56335371    end
    56345372
    5635     # 右辺の Expression の要素を取り出す
     5373    # 右辺の Expression の要素を取り出す
    56365374    ret = @rhs.analyze_cell_join_expression
    56375375    if ret == nil then   #1
     
    56415379
    56425380    nsp, @rhs_subscript, @port_name = ret[0], ret[1], ret[2]
    5643     @cell_name = nsp.get_name     # mikan ns::cellname の形式の考æ
    5644 ®
    5645 
    5646     # composite の定義の中なら object は結合å
    5647 ˆ cell か、見つからなければ nil が返る
    5648     # composite の定義外なら false が返る
     5381    @cell_name = nsp.get_name     # mikan ns::cellname の形式の考慮
     5382
     5383    # composite の定義の中なら object は結合先 cell か、見つからなければ nil が返る
     5384    # composite の定義外なら false が返る
    56495385    object = CompositeCelltype.find( @cell_name )
    56505386    if object == false then
    5651 #     mikan 左辺が namespace に対応していないため。 path にして find
     5387#     mikan 左辺が namespace に対応していないため。 path にして find
    56525388      # p nsp.get_path_str, nsp.get_path
    56535389      object = Namespace.find( nsp )    #1
     
    56685404      object.set_f_ref
    56695405
    5670       # 右辺のセルのセルタイプ
     5406      # 右辺のセルのセルタイプ
    56715407      celltype = object.get_celltype
    56725408
     
    56815417          cdl_error( "S1113 \'$1\' signature mismatch" , @port_name )
    56825418        elsif object2.get_array_size then
    5683           # 受け口é
    5684 åˆ—
     5419          # 受け口配列
    56855420
    56865421          unless @rhs_subscript then
    5687             # 右辺に添数指定がなかった
     5422            # 右辺に添数指定がなかった
    56885423            cdl_error( "S1114 \'$1\' should be array" , @port_name )
    56895424          else
     
    56915426            as = object2.get_array_size
    56925427            if( as.kind_of?( Integer ) && as <= @rhs_subscript )then
    5693               # 受け口é
    5694 åˆ—の大きさに対し、右辺の添数が同じか大きい
     5428              # 受け口配列の大きさに対し、右辺の添数が同じか大きい
    56955429              cdl_error( "S1115 $1[$2]: subscript out of range (< $3)" , @port_name, @rhs_subscript, as )
    56965430            else
     
    56995433              @celltype = celltype
    57005434              @port = object2
    5701               # 右辺のセルの受け口 object2 を参ç
    5702 §æ¸ˆã¿ã«ã™ã‚‹
     5435              # 右辺のセルの受け口 object2 を参照済みにする
    57035436              # object2: Port, @definition: Port
    57045437              @cell.set_entry_port_max_subscript( @port, @rhs_subscript )
     
    57105443          end
    57115444        elsif @rhs_subscript then
    5712           # 受け口é
    5713 åˆ—でないのに右辺で添数指定されている
     5445          # 受け口配列でないのに右辺で添数指定されている
    57145446          cdl_error( "S1116 \'$1\' entry port is not array" , @port_name )
    57155447        else
     
    57195451          @celltype = celltype
    57205452
    5721           # 右辺のセル object の受け口 object2 を参ç
    5722 §æ¸ˆã¿ã«ã™ã‚‹
     5453          # 右辺のセル object の受け口 object2 を参照済みにする
    57235454          # object2: Port, @definition: Port
    57245455
    57255456          # debug
    57265457          # p "rhs:  #{@cell}  #{@cell.get_name}"
    5727         end  # end of port (object2) チェック
     5458        end  # end of port (object2) チェック
    57285459
    57295460        #else
    5730         #  celltype == nil (すでにエラー)
    5731       end  # end of celltyep チェック
     5461        #  celltype == nil (すでにエラー)
     5462      end  # end of celltyep チェック
    57325463
    57335464
    57345465      check_region( object )
    57355466
    5736     end  # end of cell (object) チェック
    5737 
    5738   end
    5739 
    5740   #=== Join# アロケータの結合を生成
     5467    end  # end of cell (object) チェック
     5468
     5469  end
     5470
     5471  #=== Join# アロケータの結合を生成
    57415472  # STAGE: S
    5742   #cell::  呼び口の結合å
    5743 ˆã®ã‚»ãƒ«
     5473  #cell::  呼び口の結合先のセル
    57445474  #
    5745   # ここでは呼び口側に生成されるアロケータ呼び口の結合を生成
    5746   # 受け口側は Cell の set_specifier_list で生成
    5747   #  a[*] のå†
    5748 å®¹ã¯ Cell の set_specifier_list を参ç
    5749 §
     5475  # ここでは呼び口側に生成されるアロケータ呼び口の結合を生成
     5476  # 受け口側は Cell の set_specifier_list で生成
     5477  #  a[*] の内容は Cell の set_specifier_list を参照
    57505478  def create_allocator_join
    57515479
    5752     cell = get_rhs_cell2   # 右辺のセルを得る
     5480    cell = get_rhs_cell2   # 右辺のセルを得る
    57535481    port = get_rhs_port2
    57545482
    5755     if( cell && cell.get_allocator_list ) then      # cell == nil なら既にエラー
     5483    if( cell && cell.get_allocator_list ) then      # cell == nil なら既にエラー
    57565484
    57575485      dbgPrint "create_allocator_join: #{@owner.get_name}.#{@name}=>#{cell ? cell.get_name : "nil"}\n"
     
    57605488
    57615489        if( a[0+1] == port && a[1+1] == @rhs_subscript )then
    5762           # 名前の一致するものの結合を生成する
    5763           # 過不足は、別途チェックされる
     5490          # 名前の一致するものの結合を生成する
     5491          # 過不足は、別途チェックされる
    57645492          cp_name = :"#{@name}_#{a[2+1]}_#{a[3+1]}"
    57655493          # p "creating allocator join #{cp_name} #{@subscript} #{a[1+1]}"
     
    57765504  end
    57775505
    5778   #=== Join# リージョン間の結合をチェック
    5779   # リージョン間の through による @region_through_list の作成
    5780   # 実際の生成は check_and_gen_through で行う
    5781   # mikan Cell#distance とRegion へたどり着くまでための処理にå
    5782 ±é€šéƒ¨åˆ†ãŒå¤šã„
     5506  #=== Join# リージョン間の結合をチェック
     5507  # リージョン間の through による @region_through_list の作成
     5508  # 実際の生成は check_and_gen_through で行う
     5509  # mikan Cell#distance とRegion へたどり着くまでための処理に共通部分が多い
    57835510  def check_region( object )
    57845511
     
    57875514    # print "DOMAIN: check_region #{@owner.get_name}.#{@name} => #{object.get_name}\n"
    57885515
    5789     # プラグインで生成されたなかでは生成しない
    5790     # さもないとプラグイン生成されたものとの間で、無限に生成される
     5516    # プラグインで生成されたなかでは生成しない
     5517    # さもないとプラグイン生成されたものとの間で、無限に生成される
    57915518##    if Generator.get_nest >= 1 then
    5792 ##    if Generator.get_plugin then     # mikan これはå¿
    5793 è¦ï¼Ÿ (意味解析段階での実行になるので不適切)
     5519##    if Generator.get_plugin then     # mikan これは必要? (意味解析段階での実行になるので不適切)
    57945520    if @owner.get_plugin.kind_of?( ThroughPlugin ) then
    5795       # プラグイン生成されたセルの場合、結合チェックのみ
     5521      # プラグイン生成されたセルの場合、結合チェックのみ
    57965522      return
    57975523    end
    57985524
    5799     # region のチェック
    5800     r1 = @owner.get_region      # 呼び口セルの region
    5801     r2 = object.get_region      # 受け口セルの region
    5802 
    5803     if ! r1.equal? r2 then      # 同一 region なら呼出し可能
     5525    # region のチェック
     5526    r1 = @owner.get_region      # 呼び口セルの region
     5527    r2 = object.get_region      # 受け口セルの region
     5528
     5529    if ! r1.equal? r2 then      # 同一 region なら呼出し可能
    58045530
    58055531      f1 = r1.get_family_line
     
    58085534      len2 = f2.length
    58095535
    5810       # 不一致になるところ(å
    5811 „弟)を探す
    5812       i = 1  # i = 0 は :RootRegion なのでå¿
    5813 ãšä¸€è‡´
     5536      # 不一致になるところ(兄弟)を探す
     5537      i = 1  # i = 0 は :RootRegion なので必ず一致
    58145538      while( i < len1 && i < len2 )
    58155539        if( f1[i] != f2[i] )then
     
    58195543      end
    58205544
    5821       sibling_level = i     # å
    5822 „弟となるレベル、もしくはどちらか一方が終わったレベル
     5545      sibling_level = i     # 兄弟となるレベル、もしくはどちらか一方が終わったレベル
    58235546
    58245547      dbgPrint "sibling_level: #{i}\n"
     
    58335556
    58345557
    5835       # 呼び側について呼びå
    5836 ƒã®ãƒ¬ãƒ™ãƒ«ã‹ã‚‰å
    5837 „弟レベルまで(out_through をチェックおよび挿å
    5838 ¥ï¼‰
     5558      # 呼び側について呼び元のレベルから兄弟レベルまで(out_through をチェックおよび挿入)
    58395559      i = len1 -1
    58405560      if b_to_through then
     
    58605580
    58615581        out_through_list.each { |ol|
    5862           if ol[0] then    # plugin_name が指定されていなければ登録しない
     5582          if ol[0] then    # plugin_name が指定されていなければ登録しない
    58635583            plugin_arg = CDLString.remove_dquote ol[1]
    58645584            through = [ ol[0], :"Join_out_through_", plugin_arg, f1[i], f1[i-1], :OUT_THROUGH, region_count]
     
    58735593      end
    58745594
    5875       # å
    5876 „弟レベルにおいて(to_through をチェックおよび挿å
    5877 ¥ï¼‰
     5595      # 兄弟レベルにおいて(to_through をチェックおよび挿入)
    58785596      if f1[sibling_level] && f2[sibling_level] then
    58795597        dbgPrint "going from #{f1[sibling_level].get_name} to #{f2[sibling_level].get_name}\n"
    58805598        found = 0
    5881         region_count = f1[i].next_to_through_count( f2[sibling_level].get_name )   # to_through の region カウント
     5599        region_count = f1[i].next_to_through_count( f2[sibling_level].get_name )   # to_through の region カウント
    58825600        f1[sibling_level].get_to_through_list.each { |t|
    5883           if t[0][0] == f2[sibling_level].get_name then   # region 名が一致するか ?
    5884             if t[1] then    # plugin_name が指定されていなければ登録しない
     5601          if t[0][0] == f2[sibling_level].get_name then   # region 名が一致するか ?
     5602            if t[1] then    # plugin_name が指定されていなければ登録しない
    58855603              plugin_arg = CDLString.remove_dquote t[2]
    58865604              through = [ t[1], :"Join_to_through__", plugin_arg, f1[sibling_level], f2[sibling_level], :TO_THROUGH, region_count ]
     
    59055623      end
    59065624
    5907       # 受け側についてå
    5908 „弟レベルから受け側のレベルまで(in_through をチェックおよび挿å
    5909 ¥ï¼‰
     5625      # 受け側について兄弟レベルから受け側のレベルまで(in_through をチェックおよび挿入)
    59105626      if b_to_through then
    5911         i = sibling_level + 1      # to_through を経た場合、最初の in_through は適用しない
     5627        i = sibling_level + 1      # to_through を経た場合、最初の in_through は適用しない
    59125628      else
    59135629        i = sibling_level
     
    59325648        end
    59335649        in_through_list.each { |il|
    5934           if il[0] then    # plugin_name が指定されていなければ登録しない
     5650          if il[0] then    # plugin_name が指定されていなければ登録しない
    59355651            plugin_arg = CDLString.remove_dquote il[1]
    59365652            through = [ il[0], :"Join_in_through_", plugin_arg, f2[i-1], f2[i],:IN_THROUGH, region_count ]
     
    59455661
    59465662
    5947   #=== Join# 生成しないリージョンへの結合かチェック
    5948   # 右辺のセルが、生成されないリージョンにあればエラー
    5949   # 右辺は、プラグイン生成されたセルがあれば、それを対象とする
     5663  #=== Join# 生成しないリージョンへの結合かチェック
     5664  # 右辺のセルが、生成されないリージョンにあればエラー
     5665  # 右辺は、プラグイン生成されたセルがあれば、それを対象とする
    59505666  def check_region2
    59515667    lhs_cell = @owner
    59525668
    5953     # 生成しないリージョンのセルへの結合か?
     5669    # 生成しないリージョンのセルへの結合か?
    59545670    # if join.get_cell && ! join.get_cell.is_generate? then
    5955     # if get_rhs_cell && ! get_rhs_cell.is_generate? then # composite セルがプロタイプ宣言の場合例外
     5671    # if get_rhs_cell && ! get_rhs_cell.is_generate? then # composite セルがプロタイプ宣言の場合例外
    59565672    # print "Link root: (caller #{@owner.get_name}) '#{@owner.get_region.get_link_root.get_name}'"
    59575673    # print " #{@owner.get_region.get_link_root == get_rhs_region.get_link_root ? "==" : "!="} "
     
    59665682      end
    59675683    else
    5968       # rhs のセルが存在しなかった (既にエラー)
     5684      # rhs のセルが存在しなかった (既にエラー)
    59695685    end
    59705686  end
     
    59745690  end
    59755691
    5976   #=== Join# specifier を設定
     5692  #=== Join# specifier を設定
    59775693  # STAGE: B
    5978   # set_specifier_list は、join の解析の最後で呼び出される
    5979   # through 指定子を設定
    5980   #  check_and_gen_through を呼出して、through 生成
     5694  # set_specifier_list は、join の解析の最後で呼び出される
     5695  # through 指定子を設定
     5696  #  check_and_gen_through を呼出して、through 生成
    59815697  def set_specifier_list( specifier_list )
    59825698
     
    59865702        # set plugin_name
    59875703        plugin_name = s[1].to_s
    5988         plugin_name[0] = "#{plugin_name[/^./].upcase}"     # å
    5989 ˆé ­æ–‡å­—を大文字に : ruby のクラス名の制約
     5704        plugin_name[0] = "#{plugin_name[/^./].upcase}"     # 先頭文字を大文字に : ruby のクラス名の制約
    59905705
    59915706        # set cell_name
     
    59945709        # set plugin_arg
    59955710        plugin_arg = CDLString.remove_dquote s[2].to_s
    5996         # plugin_arg = s[2].to_s.gsub( /\A"(.*)/, '\1' )   # 前後の "" を取り除く
     5711        # plugin_arg = s[2].to_s.gsub( /\A"(.*)/, '\1' )   # 前後の "" を取り除く
    59975712        # plugin_arg.sub!( /(.*)"\z/, '\1' )
    59985713
     
    60035718  end
    60045719
    6005   #=== Join# through のチェックと生成
    6006   # new_join の中の check_region で region 間の through が @region_through に設定される
    6007   # set_specifier で呼び口の結合で指定された through が @cp_through 設定される
    6008   # その後、このメソッドが呼ばれる
     5720  #=== Join# through のチェックと生成
     5721  # new_join の中の check_region で region 間の through が @region_through に設定される
     5722  # set_specifier で呼び口の結合で指定された through が @cp_through 設定される
     5723  # その後、このメソッドが呼ばれる
    60095724  def check_and_gen_through
    60105725
     
    60275742
    60285743    @through_list = @cp_through_list + @region_through_list
    6029       # 後から @cp_through_list と @region_through_list に分けたため、このような実è£
    6030 ã«ãªã£ãŸ
     5744      # 後から @cp_through_list と @region_through_list に分けたため、このような実装になった
    60315745
    60325746    if @through_list then           # nil when the join is not Port
    6033       len = @through_list.length    # through が連接している数
     5747      len = @through_list.length    # through が連接している数
    60345748    else
    60355749      len = 0
     
    60425756    end
    60435757
    6044     # 連続した through について、受け口側から順にセルを生成し解釈する
     5758    # 連続した through について、受け口側から順にセルを生成し解釈する
    60455759    i = len - 1
    60465760    while i >= 0
     
    60725786
    60735787      else
    6074         # 最後のセルの場合、次のセルの名前、ポート名
     5788        # 最後のセルの場合、次のセルの名前、ポート名
    60755789        next_cell      = @cell
    60765790        next_port_name = @port_name
     
    60785792
    60795793        if next_cell == nil then
    6080           # 結合å
    6081 ˆãŒãªã„
     5794          # 結合先がない
    60825795          return
    60835796        end
     
    60855798
    60865799      if i >= cp_len then
    6087         # region_through_list 部分
    6088         # region から @cell_name.@port_name への through がないか探す
     5800        # region_through_list 部分
     5801        # region から @cell_name.@port_name への through がないか探す
    60895802        # rp = @through_list[i][3].find_cell_port_through_plugin( @cell_name, @port_name ) #762
    60905803        rp = @through_list[i][3].find_cell_port_through_plugin( @cell.get_global_name, @port_name, @rhs_subscript )
    6091            # @through_list[i] と @region_through_list[i-cp_len] は同じ
    6092         # å
    6093 ±ç”¨ã—ないようにするには、見つからなかったことにすればよい
     5804           # @through_list[i] と @region_through_list[i-cp_len] は同じ
     5805        # 共用しないようにするには、見つからなかったことにすればよい
    60945806        # rp = nil
    60955807      else
    6096         # region 以外のものはå
    6097 ±æœ‰ã—ない
    6098         # 呼び口側に指定されているし、plugin_arg が異なるかもしれない
     5808        # region 以外のものは共有しない
     5809        # 呼び口側に指定されているし、plugin_arg が異なるかもしれない
    60995810        rp = nil
    61005811      end
     
    61065817        end
    61075818      else
    6108         # 見つかったものをå
    6109 ±ç”¨ã™ã‚‹
     5819        # 見つかったものを共用する
    61105820        @through_generated_list[ i ] = rp
    61115821      end
    61125822
    61135823      if i >= cp_len then
    6114         # @through_generated_list のうち @region_through_listに対応する部分
     5824        # @through_generated_list のうち @region_through_listに対応する部分
    61155825        @region_through_generated_list[ i - cp_len ] = @through_generated_list[ i ]
    61165826        if rp == nil then
    6117           # 生成したものを region(@through_list[i][3]) のリストに追加
     5827          # 生成したものを region(@through_list[i][3]) のリストに追加
    61185828          # @through_list[i][3].add_cell_port_through_plugin( @cell_name, @port_name, @through_generated_list[i] ) #762
    61195829          @through_list[i][3].add_cell_port_through_plugin( @cell.get_global_name, @port_name, @rhs_subscript, @through_generated_list[i] )
     
    61225832
    61235833      if i == 0 then
    6124         # 最も呼び口側のセルは、CDL 上の結合がないため、参ç
    6125 §ã•ã‚ŒãŸã“とにならない
    6126         # mikan namespace 対応
     5834        # 最も呼び口側のセルは、CDL 上の結合がないため、参照されたことにならない
     5835        # mikan namespace 対応
    61275836        # cell = Namespace.find( [ @through_generated_list[0].get_cell_name] )    #1
    61285837        if @through_generated_list[0] == nil then
    6129           return  # plugin_object の生成に失敗している
     5838          return  # plugin_object の生成に失敗している
    61305839        end
    61315840        cell = Namespace.find( @through_generated_list[0].get_cell_namespace_path )    #1
     
    61515860  end
    61525861
    6153   #=== Join# through プラグインを呼び出して CDL 生成させるとともに、import する
     5862  #=== Join# through プラグインを呼び出して CDL 生成させるとともに、import する
    61545863  def gen_through_cell_code_and_parse( plugin_name, i, next_cell, next_port_name, next_port_subscript, plClass )
    61555864
     
    61595868    plugin_arg            = through[ 2 ]
    61605869    if through[ 3 ] then
    6161       # region 間の through の場合
     5870      # region 間の through の場合
    61625871      @@start_region      = through[ 3 ]
    61635872      if next_cell.get_region.equal? @@start_region then
     
    61695878      @@region_count      = through[ 6 ]
    61705879    else
    6171       # 呼び口の through の場合
    6172       @@start_region      = @owner.get_region    # 呼び口側セルの region
    6173       @@end_region        = next_cell.get_region # 次のセルの region
    6174       @@through_type      = :THROUGH             # 呼び口の through 指定
     5880      # 呼び口の through の場合
     5881      @@start_region      = @owner.get_region    # 呼び口側セルの region
     5882      @@end_region        = next_cell.get_region # 次のセルの region
     5883      @@through_type      = :THROUGH             # 呼び口の through 指定
    61755884      @@region_count      = 0
    61765885    end
     
    61945903    @through_generated_list[ i ] = plugin_object
    61955904
    6196     # Region に関するæƒ
    6197 å ±ã‚’設定
    6198     # 後から追加したので、new の引数外で設定
     5905    # Region に関する情報を設定
     5906    # 後から追加したので、new の引数外で設定
    61995907    # plugin_object.set_through_info( start_region, end_region, through_type )
    62005908
     
    62025910  end
    62035911
    6204   #プラグインへの引数で渡さないものを、一時的に記憶しておく
    6205   # プラグインの initialize の中でコールバックして設定する
     5912  #プラグインへの引数で渡さないものを、一時的に記憶しておく
     5913  # プラグインの initialize の中でコールバックして設定する
    62065914  @@plugin_creating_join = nil
    62075915  @@start_region = nil
     
    62105918  @@region_count = nil
    62115919
    6212   #=== Join# ThroughPlugin の追加æƒ
    6213 å ±ã‚’設定する
    6214   # このメソッドは ThroughPlugin#initialize から呼び出される
    6215   # plugin_object を生成する際の引数では不足するæƒ
    6216 å ±ã‚’追加する
     5920  #=== Join# ThroughPlugin の追加情報を設定する
     5921  # このメソッドは ThroughPlugin#initialize から呼び出される
     5922  # plugin_object を生成する際の引数では不足する情報を追加する
    62175923  def self.set_through_info plugin_object
    62185924    plugin_object.set_through_info( @@start_region, @@end_region, @@through_type,
     
    62265932  end
    62275933
    6228   #=== Join#é
    6229 åˆ—添数を得る
    6230   # @subscript の説明を参ç
    6231 §ã®ã“と
     5934  #=== Join#配列添数を得る
     5935  # @subscript の説明を参照のこと
    62325936  def get_subscript
    62335937    @subscript
    62345938  end
    62355939
    6236   def get_cell_name         # 受け口セル名
     5940  def get_cell_name         # 受け口セル名
    62375941    @cell_name
    62385942  end
     
    62465950  end
    62475951
    6248   #=== Join# 右辺の実セルを得る
    6249   #    実セルとは through で挿å
    6250 ¥ã•ã‚ŒãŸã‚‚の、composite のå†
    6251 éƒ¨ãªã©å®Ÿéš›ã«çµåˆã•ã‚Œã‚‹å
    6252 ˆ
    6253   #    このメソッドは get_rhs_port と対になっている
    6254   #    このメソッドは、意味解析段階では呼び出してはならない (対象セルの意味解析が済む前には正しい結果を返さない)
     5952  #=== Join# 右辺の実セルを得る
     5953  #    実セルとは through で挿入されたもの、composite の内部など実際に結合される先
     5954  #    このメソッドは get_rhs_port と対になっている
     5955  #    このメソッドは、意味解析段階では呼び出してはならない (対象セルの意味解析が済む前には正しい結果を返さない)
    62555956  def get_rhs_cell
    6256     # through 指定あり?
     5957    # through 指定あり?
    62575958    if @through_list[0] then
    6258       # mikan through で生成したものが root namespace 限定
     5959      # mikan through で生成したものが root namespace 限定
    62595960      if @through_generated_list[0] then
    62605961        # cell = Namespace.find( [ "::", @through_generated_list[0].get_cell_name.to_sym ] )    #1
    62615962        cell = Namespace.find( @through_generated_list[0].get_cell_namespace_path )    #1
    6262         # cell が nil になるのはプラグインの get_cell_namespace_path が正しくないか、
    6263         # プラグイン生成コードがエラーになっている。
    6264         # できの悪いプラグインが多ければ、cell == nil をはじいた方がよい。
     5963        # cell が nil になるのはプラグインの get_cell_namespace_path が正しくないか、
     5964        # プラグイン生成コードがエラーになっている。
     5965        # できの悪いプラグインが多ければ、cell == nil をはじいた方がよい。
    62655966        return cell.get_real_cell( @through_generated_list[0].get_through_entry_port_name )
    62665967      else
    6267         return nil            # generate に失敗している
     5968        return nil            # generate に失敗している
    62685969      end
    62695970    elsif @cell then
    62705971      return @cell.get_real_cell( @port_name )
    62715972    else
    6272       # 右辺が未定義の場合 @cell は nil (既にエラー)
     5973      # 右辺が未定義の場合 @cell は nil (既にエラー)
    62735974      return nil
    62745975    end
    62755976  end
    62765977
    6277   #=== Join# 右辺のセルを得る
    6278   # 右辺のセルを得る。ただし、composite 展開されていない
    6279   # composite 展開されたものを得るには get_rhs_cell を使う
    6280   # プロトタイプ宣言しかされていない場合には、こちらしか使えない
    6281   # このメソッドは get_rhs_port2 と対になっている
     5978  #=== Join# 右辺のセルを得る
     5979  # 右辺のセルを得る。ただし、composite 展開されていない
     5980  # composite 展開されたものを得るには get_rhs_cell を使う
     5981  # プロトタイプ宣言しかされていない場合には、こちらしか使えない
     5982  # このメソッドは get_rhs_port2 と対になっている
    62825983  def get_rhs_cell2
    6283     # through 指定あり?
     5984    # through 指定あり?
    62845985    if @through_list[0] then
    6285       # mikan through で生成したものが root namespace 限定
     5986      # mikan through で生成したものが root namespace 限定
    62865987      # cell = Namespace.find( [ "::", @through_generated_list[0].get_cell_name ] )
    62875988      if @through_generated_list[0] then
     
    62895990        cell = Namespace.find( @through_generated_list[0].get_cell_namespace_path )    #1
    62905991      else
    6291         cell = @cell            # generate に失敗している
     5992        cell = @cell            # generate に失敗している
    62925993      end
    62935994    else
     
    62985999  end
    62996000
    6300   #=== Join# 右辺のセルを得る
    6301   # through は適用しないが、composite は展開した後のセル
    6302   # (意味解析が終わっていないと、composite 展開が終わっていない)
    6303   # このメソッドは get_rhs_port3 と対になっている
     6001  #=== Join# 右辺のセルを得る
     6002  # through は適用しないが、composite は展開した後のセル
     6003  # (意味解析が終わっていないと、composite 展開が終わっていない)
     6004  # このメソッドは get_rhs_port3 と対になっている
    63046005  def get_rhs_cell3
    63056006    if @cell then
     
    63086009  end
    63096010
    6310   #=== Join# 右辺のセルのリージョンを得る
    6311   # 右辺が未定義の場合、nil を返す
    6312   # composite の場合、実セルではなく composite cell の region を返す(composite はすべて同じ region に属する)
    6313   # composite の cell がプロトタイプ宣言されているとき get_rhs_cell/get_real_cell は ruby の例外となる
     6011  #=== Join# 右辺のセルのリージョンを得る
     6012  # 右辺が未定義の場合、nil を返す
     6013  # composite の場合、実セルではなく composite cell の region を返す(composite はすべて同じ region に属する)
     6014  # composite の cell がプロトタイプ宣言されているとき get_rhs_cell/get_real_cell は ruby の例外となる
    63146015  def get_rhs_region
    6315     # through 指定あり?
     6016    # through 指定あり?
    63166017    if @through_list[0] then
    63176018      if @through_generated_list[0] then
    6318         # mikan through で生成したものが root namespace 限定
     6019        # mikan through で生成したものが root namespace 限定
    63196020        # cell = Namespace.find( [ "::", @through_generated_list[0].get_cell_name.to_sym ] )    #1
    63206021        cell = Namespace.find( @through_generated_list[0].get_cell_namespace_path )    #1
     
    63236024        end
    63246025      else
    6325         return nil       # generate に失敗している
     6026        return nil       # generate に失敗している
    63266027      end
    63276028    elsif @cell then
    63286029      return @cell.get_region
    63296030    end
    6330     # 右辺が未定義の場合 @cell は nil (既にエラー)
     6031    # 右辺が未定義の場合 @cell は nil (既にエラー)
    63316032    return nil
    63326033  end
    63336034
    6334   def get_cell_global_name  # 受け口セル名(コンポジットなら展開したå†
    6335 å´ã®ã‚»ãƒ«ï¼‰
     6035  def get_cell_global_name  # 受け口セル名(コンポジットなら展開した内側のセル)
    63366036
    63376037    # debug
     
    63476047  end
    63486048
    6349   #===  Join# 結合の右辺の受け口の名前
    6350   #     namespace 名 + '_' + セル名 + '_' + 受け口名   ï¼ˆã“のセルが composite ならば展開後のセル名、受け口名)
    6351   #subscript:: Integer  呼び口é
    6352 åˆ—の時添数 または nil 呼び口é
    6353 åˆ—でない時
    6354   def get_port_global_name( subscript = nil )  # 受け口名(コンポジットなら展開したå†
    6355 å´ã®ã‚»ãƒ«ï¼‰
     6049  #===  Join# 結合の右辺の受け口の名前
     6050  #     namespace 名 + '_' + セル名 + '_' + 受け口名   (このセルが composite ならば展開後のセル名、受け口名)
     6051  #subscript:: Integer  呼び口配列の時添数 または nil 呼び口配列でない時
     6052  def get_port_global_name( subscript = nil )  # 受け口名(コンポジットなら展開した内側のセル)
    63566053
    63576054    # debug
    63586055    dbgPrint "Cell get_port_global_name:  #{@cell_name}\n"
    63596056
    6360     # through 指定あり?
     6057    # through 指定あり?
    63616058    if @through_list[0] then
    63626059
    6363       # mikan through で生成したものが root namespace 限定
     6060      # mikan through で生成したものが root namespace 限定
    63646061      # cell = Namespace.find( [ "::", @through_generated_list[0].get_cell_name.to_sym ] )    #1
    63656062      cell = Namespace.find( @through_generated_list[0].get_cell_namespace_path )    #1
    63666063
    6367       # through で挿å
    6368 ¥ã•ã‚ŒãŸã‚»ãƒ«ã§ã€å®Ÿéš›ã«æŽ¥ç¶šã•ã‚Œã‚‹ã‚»ãƒ«ï¼ˆcompositeの場合å†
    6369 éƒ¨ã®)の受け口の C 言語名前
     6064      # through で挿入されたセルで、実際に接続されるセル(compositeの場合内部の)の受け口の C 言語名前
    63706065      return cell.get_real_global_port_name( @through_generated_list[0].get_through_entry_port_name )
    63716066    else
    63726067
    6373       # 実際に接続されるセルの受け口の C 言語名前
     6068      # 実際に接続されるセルの受け口の C 言語名前
    63746069      if @cell then
    63756070        return @cell.get_real_global_port_name( @port_name )
     
    63906085  end
    63916086
    6392   # 末尾数字1 : CDL で指定された、右辺のセルを返す
    6393   def get_rhs_cell1   # get_cell と同じ
     6087  # 末尾数字1 : CDL で指定された、右辺のセルを返す
     6088  def get_rhs_cell1   # get_cell と同じ
    63946089    @cell
    63956090  end
    6396   def get_rhs_port1   # get_port_name 同じ
     6091  def get_rhs_port1   # get_port_name 同じ
    63976092    @port_name
    63986093  end
     
    64016096  end
    64026097
    6403   #=== Join# 右辺のポートを得る
    6404   #    右辺が composite の場合は、å†
    6405 éƒ¨ã®ç¹‹ãŒã‚‹ã‚»ãƒ«ã®ãƒãƒ¼ãƒˆ, through の場合は挿å
    6406 ¥ã•ã‚ŒãŸã‚»ãƒ«ã®ãƒãƒ¼ãƒˆ
    6407   #    このメソッドは get_rhs_cell と対になっている
     6098  #=== Join# 右辺のポートを得る
     6099  #    右辺が composite の場合は、内部の繋がるセルのポート, through の場合は挿入されたセルのポート
     6100  #    このメソッドは get_rhs_cell と対になっている
    64086101  def get_rhs_port
    6409     # through 指定あり?
     6102    # through 指定あり?
    64106103    if @through_list[0] then
    6411       # through で生成されたセルを探す
     6104      # through で生成されたセルを探す
    64126105      cell = Namespace.find( @through_generated_list[0].get_cell_namespace_path )    #1
    6413       # cell のプラグインで生成されたポート名のポートを探す (composite ならå†
    6414 éƒ¨ã®ç¹‹ãŒã‚‹ãƒãƒ¼ãƒˆ)
     6106      # cell のプラグインで生成されたポート名のポートを探す (composite なら内部の繋がるポート)
    64156107      return cell.get_real_port( @through_generated_list[0].get_through_entry_port_name )
    64166108    else
    6417       # ポートを返す(composite ならå†
    6418 éƒ¨ã®ç¹‹ãŒã‚‹ãƒãƒ¼ãƒˆã‚’返す)
     6109      # ポートを返す(composite なら内部の繋がるポートを返す)
    64196110      return @cell.get_real_port( @port_name )
    64206111    end
    64216112  end
    64226113
    6423   #=== Join# 右辺のé
    6424 åˆ—添数を得る
    6425   #    右辺が through の場合は挿å
    6426 ¥ã•ã‚ŒãŸã‚»ãƒ«ã®æ·»æ•°
    6427   #    右辺が composite の場合は、å†
    6428 éƒ¨ã®ç¹‹ãŒã‚‹ã‚»ãƒ«ã®ãƒãƒ¼ãƒˆã®æ·»æ•° (composite では変わらない)
    6429   #    このメソッドは get_rhs_cell,  と対になっている
     6114  #=== Join# 右辺の配列添数を得る
     6115  #    右辺が through の場合は挿入されたセルの添数
     6116  #    右辺が composite の場合は、内部の繋がるセルのポートの添数 (composite では変わらない)
     6117  #    このメソッドは get_rhs_cell,  と対になっている
    64306118  def get_rhs_subscript
    64316119    if @through_list[0] then
     
    64366124  end
    64376125
    6438   #=== Join# 右辺のポートを得る
    6439   # 右辺のポートを得る。
    6440   # これはプロトタイプ宣言しかされていない場合には、こちらしか使えない
     6126  #=== Join# 右辺のポートを得る
     6127  # 右辺のポートを得る。
     6128  # これはプロトタイプ宣言しかされていない場合には、こちらしか使えない
    64416129  def get_rhs_port2
    6442     # through 指定あり?
     6130    # through 指定あり?
    64436131    if @through_list[0] then
    64446132      if @through_generated_list[0] then
    64456133        port = @through_generated_list[0].get_through_entry_port_name.to_sym
    64466134      else
    6447         port = @port_name    # generate に失敗している
     6135        port = @port_name    # generate に失敗している
    64486136      end
    64496137    else
     
    64546142  end
    64556143
    6456   #=== Join# 右辺のポートを得る
    6457   # through は適用しないが、composite は展開した後のセルの対応するポート
     6144  #=== Join# 右辺のポートを得る
     6145  # through は適用しないが、composite は展開した後のセルの対応するポート
    64586146  def get_rhs_port3
    64596147    if @cell then
     
    64626150  end
    64636151
    6464   #=== Join# 呼び口é
    6465 åˆ—の2番目以降の要素を追加する
    6466   #     ä¸€ç•ªæœ€åˆã«å®šç¾©ã•ã‚ŒãŸé
    6467 åˆ—要素がå
    6468 ¨è¦ç´ ã®åˆæœŸå€¤ã®é
    6469 åˆ—を持つ
    6470   #     ã“のメソッドは非é
    6471 åˆ—の場合も呼出される(join 重複エラーの場合)
    6472   #join2:: Join  呼び口é
    6473 åˆ—要素の Join
     6152  #=== Join# 呼び口配列の2番目以降の要素を追加する
     6153  #     一番最初に定義された配列要素が全要素の初期値の配列を持つ
     6154  #     このメソッドは非配列の場合も呼出される(join 重複エラーの場合)
     6155  #join2:: Join  呼び口配列要素の Join
    64746156  def add_array_member join2
    64756157
    6476     # subscript2: join2 の左辺添数
     6158    # subscript2: join2 の左辺添数
    64776159    subscript2 = join2.get_subscript
    64786160
    64796161    if @subscript == nil then           # not array : initialize duplicate
    6480       # 非é
    6481 åˆ—の場合、join が重複している
     6162      # 非配列の場合、join が重複している
    64826163      cdl_error( "S1127 \'$1\' duplicate", @name )
    64836164      # print "add_array_member2: #{@owner.get_name}\n"
    64846165
    64856166    elsif @subscript >= 0 then
    6486       # 添数指定ありの場合
     6167      # 添数指定ありの場合
    64876168      if( subscript2 == nil || subscript2 < 0 ) then
    6488         # join2 左辺は非é
    6489 åˆ—または添数なし
    6490         # é
    6491 åˆ—が不一致
     6169        # join2 左辺は非配列または添数なし
     6170        # 配列が不一致
    64926171        cdl_error( "S1128 \'$1\' inconsistent array definition", @name )
    64936172      elsif @array_member[subscript2] != nil then
    6494         # 同じ添数が既に定義済み
     6173        # 同じ添数が既に定義済み
    64956174        cdl_error( "S1129 \'$1\' redefinition of subscript $2" ,@name, subscript2 )
    64966175      else
    6497         # 添数の位置に要素を追加
     6176        # 添数の位置に要素を追加
    64986177        @array_member[subscript2] = join2.get_rhs
    64996178        @array_member2[subscript2] = join2
     
    65026181
    65036182    else
    6504       # 添数指定なしの場合
     6183      # 添数指定なしの場合
    65056184      if( subscript2 == nil || subscript2 >= 0 ) then
    6506         # join2 左辺は非é
    6507 åˆ—または添数有
    6508         # é
    6509 åˆ—が不一致
     6185        # join2 左辺は非配列または添数有
     6186        # 配列が不一致
    65106187        cdl_error( "S1130 \'R1\' inconsistent array definition", @name )
    65116188      end
    65126189
    6513       # 添数なしé
    6514 åˆ—の場合、é
    6515 åˆ—要素を追加
     6190      # 添数なし配列の場合、配列要素を追加
    65166191      @array_member  << join2.get_rhs
    65176192      @array_member2 << join2
     
    65376212      while i < @array_member2.length
    65386213        if @array_member2[i] != self && @array_member[i] != nil then
    6539           # @array_member2[i] が nil になるのは optional の時と、
    6540           # Join の initialize で無駄に @array_member2 が設定されている場合
    6541           # 無駄に設定されているものについては、再帰的に呼び出すå¿
    6542 è¦ã¯ãªã„(clone_for_composite では対策している)
     6214          # @array_member2[i] が nil になるのは optional の時と、
     6215          # Join の initialize で無駄に @array_member2 が設定されている場合
     6216          # 無駄に設定されているものについては、再帰的に呼び出す必要はない(clone_for_composite では対策している)
    65436217          @array_member2[i].change_name( name )
    65446218        end
     
    65486222  end
    65496223
    6550   # composite cell を展開したセルの結合を clone したセルの名前に変更
     6224  # composite cell を展開したセルの結合を clone したセルの名前に変更
    65516225  def change_rhs_port( clone_cell_list, celltype )
    65526226    dbgPrint "change_rhs_port: name=#{@name}\n"
     
    65726246    dbgPrint "  REWRITE cell_name:  #{@owner.get_name}   #{@cell_name} => #{c.get_global_name}, #{c.get_name}\n"
    65736247
    6574     # @rhs のå†
    6575 å®¹ã‚’調整しておく(このå†
    6576 å®¹ã¯ã€subscript を除いて、後から使われていない)
     6248    # @rhs の内容を調整しておく(この内容は、subscript を除いて、後から使われていない)
    65776249    elements = @rhs.get_elements
    6578     if elements[0] == :OP_SUBSC then  # 右辺:受け口é
    6579 åˆ—?
     6250    if elements[0] == :OP_SUBSC then  # 右辺:受け口配列?
    65806251      elements  = elements[1]
    65816252    end
    65826253
    6583     # 右辺が cell.ePort の形式でない
     6254    # 右辺が cell.ePort の形式でない
    65846255    if elements[0] != :OP_DOT || elements[1][0] != :IDENTIFIER then   #1
    65856256      return
    65866257    else
    6587       # セル名を composite å†
    6588 éƒ¨ã®åå‰ã‹ã‚‰ã€å¤–部の名前にå
    6589 ¥ã‚Œæ›¿ãˆã‚‹
     6258      # セル名を composite 内部の名前から、外部の名前に入れ替える
    65906259      # elements[1][1] = Token.new( c.get_name, nil, nil, nil )
    65916260      elements[1][1] = NamespacePath.new( c.get_name, false, c.get_namespace )
     
    65946263    @cell_name = c.get_name
    65956264    @cell = c
    6596     # @definition = nil          # @definition が有効: チェック済み(とは、しない)
     6265    # @definition = nil          # @definition が有効: チェック済み(とは、しない)
    65976266
    65986267    if @array_member2 then
     
    66036272      i = 0
    66046273      while i < @array_member2.length
    6605         # @array_member2[i] が nil になるのは optional の時と、
    6606         # Join の initialize で無駄に @array_member2 が設定されている場合
    6607         # 無駄に設定されているものについては、再帰的に呼び出すå¿
    6608 è¦ã¯ãªã„(clone_for_composite では対策している)
     6274        # @array_member2[i] が nil になるのは optional の時と、
     6275        # Join の initialize で無駄に @array_member2 が設定されている場合
     6276        # 無駄に設定されているものについては、再帰的に呼び出す必要はない(clone_for_composite では対策している)
    66096277        if @array_member2[i] != self && @array_member[i] != nil then
    66106278          dbgPrint "change_rhs array_member #{i}: #{@name}  #{@cell_name}\n"
     
    66176285  end
    66186286
    6619   #=== Join# composite セル用にクローン
    6620   #cell_global_name:: string : 親セルのグローバル名
    6621   # 右辺の C_EXP に含まれる $id$, $cell$, $ct$ を置換
    6622   # ここで置換するのは composite の attribute の C_EXP を composite セルタイプおよびセル名に置換するため
    6623   # (å†
    6624 éƒ¨ã‚»ãƒ«ã® C_EXP もここで置換される)
    6625   # @through_list などもコピーされるので、これが呼び出される前に確定するå¿
    6626 è¦ãŒã‚ã‚‹
     6287  #=== Join# composite セル用にクローン
     6288  #cell_global_name:: string : 親セルのグローバル名
     6289  # 右辺の C_EXP に含まれる $id$, $cell$, $ct$ を置換
     6290  # ここで置換するのは composite の attribute の C_EXP を composite セルタイプおよびセル名に置換するため
     6291  # (内部セルの C_EXP もここで置換される)
     6292  # @through_list などもコピーされるので、これが呼び出される前に確定する必要がある
    66276293  def clone_for_composite( ct_name, cell_name, locale, b_need_recursive = true )
    66286294    # debug
     
    66436309
    66446310  def clone_array_member( ct_name, cell_name, prev, locale )
    6645     # é
    6646 åˆ—のコピーを作る
     6311    # 配列のコピーを作る
    66476312    am  = @array_member.clone
    66486313    am2 = @array_member2.clone
    66496314
    6650     # é
    6651 åˆ—要素のコピーを作る
     6315    # 配列要素のコピーを作る
    66526316    i = 0
    66536317    while i < am2.length
    66546318      if @array_member2[i] == prev then
    6655         # 自分自身である(ので、呼出すと無限再帰呼出しとなる)
     6319        # 自分自身である(ので、呼出すと無限再帰呼出しとなる)
    66566320        am2[i] = self
    66576321        am[i] = am2[i].get_rhs
     
    66616325        am[i] = am2[i].get_rhs
    66626326      else
    6663         # 以前のエラーで array_member2[i] は nil になっている
     6327        # 以前のエラーで array_member2[i] は nil になっている
    66646328      end
    66656329
     
    66706334    end
    66716335
    6672     # i = 0 は、ここで自分自身を設定
     6336    # i = 0 は、ここで自分自身を設定
    66736337    # am2[0] = self
    66746338
     
    66786342  end
    66796343
    6680   #=== Join# rhs をå
    6681 ¥ã‚Œæ›ãˆã‚‹
     6344  #=== Join# rhs を入れ換える
    66826345  #rhs:: Expression | initializer
    6683   # 右辺をå
    6684 ¥ã‚Œæ›ãˆã‚‹ï¼Ž
    6685   # このメソッドは、composite で cell の属性の初期値を attribute の値で置き換えるのに使われる
    6686   # このメソッドは composite å†
    6687 ã® cell の属性の初期値が定数ではなく式になった場合、不要になる
     6346  # 右辺を入れ換える.
     6347  # このメソッドは、composite で cell の属性の初期値を attribute の値で置き換えるのに使われる
     6348  # このメソッドは composite 内の cell の属性の初期値が定数ではなく式になった場合、不要になる
    66886349  def change_rhs rhs
    66896350    @rhs = rhs
    66906351  end
    66916352
    6692   #=== Join# clone された join の owner を変更
     6353  #=== Join# clone された join の owner を変更
    66936354  def set_cloned( owner )
    66946355    dbgPrint "Join#set_cloned: #{@name}  prev owner: #{@owner.get_name} new owner: #{owner.get_name}\n"
     
    67846445end
    67856446
    6786 #== 逆結合
     6447#== 逆結合
    67876448class ReverseJoin < BDNode
    67886449#@ep_name:: Symbol
     
    68096470end
    68106471
    6811 # CLASS: CompositeCelltype 用の Join
    6812 # REM:   CompositeCelltype が export するもの
     6472# CLASS: CompositeCelltype 用の Join
     6473# REM:   CompositeCelltype が export するもの
    68136474class CompositeCelltypeJoin < BDNode
    6814 # @export_name:: string     :  CompositeCelltype が export する名前(呼び口、受け口、属性)
    6815 # @internal_cell_name:: string : CompositeCelltype å†
    6816 éƒ¨ã®ã‚»ãƒ«ã®åå‰
    6817 # @internal_cell_elem_name:: string : CompositeCelltype å†
    6818 éƒ¨ã®ã‚»ãƒ«ã®å‘¼ã³å£ã€å—け口、属性の名前
    6819 # @cell : Cell : Cell::  internal cell  : CompositeCelltyep å†
    6820 éƒ¨ã®ã‚»ãƒ«ï¼ˆin_compositeセル)
     6475# @export_name:: string     :  CompositeCelltype が export する名前(呼び口、受け口、属性)
     6476# @internal_cell_name:: string : CompositeCelltype 内部のセルの名前
     6477# @internal_cell_elem_name:: string : CompositeCelltype 内部のセルの呼び口、受け口、属性の名前
     6478# @cell : Cell : Cell::  internal cell  : CompositeCelltyep 内部のセル(in_compositeセル)
    68216479# @port_decl:: Port | Decl
    68226480# @b_pseudo: bool :
     
    68336491  end
    68346492
    6835   #=== CompositeCelltypeJoin# CompositeCelltypeJoin の対象セルか?
    6836   #cell::  Cell 対象かどうかチェックするセル
     6493  #=== CompositeCelltypeJoin# CompositeCelltypeJoin の対象セルか?
     6494  #cell::  Cell 対象かどうかチェックするセル
    68376495  #
    6838   #     CompositeCelltypeJoin と cell の名前が一致するかチェックする
    6839   #     port_decl が指定された場合は、現状使われていない
     6496  #     CompositeCelltypeJoin と cell の名前が一致するかチェックする
     6497  #     port_decl が指定された場合は、現状使われていない
    68406498  def match?( cell, port_decl = nil )
    68416499
     
    68536511
    68546512#    if @cell.equal?( cell ) && ( port_decl == nil || @port_decl.equal?( port_decl ) ) then
    6855     # なぜ port_decl が一致しなければならなかったか忘れた。
    6856     # recursive_composite で名前の一致に変更   060917
     6513    # なぜ port_decl が一致しなければならなかったか忘れた。
     6514    # recursive_composite で名前の一致に変更   060917
    68576515    if((@cell.get_name == cell.get_name) && (port_decl == nil || @port_decl.get_name == port_decl.get_name))then
    68586516      true
     
    68866544  end
    68876545
    6888   # @port_decl が Port の場合のみ呼び出してよい
     6546  # @port_decl が Port の場合のみ呼び出してよい
    68896547  def get_port_type
    68906548    if @port_decl then
     
    69086566  end
    69096567
    6910   # @port_decl が Port の場合のみ呼び出してよい
     6568  # @port_decl が Port の場合のみ呼び出してよい
    69116569  def is_require?
    69126570    if @port_decl then
     
    69156573  end
    69166574
    6917   # @port_decl が Port の場合のみ呼び出してよい
     6575  # @port_decl が Port の場合のみ呼び出してよい
    69186576  def is_allocator_port?
    69196577    if @port_decl then
     
    69226580  end
    69236581
    6924   # @port_decl が Port の場合のみ呼び出してよい
     6582  # @port_decl が Port の場合のみ呼び出してよい
    69256583  def is_optional?
    69266584    if @port_decl then
     
    69296587  end
    69306588
    6931   #=== CompositeCelltypeJoin# 右辺が Decl ならば初期化子(式)を返す
    6932   # このメソッドは Cell の check_join から初期値チェックのために呼び出される
     6589  #=== CompositeCelltypeJoin# 右辺が Decl ならば初期化子(式)を返す
     6590  # このメソッドは Cell の check_join から初期値チェックのために呼び出される
    69336591  def get_initializer
    69346592    if @port_decl.instance_of? Decl then
     
    69436601  end
    69446602
    6945   #=== CompositeCelltypeJoin# é
    6946 åˆ—サイズを得る
    6947   #RETURN:: nil: not array, "[]": 大きさ指定なし, Integer: 大きさ指定あり
     6603  #=== CompositeCelltypeJoin# 配列サイズを得る
     6604  #RETURN:: nil: not array, "[]": 大きさ指定なし, Integer: 大きさ指定あり
    69486605  def get_array_size
    69496606    @port_decl.get_array_size
    69506607  end
    69516608
    6952   #=== CompositeCelltypeJoin# signature を得る
    6953   # @port_decl が Port の時のみ呼び出してもよい
     6609  #=== CompositeCelltypeJoin# signature を得る
     6610  # @port_decl が Port の時のみ呼び出してもよい
    69546611  def get_signature
    69556612    @port_decl.get_signature
     
    69946651# @file_name:: string
    69956652# @format:: string
    6996 # @arg_list:: Expression の elements と同じ形式 [ [:IDENTIFIER, String], ... ]
     6653# @arg_list:: Expression の elements と同じ形式 [ [:IDENTIFIER, String], ... ]
    69976654# @f_celltype:: bool : true: celltype factory, false: cell factory
    69986655
     
    70056662    case name
    70066663    when :write
    7007       # write 関数
     6664      # write 関数
    70086665      @name = name
    70096666
    7010       # write 関数の第一引数:出力å
    7011 ˆãƒ•ã‚¡ã‚¤ãƒ«å
    7012         # 式を評価する(通常単一の文字列であるから、単一の文字列が返される)
     6667      # write 関数の第一引数:出力先ファイル名
     6668        # 式を評価する(通常単一の文字列であるから、単一の文字列が返される)
    70136669      @file_name = file_name.eval_const(nil).val  # file_name : Expression
    70146670      if ! @file_name.instance_of?( String ) then
    7015         # 文字列定数ではなかった
     6671        # 文字列定数ではなかった
    70166672        cdl_error( "S1132 $1: 1st parameter is not string(file name)" , @name )
    70176673        @file_name = nil
    70186674      end
    70196675
    7020       # write 関数の第二引数:フォーマット文字列
     6676      # write 関数の第二引数:フォーマット文字列
    70216677      @format    = format.eval_const(nil).val     # format : Expression
    7022         # 式を評価する(通常単一の文字列であるから、単一の文字列が返される)
     6678        # 式を評価する(通常単一の文字列であるから、単一の文字列が返される)
    70236679      if ! @format.instance_of?( String ) then
    7024         # 文字列定数ではなかった
     6680        # 文字列定数ではなかった
    70256681        cdl_error( "S1133 $1: 2nd parameter is not string(fromat)" , @name )
    70266682        @format = nil
    70276683      end
    70286684
    7029       # 第三引数以降を引数リストとする mikan 引数のチェック
     6685      # 第三引数以降を引数リストとする mikan 引数のチェック
    70306686      @arg_list = arg_list
    70316687
     
    71046760#== DomainType
    71056761#
    7106 # region の domain を記憶するクラス
     6762# region の domain を記憶するクラス
    71076763class DomainType < Node
    7108 #@name::Symbol : ドメインタイプの名前 ex) HRP2
     6764#@name::Symbol : ドメインタイプの名前 ex) HRP2
    71096765#@region::Region
    71106766#@plugin_name::Symbol : ex) HRP2Plugin
    71116767#@option::String : ex) "trusted", "nontrusted"
    7112 #@plugin::DomainPlugin の子クラス
     6768#@plugin::DomainPlugin の子クラス
    71136769
    71146770  include PluginModule
    71156771
    7116   # ドメインに属する region の Hash
    7117   # domain 指定が一度も行われない場合、このリストは空である
    7118   # ルートリージョンは option = "OutOfDomain" で登録される (domain 指定が無ければ登録されない)
     6772  # ドメインに属する region の Hash
     6773  # domain 指定が一度も行われない場合、このリストは空である
     6774  # ルートリージョンは option = "OutOfDomain" で登録される (domain 指定が無ければ登録されない)
    71196775  @@domain_regions = { }  # { :domain_type => [ region, ... ] }
    71206776
     
    71596815  end
    71606816
    7161   #== DomainType リージョンの Hash を得る
    7162   # @@domain_regions の説明参ç
    7163 §
     6817  #== DomainType リージョンの Hash を得る
     6818  # @@domain_regions の説明参照
    71646819  def self.get_domain_regions
    71656820    return @@domain_regions
     
    71746829  end
    71756830
    7176   #== DomainType#ドメイン種別を得る
     6831  #== DomainType#ドメイン種別を得る
    71776832  #return::Symbol :kernel, :user, :OutOfDomain
    71786833  def get_kind
     
    71866841end
    71876842
    7188 #== Region クラス
     6843#== Region クラス
    71896844#
    7190 # Region は Namespace を継承している
    7191 # root region は特殊で、root namespace と同じである
     6845# Region は Namespace を継承している
     6846# root region は特殊で、root namespace と同じである
    71926847#
    7193 # cell は region に属する
    7194 # region に属する cell のリストは Namespace クラスのインスタンス変数として記憶される
     6848# cell は region に属する
     6849# region に属する cell のリストは Namespace クラスのインスタンス変数として記憶される
    71956850#
    71966851class Region < Namespace
    71976852# @name:: string
    7198 # @in_through_list:: [ [ plugin_name, plugin_arg ], ... ] : plungin_name = nil の時 in 禁止
    7199 # @out_through_list:: [ [ plugin_name, plugin_arg ], ... ] : plungin_name = nil の時 out 禁止
     6853# @in_through_list:: [ [ plugin_name, plugin_arg ], ... ] : plungin_name = nil の時 in 禁止
     6854# @out_through_list:: [ [ plugin_name, plugin_arg ], ... ] : plungin_name = nil の時 out 禁止
    72006855# @to_through_list:: [ [ dst_region, plugin_name, plugin_arg ], ... ]
    7201 # @cell_port_throug_plugin_list:: { "#{cell_name}.#{port_name}" => through_generated_list の要素 }
    7202 #    この region から cell_name.port_name への through プラグインで生成されたオブジェクト
     6856# @cell_port_throug_plugin_list:: { "#{cell_name}.#{port_name}" => through_generated_list の要素 }
     6857#    この region から cell_name.port_name への through プラグインで生成されたオブジェクト
    72036858# @region_type::Symbol : :NODE, :LINKUNIT, :DOMAIN, :CLASS
    7204 # @region_type_param::Symbol : domain, class の名前. node, linkunit では nil
    7205 # @link_root:: Region : linkUnit の根っことなる region (node, linkunit が指定された region)
    7206 # @family_line:: [ @region_root, ...,@region_me ]  家系
    7207 # @in_through_count:: Integer :  n 番目の in_through 結合 (n>=0)
    7208 # @out_through_count:: Integer : n 番目の out_through 結合 (n>=0)
    7209 # @to_through_count:: { :RegionName => Integer }: RegionName への n 番目の to_through 結合 (n>=0)
    7210 # @domain_type::DomainType : domain 指定されていない場合、nil
    7211 # @domain_root::Region : domain 指定されていなる Region (root の場合 nil)
     6859# @region_type_param::Symbol : domain, class の名前. node, linkunit では nil
     6860# @link_root:: Region : linkUnit の根っことなる region (node, linkunit が指定された region)
     6861# @family_line:: [ @region_root, ...,@region_me ]  家系
     6862# @in_through_count:: Integer :  n 番目の in_through 結合 (n>=0)
     6863# @out_through_count:: Integer : n 番目の out_through 結合 (n>=0)
     6864# @to_through_count:: { :RegionName => Integer }: RegionName への n 番目の to_through 結合 (n>=0)
     6865# @domain_type::DomainType : domain 指定されていない場合、nil
     6866# @domain_root::Region : domain 指定されていなる Region (root の場合 nil)
    72126867
    72136868  @@in_through_list  = []
     
    72176872  @@region_type_param = nil
    72186873  @@domain_name = nil
    7219   @@domain_option = nil    # Token がå
    7220 ¥ã‚‹
     6874  @@domain_option = nil    # Token が入る
    72216875
    72226876  @@link_roots = []
    72236877
    72246878  def initialize( name )
    7225     # mikan name の Namespace 修飾
    7226     # object = Namespace.find( [ name ] )   # 親まで捜しにいく
     6879    # mikan name の Namespace 修飾
     6880    # object = Namespace.find( [ name ] )   # 親まで捜しにいく
    72276881    if name != "::" then
    72286882      object = Namespace.get_current.find( name )    #1
    72296883    else
    7230       # root リージョン
     6884      # root リージョン
    72316885      object = nil
    72326886      @@region_type = :NODE
     
    72656919        dbgPrint "Region.new: re-appear #{@name}\n"
    72666920
    7267         # # Region path が前回出現と一致するか?
     6921        # # Region path が前回出現と一致するか?
    72686922        # if @@region_stack[ @@region_stack_sp - 1 ] then
    72696923        #   my_path = @@region_stack[ @@region_stack_sp - 1 ].get_path_string.to_s + "." + @name.to_s
     
    72756929        # end
    72766930
    7277         # 再出現
     6931        # 再出現
    72786932        # @@region_stack[@@region_stack_sp] = object
    72796933
    7280         # 再出現時に specifier が指定されているか?
     6934        # 再出現時に specifier が指定されているか?
    72816935        if( @in_through_list.length != 0 || @out_through_list.length != 0 || @to_through_list.length != 0 ||
    72826936            @region_type != nil || @domain_type != nil )then
     
    72866940
    72876941      else
    7288         # エラー用ダミー定義
    7289 
    7290         # 異なる同名のオブジェクトが定義済み
     6942        # エラー用ダミー定義
     6943
     6944        # 異なる同名のオブジェクトが定義済み
    72916945        cdl_error( "S1141 $1 duplication, previous one : $2" , name, object.class )
    7292         # @@region_stack[@@region_stack_sp] = self    # エラー時暫定 region
    7293       end
    7294     else
    7295       # 初出現
     6946        # @@region_stack[@@region_stack_sp] = self    # エラー時暫定 region
     6947      end
     6948    else
     6949      # 初出現
    72966950      dbgPrint "Region.new: #{@name}\n"
    72976951      set_region_family_line
     
    73467000  end
    73477001
    7348   #== Region ルートリージョンを得る
    7349   # ルートリージョンは、ルートネームスペースと同じである
     7002  #== Region ルートリージョンを得る
     7003  # ルートリージョンは、ルートネームスペースと同じである
    73507004  def self.get_root
    73517005    Namespace.get_root
     
    73557009
    73567010    dbgPrint  "set_region_family_line: Region: #{@name}  \n"
    7357     # root namespace (root region) の region type は :NODE
     7011    # root namespace (root region) の region type は :NODE
    73587012    if @name == "::" then
    73597013      @region_type = :NODE
     
    73737027
    73747028    if @domain_type then
    7375       # ルートリージョンが最初から @domain_type 設定されることはないの
    7376       # で @owner == nil を調べるå¿
    7377 è¦ã¯ãªã„
     7029      # ルートリージョンが最初から @domain_type 設定されることはないの
     7030      # で @owner == nil を調べる必要はない
    73787031      @owner.set_domain_type @domain_type
    73797032    end
     
    73897042    @link_root = nil
    73907043
    7391     # @family_line を作成する
    7392     # @link_root もみつける
    7393     # (上位にたどっていって Region で node または linkunit のいずれかå
    7394 ˆã«è¦‹ã¤ã‹ã£ãŸã‚‚のが @link_root となる)
    7395     # root namespace は Region かつ node なのでå¿
    7396 ãš @link_root は見つかる
    7397     # mikan: self が node, linkUnit の場合、ここで期å¾
    7398 ã—たとおりに設定されないため、Region#initialize で再設定
     7044    # @family_line を作成する
     7045    # @link_root もみつける
     7046    # (上位にたどっていって Region で node または linkunit のいずれか先に見つかったものが @link_root となる)
     7047    # root namespace は Region かつ node なので必ず @link_root は見つかる
     7048    # mikan: self が node, linkUnit の場合、ここで期待したとおりに設定されないため、Region#initialize で再設定
    73997049    obj = self
    74007050    while 1
     
    74077057        end
    74087058      else
    7409         # さもなければ Namespace
    7410         # namespace の下に region がある場合
    7411       end
    7412 
    7413       # root namespace にたどり着けば終り
     7059        # さもなければ Namespace
     7060        # namespace の下に region がある場合
     7061      end
     7062
     7063      # root namespace にたどり着けば終り
    74147064      break if obj.get_name == "::"
    74157065
     
    74227072  end
    74237073
    7424   #== Region#ドメインを設定する
     7074  #== Region#ドメインを設定する
    74257075  def set_domain_type domain_type
    74267076    if @region_type == :NODE then
     
    74667116  end
    74677117
    7468   #== Region# domain の根っことなる region を得る
    7469   # Region のインスタンスを返す
    7470   # domain 指定子があれば、そのリージョンがドメインルートである
    7471   # なければ、親リージョンのドメインルートとする
     7118  #== Region# domain の根っことなる region を得る
     7119  # Region のインスタンスを返す
     7120  # domain 指定子があれば、そのリージョンがドメインルートである
     7121  # なければ、親リージョンのドメインルートとする
    74727122  def get_domain_root
    74737123    @domain_root
     
    74937143  end
    74947144
    7495   #== Region# ルートリージョン
    7496   # ルートリージョンは、namespace のルートと同じインスタンス
     7145  #== Region# ルートリージョン
     7146  # ルートリージョンは、namespace のルートと同じインスタンス
    74977147  def selfget_root
    74987148    Namespace.get_root
     
    75157165  end
    75167166
    7517   #=== Region# 構文解析中の region を得る
    7518   # 構文解析中 Namespace (あるいは子クラスの Region) の上位をたどって Region を見つける
    7519   # cell が namespace 下におくことができなければ、ループをまわすå¿
    7520 è¦ã¯ãªã„
     7167  #=== Region# 構文解析中の region を得る
     7168  # 構文解析中 Namespace (あるいは子クラスの Region) の上位をたどって Region を見つける
     7169  # cell が namespace 下におくことができなければ、ループをまわす必要はない
    75217170  def self.get_current
    75227171    # @@region_stack[@@region_stack_sp]
     
    75317180  end
    75327181
    7533   #=== Region# through プラグインで、この region から cell_name.port_name へのプラグインオブジェクトを登録
    7534   # mikan namesppace 対応 (cell_name)
     7182  #=== Region# through プラグインで、この region から cell_name.port_name へのプラグインオブジェクトを登録
     7183  # mikan namesppace 対応 (cell_name)
    75357184  def add_cell_port_through_plugin( cell_name, port_name, subscript, through_plugin_object )
    75367185    if subscript then
     
    75537202  end
    75547203
    7555   #=== Region# to_region への距離(unreachable な場合 nil)
    7556   # mikan Cell#check_region とRegion へたどり着くまでための処理にå
    7557 ±é€šæ€§ãŒé«˜ã„
    7558   # region#distance は require で用いられる
     7204  #=== Region# to_region への距離(unreachable な場合 nil)
     7205  # mikan Cell#check_region とRegion へたどり着くまでための処理に共通性が高い
     7206  # region#distance は require で用いられる
    75597207  def distance( to_region )
    75607208
    7561     r1 = self                   # 出発 region
    7562     r2 = to_region              # 目的 region
     7209    r1 = self                   # 出発 region
     7210    r2 = to_region              # 目的 region
    75637211    dist = 0
    75647212
    7565     if ! r1.equal? r2 then      # 同一 region なら呼出し可能
    7566 
    7567       # mikan namespace 対応
     7213    if ! r1.equal? r2 then      # 同一 region なら呼出し可能
     7214
     7215      # mikan namespace 対応
    75687216      f1 = r1.get_family_line
    75697217      len1 = f1.length
     
    75717219      len2 = f2.length
    75727220
    7573       # 不一致になるところ(å
    7574 „弟)を探す
    7575       i = 1  # i = 0 は :RootRegion なのでå¿
    7576 ãšä¸€è‡´
     7221      # 不一致になるところ(兄弟)を探す
     7222      i = 1  # i = 0 は :RootRegion なので必ず一致
    75777223      while( i < len1 && i < len2 )
    75787224        if( f1[i] != f2[i] )then
     
    75827228      end
    75837229
    7584       sibling_level = i     # å
    7585 „弟となるレベル、もしくはどちらか一方が終わったレベル
     7230      sibling_level = i     # 兄弟となるレベル、もしくはどちらか一方が終わったレベル
    75867231
    75877232      # p "sibling_level: #{i}"
     
    75897234      # p "to: #{f2[i].get_name}" if f2[i]
    75907235
    7591       # 呼び側について呼びå
    7592 ƒã®ãƒ¬ãƒ™ãƒ«ã‹ã‚‰å
    7593 „弟レベルまで(out_through をチェックおよび挿å
    7594 ¥ï¼‰
     7236      # 呼び側について呼び元のレベルから兄弟レベルまで(out_through をチェックおよび挿入)
    75957237      i = len1 -1
    75967238      while i >= sibling_level
     
    76157257      end
    76167258
    7617       # å
    7618 „弟レベルにおいて(to_through をチェックおよび挿å
    7619 ¥ï¼‰
     7259      # 兄弟レベルにおいて(to_through をチェックおよび挿入)
    76207260      if f1[sibling_level] && f2[sibling_level] then
    76217261        dbgPrint "going from #{f1[sibling_level].get_name} to #{f2[sibling_level].get_name}\n"
     
    76327272          found = 0
    76337273          f1[sibling_level].get_to_through_list.each { |t|
    7634             if t[0][0] == f2[sibling_level].get_name then   # region 名が一致するか ?
     7274            if t[0][0] == f2[sibling_level].get_name then   # region 名が一致するか ?
    76357275              found = 1
    76367276            end
     
    76437283      end
    76447284
    7645       # 受け側についてå
    7646 „弟レベルから受け側のレベルまで(in_through をチェックおよび挿å
    7647 ¥ï¼‰
     7285      # 受け側について兄弟レベルから受け側のレベルまで(in_through をチェックおよび挿入)
    76487286      i = sibling_level
    76497287      while i < len2
     
    77567394class Import_C < Node
    77577395
    7758   # ヘッダの名前文字列のリスト
     7396  # ヘッダの名前文字列のリスト
    77597397  @@header_list = {}
    77607398  @@header_list2 = []
     
    77637401  include Importable
    77647402
    7765   #=== Import_C# import_C の生成(ヘッダファイルを取込む)
    7766   #header:: Token : import_C の第一引数文字列リテラルトークン
    7767   #define:: Token : import_C の第二引数文字列リテラルトークン
     7403  #=== Import_C# import_C の生成(ヘッダファイルを取込む)
     7404  #header:: Token : import_C の第一引数文字列リテラルトークン
     7405  #define:: Token : import_C の第二引数文字列リテラルトークン
    77687406  def initialize( header, define = nil )
    77697407    super()
    7770     # ヘッダファイル名文字列から前後の "" を取り除く
     7408    # ヘッダファイル名文字列から前後の "" を取り除く
    77717409    # header = header.to_s.gsub( /\A"(.*)"\z/, '\1' )
    77727410    header = CDLString.remove_dquote header.to_s
    77737411
    77747412    if define then
    7775       # 前後の "" を取り除く
     7413      # 前後の "" を取り除く
    77767414      # def_opt = define.to_s.gsub( /\A"(.*)/, '\1' )
    77777415      # def_opt.sub!( /(.*)"\z/, '\1' )
    77787416      def_opt = CDLString.remove_dquote define.to_s
    77797417
    7780       # "," を -D に置き換え
     7418      # "," を -D に置き換え
    77817419      def_opt = def_opt.gsub( /,/, " -D " )
    77827420
    7783       # å
    7784 ˆé ­ã« -D を挿å
    7785 ¥ # mikan 不適切な define å
    7786 ¥åŠ›ãŒã‚った場合、CPP 時にエラー
     7421      # 先頭に -D を挿入 # mikan 不適切な define 入力があった場合、CPP 時にエラー
    77877422      def_opt = def_opt.gsub( /^/, "-D " )
    77887423
    77897424    end
    77907425
    7791     # コマンドライン指定された DEFINE
     7426    # コマンドライン指定された DEFINE
    77927427    $define.each{ |define|
    77937428      if $IN_EXERB then
     
    78137448      if found == false then
    78147449        begin
    7815           # ファイルの stat を取ってみる(なければ例外発生)
     7450          # ファイルの stat を取ってみる(なければ例外発生)
    78167451          File.stat( "#{path}/#{header}" )
    78177452
    7818           # cdl を見つかったファイルパスに再設定
     7453          # cdl を見つかったファイルパスに再設定
    78197454          header_path = "#{path}/#{header}"
    78207455          found = true
     
    78437478    }
    78447479
    7845     # 読込み済み?
     7480    # 読込み済み?
    78467481    if( @@header_list[ header ] ) then
    7847       # 第二引数 define が以前と異なる
     7482      # 第二引数 define が以前と異なる
    78487483      if @@define_list[ header ].to_s != define.to_s then
    78497484        cdl_error( "S1143 import_C: arg2: mismatch with previous one"  )
    78507485      end
    7851       # いずれにせよ読み込まない
     7486      # いずれにせよ読み込まない
    78527487      return
    78537488    end
    78547489
    7855     # ヘッダのリストを記録
     7490    # ヘッダのリストを記録
    78567491    @@header_list[ header ] = header_path
    78577492    @@header_list2 << header
     
    78817516    end
    78827517
    7883     # CPP 出力用 tmp ファイル名
     7518    # CPP 出力用 tmp ファイル名
    78847519    tmp_header = header.gsub( /\//, "_" )
    78857520    tmp_header = "#{$gen}/tmp_#{tmp_header}"
    78867521
    7887     # CPP コマンドラインを作成
     7522    # CPP コマンドラインを作成
    78887523    cmd = "#{$cpp} #{def_opt} #{include_opt} #{tmp_C}"
    78897524
     
    78937528      end
    78947529
    7895       # プリプロセッサコマンドを pipe として開く
    7896           # cmd は cygwin/Linux では bash(sh) 経由で実行される
    7897           # Exerb 版では cmd.exe 経由で実行される
    7898           # この差は引き数の (), $, % などシェルの特別な文字の評価に現れるので注意
     7530      # プリプロセッサコマンドを pipe として開く
     7531          # cmd は cygwin/Linux では bash(sh) 経由で実行される
     7532          # Exerb 版では cmd.exe 経由で実行される
     7533          # この差は引き数の (), $, % などシェルの特別な文字の評価に現れるので注意
    78997534          cpp = IO.popen( cmd, "r:ASCII-8BIT" )
    79007535      begin
     
    79097544        print_exception( evar )
    79107545      ensure
    7911         tmp_file.close if tmp_file    # mikan File.open に失敗した時 tmp_file == nil は保証されている ?
     7546        tmp_file.close if tmp_file    # mikan File.open に失敗した時 tmp_file == nil は保証されている ?
    79127547        cpp.close
    79137548      end
     
    79177552    end
    79187553
    7919     # C 言語のパーサインスタンスを生成
     7554    # C 言語のパーサインスタンスを生成
    79207555    c_parser = C_parser.new
    79217556
    7922     # tmp_header をパース
     7557    # tmp_header をパース
    79237558    c_parser.parse( [tmp_header] )
    79247559
    7925     # 終期化 パーサスタックを戻す
     7560    # 終期化 パーサスタックを戻す
    79267561    c_parser.finalize
    79277562
     
    79847619
    79857620class Import < Node
    7986 # @b_reuse::bool:       å†åˆ©ç”¨ï¼Žã‚»ãƒ«ã‚¿ã‚¤ãƒ—の template 生成不要
    7987 # @b_reuse_real::bool:  実際に再利用
    7988 # @cdl::      string:   import する CDL
    7989 # @cdl_path:: string:   CDL のパス
    7990 # @b_imported:: bool:   import された(コマンドライン指定されていない)
     7621# @b_reuse::bool:       再利用.セルタイプの template 生成不要
     7622# @b_reuse_real::bool:  実際に再利用
     7623# @cdl::      string:   import する CDL
     7624# @cdl_path:: string:   CDL のパス
     7625# @b_imported:: bool:   import された(コマンドライン指定されていない)
    79917626
    79927627  include Importable
    79937628
    7994   # ヘッダの名前文字列のリスト  添字:expand したパス、値:Import
     7629  # ヘッダの名前文字列のリスト  添字:expand したパス、値:Import
    79957630  @@import_list = {}
    79967631
     
    80137648  end
    80147649
    8015   #=== Import# import を行う
    8016   #cdl::      string   cdl へのパス."" で囲まれていることを仮定
    8017   #b_reuse::  bool     true: template を生成しない
     7650  #=== Import# import を行う
     7651  #cdl::      string   cdl へのパス."" で囲まれていることを仮定
     7652  #b_reuse::  bool     true: template を生成しない
    80187653  def initialize( cdl, b_reuse = false, b_imported = true )
    80197654    Import.push self
     
    80217656    super()
    80227657    @@current_import = self
    8023     # ヘッダファイル名文字列から前後の "", <> を取り除くn
     7658    # ヘッダファイル名文字列から前後の "", <> を取り除くn
    80247659    @cdl = cdl.to_s.gsub( /\A["<](.*)[">]\z/, '\1' )
    80257660
    8026     # サーチパスから探す
     7661    # サーチパスから探す
    80277662    found = false
    80287663    @cdl_path = ""
     
    80477682    end
    80487683
    8049     # 読込み済みなら、読込まない
     7684    # 読込み済みなら、読込まない
    80507685    prev = @@import_list[ File.expand_path( @cdl_path ) ]
    80517686    if( prev ) then
     
    80567691    end
    80577692
    8058     # import リストを記録
     7693    # import リストを記録
    80597694    @@import_list[ File.expand_path( @cdl_path ) ] = self
    80607695
    8061     # plugin から import されている場合
     7696    # plugin から import されている場合
    80627697    plugin = Generator.get_plugin
    80637698
    8064     # パーサインスタンスを生成(別パーサで読み込む)
     7699    # パーサインスタンスを生成(別パーサで読み込む)
    80657700    parser = Generator.new
    80667701
    8067     # plugin から import されている場合の plugin 設定
     7702    # plugin から import されている場合の plugin 設定
    80687703    parser.set_plugin plugin
    80697704
    8070     # reuse フラグを設定
     7705    # reuse フラグを設定
    80717706    parser.set_reuse @b_reuse_real
    80727707
    8073     # cdl をパース
     7708    # cdl をパース
    80747709    parser.parse( [@cdl_path] )
    80757710
    8076     # 終期化 パーサスタックを戻す
     7711    # 終期化 パーサスタックを戻す
    80777712    parser.finalize
    80787713    Import.pop
     
    80997734  end
    81007735
    8101   #=== cdl の名前を返す
    8102   # 引数で指定されている cdl 名。一部パスを含む可能性がある
     7736  #=== cdl の名前を返す
     7737  # 引数で指定されている cdl 名。一部パスを含む可能性がある
    81037738  def get_cdl_name
    81047739    @cdl
     
    81067741end
    81077742
    8108 #== generate: signature, celltype, cell へのプラグインのロードと適用
     7743#== generate: signature, celltype, cell へのプラグインのロードと適用
    81097744class Generate < Node
    81107745#@plugin_name:: Symbol
    81117746#@object_nsp:: NamespacePath
    8112 #@option::         String '"', '"' で囲まれている
     7747#@option::         String '"', '"' で囲まれている
    81137748#@plugin_object:: Plugin
    81147749
     
    81197754    @plugin_name = plugin_name
    81207755    @object_nsp = object_nsp
    8121     option = option.to_s    # option は Token
     7756    option = option.to_s    # option Token
    81227757    @option = option
    81237758    @plugin_object = nil
     
    81327767      @plugin_object = object.apply_plugin( @plugin_name, @option )
    81337768    elsif object then
    8134       # V1.5.0 以前の仕様では、signature のみ可能だった
     7769      # V1.5.0 以前の仕様では、signature のみ可能だった
    81357770#      cdl_error( "S1149 $1 not signature" , signature_nsp )
    81367771      cdl_error( "S9999 generate: '$1' neither signature, celltype nor cell", object_nsp )
     
    81427777end
    81437778
    8144 #== 名前空間パス
     7779#== 名前空間パス
    81457780class NamespacePath < Node
    81467781#@b_absolute::Bool
    81477782#@path::[ Symbol,... ]
    8148 #@namespace::Namespace:  @b_absolute == false のとき、基点となる namespace
     7783#@namespace::Namespace:  @b_absolute == false のとき、基点となる namespace
    81497784
    81507785  #=== NamespacePath# initialize
    8151   #ident::Symbol           æœ€åˆã®åå‰, ただし "::" のみの場合は String
    8152   #b_absolute:Bool         "::" で始まっている場合 true
    8153   #namespace::Namespace    b_absolute = false かつ、構文解釈段階以外で呼び出す場合は、å¿
    8154 ãšæŒ‡å®šã™ã‚‹ã“と
     7786  #ident::Symbol           最初の名前, ただし "::" のみの場合は String
     7787  #b_absolute:Bool         "::" で始まっている場合 true
     7788  #namespace::Namespace    b_absolute = false かつ、構文解釈段階以外で呼び出す場合は、必ず指定すること
    81557789  def initialize( ident, b_absolute, namespace = nil )
    81567790    super()
     
    81787812  end
    81797813
    8180   #=== NamespacePath# append する
     7814  #=== NamespacePath# append する
    81817815  #RETURN self
    8182   # このメソッドは、å
    8183 ƒã® NamespacePath オブジェクトを変形して返す
     7816  # このメソッドは、元の NamespacePath オブジェクトを変形して返す
    81847817  def append!( ident )
    81857818    @path << ident
    81867819    return self
    81877820  end
    8188   #=== NamespacePath# append する
    8189   # このメソッドは、å
    8190 ƒã® NamespacePath オブジェクトを変形しない
    8191   #RETURN:: 複製した NamespacePath
     7821  #=== NamespacePath# append する
     7822  # このメソッドは、元の NamespacePath オブジェクトを変形しない
     7823  #RETURN:: 複製した NamespacePath
    81927824  def append( ident )
    81937825    cl = self.clone
     
    82057837  end
    82067838
    8207   #=== NamespacePath#クローンを作成して名前を変更する
     7839  #=== NamespacePath#クローンを作成して名前を変更する
    82087840  def change_name name
    82097841    cl = self.clone
     
    82147846  alias :change_name_clone :change_name
    82157847
    8216   #=== NamespacePath#名前を変更する
    8217   # このインスタンスを参ç
    8218 §ã™ã‚‹ã™ã¹ã¦ã«å½±éŸ¿ã‚’与えることに注意
     7848  #=== NamespacePath#名前を変更する
     7849  # このインスタンスを参照するすべてに影響を与えることに注意
    82197850  def change_name_no_clone name
    82207851    @path[ @path.length - 1 ] = name
     
    82227853  end
    82237854
    8224   #=== NamespacePath:: path 文字列を得る
    8225   # CDL 用の path 文字列を生成
     7855  #=== NamespacePath:: path 文字列を得る
     7856  # CDL 用の path 文字列を生成
    82267857  def to_s
    82277858    get_path_str
     
    82527883  end
    82537884
    8254   #=== NamespacePath:: パスのé
    8255 åˆ—を返す
    8256   # is_absolute? true の場合、ルートからのパス
    8257   #              false の場合、base_namespace からの相対
    8258   # ルート namespace の場合、長さ0のé
    8259 åˆ—を返す
     7885  #=== NamespacePath:: パスの配列を返す
     7886  # is_absolute? true の場合、ルートからのパス
     7887  #              false の場合、base_namespace からの相対
     7888  # ルート namespace の場合、長さ0の配列を返す
    82607889  #
    82617890  def get_path
     
    82637892  end
    82647893
    8265   #=== NamespacePath#フルパスのé
    8266 åˆ—を返す
    8267   # 返されたé
    8268 åˆ—を書き換えてはならない
     7894  #=== NamespacePath#フルパスの配列を返す
     7895  # 返された配列を書き換えてはならない
    82697896  def get_full_path
    82707897    if @b_absolute then
     
    82757902  end
    82767903
    8277   #=== NamespacePath:: 相対パスのベースとなる namespace
    8278   # is_absolute? == false の時のみ有効な値を返す (true なら nil)
     7904  #=== NamespacePath:: 相対パスのベースとなる namespace
     7905  # is_absolute? == false の時のみ有効な値を返す (true なら nil)
    82797906  def get_base_namespace
    82807907    @namespace
    82817908  end
    82827909
    8283   #=== NamespacePath:: C 言語グローバル名を得る
     7910  #=== NamespacePath:: C 言語グローバル名を得る
    82847911  def get_global_name
    82857912    if @b_absolute then
     
    82997926  end
    83007927
    8301   #=== NamespacePath:: 分解して NamespacePath インスタンスを生成する
    8302   #path_str:: String       : namespace または region のパス ex) "::path::A" , "::", "ident"
    8303   #b_force_absolute:: Bool : "::" で始まっていない場合でも絶対パスに扱う
     7928  #=== NamespacePath:: 分解して NamespacePath インスタンスを生成する
     7929  #path_str:: String       : namespace または region のパス ex) "::path::A" , "::", "ident"
     7930  #b_force_absolute:: Bool : "::" で始まっていない場合でも絶対パスに扱う
    83047931  #
    8305   # NamespacePath は通常構文解析されて作成される
    8306   # このメソッドは、オプションなどで指定される文字列を分解して NamespacePath を生成するのに用いる
    8307   # チェックはゆるい。不適切なパス指定は、不適切な NamespacePath が生成される
     7932  # NamespacePath は通常構文解析されて作成される
     7933  # このメソッドは、オプションなどで指定される文字列を分解して NamespacePath を生成するのに用いる
     7934  # チェックはゆるい。不適切なパス指定は、不適切な NamespacePath が生成される
    83087935  def self.analyze( path_str, b_force_absolute = false )
    83097936
     
    83447971end
    83457972
    8346 # 以下単体テストコード
     7973# 以下単体テストコード
    83477974if $unit_test then
    83487975  root_namespace = Namespace.new("::")
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/core/ctypes.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 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 # CType は C_parser で定義される型を扱う CIntType, CFloatType などに include するもの
    56 # CIntType は IntType を継承するなど、C の型では TECS の型を継承する
     40# CType は C_parser で定義される型を扱う CIntType, CFloatType などに include するもの
     41# CIntType は IntType を継承するなど、C の型では TECS の型を継承する
    5742module CType
    5843
    59   #=== 構文要素 type_specifier が複数指定されている場合に merge する
    60   # merge は const(CIntType) unsigned(CIntTtype), long(CIntType), などと他の型をマージする
    61   # const, unsigned, long などは、単体で int (CIntType) 型になりうる
     44  #=== 構文要素 type_specifier が複数指定されている場合に merge する
     45  # merge は const(CIntType) unsigned(CIntTtype), long(CIntType), などと他の型をマージする
     46  # const, unsigned, long などは、単体で int (CIntType) 型になりうる
    6247  #
    63   # mikan C の文法を厳密にはチェックしていない  long struct 等もできてしまう
     48  # mikan C の文法を厳密にはチェックしていない  long struct 等もできてしまう
    6449  def merge another
    6550
    6651    # p "self: #{self.class} kind_of( IntType ): #{self.kind_of?( IntType )}  another: #{another.class}"
    6752
    68     # signed, unsigned が Symbol として来る事は無くなった
     53    # signed, unsigned が Symbol として来る事は無くなった
    6954    # if another.instance_of? Symbol then
    70     #   # ここで Symbol は :SIGNED, :UNSIGNED のいずれか
     55    #   # ここで Symbol は :SIGNED, :UNSIGNED のいずれか
    7156    #
    72     #   # CIntType か?
     57    #   # CIntType か?
    7358    #   if self.instance_of? CIntType then
    7459    #     self.set_sign another
     
    8469          @bit_size = -5  # long long
    8570        else
    86           # self は int 型、another の bit_size が (int 以外であれば)そちらにする
    87           # mikan 上記以外で 両方 -3 でなければ、本来エラー
     71          # self は int 型、another の bit_size が (int 以外であれば)そちらにする
     72          # mikan 上記以外で 両方 -3 でなければ、本来エラー
    8873          @bit_size = another.get_bit_size
    8974        end
     
    9176
    9277      if another.get_sign then
    93         # another で sign が指定されていれば、そちらのものを採用する mikan 矛盾のチェック
     78        # another で sign が指定されていれば、そちらのものを採用する mikan 矛盾のチェック
    9479        @sign = another.get_sign
    9580      end
    9681
    9782#      if another.get_qualifier then
    98 #        # another で qualifier が指定されていれば、そちらのものを採用する mikan 矛盾のチェック
     83#        # another で qualifier が指定されていれば、そちらのものを採用する mikan 矛盾のチェック
    9984#        @qualifier = another.get_qualifier
    10085#      end
     
    11095      return another.merge self
    11196    elsif self.instance_of?( CDefinedType ) then
    112       # mikan unsigned などとの merge の不正検出
     97      # mikan unsigned などとの merge の不正検出
    11398      if another.is_const? then
    11499        @b_const = true
     
    135120    elsif self.instance_of?( CFloatType ) then
    136121      # mikan long double
    137       #   TECS には long double を表現する手段がない (double80_t を定義すればよいか?)
     122      #   TECS には long double を表現する手段がない (double80_t を定義すればよいか?)
    138123#      cdl_warning( "C1003 $1 & $2 incompatible (\'long double\' is not supported.). Treated as $3." , self.class, another.class, self.class )
    139124#      cdl_warning( "W9999 $1 & $2 incompatible (\'long double\' is not supported.). Treated as $3." , self.get_type_str, another.get_type_str, self.get_type_str )
     
    145130  end
    146131
    147   #=== qualifier を設定する
    148   #     å
    149 ƒã® Type クラスでは矛盾チェックしない(TECSの本来の文法では重複指定できないため)
     132  #=== qualifier を設定する
     133  #     元の Type クラスでは矛盾チェックしない(TECSの本来の文法では重複指定できないため)
    150134  def set_qualifier( qual )
    151135
     
    184168
    185169  def initialize( bit_size )
    186     #p super.class   mikan super.class が Symbol だ、なぜ?
     170    #p super.class   mikan super.class が Symbol だ、なぜ?
    187171    super( bit_size )
    188172  end
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/core/expression.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 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$
     
    7156
    7257  #=== Expression# to_s
    73   # C 言語ソース向きの文字列を生成 (globa_name)
     58  # C 言語ソース向きの文字列を生成 (globa_name)
    7459  def to_s
    7560    elements_to_s( @elements )
     
    7762
    7863  #=== Expression# to_str
    79   # C 言語ソース向きの文字列を生成 (globa_name)
     64  # C 言語ソース向きの文字列を生成 (globa_name)
    8065  def to_str( name_list, pre, post )
    8166    elements_to_s( @elements, name_list, pre, post )
     
    8368
    8469  #=== Expression#to_CDL_str
    85   # CDL 表現の文字列を生成
     70  # CDL 表現の文字列を生成
    8671  def to_CDL_str
    8772    return to_s
    8873  end
    8974
    90   #=== 定数式として評価する(トライしてみる)
     75  #=== 定数式として評価する(トライしてみる)
    9176  #
    92   # このメソッドは、定数式を評価する
    93   # ・attribute, var の初期化子
    94   # ・size_is, count_is 引数
    95   # ・é
    96 åˆ—の添数
     77  # このメソッドは、定数式を評価する
     78  # ・attribute, var の初期化子
     79  # ・size_is, count_is 引数
     80  # ・配列の添数
    9781  #
    98   # name_list(NamedList|Nil): 式から参ç
    99 §å¯èƒ½ãªãƒªã‚¹ãƒˆï¼Ž
    100   # NamedList の要素は  size_is, count_is の引数評価の場合 ParamDecl (関数仮引数)
     82  # name_list(NamedList|Nil): 式から参照可能なリスト.
     83  # NamedList の要素は  size_is, count_is の引数評価の場合 ParamDecl (関数仮引数)
    10184  #
    102   # name_list2(NamedList|Nil) : NamedList の要素は Decl (attribute, var) である.省略時 nil
     85  # name_list2(NamedList|Nil) : NamedList の要素は Decl (attribute, var) である.省略時 nil
    10386  #
    104   # RETURN: 評価した定数.評価できなかった場合は nil を返す
     87  # RETURN: 評価した定数.評価できなかった場合は nil を返す
    10588  #
    106   # 型は get_type で、評価する(定数として求められないときに使用できる)
    107   # Array を返すのは attr{ int *a = {1, 2, 3}; int *b = a; }; の b の右辺を評価した場合
     89  # 型は get_type で、評価する(定数として求められないときに使用できる)
     90  # Array を返すのは attr{ int *a = {1, 2, 3}; int *b = a; }; の b の右辺を評価した場合
    10891
    10992  def eval_const( name_list, name_list2 = nil )
     
    11699      return val.to_i
    117100    elsif val.kind_of? PointerVal then
    118       return val.to_i           # mikan エラー V1008 が発生してしまう
     101      return val.to_i           # mikan エラー V1008 が発生してしまう
    119102      # elsif val.kind_of? EnumVal then
    120103      # enum mikan
    121104    else
    122       # C_EXP, Array または nil :そのまま返す
     105      # C_EXP, Array または nil :そのまま返す
    123106      return val
    124107    end
    125108  end
    126109
    127   #=== 定数式として評価する2(トライしてみる)
     110  #=== 定数式として評価する2(トライしてみる)
    128111  #
    129   # IntegerVal, FloatVal をそのまま返す(eval_const では Integer, Float に変換)
     112  # IntegerVal, FloatVal をそのまま返す(eval_const では Integer, Float に変換)
    130113  def eval_const2( name_list, name_list2 = nil, nest = 0 )
    131114    val = elements_eval_const( @elements, name_list, name_list2, nest )
    132115  end
    133116
    134   #=== 式の型を評価する
     117  #=== 式の型を評価する
    135118  #
    136   # eval_const で値が得られない場合、型を導出可能であれば型を得る
    137   # param を含んだ式は定数値を求められないが、型を得ることはできる
    138   # 未定義変数を含んだ型は、得ることができない (ダミー型定義が返る)
    139   def get_type( namedList )        # 名前空間の NamedList を指定
     119  # eval_const で値が得られない場合、型を導出可能であれば型を得る
     120  # param を含んだ式は定数値を求められないが、型を得ることはできる
     121  # 未定義変数を含んだ型は、得ることができない (ダミー型定義が返る)
     122  def get_type( namedList )        # 名前空間の NamedList を指定
    140123    elements_get_type( @elements, namedList )
    141124  end
     
    150133
    151134  def show_tree( indent )
    152     # mikan override してしまった print を呼出す方法がわからないのでこうした
     135    # mikan override してしまった print を呼出す方法がわからないのでこうした
    153136    str = ""
    154137    indent.times { str += "  " }
     
    158141## private
    159142
    160   #=== 式を文字列に変換
    161   #name_list:: attribute (Celltype::@attribute_list), struct の @member_list を仮定している
     143  #=== 式を文字列に変換
     144  #name_list:: attribute (Celltype::@attribute_list), struct の @member_list を仮定している
    162145  def elements_to_s( elements, name_list = nil, pre = nil, post = nil )
    163146    if elements.instance_of? Token then
    164       return elements.to_s    # OP_DOT, OP_REF の右辺
     147      return elements.to_s    # OP_DOT, OP_REF の右辺
    165148    end
    166149
     
    247230  end
    248231
    249   #=== Expression# 逆ポーランド文字列化
    250   #param_list:: ParamlList  関数の引数リスト
     232  #=== Expression# 逆ポーランド文字列化
     233  #param_list:: ParamlList  関数の引数リスト
    251234  def get_rpn( param_list = nil, name_list2 = nil )
    252235    return elements_rpn( @elements, param_list, name_list2 )
    253236  end
    254237
    255   #=== Expression# 逆ポーランド文字列化 (private)
    256   #name_list:: ParamlList  関数の引数リスト
     238  #=== Expression# 逆ポーランド文字列化 (private)
     239  #name_list:: ParamlList  関数の引数リスト
    257240  def elements_rpn( elements, name_list = nil, name_list2 = nil )
    258241    if elements.instance_of? Token then
    259242      print "rpn: #{elements.to_s}\n"
    260       return elements.to_s    # OP_DOT, OP_REF の右辺
     243      return elements.to_s    # OP_DOT, OP_REF の右辺
    261244    end
    262245
     
    354337  end
    355338
    356   # 定数式(elements)を評価する
     339  # 定数式(elements)を評価する
    357340  #
    358   # このメソッドは Expression クラスのメソッドであるå¿
    359 è¦ã¯ãªã„(関数化できる)
     341  # このメソッドは Expression クラスのメソッドである必要はない(関数化できる)
    360342  #
    361   # elements は式の要素
     343  # elements は式の要素
    362344  #
    363   # name_list, name_list2 は eval_const を参ç
    364 §
     345  # name_list, name_list2 は eval_const を参照
    365346  #
    366   # RETURN: 評価した定数、評価できなかった場合は nil を返す
    367 
    368   MAX_NEST_LEVEL = 64    # 簡易のループ検出(参ç
    369 §ã®ãƒã‚¹ãƒˆã‚’ 64 まで許可する)
     347  # RETURN: 評価した定数、評価できなかった場合は nil を返す
     348
     349  MAX_NEST_LEVEL = 64    # 簡易のループ検出(参照のネストを 64 まで許可する)
    370350  def elements_eval_const( elements, name_list, name_list2 = nil, nest = nil )
    371351
     
    374354      nsp = elements[1]
    375355
    376       # #809 の修正しかけ (別の問題が解決しきれていない)
    377       # nest += 1     # 参ç
    378 §ãŒãƒ«ãƒ¼ãƒ—になっていないかのチェック
    379       #               # mikan 本当にループしているかどうかではなく、単純に多数の参ç
    380 §ã‚’繰り返していることで判定している
     356      # #809 の修正しかけ (別の問題が解決しきれていない)
     357      # nest += 1     # 参照がループになっていないかのチェック
     358      #               # mikan 本当にループしているかどうかではなく、単純に多数の参照を繰り返していることで判定している
    381359      # if nest > MAX_NEST_LEVEL then
    382360      #   cdl_error( "E9999: '$1' too many reference (maybe loop) max=$1" , nsp.to_s, MAX_NEST_LEVEL )
     
    393371      end
    394372
    395       # 見つからなければ定数定義から探す
     373      # 見つからなければ定数定義から探す
    396374      if object == nil then
    397         object = Namespace.find( nsp )# mikan namespace の対応 #1
    398       end
    399 
    400 # この実è£
    401 ã¯ã€ã‚‚う少し整理されるべき
    402 # これが呼出されるのは、以下の場合
    403 #   ãƒ»attribute, var の右辺式の評価
    404 #   ãƒ»size_is 引数の評価:関数パラメータの場合とattribute, var の場合がある
    405 # 以下のエラーチェックでは、これらがごっちゃになって誤りを検出しようとしている
    406 
    407       # IDENTIFIER は見つからなかった?
     375        object = Namespace.find( nsp )# mikan namespace の対応 #1
     376      end
     377
     378# この実装は、もう少し整理されるべき
     379# これが呼出されるのは、以下の場合
     380#   ・attribute, var の右辺式の評価
     381#   ・size_is 引数の評価:関数パラメータの場合とattribute, var の場合がある
     382# 以下のエラーチェックでは、これらがごっちゃになって誤りを検出しようとしている
     383
     384      # IDENTIFIER は見つからなかった?
    408385      if object == nil then
    409386        cdl_error( "E1001 $1: not found" , nsp.get_path_str )
     
    411388        return nil
    412389      elsif object.instance_of?( Join ) then
    413         # Join の場合: cell の中の attribute, var, call のどれかが見つかった
    414         # Decl (attribute, var) でない?
     390        # Join の場合: cell の中の attribute, var, call のどれかが見つかった
     391        # Decl (attribute, var) でない?
    415392        if ! object.get_definition.instance_of?( Decl ) then
    416393          cdl_error( "E1002 $1: not constant (port)" , nsp.get_path_str )
     
    419396        return object.get_rhs.eval_const2( name_list, name_list2, nest )
    420397      elsif ! object.instance_of?( Decl ) then
    421         # Decl でない場合: 定数でもない
     398        # Decl でない場合: 定数でもない
    422399        if ( ! object.instance_of?( ParamDecl ) ) then
    423                                                       # mikan paramdecl は無視する
    424                                                       # ParamList から呼ばれたとき
     400                                                      # mikan paramdecl は無視する
     401                                                      # ParamList から呼ばれたとき
    425402          cdl_error( "E1003 $1: not constant" , nsp.get_path_str )
    426403        else
     
    432409        object.referenced
    433410        if object.get_initializer == nil then
    434           # 初期化子の存在しない変数   # mikan ここへくるのは、通常ありえないはず(未検証)
     411          # 初期化子の存在しない変数   # mikan ここへくるのは、通常ありえないはず(未検証)
    435412          return IntegerVal.new( 0 )
    436413        else
    437           # Decl の右辺の評価
    438           # mikan size_is 引数に現れる変数の型が適切かのチェックする
     414          # Decl の右辺の評価
     415          # mikan size_is 引数に現れる変数の型が適切かのチェックする
    439416          if object.get_initializer.instance_of?( Expression ) || object.get_initializer.instance_of?( C_EXP ) then
    440417            return object.get_initializer.eval_const2( name_list, name_list2, nest )
    441418          else
    442             # Array の場合
     419            # Array の場合
    443420            return object.get_initializer
    444421          end
     
    556533# p "val.respond_to?( \"-@\" )=#{val.respond_to?( "-@" )} #{val.class}"
    557534# p "val.respond_to?( \"~@\" )=#{val.respond_to?( "~@" )}"
    558 #2.0      if val.respond_to?( "~@" ) then  # Ruby 1.9, 2.0 preview 版では例外が発生してしまう
     535#2.0      if val.respond_to?( "~@" ) then  # Ruby 1.9, 2.0 preview 版では例外が発生してしまう
    559536      if val.kind_of? IntegerVal then
    560537        return ~ val
     
    702679  def elements_get_type( elements, namedList )
    703680    type = elements_get_type_sub( elements, namedList )
    704     # 返された方が DefinedType の場合 å
    705 ƒã®åž‹ã‚’返す
     681    # 返された方が DefinedType の場合 元の型を返す
    706682    if type.kind_of?( DefinedType ) then
    707683      type = type.get_type
     
    742718      unless type.kind_of?( PtrType ) then
    743719        cdl_error( "E1013 \'*\': operand is not pointer value"  )
    744         return IntType.new( 8 )    # IntType を返しておく
     720        return IntType.new( 8 )    # IntType を返しておく
    745721      end
    746722      return type.get_referto
    747723
    748724    when :OP_U_PLUS, :OP_U_MINUS
    749       # mikan operand が適切な型かチェックしていない
     725      # mikan operand が適切な型かチェックしていない
    750726      return elements_get_type( elements[1], namedList )
    751727
    752728    when :OP_ADD, :OP_SUB, :OP_MULT, :OP_DIV, :OP_REMAIN
    753       # mikan operand が適切な型かチェックしていない&左辺の型を採用している
     729      # mikan operand が適切な型かチェックしていない&左辺の型を採用している
    754730      return elements_get_type( elements[1], namedList )
    755731
    756732    when :OP_U_TILDE
    757       # mikan operand が整数かチェックしていない
     733      # mikan operand が整数かチェックしていない
    758734      return elements_get_type( elements[1], namedList )
    759735    when :OP_AND, :OP_EOR, :OP_OR, :OP_LSFT, :OP_RSFT
    760       # mikan operand が整数かチェックしていない
     736      # mikan operand が整数かチェックしていない
    761737      return BoolType.new
    762738    when :OP_U_EXCLAM
    763       # mikan operand が整数かチェックしていない
     739      # mikan operand が整数かチェックしていない
    764740      return BoolType.new
    765741
     
    771747  end
    772748
    773   # 式が size_is, count_is, string の引数である場合の方向のチェック
     749  # 式が size_is, count_is, string の引数である場合の方向のチェック
    774750  def elements_check_dir_for_param( elements, namedList, dir, spec )
    775    # dir : å
    776 ƒã®å¼•æ•°ã®æ–¹å‘
    777    # direct: size_is などの引数の変数の方向
     751   # dir : 元の引数の方向
     752   # direct: size_is などの引数の変数の方向
    778753
    779754    case elements[0]
     
    806781          judge = true if ( direct == :IN || direct == :INOUT )
    807782          req_direct = "in or inout"
    808         when :OUT, :RECEIVE     # mikan out で count_is のみ指定されている場合 in でなくてはならない
     783        when :OUT, :RECEIVE     # mikan out で count_is のみ指定されている場合 in でなくてはならない
    809784          judge = true if ( direct == :OUT || direct == :INOUT )
    810785          req_direct = "out or inout"
     
    822797      return true
    823798
    824     # 単é 
    825 æ¼”算子
     799    # 単項演算子
    826800    when :OP_U_ASTER, :OP_SIZEOF_EXPR, :OP_SIZEOF_TYPE, :OP_U_PLUS, :OP_U_MINUS, :OP_U_TILDE, :OP_U_EXCLAM, :CAST, :OP_U_AMP, :PARENTHESES,
    827801      elements_check_dir_for_param( elements[1], namedList, dir, spec )
    828802
    829     # 2é 
    830 æ¼”算子
     803    # 2項演算子
    831804    when :OP_SUBSC, :OP_DOT, :OP_REF, :OP_MULT, :OP_DIV, :OP_REMAIN, :OP_ADD, :OP_SUB, :OP_LSFT, :OP_RSFT, :OP_LT, :OP_GT, :OP_LE, :OP_GE, :OP_EQ, :OP_NE, :OP_AND, :OP_EOR, :OP_OR, :OP_LAND, :OP_LOR
    832805      return elements_check_dir_for_param( elements[1], namedList, dir, spec ) && elements_check_dir_for_param( elements[2], namedList, dir, spec )
    833806
    834     # 3é 
    835 æ¼”算子
     807    # 3項演算子
    836808    when :OP_CEX
    837809      return elements_check_dir_for_param( elements[1], namedList, dir, spec ) && elements_check_dir_for_param( elements[2], namedList, dir, spec ) && elements_check_dir_for_param( elements[3], namedList, dir, spec )
     
    845817  #Express# get_allocator_rhs_elem
    846818  #alloc_type::Symbol  :NORMAL_ALLOC|:INTERNAL_ALLOC|:RELAY_ALLOC
    847   #式がアロケータ指定子の右辺として妥当かチェックし、正しければ分解した値を返す
     819  #式がアロケータ指定子の右辺として妥当かチェックし、正しければ分解した値を返す
    848820  #return:
    849821  #  :NORMAL_ALLOC      [ cell_nsp, ep_name ]               # rhs = cell_nsp.ep_name    ex) Alloc.eAlloc
     
    883855  end
    884856
    885   #Expression#Expression のクローンを作成する
     857  #Expression#Expression のクローンを作成する
    886858  def clone_for_composite
    887859    cl = self.clone
     
    891863  end
    892864
    893   #Expression#elements のクローンを作成
     865  #Expression#elements のクローンを作成
    894866  #elements::Array
    895   # このメソッドは、Array のディープコピーを行う
     867  # このメソッドは、Array のディープコピーを行う
    896868  def clone_elements elements
    897869    elements = elements.clone
     
    910882  end
    911883
    912   #=== Expression#セル結合の式を解析する
     884  #=== Expression#セル結合の式を解析する
    913885  # Cell.eEntry  => [ :OP_DOT, [ :IDENTIFIER, token ], token ]
    914886  # Cell.eEntry[expression] => [ :OP_SUBSC, [ :OP_DOT, [ :IDENTIFIER, token ], token ], expression ]
    915887  # Return: [ NamespacePath(cell_name), Integer(subscript) or nil, Token(port_name)]
    916888  def analyze_cell_join_expression
    917     # 右辺の Expression の要素を取り出す
     889    # 右辺の Expression の要素を取り出す
    918890    elements = @elements
    919     if elements[0] == :OP_SUBSC then  # 右辺:受け口é
    920 åˆ—?
     891    if elements[0] == :OP_SUBSC then  # 右辺:受け口配列?
    921892      # elements = [ :OP_SUBSC, [ :OP_DOT, [ :IDENTIFIER, token ], token ], expression ]
    922       subscript = elements[2].eval_const(nil)  # 受け口é
    923 åˆ—の添数
    924       elements  = elements[1]          # mikan é
    925 åˆ—だった場合
     893      subscript = elements[2].eval_const(nil)  # 受け口配列の添数
     894      elements  = elements[1]          # mikan 配列だった場合
    926895    else
    927896      subscript = nil
     
    939908  end
    940909
    941   #=== Expression# セルへの結合の式を生成する
     910  #=== Expression# セルへの結合の式を生成する
    942911  #nsp:: NamespacePath
    943912  #subscript:: Integer
    944913  #port_name:: Symbol
    945   # analyze_cell_join_expression と対になっている
     914  # analyze_cell_join_expression と対になっている
    946915  def self.create_cell_join_expression( nsp, subscript, port_name, locale = nil )
    947916    if ! port_name.instance_of?( Symbol ) then
     
    959928  end
    960929
    961   #=== Expression#整数定数の式を生成する
    962   #val:: Integer : 値: 整数
     930  #=== Expression#整数定数の式を生成する
     931  #val:: Integer : 値: 整数
    963932  def self.create_integer_constant( val, locale = nil )
    964933    if val != Integer( val ) || val < 0 then
     
    968937  end
    969938
    970   #=== Expression#単一の識別子の式を解析する
     939  #=== Expression#単一の識別子の式を解析する
    971940  # Identifier  => [ :IDENTIFIER, token ]
    972941  # Return: NamespacePath(Identifier)
    973942  def analyze_single_identifier
    974     # 右辺の Expression の要素を取り出す
     943    # 右辺の Expression の要素を取り出す
    975944    elements = @elements
    976945    if elements[0] == :IDENTIFIER
     
    982951
    983952  #=== Expression#
    984   #nsp:: NamespacePath :  参ç
    985 §ã™ã‚‹ã‚‚の識別子
     953  #nsp:: NamespacePath :  参照するもの識別子
    986954  def self.create_single_identifier( nsp, locale )
    987955    if ! nsp.instance_of?( NamespacePath ) then
     
    991959  end
    992960
    993   #=== 評価可能かチェックする
    994   #*v:: 可変個引数(任意の型)
    995   # すべてが BaseVal の子クラス(値)であれば、評価可能と判断する
     961  #=== 評価可能かチェックする
     962  #*v:: 可変個引数(任意の型)
     963  # すべてが BaseVal の子クラス(値)であれば、評価可能と判断する
    996964  def evaluable?( *v )
    997965    v.each{ |val|
     
    1012980
    1013981  #c_exp_string::String
    1014   #b_renew::Bool  : true なら C_EXP の clone 作成(エスケープ処理等をしない)
     982  #b_renew::Bool  : true なら C_EXP の clone 作成(エスケープ処理等をしない)
    1015983  def initialize( c_exp_string, b_renew = false )
    1016984    if b_renew then
    1017985      @c_exp_string = c_exp_string
    1018986    else
    1019       # 前後の " を取り除く
     987      # 前後の " を取り除く
    1020988      # str = c_exp_string.to_s.sub( /^\"(.*)\"$/, "\\1" )
    1021989      str = CDLString.remove_dquote c_exp_string.to_s
     
    1024992  end
    1025993
    1026   #=== composite 用に C_EXP を clone する
     994  #=== composite 用に C_EXP を clone する
    1027995  #ct_name::
    1028996  #cell_name::
    1029   # composite の attribute に現れる C_EXP を文字列置換して生成しなおす.
    1030   # この文字列置換は、意味解釈段階で行う.
    1031   # 他の C_EXP の文字列置換は、コード生成段階で行う.
     997  # composite の attribute に現れる C_EXP を文字列置換して生成しなおす.
     998  # この文字列置換は、意味解釈段階で行う.
     999  # 他の C_EXP の文字列置換は、コード生成段階で行う.
    10321000  def clone_for_composite( ct_name, cell_name, locale )
    10331001    dbgPrint "C_EXP: #{ct_name} #{cell_name} #{@c_exp_string}\n"
     
    10441012  end
    10451013
    1046   #=== C_EXP を評価する
    1047   # C_EXP の引き数文字列を返す
    1048   # 本来 C_EXP は eval_const する対象ではないが、便宜上 eval_const で対応
     1014  #=== C_EXP を評価する
     1015  # C_EXP の引き数文字列を返す
     1016  # 本来 C_EXP は eval_const する対象ではないが、便宜上 eval_const で対応
    10491017  def eval_const( name_list, name_list2 = nil )
    10501018     return self
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/core/gen_xml.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$
     
    8065
    8166  def gen_XML( file, nest )
    82     # signature のコードを生成
     67    # signature のコードを生成
    8368    @signature_list.each { |s|
    8469      s.gen_XML file, nest
    8570    }
    8671
    87     # celltype のコードを生成
     72    # celltype のコードを生成
    8873    @celltype_list.each { |t|
    8974      t.gen_XML( file, nest )
    9075    }
    9176
    92     # composite のコードを生成
     77    # composite のコードを生成
    9378    @compositecelltype_list.each { |t|
    9479      t.gen_XML( file, nest )
    9580    }
    9681
    97     # cell のコードを生成
     82    # cell のコードを生成
    9883    @cell_list.each { |t|
    9984      t.gen_XML( file, nest )
    10085    }
    10186
    102     # サブネームスペースのコードを生成
     87    # サブネームスペースのコードを生成
    10388    @namespace_list.each { |n|
    10489      kind = n.instance_of?( Namespace ) ? "namespace" : "region"
     
    250235
    251236#
    252 # Celltype とå
    253 ±ç”¨å¯èƒ½ãªã¯ãšã ãŒã€ä»¥ä¸‹ã®ç‚¹ã®å¤‰æ›´ãŒå¿
    254 è¦
    255 #  @active ⇒ @b_active
    256 #  @singleton ⇒ @b_singleton
    257 #  @attribute ⇒ @name_list (Decl)
    258 #  @port ⇒ @name_list (Port)
     237# Celltype と共用可能なはずだが、以下の点の変更が必要
     238#  @active ⇒ @b_active
     239#  @singleton ⇒ @b_singleton
     240#  @attribute ⇒ @name_list (Decl)
     241#  @port ⇒ @name_list (Port)
    259242class CompositeCelltype
    260243  def gen_XML file, nest
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/core/generate.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2019 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$
     
    134119end
    135120
    136 # celltype_private.h を生成
     121# celltype_private.h を生成
    137122
    138123class Namespace
     
    141126
    142127    begin
    143       # root namespace ならば makefile を出力する(å
    144 ¨ã‚»ãƒ«ã‚¿ã‚¤ãƒ—に関わるものだけ)
    145       # å
    146 ˆã«å‡ºåŠ›ã™ã‚‹
     128      # root namespace ならば makefile を出力する(全セルタイプに関わるものだけ)
     129      # 先に出力する
    147130      if @name == "::" then
    148131
     
    159142
    160143      dbgPrint "generating region: #{$generating_region.get_name} namespace=#{@name} gen_dir=#{$gen}\n"
    161       # global_tecsgen.h (typedef, struct, const) の生成
     144      # global_tecsgen.h (typedef, struct, const) の生成
    162145      gen_global_header
    163146
     
    171154      end
    172155     
    173       # signature のコードを生成
     156      # signature のコードを生成
    174157      @signature_list.each { |s|
    175158        s.generate
    176159      }
    177160
    178       # celltype のコードを生成
     161      # celltype のコードを生成
    179162      @celltype_list.each { |t|
    180163        t.generate
    181164      }
    182165
    183       # サブネームスペースのコードを生成
     166      # サブネームスペースのコードを生成
    184167      @namespace_list.each { |n|
    185168        n.generate
     
    187170
    188171    rescue => evar
    189       # もしスタックトレースが出るまでい時間がかかるようならば、次をコメントアウトしてみるべし
     172      # もしスタックトレースが出るまでい時間がかかるようならば、次をコメントアウトしてみるべし
    190173      cdl_error( "H1001 tecsgen: fatal internal error during code generation"  )
    191174      print_exception( evar )
     
    200183
    201184    begin
    202       # global_tecsgen.h (typedef, struct, const) の終わりのガードコード生成
     185      # global_tecsgen.h (typedef, struct, const) の終わりのガードコード生成
    203186      gen_global_header_post
    204187
    205       # signature のコードを生成
     188      # signature のコードを生成
    206189      @signature_list.each { |s|
    207190        s.generate_post
    208191      }
    209192
    210       # celltype のコードを生成
     193      # celltype のコードを生成
    211194      @celltype_list.each { |t|
    212195        t.generate_post
    213196      }
    214197
    215       # サブネームスペースのコードを生成
     198      # サブネームスペースのコードを生成
    216199      @namespace_list.each { |n|
    217200        n.generate_post
     
    227210  def gen_global_header
    228211
    229     # global_tecs.h の生成
     212    # global_tecs.h の生成
    230213    f = AppFile.open( "#{$gen}/global_tecsgen.#{$h_suffix}" )
    231214
     
    233216      print_note f
    234217
    235       # ガードコードを出力
     218      # ガードコードを出力
    236219      f.print <<EOT
    237220#ifndef GLOBAL_TECSGEN_H
     
    240223EOT
    241224
    242       # import_C で指定されたヘッダファイルの #include を出力
     225      # import_C で指定されたヘッダファイルの #include を出力
    243226      if Import_C.get_header_list2.length > 0 then
    244         # ヘッダ include の出力
     227        # ヘッダ include の出力
    245228        f.printf TECSMsg.get( :IMP_comment ), "#_IMP_#"
    246229        Import_C.get_header_list2.each{ |h|
     
    253236    end
    254237
    255     # typedef, struct, enum を生成
     238    # typedef, struct, enum を生成
    256239    @decl_list.each { |d|
    257240
    258       # d は Typedef, StructType, EnumType のいずれか
     241      # d は Typedef, StructType, EnumType のいずれか
    259242      if d.instance_of?( Typedef ) then
    260243
    261         # Typedef の場合、declarator の @type が CType でないか
     244        # Typedef の場合、declarator の @type が CType でないか
    262245        if ! d.get_declarator.get_type.kind_of?( CType ) then
    263246          d.gen_gh f
     
    265248      elsif ! d.kind_of?( CType ) then
    266249
    267         # CType ではない (StructType または EnumType)
     250        # CType ではない (StructType または EnumType)
    268251        d.gen_gh f
    269252#     else
    270 #       ã“こに該当するのは CStructType, CEnumType
     253#       ここに該当するのは CStructType, CEnumType
    271254      end
    272255    }
     
    297280    end
    298281
    299     # const を生成  mikan
     282    # const を生成  mikan
    300283    @const_decl_list.each { |d|
    301284      f.printf( "#define %-14s ((%s%s)%s)\n", d.get_global_name,
     
    310293  def gen_global_header_post
    311294
    312     # global_tecs.h を開く
     295    # global_tecs.h を開く
    313296    f = AppFile.open( "#{$gen}/global_tecsgen.#{$h_suffix}" )
    314297
     
    324307  end
    325308
    326   #=== Makefile.tecsgen, Makefile.templ の出力
    327   # å
    328 ¨ã‚»ãƒ«ã‚¿ã‚¤ãƒ—名を出力する部分を出力
    329   #    (本メソッドは root namespace に対して呼出す)
    330   #     å€‹ã€
    331 ã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—のメークルールは Celltype クラスで出力
     309  #=== Makefile.tecsgen, Makefile.templ の出力
     310  # 全セルタイプ名を出力する部分を出力
     311  #    (本メソッドは root namespace に対して呼出す)
     312  #     個々のセルタイプのメークルールは Celltype クラスで出力
    332313  def gen_makefile
    333314    gen_makefile_template
     
    339320    return if $generate_no_template
    340321
    341     ### Makefile.templ の生成
     322    ### Makefile.templ の生成
    342323    f = AppFile.open( "#{$gen}/Makefile.templ" )
    343324
    344325    print_Makefile_note f
    345326
    346     # Makefile の変数の出力
     327    # Makefile の変数の出力
    347328    f.printf TECSMsg.get( :MVAR_comment ), "#_MVAR_#"
    348329    f.printf "# fixed variable (unchangeable by config or plugin)\n"
    349330
    350     # TARGET の出力 (第一引数 $target に region 名および .exe を付加)
     331    # TARGET の出力 (第一引数 $target に region 名および .exe を付加)
    351332    target = $target
    352333    if $generating_region != @@root_namespace then
    353       # 子 region のリンクターゲットの場合
     334      # 子 region のリンクターゲットの場合
    354335      target += "-#{$generating_region.get_global_name}"
    355336    end
     
    433414EOT
    434415
    435     # make ルールの出力
     416    # make ルールの出力
    436417    f.printf( TECSMsg.get( :MRUL_comment), "#_MRUL_#" )
    437418
     
    461442    f.print "-include $(GEN_DIR)/Makefile.tecsgen\n"
    462443    if $generating_region.get_n_cells != 0 then
    463       # Makefile.depend の include
     444      # Makefile.depend include
    464445      f.print "-include $(GEN_DIR)/Makefile.depend\n\n"
    465446
     
    471452      f.print "\nsub_regions:$(TIMESTAMP)\n"
    472453      Region.get_link_roots.each {|region|
    473         if region.get_global_name != "" then  # Root region: この Makefile 自身
     454        if region.get_global_name != "" then  # Root region: この Makefile 自身
    474455          f.print "\tcd #{region.get_global_name}; make all\n"
    475456        end
     
    478459    end
    479460
    480     # clean: ターゲット
     461    # clean: ターゲット
    481462    f.print "clean :\n"
    482463    if $generating_region == @@root_namespace then
    483464      Region.get_link_roots.each {|region|
    484         if region.get_global_name != "" then  # Root region: この Makefile 自身
     465        if region.get_global_name != "" then  # Root region: この Makefile 自身
    485466          f.print "\tcd #{region.get_global_name}; make clean\n"
    486467        end
     
    493474    f.print "\n"
    494475
    495     # tecs: ターゲット
     476    # tecs: ターゲット
    496477    if $generating_region == @@root_namespace then
    497478      f.print "tecs : $(PRE_TECSGEN_TARGET) $(TIMESTAMP) $(POST_TECSGEN_TARGET)\n\n"
     
    504485    end
    505486
    506     # tecsflow:, tcflow ターゲット
     487    # tecsflow:, tcflow ターゲット
    507488    if $generating_region.get_n_cells != 0 || $generating_region == @@root_namespace then
    508489      f.print "#####  TECSFlow targets  #####\n"
     
    561542
    562543  def gen_makefile_tecsgen
    563     ### Makefile.tecsgen の生成
     544    ### Makefile.tecsgen の生成
    564545    f = AppFile.open( "#{$gen}/Makefile.tecsgen" )
    565546
     
    658639    domain_regions = nil
    659640    DomainType.get_domain_regions.each{ |dt, regions|
    660       # domain_type は一つのノードには、一つしかないので、このループは、å¿
    661 ãšä¸€å›žã—か回らない
    662         ###   mikan 複数のノードがあり、異なる domain_type が指定される可能性はある
     641      # domain_type は一つのノードには、一つしかないので、このループは、必ず一回しか回らない
     642        ###   mikan 複数のノードがあり、異なる domain_type が指定される可能性はある
    663643      domain_regions = regions
    664644      domain_type = dt
     
    836816  end
    837817
    838   #=== すべてのセルタイプの名前を出力
    839   #f::       FILE:   å‡ºåŠ›å
    840 ˆãƒ•ã‚¡ã‚¤ãƒ«
    841   #prepend:: string: 前置文字列
    842   #append::  string: 後置文字列
    843   #b_plguin::  bool:   plugin により生成されたセルタイプを出力
    844   ##b_inline_only::  bool:   true ならば inline の entry port のみのセルタイプを含める
    845   #b_inline_only_or_proc::  bool|Proc:   true ならば inline の entry port のみ、かつインアクティブなセルタイプを含める
    846   #                                      Proc ならば Proc を実行した結果 true ならば含める
    847   #  namespace "::" から呼出される
     818  #=== すべてのセルタイプの名前を出力
     819  #f::       FILE:   出力先ファイル
     820  #prepend:: string: 前置文字列
     821  #append::  string: 後置文字列
     822  #b_plguin::  bool:   plugin により生成されたセルタイプを出力
     823  ##b_inline_only::  bool:   true ならば inline の entry port のみのセルタイプを含める
     824  #b_inline_only_or_proc::  bool|Proc:   true ならば inline の entry port のみ、かつインアクティブなセルタイプを含める
     825  #                                      Proc ならば Proc を実行した結果 true ならば含める
     826  #  namespace "::" から呼出される
    848827  def gen_celltype_names( f, prepend, append, b_plugin, b_inline_only_or_proc = true )
    849828    dbgPrint "gen_celltype_names #{@name}\n"
     
    865844  end
    866845
    867   #=== すべてのセルタイプの名前を出力
     846  #=== すべてのセルタイプの名前を出力
    868847  #region:: Region:
    869   # gen_celltype_names とgen_celltype_names_domain の相違:
    870   #   region を domain_roots に含む場合、出力する.
    871   #   ã¾ãŸã¯ã€region を含まないが、domain_roots が複数かつルートリージョンの場合、出力する.
    872   # それ以外は、gen_celltype_names の説明を参ç
    873 §
     848  # gen_celltype_names とgen_celltype_names_domain の相違:
     849  #   region を domain_roots に含む場合、出力する.
     850  #   または、region を含まないが、domain_roots が複数かつルートリージョンの場合、出力する.
     851  # それ以外は、gen_celltype_names の説明を参照
    874852  def gen_celltype_names_domain( f, prepend, append, domain_type, region, b_plugin, b_inline_only = true )
    875853    dbgPrint "gen_celltype_names #{@name}\n"
     
    901879    }
    902880  end
    903   #== Namespace#すべてのセルタイプの名前を出力
    904   # セルタイプコードのための名前出力
    905   # gen_celltype_names_domain と gen_celltype_names_domain2 の相違
    906   # ・どれか一つのリージョンにしか出さない
    907   #     domain_roots が1つだけで、指定リージョンを含む
    908   #     domain_roots が2つ以上で、指定リージョンがルートリージョン
    909   # ・ドメイン名を付加しない
     881  #== Namespace#すべてのセルタイプの名前を出力
     882  # セルタイプコードのための名前出力
     883  # gen_celltype_names_domain と gen_celltype_names_domain2 の相違
     884  # ・どれか一つのリージョンにしか出さない
     885  #     domain_roots が1つだけで、指定リージョンを含む
     886  #     domain_roots が2つ以上で、指定リージョンがルートリージョン
     887  # ・ドメイン名を付加しない
    910888  def gen_celltype_names_domain2( f, prepend, append, domain_type, region, b_plugin, b_inline_only = true )
    911889    dbgPrint "gen_celltype_names #{@name}\n"
     
    933911  end
    934912
    935   #=== Namespace#すべてのシグニチャをたどる
    936   def travers_all_signature # ブロック引数 { |signature|  }
    937     proc = Proc.new    # このメソッドのブロック引数
     913  #=== Namespace#すべてのシグニチャをたどる
     914  def travers_all_signature # ブロック引数 { |signature|  }
     915    proc = Proc.new    # このメソッドのブロック引数
    938916    @signature_list.each{ |sig|
    939917      proc.call sig
     
    952930  end
    953931
    954   #=== Namespace#すべてのセルタイプをたどる
    955   def travers_all_celltype # ブロック引数 { |celltype|  }
    956     proc = Proc.new    # このメソッドのブロック引数
     932  #=== Namespace#すべてのセルタイプをたどる
     933  def travers_all_celltype # ブロック引数 { |celltype|  }
     934    proc = Proc.new    # このメソッドのブロック引数
    957935    @celltype_list.each{ |ct|
    958936      proc.call ct
     
    10781056  def gen_sh_func_tab f
    10791057
    1080     # シグニチャディスクリプタの出力
     1058    # シグニチャディスクリプタの出力
    10811059    f.printf TECSMsg.get(:SD_comment), "#_SD_#"
    10821060    f.print "struct tag_#{@global_name}_VDES {\n"
     
    10841062    f.print "};\n\n"
    10851063
    1086     # シグニチャ関数テーブルの出力
     1064    # シグニチャ関数テーブルの出力
    10871065    f.printf TECSMsg.get(:SFT_comment), "#_SFT_#"
    10881066    f.print( "struct tag_#{@global_name}_VMT {\n" )
     
    10991077        len = items.length
    11001078      else
    1101         # ここで nil になるのは、引数なしの時に void がなかった場合
     1079        # ここで nil になるのは、引数なしの時に void がなかった場合
    11021080        items = []
    11031081        len = 0
     
    11291107  end
    11301108
    1131   #=== Signature# 関数の ID の define を出力
     1109  #=== Signature# 関数の ID の define を出力
    11321110  def gen_sh_func_id f
    11331111    f.print "/* function id */\n"
     
    11481126  def generate
    11491127
    1150     if need_generate?    # セルのないセルタイプは生成しない
     1128    if need_generate?    # セルのないセルタイプは生成しない
    11511129
    11521130      generate_private_header
     
    11591137      generate_makefile
    11601138
    1161     elsif $generate_all_template   # テンプレートコード生成オプション
     1139    elsif $generate_all_template   # テンプレートコード生成オプション
    11621140
    11631141      generate_template_code
    11641142      generate_inline_template_code
    11651143
    1166       # generate_makefile_template は Makefile に追記するものだから、呼び出さない
     1144      # generate_makefile_template は Makefile に追記するものだから、呼び出さない
    11671145
    11681146    end
     
    11711149
    11721150  def generate_post
    1173     return if ! need_generate?    # セルのないセルタイプは生成しない
     1151    return if ! need_generate?    # セルのないセルタイプは生成しない
    11741152
    11751153    generate_private_header_post
     
    11911169    gen_ph_cell_cb_type f
    11921170    gen_ph_INIB_as_CB f
    1193     gen_ph_extern_cell f          # セルタイプグルコード以外は参ç
    1194 §ã—ない
    1195     gen_ph_typedef_idx f          # mikan 参ç
    1196 §ã™ã‚‹ã‚‚のができていない
     1171    gen_ph_extern_cell f          # セルタイプグルコード以外は参照しない
     1172    gen_ph_typedef_idx f          # mikan 参照するものができていない
    11971173    gen_ph_ep_fun_prototype f
    11981174    end_extern_C f
     
    12021178
    12031179    if @n_entry_port_inline == 0 then
    1204       # inline がなければ CB_TYPE_ONLY とする
    1205       # inline ありの場合、いったん define しておいて、後ですべて undef する
     1180      # inline がなければ CB_TYPE_ONLY とする
     1181      # inline ありの場合、いったん define しておいて、後ですべて undef する
    12061182      ifndef_cb_type_only f
    12071183    end
     
    12291205#    gen_ph_cell_cb_type f
    12301206#    gen_ph_INIB_as_CB f
    1231 #    gen_ph_extern_cell f          # セルタイプグルコード以外は参ç
    1232 §ã—ない
    1233     # gen_ph_typedef_idx f          # mikan 参ç
    1234 §ã™ã‚‹ã‚‚のができていない
     1207#    gen_ph_extern_cell f          # セルタイプグルコード以外は参照しない
     1208    # gen_ph_typedef_idx f          # mikan 参照するものができていない
    12351209#    gen_ph_ep_fun_prototype f
    12361210    gen_ph_ep_skel_prototype f
    12371211
    1238     #--- CB_TYPE_ONLY の場合、ref_desc, set_desc 関数は含めない (マクロ参ç
    1239 §ã™ã‚‹ãŸã‚)
     1212    #--- CB_TYPE_ONLY の場合、ref_desc, set_desc 関数は含めない (マクロ参照するため)
    12401213    if @n_entry_port_inline == 0 then
    12411214      ifndef_cb_type_only f
     
    12491222    endif_macro_only f
    12501223
    1251     # 短縮形などのマクロ出力
     1224    # 短縮形などのマクロ出力
    12521225    if @n_entry_port_inline == 0 then
    12531226      ifndef_cb_type_only f
     
    12611234    gen_ph_test_optional_call_port_abbrev f
    12621235    gen_ph_ep_fun_macro f         if @n_entry_port > 0
    1263     gen_ph_foreach_cell f         # FOREACH マクロの出力
    1264     gen_ph_cb_initialize_macro f   # CB 初期化マクロの出力.消費しないので ram_initializer フラグに関わらず出力
     1236    gen_ph_foreach_cell f         # FOREACH マクロの出力
     1237    gen_ph_cb_initialize_macro f   # CB 初期化マクロの出力.消費しないので ram_initializer フラグに関わらず出力
    12651238    gen_ph_dealloc_code f, ""
    12661239    gen_ph_dealloc_code f, "_RESET"
     
    13091282        next if p.get_port_type != :CALL
    13101283
    1311         # is_...joined は omit するケースでも出力されるため、omit を検査する前に出力
     1284        # is_...joined は omit するケースでも出力されるため、omit を検査する前に出力
    13121285        if p.is_optional? then
    13131286          f.print( "#undef is_#{p.get_name}_joined\n" )
     
    13531326  end
    13541327
    1355   #=== CELLTYPE_tecsgen.c を生成
     1328  #=== CELLTYPE_tecsgen.c を生成
    13561329  def generate_cell_code
    13571330    fs = { }
     
    13881361    end
    13891362
    1390     # すべての _tecsgen.c に出力
     1363    # すべての _tecsgen.c に出力
    13911364    print_note f
    13921365    gen_cell_private_header f
     
    13941367    gen_cell_ep_des_type f
    13951368
    1396     # すべての _tecsgen.c に出力
     1369    # すべての _tecsgen.c に出力
    13971370    fs.each{ |r,f2|
    13981371      if f == f2 then
     
    14051378    }
    14061379
    1407     # 一つの _tecsgen.c に出力
     1380    # 一つの _tecsgen.c に出力
    14081381    gen_cell_skel_fun f
    14091382    gen_cell_fun_table f
    14101383    gen_cell_var_init f
    14111384
    1412     # セルごとに _tecsgen.c に出力
     1385    # セルごとに _tecsgen.c に出力
    14131386    gen_cell_ep_vdes fs
    14141387    gen_cell_ep_vdes_array fs
    1415     gen_cell_cb_out_init fs         # INITIALIZE_CB で参ç
    1416 §ã•ã‚Œã‚‹ãŸã‚ ram_initializer=false でも消せない
     1388    gen_cell_cb_out_init fs         # INITIALIZE_CB で参照されるため ram_initializer=false でも消せない
    14171389    gen_cell_cb fs
    14181390    gen_cell_extern_mt fs
    14191391    gen_cell_ep_des fs
    14201392
    1421     # 一つの _tecsgen.c に出力
     1393    # 一つの _tecsgen.c に出力
    14221394    gen_cell_cb_tab f
    14231395    if $ram_initializer then
     
    14811453
    14821454  def gen_ph_include f
    1483     # ランタイムヘッダの include
     1455    # ランタイムヘッダの include
    14841456#    f.printf TECSMsg.get( :IRTH_comment), "#_IRTH_#"
    14851457#    f.print "#include \"tecs.#{$h_suffix}\"\n\n"
    14861458
    1487     # グローバルヘッダの include
     1459    # グローバルヘッダの include
    14881460    f.printf TECSMsg.get( :IGH_comment ), "#_IGH_#"
    14891461    f.print "#include \"global_tecsgen.#{$h_suffix}\"\n\n"
    14901462
    1491     # シグニチャヘッダの include
     1463    # シグニチャヘッダの include
    14921464    f.printf TECSMsg.get( :ISH_comment ), "#_ISH_#"
    14931465    @port.each { |p|
     
    15071479    end
    15081480
    1509     # 最適化のため参ç
    1510 §ã™ã‚‹ã‚»ãƒ«ã‚¿ã‚¤ãƒ—の CB 型の定義を取込む
    1511     # _CB_TYPE_ONLY を定義した上で include する
     1481    # 最適化のため参照するセルタイプの CB 型の定義を取込む
     1482    # _CB_TYPE_ONLY を定義した上で include する
    15121483    f.printf( TECSMsg.get( :ICT_comment ), "#_ICT_#" )
    15131484
     
    15221493
    15231494      if p.is_skelton_useless? || p.is_cell_unique? || p.is_VMT_useless? then
    1524         # 最適化コード (optimize) # スケルトン不要など
     1495        # 最適化コード (optimize) # スケルトン不要など
    15251496        p2 = p.get_real_callee_port
    15261497        if p2 then
     
    15311502          end
    15321503        # else
    1533           # optional で未結合
     1504          # optional で未結合
    15341505        end
    15351506      end
     
    15431514#      next if p.get_port_type != :CALL
    15441515#      if p.is_skelton_useless? || p.is_cell_unique? || p.is_VMT_useless? then
    1545 #        # 最適化コード (optimize) # スケルトン不要など
     1516#        # 最適化コード (optimize) # スケルトン不要など
    15461517#        p2 = p.get_real_callee_port
    15471518#        ct = p2.get_celltype
     
    15591530    return if @singleton
    15601531
    1561     # ID の基数および個数の define を出力
     1532    # ID の基数および個数の define を出力
    15621533    f.printf("#define %-20s %10s  /* %s #_NIDB_# */\n", "#{@global_name}_ID_BASE", "(#{@id_base})", TECSMsg.get(:NIDB_comment))
    15631534    f.printf("#define %-20s %10s  /* %s  #_NCEL_# */\n\n", "#{@global_name}_N_CELL", "(#{@n_cell_gen})", TECSMsg.get(:NCEL_comment))
     
    15671538    return if @singleton
    15681539
    1569     # mikan  最適化
    1570     # IDX 正当性チェックマクロの出力
     1540    # mikan  最適化
     1541    # IDX 正当性チェックマクロの出力
    15711542    f.printf( TECSMsg.get( :CVI_comment ), "#_CVI_#" )
    15721543    if @idx_is_id_act then
     
    15811552    return if @singleton
    15821553
    1583     # IDX 正当性チェックマクロ(短縮形)の出力
     1554    # IDX 正当性チェックマクロ(短縮形)の出力
    15841555    f.printf( TECSMsg.get( :CVIA_comment ), "#_CVIA_#")
    15851556    f.print("#define VALID_IDX(IDX)  #{@global_name}_VALID_IDX(IDX)\n\n")
     
    15871558  end
    15881559
    1589   #=== 呼び口é
    1590 åˆ—の大きさを得るマクロの出力
     1560  #=== 呼び口配列の大きさを得るマクロの出力
    15911561  #
    1592   #セルタイプヘッダへ呼び口の個数を出力
     1562  #セルタイプヘッダへ呼び口の個数を出力
    15931563  def gen_ph_n_cp f
    15941564
     
    16041574      end
    16051575
    1606       if p.get_array_size != "[]" then       # 固定長é
    1607 åˆ—
     1576      if p.get_array_size != "[]" then       # 固定長配列
    16081577        f.print( "#define N_CP_#{p.get_name}    (#{p.get_array_size})\n" )
    16091578        f.print( "#define NCP_#{p.get_name}     (#{p.get_array_size})\n" )
    1610       else                                   # 可変長é
    1611 åˆ—
     1579      else                                   # 可変長配列
    16121580        if @singleton then
    16131581          if has_INIB? then
     
    16181586          f.print( "#define N_CP_#{p.get_name}  (#{@global_name}_SINGLE_CELL_#{inib}.n_#{p.get_name})\n" )
    16191587          f.print( "#define NCP_#{p.get_name}   (#{@global_name}_SINGLE_CELL_#{inib}.n_#{p.get_name})\n" )
    1620           # mikan singleton ならば、固定長化できる
     1588          # mikan singleton ならば、固定長化できる
    16211589        else
    16221590          if has_CB? && has_INIB? then
     
    16321600  end
    16331601
    1634   #=== 受け口é
    1635 åˆ—の大きさを得るマクロの出力
     1602  #=== 受け口配列の大きさを得るマクロの出力
    16361603  #
    1637   #セルタイプヘッダへ受け口の個数を出力
     1604  #セルタイプヘッダへ受け口の個数を出力
    16381605  def gen_ph_n_ep f
    16391606
     
    16411608    @port.each { |p|
    16421609      next if p.get_port_type != :ENTRY
    1643       # next if p.is_omit?                       # 受け口é
    1644 åˆ—の個数は省略しない
     1610      # next if p.is_omit?                       # 受け口配列の個数は省略しない
    16451611      next if p.get_array_size == nil
    16461612
     
    16501616      end
    16511617
    1652       if p.get_array_size != "[]" then       # 固定長é
    1653 åˆ—
     1618      if p.get_array_size != "[]" then       # 固定長配列
    16541619        f.print( "#define NEP_#{p.get_name}     (#{p.get_array_size})\n" )
    1655       else                                   # 可変長é
    1656 åˆ—
     1620      else                                   # 可変長配列
    16571621        if @singleton then
    16581622          if has_INIB? then
     
    16621626          end
    16631627          f.print( "#define NEP_#{p.get_name}   (#{@global_name}_SINGLE_CELL_#{inib}.n_#{p.get_name})\n" )
    1664           # mikan singleton ならば、固定長化できる
     1628          # mikan singleton ならば、固定長化できる
    16651629        else
    16661630          if has_CB? && has_INIB? then
     
    16751639  end
    16761640
    1677   #=== optional な呼び口が結合されているかテストするコードの生成
     1641  #=== optional な呼び口が結合されているかテストするコードの生成
    16781642  def gen_ph_test_optional_call_port f
    16791643    b_comment = false
     
    16961660      next if p.get_port_type != :CALL
    16971661      next if ! p.is_optional?
    1698       # next if p.is_omit?  # omit でも test コードは生成する
     1662      # next if p.is_omit?  # omit でも test コードは生成する
    16991663
    17001664      if b_comment == false then
     
    17201684      end
    17211685
    1722       # 関数名の出力(標準:受け口ディスクリプタから VMT の関数名、最適化:受け口関数 or 受け口ディスクリプタ)
    1723       # mikan  å
    1724 ¨éƒ¨ã¤ãªãŒã£ã¦ã„るかどうかで (1) を判定する
     1686      # 関数名の出力(標準:受け口ディスクリプタから VMT の関数名、最適化:受け口関数 or 受け口ディスクリプタ)
     1687      # mikan  全部つながっているかどうかで (1) を判定する
    17251688      if ! p.is_VMT_useless? then
    17261689        if p.is_dynamic? then
     
    17341697        end
    17351698
    1736         # 標準コード
     1699        # 標準コード
    17371700        if p.get_array_size == nil then
    17381701          if @singleton then
     
    17421705          end
    17431706        else
    1744           # é
    1745 åˆ—の場合
     1707          # 配列の場合
    17461708          if @singleton then
    17471709            f.print( "\t  ((#{@global_name}_SINGLE_CELL_#{inib_tmp}.#{p.get_name}!=0) \\\n" )
     
    17531715        end
    17541716      else
    1755         # 最適化コード (optimize) # VMT 不要(é
    1756 åˆ—要素すべて同じ)
     1717        # 最適化コード (optimize) # VMT 不要(配列要素すべて同じ)
    17571718        p2 = p.get_real_callee_port
    17581719        if p2 then
    17591720          ct = p2.get_celltype
    17601721          if p.is_skelton_useless? then
    1761             # 受け口関数を直接呼出す
     1722            # 受け口関数を直接呼出す
    17621723            f.print( "\t  (1)\n" )
    17631724          else
    1764             # 受け口スケルトン関数を直接呼出す
     1725            # 受け口スケルトン関数を直接呼出す
    17651726            f.print( "\t  (1)\n" )
    17661727          end
    17671728        else
    1768           # optional で未結合
     1729          # optional で未結合
    17691730          f.print( "\t  (0)    /* not joined */\n" )
    17701731        end
     
    17731734  end
    17741735
    1775   #=== optional な呼び口が結合されているかテストするコードの生成(短縮形)
     1736  #=== optional な呼び口が結合されているかテストするコードの生成(短縮形)
    17761737  def gen_ph_test_optional_call_port_abbrev f
    17771738    b_comment = false
     
    17801741      next if p.get_port_type != :CALL
    17811742      next if ! p.is_optional?
    1782       # next if p.is_omit?  # omit でも test コードは生成する
     1743      # next if p.is_omit?  # omit でも test コードは生成する
    17831744
    17841745      if b_comment == false then
     
    18051766  end
    18061767
    1807   #=== CELLCB へのポインタを得るマクロを出力
    1808   #   ã‚»ãƒ«ã‚¿ã‚¤ãƒ—ヘッダへ出力
     1768  #=== CELLCB へのポインタを得るマクロを出力
     1769  #   セルタイプヘッダへ出力
    18091770  def gen_ph_get_cellcb f
    18101771    f.printf( TECSMsg.get( :GCB_comment ), "#_GCB_#" )
    18111772    if ( ! has_CB? && ! has_INIB? ) || @singleton then
    18121773      f.print( "#define #{@global_name}_GET_CELLCB(idx) ((void *)0)\n" )
    1813     elsif @idx_is_id_act then   # mikan 単一のセルの場合の最適化, idx_is_id でない場合
     1774    elsif @idx_is_id_act then   # mikan 単一のセルの場合の最適化, idx_is_id でない場合
    18141775      f.print( "#define #{@global_name}_GET_CELLCB(idx) (#{@global_name}_CB_ptab[(idx) - #{@global_name}_ID_BASE])\n" )
    18151776    else
     
    18181779  end
    18191780
    1820   #=== CELLCB へのポインタを得るマクロ(短縮形)を出力
    1821   #  セルタイプヘッダへ出力
     1781  #=== CELLCB へのポインタを得るマクロ(短縮形)を出力
     1782  #  セルタイプヘッダへ出力
    18221783  def gen_ph_get_cellcb_abbrev f
    18231784    f.printf( TECSMsg.get( :GCBA_comment ), "#_GCBA_#" )
     
    18351796  end
    18361797
    1837   #===  attribute, var をアクセスするマクロを出力
    1838   #    セルタイプヘッダへ出力
     1798  #===  attribute, var をアクセスするマクロを出力
     1799  #    セルタイプヘッダへ出力
    18391800  def gen_ph_attr_access f
    18401801    if @n_attribute_rw > 0 || @n_attribute_ro > 0 then
     
    18461807      next if a.is_omit?
    18471808
    1848       # mikan const_value の場合
     1809      # mikan const_value の場合
    18491810      f.print( "#define " )
    18501811      if @singleton then
     
    18561817        f.printf( "%-20s", "#{@global_name}_ATTR_#{a.get_name}" )
    18571818        f.print( "\t(#{@global_name}_SINGLE_CELL_#{inib}.#{a.get_name})\n" )
    1858         # mikan ここでは cell ではなく celltype の名前
     1819        # mikan ここでは cell ではなく celltype の名前
    18591820      else
    18601821        if ! a.is_rw? && has_CB? && has_INIB? then
     
    18871848      end
    18881849
    1889       # mikan const_value の場合
     1850      # mikan const_value の場合
    18901851      f.print( "#define " )
    18911852      if @singleton then
    18921853        f.printf( "%-20s", "#{@global_name}_GET_#{a.get_name}()" )
    18931854        f.print( "\t(#{@global_name}_SINGLE_CELL_#{inib}.#{a.get_name})\n" )
    1894         # mikan ここでは cell ではなく celltype の名前
     1855        # mikan ここでは cell ではなく celltype の名前
    18951856      else
    18961857        f.printf( "%-20s", "#{@global_name}_GET_#{a.get_name}(p_that)" )
     
    19031864          f.printf( "%-20s", "#{@global_name}_SET_#{a.get_name}(val)" )
    19041865          f.print( "\t(#{@global_name}_SINGLE_CELL_#{inib}.#{a.get_name} = (val))\n" )
    1905           # mikan ここでは cell ではなく celltype の名前
     1866          # mikan ここでは cell ではなく celltype の名前
    19061867        else
    19071868          f.printf( "%-20s", "#{@global_name}_SET_#{a.get_name}(p_that,val)" )
     
    19351896      end
    19361897
    1937       # mikan const_value の場合
     1898      # mikan const_value の場合
    19381899      f.print( "#define " )
    19391900      if @singleton then
    19401901        f.printf( "%-20s", "#{@global_name}_VAR_#{v.get_name}" )
    19411902        f.print( "\t(#{@global_name}_SINGLE_CELL_#{inib}.#{v.get_name})\n" )
    1942         # mikan ここでは cell ではなく celltype の名前
     1903        # mikan ここでは cell ではなく celltype の名前
    19431904      else
    19441905        f.printf( "%-20s", "#{@global_name}_VAR_#{v.get_name}(p_that)" )
     
    19511912      next if v.is_omit?
    19521913
    1953       # mikan const_value の場合
     1914      # mikan const_value の場合
    19541915      f.print( "#define " )
    19551916      if @singleton then
    19561917        f.printf( "%-20s", "#{@global_name}_GET_#{v.get_name}()" )
    19571918        f.print( "\t(#{@global_name}_SINGLE_CELL_CB.#{v.get_name})\n" )
    1958         # mikan ここでは cell ではなく celltype の名前
     1919        # mikan ここでは cell ではなく celltype の名前
    19591920      else
    19601921        f.printf( "%-20s", "#{@global_name}_GET_#{v.get_name}(p_that)" )
     
    19661927        f.printf( "%-20s", "#{@global_name}_SET_#{v.get_name}(val)" )
    19671928        f.print( "\t(#{@global_name}_SINGLE_CELL_CB.#{v.get_name}=(val))\n" )
    1968         # mikan ここでは cell ではなく celltype の名前
     1929        # mikan ここでは cell ではなく celltype の名前
    19691930      else
    19701931        f.printf( "%-20s", "#{@global_name}_SET_#{v.get_name}(p_that,val)" )
     
    19761937  end
    19771938
    1978   #===  attribute/var アクセスマクロ(短縮形)コードの生成
     1939  #===  attribute/var アクセスマクロ(短縮形)コードの生成
    19791940  def gen_ph_attr_access_abbrev f
    19801941    if @n_attribute_rw > 0 || @n_attribute_ro > 0 then
     
    19851946      next if a.is_omit?
    19861947
    1987       # mikan const_value の場合
     1948      # mikan const_value の場合
    19881949      f.print( "#define " )
    19891950      f.printf( "%-20s", "ATTR_#{a.get_name}" )
     
    20031964      next if v.is_omit?
    20041965
    2005       # mikan const_value の場合
     1966      # mikan const_value の場合
    20061967      f.print( "#define " )
    20071968      f.printf( "%-20s", "VAR_#{v.get_name}" )
     
    20722033        delim = ""
    20732034
    2074         # 関数名の出力(標準:受け口ディスクリプタから VMT の関数名、最適化:受け口関数 or 受け口ディスクリプタ)
     2035        # 関数名の出力(標準:受け口ディスクリプタから VMT の関数名、最適化:受け口関数 or 受け口ディスクリプタ)
    20752036        if b_flow then
    20762037          f.print( "\t  (p_that)->#{p.get_name}#{subsc}.#{fun.get_name}__T( \\\n" )
    20772038        elsif ! p.is_VMT_useless? then
    2078           # 標準コード
     2039          # 標準コード
    20792040          if @singleton then
    20802041            f.print( "\t  #{@global_name}_SINGLE_CELL_#{inib}.#{p.get_name}" )
     
    20842045          f.print( "#{subsc}->VMT->#{fun.get_name}__T( \\\n" )
    20852046        else
    2086           # 最適化コード (optimize) # VMT 不要
     2047          # 最適化コード (optimize) # VMT 不要
    20872048          p2 = p.get_real_callee_port
    20882049          if p2 then
    20892050            ct = p2.get_celltype
    20902051            if p.is_skelton_useless? then
    2091               # 受け口関数を直接呼出す
     2052              # 受け口関数を直接呼出す
    20922053              f.print( "\t  #{ct.get_global_name}_#{p2.get_name}_#{fun.get_name}( \\\n" )
    20932054            else
    2094               # 受け口スケルトン関数を直接呼出す
     2055              # 受け口スケルトン関数を直接呼出す
    20952056              f.print( "\t  #{ct.get_global_name}_#{p2.get_name}_#{fun.get_name}_skel( \\\n" )
    20962057              # print "skelton: #{@name} #{ct.get_global_name}_#{p2.get_name}\n"
    20972058            end
    20982059          else
    2099             # optional で未結合
     2060            # optional で未結合
    21002061            f.print( "\t  ((#{fun.get_declarator.get_type.get_type.get_type_str} (*)()" )
    21012062            f.print( "#{fun.get_declarator.get_type.get_type.get_type_str_post})0)()\n" )
     
    21072068        end
    21082069
    2109         b_join = true    # optional で結合していない場合 false
    2110 
    2111         # 受け口æƒ
    2112 å ±ã®å‡ºåŠ›(標準:受け口ディスクリプタ、最適化:IDX など)
     2070        b_join = true    # optional で結合していない場合 false
     2071
     2072        # 受け口情報の出力(標準:受け口ディスクリプタ、最適化:IDX など)
    21132073        if b_flow then
    21142074        elsif ! p.is_skelton_useless? && ! p.is_cell_unique? then
    2115           # 標準コード
     2075          # 標準コード
    21162076          if @singleton then
    21172077            f.print( "\t  #{@global_name}_SINGLE_CELL_#{inib}.#{p.get_name}#{subsc}" )
     
    21222082          end
    21232083        else
    2124           # 最適化コード (optimize) # スケルトン不要
    2125           c2 = p.get_real_callee_cell               # 唯一のセル(でない場合もある、複数セルがある場合)
    2126           p2 = p.get_real_callee_port               # 唯一のポート(でない場合は、ない)
     2084          # 最適化コード (optimize) # スケルトン不要
     2085          c2 = p.get_real_callee_cell               # 唯一のセル(でない場合もある、複数セルがある場合)
     2086          p2 = p.get_real_callee_port               # 唯一のポート(でない場合は、ない)
    21272087          if p2 then
    2128             ct = p2.get_celltype                    # 呼びå
    2129 ˆã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—
     2088            ct = p2.get_celltype                    # 呼び先のセルタイプ
    21302089            if ! ct.is_singleton? then
    21312090              if ct.has_CB? || ct.has_INIB? then
     
    21342093                  f.print( "\t   #{name_array[7]}" )
    21352094                else
    2136                   # CELLCB IDX を渡す (標準コードと同じだが、扱う型は異なる)
    2137                   # p.is_skelton_useless? == true/false ともに同じ
     2095                  # CELLCB IDX を渡す (標準コードと同じだが、扱う型は異なる)
     2096                  # p.is_skelton_useless? == true/false ともに同じ
    21382097                  f.print( "\t   (p_that)#{inib}->#{p.get_name}#{subsc}" )
    21392098                end
     
    21462105            end
    21472106          else
    2148             # optional で未結合
     2107            # optional で未結合
    21492108            b_join = false
    21502109          end
     
    21632122  end
    21642123
    2165   #=== ref_desc 指定された呼び口に対するディスクリプタ参ç
    2166 §é–¢æ•°ã®ç”Ÿæˆ
     2124  #=== ref_desc 指定された呼び口に対するディスクリプタ参照関数の生成
    21672125  def gen_ph_ref_desc_func f
    21682126    if @n_call_port_ref_desc >0 then
     
    22192177  end
    22202178
    2221   #=== dynamic 指定された呼び口に対するディスクリプタ設定関数の生成
     2179  #=== dynamic 指定された呼び口に対するディスクリプタ設定関数の生成
    22222180  def gen_ph_set_desc_func f
    22232181    if @n_call_port_dynamic >0 then
     
    22912249  end
    22922250
    2293   #=== send/receive で受け取ったメモリ領域を dealloc するマクロコード
     2251  #=== send/receive で受け取ったメモリ領域を dealloc するマクロコード
    22942252  #f:: File
    2295   #b_undef:: bool : true = #undef コードの生成,  false = #define コードの生成
     2253  #b_undef:: bool : true = #undef コードの生成,  false = #define コードの生成
    22962254  def  gen_ph_dealloc_code( f, append_name, b_undef = false )
    22972255    b_msg = false
     
    23002258
    23012259      p.each_param{ |port, fd, par|
    2302         case par.get_direction                        # 引数の方向指定子 (in, out, inout, send, receive )
     2260        case par.get_direction                        # 引数の方向指定子 (in, out, inout, send, receive )
    23032261        when :SEND
    23042262          # next if port.get_port_type == :CALL
     
    23172275        end
    23182276
    2319         #                      ポート名         é–¢æ•°å         ãƒ‘ラメータ名
     2277        #                      ポート名         関数名         パラメータ名
    23202278        dealloc_func_name = "#{port.get_name}_#{fd.get_name}_#{par.get_name}_dealloc"
    23212279        dealloc_macro_name = dealloc_func_name.upcase
     
    23562314    @port.each { |p|
    23572315      next if p.get_port_type != :CALL
    2358       # next if p.is_omit?  呼び出すとエラーを起こすコードを生成
     2316      # next if p.is_omit?  呼び出すとエラーを起こすコードを生成
    23592317
    23602318      p.get_signature.get_function_head_array.each{ |fun|
     
    25312489        f.print( "struct tag_#{@global_name}_CB *" )
    25322490      elsif has_INIB? then
    2533         # f.print( "struct tag_#{@global_name}_INIB *" )  # const を出力していない
     2491        # f.print( "struct tag_#{@global_name}_INIB *" )  # const を出力していない
    25342492        f.print( "const struct tag_#{@global_name}_INIB *" )
    25352493      else
     
    25672525
    25682526        if p.get_array_size then
    2569           f.print( "#{delim} int_t subscript" )     # mikan singleton 時の ',' の始末
     2527          f.print( "#{delim} int_t subscript" )     # mikan singleton 時の ',' の始末
    25702528          delim = ","
    25712529        end
     
    25752533          len = items.length
    25762534        else
    2577           # ここで nil になるのは、引数なしの時に void がなかった場合
     2535          # ここで nil になるのは、引数なしの時に void がなかった場合
    25782536          items = []
    25792537          len = 0
     
    25962554
    25972555  def gen_ph_ep_skel_prototype f
    2598     # 受け口スケルトン関数のプロトタイプ宣言を出力
     2556    # 受け口スケルトン関数のプロトタイプ宣言を出力
    25992557    if @n_entry_port >0 then
    26002558      f.printf( TECSMsg.get( :EPSP_comment ), "#_EPSP_#" )
     
    26032561      next if p.get_port_type != :ENTRY
    26042562      next if p.is_omit?
    2605 #      if p.is_skelton_useless? || ! p.is_VMT_useless? then    # 受け口最適化
    2606       if p.is_skelton_useless? then    # 受け口最適化
     2563#      if p.is_skelton_useless? || ! p.is_VMT_useless? then    # 受け口最適化
     2564      if p.is_skelton_useless? then    # 受け口最適化
    26072565#        f.print( "/* #{p.get_name} : omitted by entry port optimize */\n" )
    26082566        next
     
    26232581          len = items.length
    26242582        else
    2625           # ここで nil になるのは、引数なしの時に void がなかった場合
     2583          # ここで nil になるのは、引数なしの時に void がなかった場合
    26262584          items = []
    26272585          len = 0
     
    26462604
    26472605    if ( $rom )then
    2648       # 定数部は ROM, 変数部は RAM
     2606      # 定数部は ROM, 変数部は RAM
    26492607
    26502608      if has_INIB? then
     
    26802638
    26812639    else
    2682       # å
    2683 ¨ã¦ RAM
     2640      # 全て RAM
    26842641      f.printf( TECSMsg.get( :CCTPO_comment ), "#_CCTPO_#" )
    26852642
     
    26952652
    26962653
    2697   #===   attribute の型宣言出力
    2698   #inib_cb::  :INIB または :CB
     2654  #===   attribute の型宣言出力
     2655  #inib_cb::  :INIB または :CB
    26992656  def gen_cell_cb_type_attribute( f, inib_cb )
    27002657    if inib_cb == :INIB && @n_attribute_ro > 0 then
     
    27292686      next if v.is_omit?
    27302687      next if v.get_size_is == nil
    2731       next if $rom && inib_cb == :CB      # size_is 指定されたものは INIB にのみ出力する
     2688      next if $rom && inib_cb == :CB      # size_is 指定されたものは INIB にのみ出力する
    27322689
    27332690      f.print "    "
     
    27382695
    27392696  def gen_cell_cb_type_var f
    2740     # 変数の出力
     2697    # 変数の出力
    27412698    if @n_var > 0 then
    27422699      f.print "    /* var #_VA_# */ \n"
     
    27462703
    27472704      next if v.is_omit?
    2748       next if v.get_size_is != nil    # size_is 指定された var は attribute へ出力する
     2705      next if v.get_size_is != nil    # size_is 指定された var は attribute へ出力する
    27492706
    27502707      f.print "    "
     
    27602717
    27612718  def gen_cell_cb_type_call_port( f, inib_cb )
    2762     # 呼び口
     2719    # 呼び口
    27632720    if @n_call_port >0 then
    27642721      f.print "    /* call port #_TCP_# */\n"
     
    27852742
    27862743        if ! p.is_skelton_useless? then
    2787           # 標準形
     2744          # 標準形
    27882745          if inib_cb == :INIB && p.is_dynamic? && p.get_array_size != nil && $ram_initializer then
    27892746            f.print( "    struct tag_#{p.get_signature.get_global_name}_VDES #{ptr}#{const2}*#{p.get_name;}_init_;\n" )
     
    27952752          end
    27962753        else
    2797           # 最適化 skelton 関数を呼出さない(受け口関数を直接呼出す)
    2798           # 呼びå
    2799 ˆã‚»ãƒ«ã‚¿ã‚¤ãƒ—の CB の IDX 型
     2754          # 最適化 skelton 関数を呼出さない(受け口関数を直接呼出す)
     2755          # 呼び先セルタイプの CB の IDX 型
    28002756          if p.get_real_callee_cell then
    28012757            f.print( "    " )
    28022758            p.get_real_callee_cell.get_celltype.gen_ph_idx_type f
    28032759            f.print( " #{ptr}#{p.get_name;};\n" )
    2804             # 相互参ç
    2805 §ã«å‚™ãˆã¦ã€typedef した型を使わない
     2760            # 相互参照に備えて、typedef した型を使わない
    28062761            # f.print( "    #{p.get_real_callee_cell.get_celltype.get_global_name}_IDX #{ptr}#{p.get_name;};\n" )
    28072762            if p.get_array_size == "[]" then
     
    28092764            end
    28102765          #else
    2811           #  optional で未結合
     2766          #  optional で未結合
    28122767          end
    28132768        end
    28142769      # else
    2815         # 最適化 一つしかセルがない場合、受け口ディスクリプタまたは受け側の IDX は呼び口関数マクロに埋め込まれる
    2816       end
    2817     }
    2818   end
    2819 
    2820   #=== Celltype#受け口é
    2821 åˆ—添数を記憶する変数の定義
     2770        # 最適化 一つしかセルがない場合、受け口ディスクリプタまたは受け側の IDX は呼び口関数マクロに埋め込まれる
     2771      end
     2772    }
     2773  end
     2774
     2775  #=== Celltype#受け口配列添数を記憶する変数の定義
    28222776  def gen_cell_cb_type_entry_port( f, inib_cb )
    2823     # 呼び口
     2777    # 呼び口
    28242778    if @n_entry_port >0 then
    28252779      f.print "    /* call port #_NEP_# */ \n"
     
    28272781
    28282782    @port.each{ |p|
    2829       # next if p.is_omit?                       # 受け口é
    2830 åˆ—の個数は省略しない
     2783      # next if p.is_omit?                       # 受け口配列の個数は省略しない
    28312784      if p.get_port_type == :ENTRY && p.get_array_size == "[]"
    28322785        f.print( "    int_t n_#{p.get_name};\n" )
     
    28502803        f.print "extern #{@global_name}_CB  *const #{@global_name}_CB_ptab[];\n"
    28512804        @ordered_cell_list.each{ |c|
    2852           if c.is_generate? then                           # 生成対象か?
     2805          if c.is_generate? then                           # 生成対象か?
    28532806            name_array = get_name_array c
    28542807            f.print "extern #{@global_name}_CB  #{name_array[4]};\n"
     
    28582811        f.print "extern #{@global_name}_INIB  *const #{@global_name}_INIB_ptab[];\n"
    28592812        @ordered_cell_list.each{ |c|
    2860           if c.is_generate? then                           # 生成対象か?
     2813          if c.is_generate? then                           # 生成対象か?
    28612814            name_array = get_name_array c
    28622815            f.print "extern #{@global_name}_INIB  #{name_array[11]};\n"
     
    28752828
    28762829  def gen_ph_INIB_as_CB f
    2877     # ここは、手抜きである。本来なら INIB を出力すべき
     2830    # ここは、手抜きである。本来なら INIB を出力すべき
    28782831    if ! has_CB? && has_INIB? then
    28792832      f.printf( TECSMsg.get( :DCI_comment ),  "#_DCI_#" )
     
    28922845  end
    28932846
    2894   #===  イテレータコード (FOREACH_CELL)の生成
    2895   #      singleton では出力しない
     2847  #===  イテレータコード (FOREACH_CELL)の生成
     2848  #      singleton では出力しない
    28962849  def gen_ph_foreach_cell f
    28972850
     
    29362889
    29372890
    2938   #===  変数var初期化コード
     2891  #===  変数var初期化コード
    29392892  #
    29402893  def gen_ph_cb_initialize_macro f
     
    29472900        type = v.get_type
    29482901        if( type.kind_of? PtrType )then
    2949           # PtrType は ArrayType にすり替える
    2950 
    2951           # 初期化子の要素数とする (後は 0 である)
     2902          # PtrType は ArrayType にすり替える
     2903
     2904          # 初期化子の要素数とする (後は 0 である)
    29522905          t2 = ArrayType.new( Expression.create_integer_constant( init.length, nil ) )
    29532906          t2.set_type( type.get_type )
     
    30052958      }
    30062959
    3007       # dynamic call port の初期化コード
     2960      # dynamic call port の初期化コード
    30082961      b_dyn_port = false
    30092962      @port.each{ |p|
     
    30613014
    30623015    # else
    3063     #   ã‚»ãƒ«ãŒä¸€ã¤ã‚‚なければ出力しない
     3016    #   セルが一つもなければ出力しない
    30643017    end
    30653018
     
    30683021
    30693022  def gen_ph_inline f
    3070     # inline ポートが一つでもあれば、inline.h の include
     3023    # inline ポートが一つでもあれば、inline.h の include
    30713024    if @n_entry_port_inline > 0 then
    30723025      f.printf( TECSMsg.get( :INL_comment ), "#_INL_#" )
     
    31203073      next if p.get_port_type != :ENTRY
    31213074      next if p.is_omit?
    3122       if p.is_skelton_useless?    # 受け口最適化
     3075      if p.is_skelton_useless?    # 受け口最適化
    31233076        f.print( "/* #{p.get_name} : omitted by entry port optimize */\n\n" )
    31243077        next
     
    31313084        f.print( "    #{@name}_IDX  idx;\n" )
    31323085      else
    3133         # CB も INIB も存在しない (ので、idx として整数で初期化しておく)
     3086        # CB も INIB も存在しない (ので、idx として整数で初期化しておく)
    31343087        f.print( "    int           idx;\n" )
    31353088      end
     
    31493102      next if p.get_port_type != :ENTRY
    31503103      next if p.is_omit?
    3151       if p.is_skelton_useless? then    # 受け口最適化
     3104      if p.is_skelton_useless? then    # 受け口最適化
    31523105        f.print( "/* #{p.get_name} : omitted by entry port optimize */\n" )
    31533106        next
     
    31683121          len = items.length
    31693122        else
    3170           # ここで nil になるのは、引数なしの時に void がなかった場合
     3123          # ここで nil になるのは、引数なしの時に void がなかった場合
    31713124          items = []
    31723125          len = 0
     
    31903143        end
    31913144
    3192         if functype.get_type_str == "void" then # mikan "void" の typedef に未対応
     3145        if functype.get_type_str == "void" then # mikan "void" の typedef に未対応
    31933146          f.print "    "
    31943147        else
     
    32333186      next if p.get_port_type != :ENTRY
    32343187      next if p.is_omit?
    3235       if p.is_VMT_useless? then    # 受け口最適化
     3188      if p.is_VMT_useless? then    # 受け口最適化
    32363189        f.print "/* #{p.get_name} : omitted by entry port optimize */\n"
    32373190        next
     
    32593212    end
    32603213
    3261     # このセルタイプのすべてのセルについて
     3214    # このセルタイプのすべてのセルについて
    32623215    @ordered_cell_list.each{ |c|
    3263       if c.is_generate? then                           # 生成対象か?
     3216      if c.is_generate? then                           # 生成対象か?
    32643217
    32653218        f = fs[ c.get_region.get_domain_root ]
    32663219
    3267         # 結合のリスト (NamedList)
     3220        # 結合のリスト (NamedList)
    32683221        jl = c.get_join_list
    32693222
    3270         # å
    3271 ¨ã¦ã®çµåˆãƒªã‚¹ãƒˆã«ã¤ã„て
     3223        # 全ての結合リストについて
    32723224        jl.get_items.each{ |j|
    32733225
    3274           # 左辺の定義を得る
     3226          # 左辺の定義を得る
    32753227          definition = j.get_definition
    32763228
    3277           # 呼び口ではない? (属性)
     3229          # 呼び口ではない? (属性)
    32783230          next unless definition.instance_of? Port
    32793231
    3280           port = find j.get_name # celltype の Port (こちらに最適化æƒ
    3281 å ±ãŒã‚ã‚‹)
    3282           # port = definition    # definition は composite の Port が得られることがある
     3232          port = find j.get_name # celltype の Port (こちらに最適化情報がある)
     3233          # port = definition    # definition は composite の Port が得られることがある
    32833234          next if port.is_cell_unique?
    32843235          next if port.is_omit?
    32853236
    3286           # é
    3287 åˆ—要素を得る(受け口é
    3288 åˆ—でなければ nil が返る)
     3237          # 配列要素を得る(受け口配列でなければ nil が返る)
    32893238          am = j.get_array_member2
    32903239
    3291           # 呼び口é
    3292 åˆ—か?
     3240          # 呼び口配列か?
    32933241          if am  then
    32943242            i = 0
     
    32973245              if j then
    32983246                if am[i].get_rhs_cell.get_celltype == self then
    3299                   # 同じセルタイプへ結合している場合(VDES では type conflict になる)
     3247                  # 同じセルタイプへ結合している場合(VDES では type conflict になる)
    33003248                  p = am[i].get_rhs_port
    33013249                  des_type = "const struct tag_#{@global_name}_#{p.get_name}_DES"
     
    33043252                end
    33053253
    3306                 # 右辺は受け口é
    3307 åˆ—か?
     3254                # 右辺は受け口配列か?
    33083255                if j.get_rhs_subscript then
    33093256
    3310                   # 受け口のé
    3311 åˆ—添数
     3257                  # 受け口の配列添数
    33123258                  subscript = j.get_rhs_subscript
    33133259
     
    33223268                end
    33233269              #else if j == nil
    3324               #  optioanl でé
    3325 åˆ—要素が初期化されていない
     3270              #  optioanl で配列要素が初期化されていない
    33263271              end
    33273272              i += 1
     
    33303275            dbgPrint "me=#{@name} callee=#{j.get_rhs_cell.get_celltype.get_name} #{j.get_cell.get_celltype.get_name} \n"
    33313276            if j.get_rhs_cell.get_celltype == self then
    3332               # 同じセルタイプへ結合している場合(VDES では type conflict になる)
     3277              # 同じセルタイプへ結合している場合(VDES では type conflict になる)
    33333278              p = j.get_rhs_port
    33343279              des_type = "const struct tag_#{@global_name}_#{p.get_name}_DES"
     
    33383283
    33393284            if j.get_rhs_subscript then
    3340               # 受け口é
    3341 åˆ—
     3285              # 受け口配列
    33423286              subscript = j.get_rhs_subscript
    33433287              f.printf( "extern %s %s%d;\n",
     
    33513295            end
    33523296          end
    3353           # mikan   cell の namespace 未対応、Join で Cell オブジェクトを引当ておくå¿
    3354 è¦ã‚ã‚Š
     3297          # mikan   cell の namespace 未対応、Join で Cell オブジェクトを引当ておく必要あり
    33553298        }
    33563299
     
    33623305  def gen_cell_ep_vdes_array fs
    33633306    if @n_cell_gen >0 then
    3364       fs.each{ |r, f| f.printf( TECSMsg.get( :CPA_comment ), "#_CPA_#" ) }  # mikan 呼び口é
    3365 åˆ—が無い場合も出てしまう
     3307      fs.each{ |r, f| f.printf( TECSMsg.get( :CPA_comment ), "#_CPA_#" ) }  # mikan 呼び口配列が無い場合も出てしまう
    33663308    end
    33673309
     
    33713313
    33723314        jl = c.get_join_list
    3373         # ループを回す変数を jl から @port に変更
     3315        # ループを回す変数を jl から @port に変更
    33743316        # dynamic, optional
    33753317#        jl.get_items.each{ |j|
     
    33823324          j = jl.get_item( port.get_name )
    33833325
    3384           # port = definition    # definition は composite の Port が得られることがある
    3385           # port = find j.get_name # celltype の Port (こちらに最適化æƒ
    3386 å ±ãŒã‚ã‚‹)
     3326          # port = definition    # definition は composite の Port が得られることがある
     3327          # port = find j.get_name # celltype の Port (こちらに最適化情報がある)
    33873328          next if port.is_cell_unique?
    33883329          next if port.is_omit?
     
    34053346          if b_array  then
    34063347#          if am then
    3407             # 左辺はé
    3408 åˆ—
     3348            # 左辺は配列
    34093349            const = ( port.is_dynamic? && ! $ram_initializer ) ? '' : 'const '
    34103350            init = ( port.is_dynamic? && $ram_initializer ) ? '_init_' : ''
     
    34173357            else
    34183358
    3419 #              スケルトン関数不要最適化の場合、このé
    3420 åˆ—は参ç
    3421 §ã•ã‚Œãªã„
    3422               # mikan このケースがテストされていない
     3359#              スケルトン関数不要最適化の場合、この配列は参照されない
     3360              # mikan このケースがテストされていない
    34233361              f.printf( "#{const}%s_IDX  %s_%s[] = {\n",
    3424 #                        "#{j.get_celltype.get_global_name}",   # 右辺 composite に対応できない
     3362#                        "#{j.get_celltype.get_global_name}",   # 右辺 composite に対応できない
    34253363                        "#{j.get_rhs_cell.get_celltype.get_global_name}",
    34263364                        "#{c.get_global_name}",
     
    34443382
    34453383              if j then
    3446                 # 同一セルタイプの結合の場合、VDES 型へのキャストがå¿
    3447 è¦
     3384                # 同一セルタイプの結合の場合、VDES 型へのキャストが必要
    34483385                if j.get_rhs_cell.get_celltype == self then
    34493386                  definition = j.get_definition
     
    34553392               
    34563393                if j.get_rhs_subscript then
    3457                   # 右辺é
    3458 åˆ—の場合(最適化はない)
     3394                  # 右辺配列の場合(最適化はない)
    34593395                  subscript = j.get_rhs_subscript
    34603396                  f.printf( "    %s%d,\n",
     
    34653401
    34663402                else
    3467                   # 右辺非é
    3468 åˆ—の場合 */
     3403                  # 右辺非配列の場合 */
    34693404                  if ! port.is_skelton_useless? then
    34703405                    f.printf( "    %s,\n",
     
    34773412                end
    34783413              else
    3479                 # optional で呼び口é
    3480 åˆ—要素が初期化されていない
     3414                # optional で呼び口配列要素が初期化されていない
    34813415                f.printf( "    0,\n" )
    34823416              end
    34833417            # }
    34843418            end
    3485             # mikan   cell の namespace 未対応、Join で Cell オブジェクトを引当ておくå¿
    3486 è¦ã‚ã‚Š
     3419            # mikan   cell の namespace 未対応、Join で Cell オブジェクトを引当ておく必要あり
    34873420            f.print "};\n"
    3488             # dynamic の呼び口é
    3489 åˆ—
     3421            # dynamic の呼び口配列
    34903422            if port.is_dynamic? && $ram_initializer then
    34913423              f.printf( "struct %s * %s_%s[ #{length} ];\n",
     
    35023434  end
    35033435
    3504   #=== CB を初期化するプログラムの生成
     3436  #=== CB を初期化するプログラムの生成
    35053437  def gen_cell_cb_initialize_code f
    35063438    if ! need_CB_initializer?
     
    35343466  end
    35353467
    3536   # === CB/INIB の外で初期化される変数の出力
     3468  # === CB/INIB の外で初期化される変数の出力
    35373469  def gen_cell_cb_out_init fs
    35383470
    3539     # セルがなければ、出力しない
     3471    # セルがなければ、出力しない
    35403472    if @n_cell_gen == 0 then
    35413473      return
     
    35443476    fs.each{ |r, f| f.printf( TECSMsg.get( :AVAI_comment ), "#_AVAI_#" ) }
    35453477
    3546     # attribute, var のポインタ型の参ç
    3547 §ã™ã‚‹é
    3548 åˆ—を生成
     3478    # attribute, var のポインタ型の参照する配列を生成
    35493479    @ordered_cell_list.each{ |c|
    35503480      next if  ! c.is_generate?
     
    35563486      jl = c.get_join_list
    35573487
    3558       # attribute, var のポインタ変数がé
    3559 åˆ—により初期化される場合の、é
    3560 åˆ—を出力
     3488      # attribute, var のポインタ変数が配列により初期化される場合の、配列を出力
    35613489      av_list = ct.get_attribute_list + ct.get_var_list
    35623490      if av_list.length != 0 then
     
    35743502
    35753503            if size then
    3576               # 式を評価する(attribute, var に含まれる変数を参ç
    3577 §å¯èƒ½)
     3504              # 式を評価する(attribute, var に含まれる変数を参照可能)
    35783505              sz = size.eval_const( c.get_join_list, c.get_celltype.get_name_list )
    3579               # 式を生成しなおす (変数を含まない形にする)  不完å
    3580 ¨ãªå½¢ã§ Token を生成 (エラー発生しないから)
     3506              # 式を生成しなおす (変数を含まない形にする)  不完全な形で Token を生成 (エラー発生しないから)
    35813507              size = Expression.new( [:INTEGER_CONSTANT, Token.new(sz, nil, 0, 0)] )
    35823508              array_type = ArrayType.new( size )
     
    35923518                                                                # name_array[3]: cell_CB_INIT
    35933519              if !( $ram_initializer && a.get_kind == :VAR ) then
    3594                 # -R (ram initializer 使用) の場合 var は初期化コードを出力しない
     3520                # -R (ram initializer 使用) の場合 var は初期化コードを出力しない
    35953521                if( init )then
    35963522                  str = " = #{gen_cell_cb_init( f, c, name_array, array_type, init, a.get_identifier, 1, true )}"
     
    36103536  end
    36113537
    3612   #=== var の初期値の ROM 部への
     3538  #=== var の初期値の ROM 部への
    36133539  def gen_cell_var_init f
    3614     # var の{ }で囲まれた初期値指定があるか調べる
     3540    # var の{ }で囲まれた初期値指定があるか調べる
    36153541    n_init = 0
    36163542    @var.each { |v|
     
    36303556
    36313557          if( org_type.kind_of? PtrType )then
    3632             # PtrType は ArrayType にすり替える
    3633 
    3634             # 初期化子の要素数だけとする(後は 0)
     3558            # PtrType は ArrayType にすり替える
     3559
     3560            # 初期化子の要素数だけとする(後は 0)
    36353561            t2 = ArrayType.new( Expression.create_integer_constant( init.length, nil ) )
    36363562            t2.set_type( type.get_type )
     
    36393565          end
    36403566
    3641           c = @ordered_cell_list[0]   # 仮の cell (実際には使われない)
     3567          c = @ordered_cell_list[0]   # 仮の cell (実際には使われない)
    36423568          name_array = get_name_array( c )
    36433569          # f.print "const #{type0.get_type_str}\t#{@global_name}_#{v.get_name}_VAR_INIT#{type0.get_type_str_post} = "
    36443570          f.print "const #{type.get_type_str}\t#{@global_name}_#{v.get_name}_VAR_INIT#{type.get_type_str_post} = "
    36453571          if org_type.kind_of? StructType then
    3646             # celltype の default の初期値あり
     3572            # celltype の default の初期値あり
    36473573            str = gen_cell_cb_init( f, c, name_array, type, init, v.get_identifier, 1, true )
    36483574          elsif( org_type.kind_of?( PtrType ) || org_type.kind_of?( ArrayType ) ) then
    36493575            str = "{ "
    36503576            type = org_type.get_type
    3651             # mikan ポインタではなく、é
    3652 åˆ—型としないと、ポインタ変数の領域の分、損する
     3577            # mikan ポインタではなく、配列型としないと、ポインタ変数の領域の分、損する
    36533578            init.each { |i|
    36543579              str += gen_cell_cb_init( f, c, name_array, type, i, v.get_identifier, 1, true )
     
    37073632
    37083633        unless @singleton then
    3709           # 1 つの cell INIB の終わり
     3634          # 1 つの cell INIB の終わり
    37103635          if @b_need_ptab then
    37113636            f.print( "};\n\n" )
     
    37253650      end
    37263651
    3727       # RAM initializer を使用しない、または ROM 化しない
     3652      # RAM initializer を使用しない、または ROM 化しない
    37283653      if $ram_initializer == false || $rom == false then
    37293654        if @singleton then
     
    37723697
    37733698          unless @singleton then
    3774             # 1 つの cell CB の終わり
     3699            # 1 つの cell CB の終わり
    37753700            if @b_need_ptab then
    37763701              f.print( "};\n\n" )
     
    38103735        f.print "/* ID to INIB table #_INTAB_# */\n"
    38113736        @ordered_cell_list.each{ |c|
    3812           if c.is_generate? && ( c.get_region.get_domain_root != Region.get_root ) then # 生成対象かつ、ルート以外か
     3737          if c.is_generate? && ( c.get_region.get_domain_root != Region.get_root ) then # 生成対象かつ、ルート以外か
    38133738            name_array = get_name_array( c )
    38143739            print_indent( f, indent + 1 )
     
    38193744        f.print "#{@global_name}_INIB *const #{@global_name}_INIB_ptab[] ={\n"
    38203745        @ordered_cell_list.each{ |c|
    3821           if c.is_generate? then                           # 生成対象か?
     3746          if c.is_generate? then                           # 生成対象か?
    38223747            name_array = get_name_array( c )
    38233748            print_indent( f, indent + 1 )
     
    38303755        f.print "/* ID to CB table #_CBTAB_# */\n"
    38313756        @ordered_cell_list.each{ |c|
    3832           if c.is_generate? && ( c.get_region.get_domain_root != Region.get_root ) then # 生成対象かつ、ルート以外か
     3757          if c.is_generate? && ( c.get_region.get_domain_root != Region.get_root ) then # 生成対象かつ、ルート以外か
    38333758            name_array = get_name_array( c )
    38343759            print_indent( f, indent + 1 )
     
    38393764        f.print "#{@global_name}_CB *const #{@global_name}_CB_ptab[] ={\n"
    38403765        @ordered_cell_list.each{ |c|
    3841           if c.is_generate? then                           # 生成対象か?
     3766          if c.is_generate? then                           # 生成対象か?
    38423767            name_array = get_name_array( c )
    38433768            print_indent( f, indent + 1 )
     
    38513776
    38523777
    3853   #=== name_array を生成
     3778  #=== name_array を生成
    38543779  # IN:   cell  : Cell
    3855   #       index : CB, INIB é
    3856 åˆ—の添数
     3780  #       index : CB, INIB 配列の添数
    38573781  # RETURN: name_array
    38583782  #   name_array[0] = @name           # celltype name
    38593783  #   name_array[1] = cell.get_name   # cell name
    38603784  #   name_array[2] = cell_CB_name    # cell_CB_name
    3861   #   name_array[3] = cell_CB_INIT    # cell_CB_INIT # CB の外側で初期化がå¿
    3862 è¦ãªé
    3863 åˆ—の名前
     3785  #   name_array[3] = cell_CB_INIT    # cell_CB_INIT # CB の外側で初期化が必要な配列の名前
    38643786  #   name_array[4] = cell_CB_proto   # CB name for prototype
    38653787  #   name_array[5] = cell_INIB       # INIB name
     
    39033825      cell_CBP = "&#{cell_INIB_name}"
    39043826    else
    3905       cell_CBP = "NULL"    # CB も INIB もなければ NULL に置換
     3827      cell_CBP = "NULL"    # CB も INIB もなければ NULL に置換
    39063828    end
    39073829
     
    39293851  end
    39303852
    3931   #=== attribute と size_is 指定された var (ポインタ)の初期化データを出力
     3853  #=== attribute と size_is 指定された var (ポインタ)の初期化データを出力
    39323854  #
    3933   # ROM 化サポートの有無、および出力対象が CB か INIB かにより出力されるå†
    3934 å®¹ãŒç•°ãªã‚‹
     3855  # ROM 化サポートの有無、および出力対象が CB か INIB かにより出力される内容が異なる
    39353856  def gen_cell_cb_attribute( cell, indent, f, name_array, cb_inib )
    39363857    ct = self
     
    39423863      f.print "/* attribute(RO) */ \n"
    39433864    elsif $rom then  # && cb_inib == CB
    3944       # CB で rw と var
     3865      # CB で rw と var
    39453866      return if @n_attribute_rw == 0
    39463867      print_indent( f, indent + 1 )
    39473868      f.print "/* attribute(RW) */ \n"
    39483869    else  # cb_inib == CB && $rom == false
    3949       # CB にå
    3950 ¨éƒ¨
     3870      # CB に全部
    39513871      return if @n_attribute_rw == 0 && @n_attribute_ro == 0 && @n_var_size_is == 0
    39523872      print_indent( f, indent + 1 )
     
    39583878      next if a.is_omit?
    39593879      if cb_inib == :INIB && a.is_rw? == true then
    3960         # $rom == true でしか、ここへ来ない
     3880        # $rom == true でしか、ここへ来ない
    39613881        next
    39623882      elsif cb_inib == :CB && $rom && ! a.is_rw? then
     
    39663886      j = jl.get_item( a.get_identifier )
    39673887      if j then
    3968         # cell の初期値指定あり
     3888        # cell の初期値指定あり
    39693889        gen_cell_cb_init( f, cell, name_array, a.get_type, j.get_rhs, a.get_identifier, indent + 1 )
    39703890      elsif a.get_initializer then
    3971         # celltype の default の初期値あり
     3891        # celltype の default の初期値あり
    39723892        gen_cell_cb_init( f, cell, name_array, a.get_type, a.get_initializer, a.get_identifier, indent + 1 )
    39733893      else
    3974         # 初期値未指定
     3894        # 初期値未指定
    39753895        gen_cell_cb_init( f, cell, name_array, a.get_type, nil, a.get_identifier, indent + 1 )
    39763896      end
     
    39783898    @var.each{ |v|
    39793899      next if v.is_omit?
    3980       next if v.get_size_is == nil   # size_is 指定がある場合 attribute の一部として出力
     3900      next if v.get_size_is == nil   # size_is 指定がある場合 attribute の一部として出力
    39813901
    39823902      if v.get_initializer && $ram_initializer == false then
    39833903        gen_cell_cb_init( f, cell, name_array, v.get_type, v.get_initializer, v.get_identifier, indent + 1 )
    39843904      else
    3985         # 初期値未指定 または RAM initializer 使用
     3905        # 初期値未指定 または RAM initializer 使用
    39863906        gen_cell_cb_init( f, cell, name_array, v.get_type, nil, v.get_identifier, indent + 1 )
    39873907      end
     
    39893909  end
    39903910
    3991   #=== var の初期化データを出力
     3911  #=== var の初期化データを出力
    39923912  def gen_cell_cb_var( cell, indent, f, name_array )
    39933913    jl = cell.get_join_list
     
    39993919
    40003920        next if v.is_omit?
    4001         next if v.get_size_is      # size_is 指定がある場合 attribute の一部として出力
     3921        next if v.get_size_is      # size_is 指定がある場合 attribute の一部として出力
    40023922
    40033923        if v.get_initializer && $ram_initializer == false then
    40043924          gen_cell_cb_init( f, cell, name_array, v.get_type, v.get_initializer, v.get_identifier, indent + 1 )
    40053925        else
    4006           # 初期値未指定 または RAM initializer 使用
     3926          # 初期値未指定 または RAM initializer 使用
    40073927          gen_cell_cb_init( f, cell, name_array, v.get_type, nil, v.get_identifier, indent + 1 )
    40083928        end
     
    40173937  end
    40183938
    4019   #=== 呼び口の初期化コードの生成
     3939  #=== 呼び口の初期化コードの生成
    40203940  def gen_cell_cb_call_port( cell, indent, f, name_array, inib_cb )
    40213941    jl = cell.get_join_list
     
    40313951        next if p.get_port_type != :CALL
    40323952        next if p.is_omit?
    4033         next if p.is_cell_unique?        # 最適化(単一セルで呼び口マクロに埋め込まれる)
     3953        next if p.is_cell_unique?        # 最適化(単一セルで呼び口マクロに埋め込まれる)
    40343954        next if inib_cb == :INIB && p.is_dynamic? && p.get_array_size == nil && ! $ram_initializer
    40353955        next if inib_cb == :CB_DYNAMIC && ( ! p.is_dynamic? || p.get_array_size != nil )
     
    40413961        if j == nil then
    40423962          dbgPrint "cell_cb_call_port: #{p.get_name} array size=#{p.get_array_size}\n"
    4043           # optional 呼び口
     3963          # optional 呼び口
    40443964          # cdl_error( "H1003 internal error: cell \'$1\' port \'$2\': initializer not found\n" , cell.get_name, p.get_name )
    40453965          # exit( 1 )
     
    40593979            end
    40603980            if p.get_array_size == "[]" then
    4061               # 添数省略の呼び口é
    4062 åˆ—
     3981              # 添数省略の呼び口配列
    40633982              print_indent( f, indent + 1 )
    40643983              f.printf( "%-40s /* %s #_CCP6_# */\n", "0,", "length of #{p.get_name} (n_#{p.get_name})" )
     
    40723991        am = j.get_array_member2
    40733992        if am then
    4074           # 呼び口é
    4075 åˆ—の場合
     3993          # 呼び口配列の場合
    40763994          if inib_cb == :INIB && p.is_dynamic? && p.get_array_size != nil && $ram_initializer then
    40773995            f.printf( "%-40s /* #_CCP3_# _init_ */\n",  "#{cell.get_global_name}_#{j.get_name}_init_," )
     
    40803998          f.printf( "%-40s /* #_CCP3B_# */\n",  "#{cell.get_global_name}_#{j.get_name}," )
    40813999          if p.get_array_size == "[]" then
    4082             # 添数省略の呼び口é
    4083 åˆ—
     4000            # 添数省略の呼び口配列
    40844001            print_indent( f, indent + 1 )
    40854002            f.printf( "%-40s /* %s #_CCP4_# */\n", "#{am.length},", "length of #{p.get_name} (n_#{p.get_name})" )
    40864003          end
    40874004        else
    4088           # 同一セルタイプの結合の場合、VDES 型へのキャストがå¿
    4089 è¦
     4005          # 同一セルタイプの結合の場合、VDES 型へのキャストが必要
    40904006          #print "CCP0/CCP1 #{p.get_name}, #{j.get_rhs_cell.get_celltype.get_name}, #{@name}\n"
    40914007          if j.get_rhs_cell.get_celltype == self then
     
    40994015
    41004016          if j.get_rhs_subscript then
    4101             # 受け口é
    4102 åˆ—の場合
     4017            # 受け口配列の場合
    41034018            subscript = j.get_rhs_subscript
    41044019            f.printf( "%-40s /* %s #_CCP0_# */\n",
     
    41074022                      p.get_name.to_s + init )
    41084023          else
    4109             # 呼び口é
    4110 åˆ—でも、受け口é
    4111 åˆ—でもない
     4024            # 呼び口配列でも、受け口配列でもない
    41124025            if ! p.is_skelton_useless? then
    41134026              f.printf( "%-40s /* %s #_CCP1_# */\n",
     
    41154028                        p.get_name.to_s + init )
    41164029            else
    4117               # スケルトン不要最適化(CB (INIB) へのポインタを埋め込む)
    4118               c = j.get_rhs_cell                    # 呼びå
    4119 ˆã‚»ãƒ«
    4120               ct = c.get_celltype                   # 呼びå
    4121 ˆã‚»ãƒ«ã‚¿ã‚¤ãƒ—
    4122               name_array = ct.get_name_array( c )   # 呼びå
    4123 ˆã‚»ãƒ«ã‚¿ã‚¤ãƒ—で name_array を得る
     4030              # スケルトン不要最適化(CB (INIB) へのポインタを埋め込む)
     4031              c = j.get_rhs_cell                    # 呼び先セル
     4032              ct = c.get_celltype                   # 呼び先セルタイプ
     4033              name_array = ct.get_name_array( c )   # 呼び先セルタイプで name_array を得る
    41244034              if ct.has_INIB? || ct.has_CB? then
    41254035                f.printf( "%-40s /* %s #_CCP2_# */\n", "#{name_array[7]},", p.get_name )
    41264036              else
    4127                 # 呼びå
    4128 ˆã¯ CB も INIB も持たない(NULL に初期化)
     4037                # 呼び先は CB も INIB も持たない(NULL に初期化)
    41294038                f.printf( "%-40s /* %s #_CCP2B_# */\n", "0,", p.get_name )
    41304039              end
     
    41374046  end
    41384047
    4139   #=== 受け口の初期化コードの生成
     4048  #=== 受け口の初期化コードの生成
    41404049  def gen_cell_cb_entry_port( cell, indent, f, name_array )
    41414050    jl = cell.get_join_list
     
    41464055      f.print "/* entry port #_EP_# */ \n"
    41474056      @port.each{ |p|
    4148         # next if p.is_omit?  # 受け口é
    4149 åˆ—の個数は省略しない
     4057        # next if p.is_omit?  # 受け口配列の個数は省略しない
    41504058        if p.get_port_type == :ENTRY && p.get_array_size == "[]"
    41514059          print_indent( f, indent + 1 )
     
    41564064  end
    41574065
    4158   #=== セルの attribute の初期値を出力
     4066  #=== セルの attribute の初期値を出力
    41594067  #
    4160   #f_get_str:: true の場合、文字列を返す、false の場合、ファイル f に出力する.
    4161   # 文字列を返すとき、末尾に ',' は含まれない.
    4162   # ファイルへ出力するとき、末尾に ',' が出力される.構造体要素、é
    4163 åˆ—要素の初期値を出力すると ',' が二重に出力される.
    4164   # ただし現状では、ファイルへ出力することはない
     4068  #f_get_str:: true の場合、文字列を返す、false の場合、ファイル f に出力する.
     4069  # 文字列を返すとき、末尾に ',' は含まれない.
     4070  # ファイルへ出力するとき、末尾に ',' が出力される.構造体要素、配列要素の初期値を出力すると ',' が二重に出力される.
     4071  # ただし現状では、ファイルへ出力することはない
    41654072  #
    41664073  def gen_cell_cb_init( f, cell, name_array, type, init, identifier, indent, f_get_str = false )
     
    41764083
    41774084      if f_get_str then
    4178         # 初期値未指定
     4085        # 初期値未指定
    41794086        if type.kind_of?( BoolType ) then
    41804087          str = "false"   # formerly tecs_false
     
    42004107        return str
    42014108      else
    4202         # 初期値未指定
     4109        # 初期値未指定
    42034110        if type.kind_of?( BoolType ) then
    42044111          f.print "    " * indent
     
    42344141    end   
    42354142
    4236     # このメソッドは Celltype のものであるå¿
    4237 è¦ã¯ç„¡ã„(上に続くのでここに置く)
    4238     # 初期値指定あり
     4143    # このメソッドは Celltype のものである必要は無い(上に続くのでここに置く)
     4144    # 初期値指定あり
    42394145    if type.kind_of?( BoolType ) then
    42404146      if init.instance_of?( C_EXP ) then
     
    43024208
    43034209      len.times {
    4304         next if ! init[i]        # mikan この処置は適切?
     4210        next if ! init[i]        # mikan この処置は適切?
    43054211        if f_get_str then
    43064212          str += gen_cell_cb_init( f, cell, name_array, at, init[i], "#{identifier}[#{i}]", indent + 1, f_get_str )
     
    43844290  end
    43854291
    4386   #== 関数テーブルの外部参ç
    4387 §
     4292  #== 関数テーブルの外部参照
    43884293  def gen_cell_extern_mt fs
    43894294    fs.each{ |r, f|
     
    44004305  end
    44014306
    4402   #=== 受け口ディスクリプタの定義を生成
     4307  #=== 受け口ディスクリプタの定義を生成
    44034308  def gen_cell_ep_des fs
    44044309    if @n_cell_gen >0 then
     
    44134318      f = fs[ c.get_region.get_domain_root ]
    44144319
    4415       ct = c.get_celltype     # ct = self でも同じ
     4320      ct = c.get_celltype     # ct = self でも同じ
    44164321      jl = c.get_join_list
    44174322      name_array = get_name_array( c )
     
    44224327          next if p.get_port_type != :ENTRY
    44234328          next if p.is_omit?
    4424           if p.is_skelton_useless?       # 受け口最適化n ep_opt
     4329          if p.is_skelton_useless?       # 受け口最適化n ep_opt
    44254330            f.print( "/* #{p.get_name} : omitted by entry port optimize */\n" )
    44264331            next
     
    44334338
    44344339          if len != nil then
    4435             # 受け口é
    4436 åˆ—の場合
     4340            # 受け口配列の場合
    44374341            i = 0
    44384342            while i < len
     
    45194423    return if @b_reuse && ! $generate_all_template
    45204424    if ! ( @plugin && @plugin.gen_ep_func? ) then
    4521       return if $generate_no_template     # $generate_all_template より優å
    4522 ˆã•ã‚Œã‚‹
    4523 
    4524       # 参考として出力するテンプレートファイルであることを示すために "_templ" を付加する
     4425      return if $generate_no_template     # $generate_all_template より優先される
     4426
     4427      # 参考として出力するテンプレートファイルであることを示すために "_templ" を付加する
    45254428      fname = "#{$gen}/#{@global_name}_templ.#{$c_suffix}"
    45264429    else
    4527       # Plugin により生成されたセルタイプについては、原則的にテンプレートではなく、
    4528       # 修正不要なセルタイプの実è£
    4529 ã‚³ãƒ¼ãƒ‰ã‚’生成する.
    4530       # このため、ファイル名に _temp を付加しない
     4430      # Plugin により生成されたセルタイプについては、原則的にテンプレートではなく、
     4431      # 修正不要なセルタイプの実装コードを生成する.
     4432      # このため、ファイル名に _temp を付加しない
    45314433      fname = "#{$gen}/#{@global_name}.#{$c_suffix}"
    45324434    end
     
    45434445    gen_template_attr_access f
    45444446    gen_template_cp_fun f
    4545     # gen_template_types f     # 0805503 追加してみたが、やっぱりやめる
     4447    # gen_template_types f     # 0805503 追加してみたが、やっぱりやめる
    45464448    f.print( " *\n * #[</PREAMBLE>]# */\n\n" )
    45474449    f.printf TECSMsg.get( :PAC_comment ), "#_PAC_#"
     
    45494451    gen_template_private_header f
    45504452    if ( @plugin ) then
    4551       # このメソッドの引数は plugin.rb の説明を見よ
     4453      # このメソッドの引数は plugin.rb の説明を見よ
    45524454      @plugin.gen_preamble( f, @singleton, @name, @global_name )
    45534455    end
     
    45584460
    45594461    if ( @plugin ) then
    4560       # このメソッドの引数は plugin.rb の説明を見よ
     4462      # このメソッドの引数は plugin.rb の説明を見よ
    45614463      @plugin.gen_postamble( f, @singleton, @name, @global_name )
    45624464    end
     
    47404642      next if p.get_port_type != :ENTRY
    47414643      next if p.is_omit?
    4742       next if b_inline && ! p.is_inline?  # inline ポート
    4743       next if ! b_inline && p.is_inline?  # 非 inline ポート
     4644      next if b_inline && ! p.is_inline?  # inline ポート
     4645      next if ! b_inline && p.is_inline?  # 非 inline ポート
    47444646
    47454647      inline_prefix = ""
     
    47984700          len = items.length
    47994701        else
    4800           # ここで nil になるのは、引数なしの時に void がなかった場合
     4702          # ここで nil になるのは、引数なしの時に void がなかった場合
    48014703          items = []
    48024704          len = 0
     
    48194721
    48204722        if ( @plugin && @plugin.gen_ep_func? ) then
    4821           # このメソッドの引数は plugin.rb の説明を見よ
     4723          # このメソッドの引数は plugin.rb の説明を見よ
    48224724          @plugin.gen_ep_func_body( f, @singleton, @name, @global_name, p.get_signature.get_global_name, p.get_name, fun.get_name, "#{@global_name}_#{p.get_name}_#{fun.get_name}", functype, items )
    48234725
     
    48674769    if ! ( @plugin && @plugin.gen_ep_func? ) then
    48684770      return if @b_reuse && ! $generate_all_template
    4869       return if $generate_no_template     # $generate_all_template より優å
    4870 ˆã•ã‚Œã‚‹
    4871 
    4872       # 参考として出力するテンプレートファイルであることを示すために "_templ" を付加する
     4771      return if $generate_no_template     # $generate_all_template より優先される
     4772
     4773      # 参考として出力するテンプレートファイルであることを示すために "_templ" を付加する
    48734774      fname = "#{$gen}/#{@global_name}_inline_templ.#{$h_suffix}"
    48744775    else
    4875       # Plugin により生成されたセルタイプについては、原則的にテンプレートではなく、
    4876       # 修正不要なセルタイプの実è£
    4877 ã‚³ãƒ¼ãƒ‰ã‚’生成する.
    4878       # このため、ファイル名に _temp を付加しない
     4776      # Plugin により生成されたセルタイプについては、原則的にテンプレートではなく、
     4777      # 修正不要なセルタイプの実装コードを生成する.
     4778      # このため、ファイル名に _temp を付加しない
    48794779      fname = "#{$gen}/#{@global_name}_inline.#{$h_suffix}"
    48804780    end
     
    48994799
    49004800    if ( @plugin ) then
    4901       # このメソッドの引数は plugin.rb の説明を見よ
     4801      # このメソッドの引数は plugin.rb の説明を見よ
    49024802      @plugin.gen_postamble( f, @singleton, @name, @global_name )
    49034803    end
     
    49164816      if fa.get_name == :write then
    49174817
    4918         # 前後の " を取り除く
     4818        # 前後の " を取り除く
    49194819        # file_name = fa.get_file_name.sub( /^\"(.*)\"$/, "\\1" )
    49204820        file_name = CDLString.remove_dquote fa.get_file_name
    49214821        format = CDLString.remove_dquote fa.get_format
    4922         # format    = fa.get_format.sub( /^\"(.*)/, "\\1" )        # 前の " を取り除く
    4923         # format    = format.sub( /(.*)\"\z/, "\\1" )              # 後の " を取り除く
     4822        # format    = fa.get_format.sub( /^\"(.*)/, "\\1" )        # 前の " を取り除く
     4823        # format    = format.sub( /(.*)\"\z/, "\\1" )              # 後の " を取り除く
    49244824        format    = format.gsub( /\\\n/, "\n" )                  # \\\n => \n
    49254825
    49264826
    4927         # mikan 以下は subst_name で置換するように変更すべき
    4928         file_name = file_name.gsub( /(^|[^\$])\$ct\$/, "\\1#{@name}" )   # $ct$ をセルタイプ名に置換
    4929         file_name = file_name.gsub( /(^|[^\$])\$ct_global\$/, "\\1#{@global_name}" )   # $ct$ をセルタイプ名に置換
    4930         format    = format.gsub( /(^|[^\$])\$ct\$/, "\\1#{@name}" )   # $ct$ をセルタイプ名に置換
    4931         format    = format.gsub( /(^|[^\$])\$ct_global\$/, "\\1#{@global_name}" )   # $ct$ をセルタイプ名に置換
    4932         format    = format.gsub( /\$\$/, "\$" )                # $$ を $ に置換
     4827        # mikan 以下は subst_name で置換するように変更すべき
     4828        file_name = file_name.gsub( /(^|[^\$])\$ct\$/, "\\1#{@name}" )   # $ct$ をセルタイプ名に置換
     4829        file_name = file_name.gsub( /(^|[^\$])\$ct_global\$/, "\\1#{@global_name}" )   # $ct$ をセルタイプ名に置換
     4830        format    = format.gsub( /(^|[^\$])\$ct\$/, "\\1#{@name}" )   # $ct$ をセルタイプ名に置換
     4831        format    = format.gsub( /(^|[^\$])\$ct_global\$/, "\\1#{@global_name}" )   # $ct$ をセルタイプ名に置換
     4832        format    = format.gsub( /\$\$/, "\$" )                # $$ を $ に置換
    49334833
    49344834        if file_name[0] != ?/ then
     
    49424842            puts( format )
    49434843          end
    4944           # format 中の \n, \r, \t, \f と \" などを置換
     4844          # format 中の \n, \r, \t, \f と \" などを置換
    49454845          fmt = CDLString.escape format
    49464846          cfg_file.print( fmt )
     
    49594859    @ordered_cell_list.each{ |c|
    49604860
    4961       # cell のプロトタイプ宣言なら無視
     4861      # cell のプロトタイプ宣言なら無視
    49624862      next if ! c.is_generate?
    49634863
     
    49684868        if fa.get_name == :write then
    49694869
    4970           # 前後の " を取り除く
     4870          # 前後の " を取り除く
    49714871          # file_name = fa.get_file_name.sub( /^\"(.*)\"$/, "\\1" )
    49724872          file_name = CDLString.remove_dquote fa.get_file_name
    49734873          file_name = subst_name( file_name, name_array )
    4974           # format    = fa.get_format.sub( /^\"(.*)\"$/, "\\1" )        # 前後の "" を取り除く
     4874          # format    = fa.get_format.sub( /^\"(.*)\"$/, "\\1" )        # 前後の "" を取り除く
    49754875          format    = CDLString.remove_dquote fa.get_format
    4976           # format    = fa.get_format.sub( /^\"(.*)/, "\\1" )        # 前の " を取り除く
    4977           # format    = format.sub( /(.*)\"\z/, "\\1" )              # 後の " を取り除く
     4876          # format    = fa.get_format.sub( /^\"(.*)/, "\\1" )        # 前の " を取り除く
     4877          # format    = format.sub( /(.*)\"\z/, "\\1" )              # 後の " を取り除く
    49784878          format    = format.gsub( /\\\n/, "\n" )                  # \\\n => \n
    49794879
     
    49864886          end
    49874887
    4988           na = []     # シンボルを attribute の値に置き換えた後の引数
     4888          na = []     # シンボルを attribute の値に置き換えた後の引数
    49894889          if arg_list then
    49904890            arg_list.each { |a|
    49914891              case a[0]
    4992               when :STRING_LITERAL   # 文字列定数
    4993                 # s = a[1].sub( /^\"(.*)\"$/, "\\1" )            # 前後の "" を取り除く
     4892              when :STRING_LITERAL   # 文字列定数
     4893                # s = a[1].sub( /^\"(.*)\"$/, "\\1" )            # 前後の "" を取り除く
    49944894                s = CDLString.remove_dquote a[1]
    49954895                s = subst_name( s, name_array )
     
    49984898                na << s
    49994899              when :IDENTIFIER
    5000                 param_name = a[1]    # 識別子(属性の名前)
     4900                param_name = a[1]    # 識別子(属性の名前)
    50014901                attr = self.find( param_name )
    5002                 init = attr.get_initializer      # celltype で指定された初期値
    5003 
    5004                 # cell の join のリストから名前を探す
     4902                init = attr.get_initializer      # celltype で指定された初期値
     4903
     4904                # cell の join のリストから名前を探す
    50054905                j = c.get_join_list.get_item( param_name )
    5006                 if j then    # param_name の cell のジョインがあるか
    5007                   init = j.get_rhs                    # cell で指定された初期値を優å
    5008 ˆ
     4906                if j then    # param_name の cell のジョインがあるか
     4907                  init = j.get_rhs                    # cell で指定された初期値を優先
    50094908                end
    50104909
     
    50124911                                      # file,cell, name_array, type,          init, identifier,       indent, f_get_str
    50134912
    5014                 # str = str.sub( /^\"(.*)\"$/, "\\1" )            # 前後の "" を取り除く mikan ここで置換でよい?
     4913                # str = str.sub( /^\"(.*)\"$/, "\\1" )            # 前後の "" を取り除く mikan ここで置換でよい?
    50154914                str = CDLString.remove_dquote str
    50164915                na << str
     
    50304929            end
    50314930
    5032             # format 中の \n, \r, \t, \f と \" などを置換
     4931            # format 中の \n, \r, \t, \f と \" などを置換
    50334932            fmt = CDLString.escape format
    50344933            cfg_file.printf( fmt, *na )
     
    50544953    return if $generate_no_template
    50554954
    5056     # Makefile.templ の生成(追記)
     4955    # Makefile.templ の生成(追記)
    50574956
    50584957    f = AppFile.open( "#{$gen}/Makefile.templ" )
     
    50624961 
    50634962EOT
    5064 # この生成規則は2点で意味がない
    5065 ãƒ»$(GEN_DIR) に .o を生成するルールがない
    5066 ãƒ»ãƒ†ãƒ³ãƒ—レートコードをそのままビルドするのは紛らわしい
     4963# この生成規則は2点で意味がない
     4964・$(GEN_DIR) に .o を生成するルールがない
     4965・テンプレートコードをそのままビルドするのは紛らわしい
    50674966# # Celltype: #{@name}
    50684967# $(GEN_DIR)/#{@global_name}_tecsgen.o : $(GEN_DIR)/#{@global_name}_tecsgen.#{$c_suffix}
     
    50814980    headers = [ "$(GEN_DIR)/#{@global_name}_tecsgen.#{$h_suffix}", "$(GEN_DIR)/#{@global_name}_factory.#{$h_suffix}", "$(GEN_DIR)/global_tecsgen.#{$h_suffix}" ]
    50824981
    5083     # inline 受け口を持つか?
     4982    # inline 受け口を持つか?
    50844983    if @n_entry_port_inline > 0 then
    50854984      headers << "#{@global_name}_inline.#{$h_suffix}"
    50864985    end
    50874986
    5088     # 呼び口または受け口のシグニチャのヘッダ
     4987    # 呼び口または受け口のシグニチャのヘッダ
    50894988    @port.each { |p|
    50904989      next if p.is_omit?
     
    51115010  end
    51125011
    5113   #=== decl 用の dealloc コードを生成
    5114   #b_reset:: Bool:  リセット用の dealloc コードの生成 (NULL ポインタの場合 dealloc しない)
    5115   # mikan string 修飾されたポインタのå
    5116 ˆã«ãƒã‚¤ãƒ³ã‚¿ãŒæ¥ãªã„と仮定。ポインタ型を持つ構造体の可能性を排除していない
    5117   # このメソッドでは、行を出力する直前に " \\\n" を出力し、行末で改行文字を出力しない
     5012  #=== decl 用の dealloc コードを生成
     5013  #b_reset:: Bool:  リセット用の dealloc コードの生成 (NULL ポインタの場合 dealloc しない)
     5014  # mikan string 修飾されたポインタの先にポインタが来ないと仮定。ポインタ型を持つ構造体の可能性を排除していない
     5015  # このメソッドでは、行を出力する直前に " \\\n" を出力し、行末で改行文字を出力しない
    51185016  def gen_dealloc_code_for_type( f, type, dealloc_func_name, pre, name, post, level, b_reset, count_str = nil )
    51195017    type = type.get_original_type
     
    51445042        post2 = ""
    51455043        type2 = md.get_type.get_original_type
    5146         if type2.kind_of? PtrType then   # mikan typedef された型
     5044        if type2.kind_of? PtrType then   # mikan typedef された型
    51475045          if type2.get_count then
    51485046            count_str = type2.get_count.to_str( members_decl, pre2, post2 )
     
    52175115    end
    52185116
    5219     # 呼び口の結合å
    5220 ˆã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—のヘッダ(最適化の場合のみ)
    5221     # 結合å
    5222 ˆã®å—け口が inline の場合、inline ヘッダも
     5117    # 呼び口の結合先のセルタイプのヘッダ(最適化の場合のみ)
     5118    # 結合先の受け口が inline の場合、inline ヘッダも
    52235119    @port.each { |p|
    52245120      next if p.get_port_type != :CALL
     
    52265122
    52275123      if p.is_skelton_useless? || p.is_cell_unique? || p.is_VMT_useless? then
    5228         # 最適化コード (optimize) # スケルトン不要など
     5124        # 最適化コード (optimize) # スケルトン不要など
    52295125        p2 = p.get_real_callee_port
    52305126        if p2 then
     
    52365132          headers += ct.get_depend_header_list_( celltype_list )
    52375133        #else
    5238         #  optional で未結合 
     5134        #  optional で未結合 
    52395135        end
    52405136      end
     
    52445140
    52455141
    5246   #=== $id$, $ct$, $cb$, $idx$ 置換
     5142  #=== $id$, $ct$, $cb$, $idx$ 置換
    52475143  #
    5248   #  str に以下の置換を行う
    5249   #-   $ct$ ⇒ セルタイプ名(ct)
    5250   #-   $cell$ ⇒ セル名(cell)   cell が nil ならば以下の置換は行われない
    5251   #-   $cb$ ⇒ CB の C 言語名(cb)
    5252   #-   $cbp$ ⇒ CB へのポインタ(cbp)
    5253   #-   $cb_proto$ ⇒ CB の C 言語名プロトタイプ宣言用(cb_proto)
    5254   #-   $id$ ⇒ $ct$_$cell_global$    # ct_cell  before or same V1.5.2
    5255   #-   $idx$ ⇒ idx
    5256   #-   $ID$ ⇒ id (整数の番号)
    5257   #-   $ct_global$ ⇒ セルタイプ名(ct)
    5258   #-   $cell_global$ ⇒ セル名(cell)
    5259   #-   $$   â‡’ $
     5144  #  str に以下の置換を行う
     5145  #-   $ct$ ⇒ セルタイプ名(ct)
     5146  #-   $cell$ ⇒ セル名(cell)   cell が nil ならば以下の置換は行われない
     5147  #-   $cb$ ⇒ CB の C 言語名(cb)
     5148  #-   $cbp$ ⇒ CB へのポインタ(cbp)
     5149  #-   $cb_proto$ ⇒ CB の C 言語名プロトタイプ宣言用(cb_proto)
     5150  #-   $id$ $ct$_$cell_global$    # ct_cell  before or same V1.5.2
     5151  #-   $idx$ idx
     5152  #-   $ID$ ⇒ id (整数の番号)
     5153  #-   $ct_global$ ⇒ セルタイプ名(ct)
     5154  #-   $cell_global$ ⇒ セル名(cell)
     5155  #-   $$    $
    52605156  def subst_name( str, name_array )
    52615157    ct   = name_array[0]    # celltype name
    52625158    cell = name_array[1]    # cell name
    52635159    cb   = name_array[2]    # cell CB name
    5264     cb_init = name_array[3] # cell CB INIT, これは置換に使われない
     5160    cb_init = name_array[3] # cell CB INIT, これは置換に使われない
    52655161    cb_proto = name_array[4] # cell CB name for prototype
    52665162    id   = name_array[6]    # cell ID
     
    52835179      str = str.gsub( /(^|[^\$])\$cell_global\$/, "\\1#{cell_global}" )
    52845180    end
    5285     str = str.gsub( /\$\$/, "\$" )                       # $$ を $ に置換
     5181    str = str.gsub( /\$\$/, "\$" )                       # $$ を $ に置換
    52865182
    52875183    return str
     
    52905186end
    52915187
    5292 # Appendable File(追記可能ファイル)
     5188# Appendable File(追記可能ファイル)
    52935189class AppFile
    5294   # 開いたファイルのリスト
     5190  # 開いたファイルのリスト
    52955191  @@file_name_list = {}
    52965192
     
    53095205    end
    53105206
    5311     # 既に開いているか?
     5207    # 既に開いているか?
    53125208    if @@file_name_list[ name ] then
    53135209#2.0
    53145210      mode = "a" + mode
    5315       # 追記モードで開く
     5211      # 追記モードで開く
    53165212      file = File.open( real_name, mode )
    53175213    else
    53185214#2.0
    53195215      mode = "w" + mode
    5320       # 新規モードで開く(既にあれば、サイズを0にする)
     5216      # 新規モードで開く(既にあれば、サイズを0にする)
    53215217      file = File.open( real_name, mode )
    53225218      @@file_name_list[ name ] = true
    53235219    end
    5324     # File クラスのオブジェクトを返す
     5220    # File クラスのオブジェクトを返す
    53255221    return file
    53265222  end
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/core/location.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 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$
     
    7762
    7863#==  Cell_location
    79   # tecscde の位置æƒ
    80 å ±
     64  # tecscde の位置情報
    8165  class  Cell_location
    8266
     
    10589
    10690  #==  Join_location
    107   # tecscde の位置æƒ
    108 å ±
     91  # tecscde の位置情報
    10992  class  Join_location
    11093    @@join_location_list = []
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/core/messages.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 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 #== TECS の生成する各国語化å¿
    56 è¦ãªæ–‡å­—列
    57 # 現状、エラーメッセージは英語のみ
    58 # 生成ファイルのコメントとして出力される文字列
     40#== TECS の生成する各国語化必要な文字列
     41# 現状、エラーメッセージは英語のみ
     42# 生成ファイルのコメントとして出力される文字列
    5943class TECSMsg
    6044
    61   #=== TECSMsg#生成するヘッダやテンプレートなどに含めるコメントの取得
    62   # CDL の文字コードに合わせて、文字コード変換を行う
     45  #=== TECSMsg#生成するヘッダやテンプレートなどに含めるコメントの取得
     46  # CDL の文字コードに合わせて、文字コード変換を行う
    6347  def self.get( msg )
    6448    str = @@comment[ msg ]
     
    7155  end
    7256
    73  #=== TECSMsg#ローカライズされたエラーメッセージを得る
    74  #body::String   : "S0001 error message body"  の形式
    75  # S0001 の部分が使用される
    76  # Generator.error2 から呼び出される
     57 #=== TECSMsg#ローカライズされたエラーメッセージを得る
     58 #body::String   : "S0001 error message body"  の形式
     59 # S0001 の部分が使用される
     60 # Generator.error2 から呼び出される
    7761 def self.get_error_message( body )
    78    body =~ /^[A-Z0-9]+/    # エラー番号を取り出す
     62   body =~ /^[A-Z0-9]+/    # エラー番号を取り出す
    7963   num = $&
    8064   if num then
     
    9175 end
    9276
    93  #=== TECSMsg#ローカライズされたウォーニングメッセージを得る
    94  # Generator.warning2 から呼び出される
     77 #=== TECSMsg#ローカライズされたウォーニングメッセージを得る
     78 # Generator.warning2 から呼び出される
    9579 def self.get_warning_message( body )
    96    body =~ /^[A-Z0-9]+/    # ウォーニング番号を取り出す
     80   body =~ /^[A-Z0-9]+/    # ウォーニング番号を取り出す
    9781   num = $&
    9882   msg = @@warning_message[ num.to_sym ]
     
    10589 end
    10690
    107  #=== TECSMsg#ローカライズされたæƒ
    108 å ±ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’å¾—ã‚‹
    109  # Generator.info2 から呼び出される
     91 #=== TECSMsg#ローカライズされた情報メッセージを得る
     92 # Generator.info2 から呼び出される
    11093 def self.get_info_message( body )
    111    body =~ /^[A-Z0-9]+/    # æƒ
    112 å ±ç•ªå·ã‚’取り出す
     94   body =~ /^[A-Z0-9]+/    # 情報番号を取り出す
    11395   num = $&
    11496   msg = @@info_message[ num.to_sym ]
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/core/optimize.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2018 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$
     
    5843Other processes are setting ID for each cell and setting domain information
    5944
    60 ã“のファイルには、意味解析からコード生成の間で行うべき処理が含まれる.
    61 æœ€é©åŒ–もその一つである.
    62 ãã®ä»–に、セル毎の ID 付け、ドメインわけを行う.
    63 ã‚³ãƒ¼ãƒ‰ç”Ÿæˆå¯¾è±¡ã¨ãªã‚‹ã‚»ãƒ«ã‚’対象に処理を行うものが含まれる.
     45このファイルには、意味解析からコード生成の間で行うべき処理が含まれる.
     46最適化もその一つである.
     47その他に、セル毎の ID 付け、ドメインわけを行う.
     48コード生成対象となるセルを対象に処理を行うものが含まれる.
    6449=end
    6550
    6651class Namespace
    6752
    68   #===  各セルに ID (整数値)を割付ける
     53  #===  各セルに ID (整数値)を割付ける
    6954  def set_cell_id_and_domain
    70     # celltype の各セルに ID を割付ける
     55    # celltype の各セルに ID を割付ける
    7156    @celltype_list.each { |t|
    7257      t.set_cell_id_and_domain
    7358    }
    7459
    75     # サブネームスペースの各セルに ID を割付ける
     60    # サブネームスペースの各セルに ID を割付ける
    7661    @namespace_list.each { |n|
    7762      n.set_cell_id_and_domain
     
    8065
    8166  def optimize
    82     # celltype の最適化
     67    # celltype の最適化
    8368    @celltype_list.each { |t|
    8469      t.optimize
    8570    }
    8671
    87     # サブネームスペースの最適化
     72    # サブネームスペースの最適化
    8873    @namespace_list.each { |n|
    8974      n.optimize
     
    9277
    9378  def reset_optimize
    94     # celltype の最適化
     79    # celltype の最適化
    9580    @celltype_list.each { |t|
    9681      t.reset_optimize
    9782    }
    9883
    99     # サブネームスペースの最適化
     84    # サブネームスペースの最適化
    10085    @namespace_list.each { |n|
    10186      n.reset_optimize
     
    10691class Celltype
    10792
    108   ID_BASE = 1               # reset_optimize でリセットする
     93  ID_BASE = 1               # reset_optimize でリセットする
    10994  @@ID_BASE = ID_BASE
    11095
     
    11499  end
    115100
    116   #=== 各セルに ID (整数値)を割付ける
     101  #=== 各セルに ID (整数値)を割付ける
    117102  def set_cell_id
    118103
     
    122107
    123108    if $unique_id then
    124       @id_base = @@ID_BASE   # id をシステムå
    125 ¨ä½“で連番にする
     109      @id_base = @@ID_BASE   # id をシステム全体で連番にする
    126110    else
    127       @id_base = 1           # base を常に 1 から始める
     111      @id_base = 1           # base を常に 1 から始める
    128112    end
    129113
     
    131115    no_id_specified_cells = []
    132116
    133     # プロトタイプを除いた数を求める
     117    # プロトタイプを除いた数を求める
    134118    @cell_list.each{ |c|
    135119      if c.is_generate? then
     
    148132    }
    149133
    150     @ordered_cell_list = []   # id = 1 が添数 0 に格納される
    151     # ID 指定されているセルに id 番号を与える
     134    @ordered_cell_list = []   # id = 1 が添数 0 に格納される
     135    # ID 指定されているセルに id 番号を与える
    152136    id_specified_cells.each{ |c|
    153137      id = c.get_specified_id
     
    169153      end
    170154      @ordered_cell_list[ id - 1 ] = c
    171       # 通し番号とする場合のため @id_base を加える
     155      # 通し番号とする場合のため @id_base を加える
    172156      c.set_id( @id_base - 1 + id )
    173157      if $verbose then
     
    176160    }
    177161
    178     # ID 指定されていないセルに id 番号を与える
     162    # ID 指定されていないセルに id 番号を与える
    179163    i = 0
    180164    no_id_specified_cells.each{ |c|
     
    243227
    244228    @domain_roots.each{ |dn, regions|
    245       # domain_type は一つのノードに一つしかないので、一つの要素を無条件で取り出す
     229      # domain_type は一つのノードに一つしかないので、一つの要素を無条件で取り出す
    246230      if regions.length > 1 then
    247231        if $verbose then
     
    259243  def optimize
    260244
    261     # port の参ç
    262 §ã™ã‚‹ã‚»ãƒ«ã‚¿ã‚¤ãƒ—の数、セルの数を求める
     245    # port の参照するセルタイプの数、セルの数を求める
    263246    if $verbose then
    264247      print "=== optimizing celltype #{get_namespace_path.to_s} ===\n"
     
    271254  end
    272255
    273   #=== Celltype#呼び口最適化
     256  #=== Celltype#呼び口最適化
    274257  def optimize_call
    275258    @port.each{ |port|
    276259      next if port.get_port_type != :CALL
    277260      if port.is_omit? then
    278         # 呼び口最適化実施
     261        # 呼び口最適化実施
    279262        @b_cp_optimized = true
    280         @n_call_port_omitted_in_CB += 1               # CB で省略する呼び口
    281         port.set_skelton_useless                      # スケルトン関数不要最適化
    282         port.set_VMT_useless                          # VMT 不要最適化 (直接受け口関数を呼出す)
     263        @n_call_port_omitted_in_CB += 1               # CB で省略する呼び口
     264        port.set_skelton_useless                      # スケルトン関数不要最適化
     265        port.set_VMT_useless                          # VMT 不要最適化 (直接受け口関数を呼出す)
    283266        if $verbose then
    284267          print "optimized by omit: port: #{port.get_name} : o\n"
     
    301284      end
    302285
    303       port_cells = []    # 呼びå
    304 ˆã‚»ãƒ«
    305       port_ports = []    # 呼びå
    306 ˆã®ãƒãƒ¼ãƒˆ
    307 
    308       # セルの参ç
    309 §ã™ã‚‹ã‚»ãƒ«ã‚’集める(ポートも一緒に集める)
     286      port_cells = []    # 呼び先セル
     287      port_ports = []    # 呼び先のポート
     288
     289      # セルの参照するセルを集める(ポートも一緒に集める)
    310290      @cell_list.each{ |cell|
    311291
     
    319299        if j then
    320300          if j.get_array_member2 then
    321             # 呼び口é
    322 åˆ—の場合、å
    323 ¨éƒ¨ã®çµåˆå
    324 ˆã‚’集める
     301            # 呼び口配列の場合、全部の結合先を集める
    325302            j.get_array_member2.each { |j2|
    326303              if j2 then
    327304                port_cells << j2.get_rhs_cell
    328                 port_ports << j2.get_rhs_port   # 右辺のポート
     305                port_ports << j2.get_rhs_port   # 右辺のポート
    329306              else
    330                 # optional で、ある添数のみ初期化されていない(すべて初期化されない場合は、下)
     307                # optional で、ある添数のみ初期化されていない(すべて初期化されない場合は、下)
    331308                port_cells << nil
    332309                port_ports << nil
     
    334311            }
    335312          else
    336             # å
    337 ¨ã¦ã®çµåˆå
    338 ˆã‚’集める
     313            # 全ての結合先を集める
    339314            port_cells << j.get_rhs_cell
    340             port_ports << j.get_rhs_port   # 右辺のポート
     315            port_ports << j.get_rhs_port   # 右辺のポート
    341316          end
    342317        else
    343           # optional で初期化されていない(nil を要素に加えておく)
     318          # optional で初期化されていない(nil を要素に加えておく)
    344319          port_cells << nil
    345           port_ports << nil   # 右辺のポート
     320          port_ports << nil   # 右辺のポート
    346321        end
    347322      }
    348323
    349       # 重複要素を取り除く
     324      # 重複要素を取り除く
    350325      port_cells.uniq!
    351326      port_ports.uniq!
    352327
    353       # 呼び口の呼びå
    354 ˆãŒä¸€ã¤ã®ãƒãƒ¼ãƒˆã ã‘か?
     328      # 呼び口の呼び先が一つのポートだけか?
    355329      if port_ports.length == 1 then
    356330
    357         # 呼び口é
    358 åˆ—が可変長の場合、最適化しない
    359              # mikan 呼び口é
    360 åˆ—要素数マクロ不å
    361 ·åˆæš«å®šå¯¾ç­–
    362              # より望ましい修正は、受け口へのポインタは省略するが、é
    363 åˆ—個数は出力する(#_CP_#, #_TCP_#)
    364              # さらにé
    365 åˆ—個数が定数化できるのであれば、定数マクロを出力 (#_NCPA_#)
     331        # 呼び口配列が可変長の場合、最適化しない
     332             # mikan 呼び口配列要素数マクロ不具合暫定対策
     333             # より望ましい修正は、受け口へのポインタは省略するが、配列個数は出力する(#_CP_#, #_TCP_#)
     334             # さらに配列個数が定数化できるのであれば、定数マクロを出力 (#_NCPA_#)
    366335        next if port.get_array_size == "[]"
    367336
    368         # 呼び口最適化実施
     337        # 呼び口最適化実施
    369338        @b_cp_optimized = true
    370339
    371         # 呼びå
    372 ˆãŒä¸€ã¤ã®ã‚»ãƒ«ã ã‘か?
     340        # 呼び先が一つのセルだけか?
    373341        if port_cells.length == 1 then
    374342
    375           # 呼び口は optional で初期化されていない、または受け口はé
    376 åˆ—ではないか?
     343          # 呼び口は optional で初期化されていない、または受け口は配列ではないか?
    377344          if port_ports[0] == nil || port_ports[0].get_array_size == nil then
    378345
    379             @n_call_port_omitted_in_CB += 1               # CB で省略する呼び口
    380             port.set_cell_unique                          # セル一つだけ最適化
    381             port.set_skelton_useless                      # スケルトン関数不要最適化
    382             port.set_VMT_useless                          # VMT 不要最適化 (直接受け口関数を呼出す)
     346            @n_call_port_omitted_in_CB += 1               # CB で省略する呼び口
     347            port.set_cell_unique                          # セル一つだけ最適化
     348            port.set_skelton_useless                      # スケルトン関数不要最適化
     349            port.set_VMT_useless                          # VMT 不要最適化 (直接受け口関数を呼出す)
    383350
    384351            if $verbose then
     
    386353            end
    387354          else
    388             port.set_VMT_useless                          # VMT 不要最適化 (スケルトン関数を呼出す)
     355            port.set_VMT_useless                          # VMT 不要最適化 (スケルトン関数を呼出す)
    389356
    390357            if $verbose then
     
    393360          end
    394361
    395         else  # 呼びå
    396 ˆãŒè¤‡æ•°ã®ã‚»ãƒ«ï¼ˆå˜ä¸€ã®ãƒãƒ¼ãƒˆï¼‰
    397 
    398           # 呼び口は optional で初期化されていない、または受け口はé
    399 åˆ—ではないか?
     362        else  # 呼び先が複数のセル(単一のポート)
     363
     364          # 呼び口は optional で初期化されていない、または受け口は配列ではないか?
    400365          if port_ports[0] == nil || port_ports[0].get_array_size == nil then
    401366            if ! @singleton then
    402               port.set_skelton_useless                    # スケルトン関数不要最適化
    403               port.set_VMT_useless                        # VMT 不要最適化 (スケルトン関数 or 受け口関数を呼出す)
     367              port.set_skelton_useless                    # スケルトン関数不要最適化
     368              port.set_VMT_useless                        # VMT 不要最適化 (スケルトン関数 or 受け口関数を呼出す)
    404369
    405370              if $verbose then
     
    407372              end
    408373            else
    409               port.set_VMT_useless                           # VMT 不要最適化 (スケルトン関数 or 受け口関数を呼出す)
     374              port.set_VMT_useless                           # VMT 不要最適化 (スケルトン関数 or 受け口関数を呼出す)
    410375
    411376              if $verbose then
     
    417382
    418383        port.set_only_callee( port_ports[0], port_cells[0] )
    419            # set_cell_unique でない場合 cell は意味がない
     384           # set_cell_unique でない場合 cell は意味がない
    420385
    421386      end
     
    426391  end
    427392
    428   #=== Celltype#受け口最適化
    429   # optimize_entry は、呼び口最適化の結果を使用している
     393  #=== Celltype#受け口最適化
     394  # optimize_entry は、呼び口最適化の結果を使用している
    430395  def optimize_entry
    431     # 受け口最適化の設定
     396    # 受け口最適化の設定
    432397    @port.each{ |port|
    433398      next if port.get_port_type != :CALL
    434399
    435       # 呼び口側の最適化状æ
    436 ‹
     400      # 呼び口側の最適化状態
    437401      b_VMT_useless     = port.is_VMT_useless?
    438402      b_skelton_useless = port.is_skelton_useless?
    439403
    440       # セルの参ç
    441 §ã™ã‚‹ã‚»ãƒ«ã‚’集める(ポートも一緒に集める)
     404      # セルの参照するセルを集める(ポートも一緒に集める)
    442405      @cell_list.each{ |cell|
    443406
     
    449412        j = jl.get_item( port.get_name )
    450413
    451         if j then    # optional で結合されていない場合 nil
     414        if j then    # optional で結合されていない場合 nil
    452415          if j.get_array_member2 then
    453             # 呼び口é
    454 åˆ—
     416            # 呼び口配列
    455417            j.get_array_member2.each { |j2|
    456418              if j2 then
    457                 port2 = j2.get_rhs_port   # 右辺のポート
    458                 # 受け口側の最適化可能性を設定
     419                port2 = j2.get_rhs_port   # 右辺のポート
     420                # 受け口側の最適化可能性を設定
    459421                port2.set_entry_VMT_skelton_useless( b_VMT_useless, b_skelton_useless )
    460422              #else
    461               #  optional で呼び口é
    462 åˆ—要素が初期化されていない
     423              #  optional で呼び口配列要素が初期化されていない
    463424              end
    464425            }
    465426          else
    466             port2 = j.get_rhs_port      # 右辺のポート
    467             # 受け口側の最適化可能性を設定
     427            port2 = j.get_rhs_port      # 右辺のポート
     428            # 受け口側の最適化可能性を設定
    468429            port2.set_entry_VMT_skelton_useless( b_VMT_useless, b_skelton_useless )
    469430          end
     
    473434  end
    474435
    475   #Celltype# リセットする
     436  #Celltype# リセットする
    476437  def reset_optimize
    477     @@ID_BASE = ID_BASE      # 本当は一回だけでよい
    478     @id_base = 1             # set_cell_id でリセットされるので不要
    479 
    480     @b_cp_optimized = false  # 呼び口最適化
    481     @n_call_port_omitted_in_CB = 0 # 呼び口最適化により不生成となったポートの数
    482     @n_cell_gen = 0          # 生成セル個数
     438    @@ID_BASE = ID_BASE      # 本当は一回だけでよい
     439    @id_base = 1             # set_cell_id でリセットされるので不要
     440
     441    @b_cp_optimized = false  # 呼び口最適化
     442    @n_call_port_omitted_in_CB = 0 # 呼び口最適化により不生成となったポートの数
     443    @n_cell_gen = 0          # 生成セル個数
    483444    @port.each{ |p|
    484445      p.reset_optimize
     
    488449  end
    489450
    490   #Celltype# ヘッダは include されているか
    491   #hname::Symbol : ヘッダ名
    492   #RETURN:: bool_t: false インクルードされていない、true インクルードされている
    493   # #_ISH_#, #_ICT_# でヘッダが取り込まれているかチェックする
    494   # false が返った場合、hname は登録されて、次回の呼び出しでは true が返る
     451  #Celltype# ヘッダは include されているか
     452  #hname::Symbol : ヘッダ名
     453  #RETURN:: bool_t: false インクルードされていない、true インクルードされている
     454  # #_ISH_#, #_ICT_# でヘッダが取り込まれているかチェックする
     455  # false が返った場合、hname は登録されて、次回の呼び出しでは true が返る
    495456  def header_included?( hname )
    496457    if @included_header[ hname ] == nil then
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/core/plugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 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 #== Plugin クラス
    56 # ThroughPlugin, SignaturePlugin, CelltypePlugin に include する
     40#== Plugin クラス
     41# ThroughPlugin, SignaturePlugin, CelltypePlugin に include する
    5742class Plugin < Node
    58 #@error_backlog:: [msg1, msg2, ... ]   @locale が設定される前に発生したエラー
     43#@error_backlog:: [msg1, msg2, ... ]   @locale が設定される前に発生したエラー
    5944
    6045  PluginArgProc = {
     
    6550    super
    6651    @b_silent = false
    67     @locale = nil       # set_locale が呼び出されるまで nil となる
     52    @locale = nil       # set_locale が呼び出されるまで nil となる
    6853    @error_backlog = []
    6954  end
    7055
    7156  #=== Plugin#cdl_error
    72   # set_locale が呼び出されるまで @error_backlog に保存し保留する
     57  # set_locale が呼び出されるまで @error_backlog に保存し保留する
    7358  def cdl_error *arg
    7459    if @locale then
     
    7964  end
    8065
    81   #=== locale を設定する
    82   # Node は initialize で locale を設定するが、plugin は parse とは
    83   # 異なるタイミング new されるため、locale を再設定する
    84   # このメソッドを2度呼び出すと @error_backlog のエラーが2度出力されてしまう
     66  #=== locale を設定する
     67  # Node は initialize で locale を設定するが、plugin は parse とは
     68  # 異なるタイミング new されるため、locale を再設定する
     69  # このメソッドを2度呼び出すと @error_backlog のエラーが2度出力されてしまう
    8570  def set_locale locale
    8671    @locale = locale
     
    9075  end
    9176
    92 ### 構文解釈 または 意味解析段階で呼び出されるメソッド ###
    93 # generate 指定子の場合、構文解釈次第(end_of_parseで)呼び出される
    94 # generate 文の場合、出現次第呼び出される
    95   ### 意味解析段階で呼び出されるメソッド ### <<< コメント誤り (V1.4.2)
    96   #===  CDL ファイルの生成
    97   #      typedef, signature, celltype, cell のコードを生成
    98   #      重複して生成してはならない
    99   #      すでに生成されている場合は出力しないこと。
    100   #      もしくは同名の import により、重複を避けること。
    101   #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     77### 構文解釈 または 意味解析段階で呼び出されるメソッド ###
     78# generate 指定子の場合、構文解釈次第(end_of_parseで)呼び出される
     79# generate 文の場合、出現次第呼び出される
     80  ### 意味解析段階で呼び出されるメソッド ### <<< コメント誤り (V1.4.2)
     81  #===  CDL ファイルの生成
     82  #      typedef, signature, celltype, cell のコードを生成
     83  #      重複して生成してはならない
     84  #      すでに生成されている場合は出力しないこと。
     85  #      もしくは同名の import により、重複を避けること。
     86  #file::        FILE       生成するファイル
    10287  def gen_cdl_file file
    10388  end
    10489
    10590
    106 ### コード生段階で呼び出されるメソッド ###
    107   #=== プラグインは gen_ep_func を提供するか
    108   # gen_ep_func 定義   â‡’ テンプレートではない、セルタイプコード(tCelltype.c)を生成
    109   # gen_ep_func 未定義 ⇒ テンプレート(tCelltype_templ.c)を生成
     91### コード生段階で呼び出されるメソッド ###
     92  #=== プラグインは gen_ep_func を提供するか
     93  # gen_ep_func 定義   ⇒ テンプレートではない、セルタイプコード(tCelltype.c)を生成
     94  # gen_ep_func 未定義 ⇒ テンプレート(tCelltype_templ.c)を生成
    11095  def gen_ep_func?
    11196    self.class.method_defined?( :gen_ep_func_body )
    11297  end
    11398
    114   #===  受け口関数の本体(C言語)を生成する
    115   #     ãƒ—ラグインの場合、変更するå¿
    116 è¦ã®ãªã„セルタイプコードを生成する
    117   #     ã“のメソッドが未定義であれば、プラグインはセルタイプコードを生成しない (通常通りテンプレートを生成する)
    118   #      gen_cdl_file の中で生成されたセルタイプに対して呼び出される
    119   #file::           FILE        出力å
    120 ˆãƒ•ã‚¡ã‚¤ãƒ« (tCelltype.c)
     99  #===  受け口関数の本体(C言語)を生成する
     100  #     プラグインの場合、変更する必要のないセルタイプコードを生成する
     101  #     このメソッドが未定義であれば、プラグインはセルタイプコードを生成しない (通常通りテンプレートを生成する)
     102  #      gen_cdl_file の中で生成されたセルタイプに対して呼び出される
     103  #file::           FILE        出力先ファイル (tCelltype.c)
    121104  #b_singleton::    bool        true if singleton
    122105  #ct_name::        Symbol
     
    130113#  end
    131114
    132   #===  受け口関数の preamble (C言語)を生成する
    133   #     å¿
    134 è¦ãªã‚‰ preamble 部に出力する
    135   #      gen_cdl_file の中でで生成されたセルタイプに対して呼び出される
    136   #file::           FILE        出力å
    137 ˆãƒ•ã‚¡ã‚¤ãƒ«
     115  #===  受け口関数の preamble (C言語)を生成する
     116  #     必要なら preamble 部に出力する
     117  #      gen_cdl_file の中でで生成されたセルタイプに対して呼び出される
     118  #file::           FILE        出力先ファイル
    138119  #b_singleton::    bool        true if singleton
    139120  #ct_name::        Symbol
    140121  #global_ct_name:: string
    141122  def gen_preamble( file, b_singleton, ct_name, global_ct_name )
    142     # デフォルトでは何も出力しない
    143   end
    144 
    145   #===  受け口関数の postamble (C言語)を生成する
    146   #     å¿
    147 è¦ãªã‚‰ postamble 部に出力する
    148   #      gen_cdl_file の中で生成されたセルタイプに対して呼び出される
    149   #file::           FILE        出力å
    150 ˆãƒ•ã‚¡ã‚¤ãƒ«
     123    # デフォルトでは何も出力しない
     124  end
     125
     126  #===  受け口関数の postamble (C言語)を生成する
     127  #     必要なら postamble 部に出力する
     128  #      gen_cdl_file の中で生成されたセルタイプに対して呼び出される
     129  #file::           FILE        出力先ファイル
    151130  #b_singleton::    bool        true if singleton
    152131  #ct_name::        Symbol
    153132  #global_ct_name:: string
    154133  def gen_postamble( file, b_singleton, ct_name, global_ct_name )
    155     # デフォルトでは何も出力しない
    156   end
    157 
    158   #=== gen_cdl_file の中で生成されたセルタイプに新しいセルが生成された
    159   # どのセルタイプかは cell.get_celltype で分かる
     134    # デフォルトでは何も出力しない
     135  end
     136
     137  #=== gen_cdl_file の中で生成されたセルタイプに新しいセルが生成された
     138  # どのセルタイプかは cell.get_celltype で分かる
    160139  #
    161   #file::           FILE        出力å
    162 ˆãƒ•ã‚¡ã‚¤ãƒ«
     140  #file::           FILE        出力先ファイル
    163141  #b_singleton::    bool        true if singleton
    164142  #ct_name::        Symbol
    165143  #global_ct_name:: string
    166144  def new_cell cell
    167     # デフォルトでは何もしない
    168   end
    169 
    170 ### プラグイン引数の解釈 ###
     145    # デフォルトでは何もしない
     146  end
     147
     148### プラグイン引数の解釈 ###
    171149  def parse_plugin_arg
    172150    arg = @plugin_arg_str.dup
    173151
    174     # 改行を消す
     152    # 改行を消す
    175153    arg.gsub!( /\\\n/, "" )
    176154
    177155    while arg != ""
    178156
    179       # 前の空白読み飛ばす
     157      # 前の空白読み飛ばす
    180158      arg.sub!( /\A\s*(?:\\\n)*\s*(.*)/, '\1')
    181159
    182       #  識別子取得
     160      #  識別子取得
    183161      if arg =~ /\A[a-zA-Z_]\w*/ then
    184162        ident = $~.to_s    #
     
    189167      end
    190168     
    191       # 前の空白読み飛ばす
     169      # 前の空白読み飛ばす
    192170      arg.sub!( /\A\s*(?:\\\n)*\s*(.*)/, '\1')
    193171
     
    199177      end
    200178
    201       # 前の空白読み飛ばす
     179      # 前の空白読み飛ばす
    202180      arg.sub!( /\A\s*(?:\\\n)*\s*(.*)/, '\1')
    203181
    204       # 右辺文字列
    205       if arg =~ /\A\\"(.*?)\\"\s*,/ then      # \"  \" で囲まれている場合
    206         rhs = $1
    207         remain = $'
    208       elsif arg =~ /\A%(.*?)%\s*,/ then      # %   % で囲まれている場合
    209         rhs = $1
    210         remain = $'
    211       elsif arg =~ /\A!(.*?)!\s*,/ then    # $   $ で囲まれている場合
    212         rhs = $1
    213         remain = $'
    214       elsif arg =~ /\A'(.*?)'\s*,/ then    # $   $ で囲まれている場合
    215         rhs = $1
    216         remain = $'
    217       elsif  arg =~ /\A\\"(.*?)\\"\s*,/ then  # || にも [,$] にもできなかった
     182      # 右辺文字列
     183      if arg =~ /\A\\"(.*?)\\"\s*,/ then      # \"  \" で囲まれている場合
     184        rhs = $1
     185        remain = $'
     186      elsif arg =~ /\A%(.*?)%\s*,/ then      # %   % で囲まれている場合
     187        rhs = $1
     188        remain = $'
     189      elsif arg =~ /\A!(.*?)!\s*,/ then    # $   $ で囲まれている場合
     190        rhs = $1
     191        remain = $'
     192      elsif arg =~ /\A'(.*?)'\s*,/ then    # $   $ で囲まれている場合
     193        rhs = $1
     194        remain = $'
     195      elsif  arg =~ /\A\\"(.*?)\\"\s*,/ then  # || にも [,$] にもできなかった
    218196        rhs = $1
    219197        remain = $'
    220198      # elsif arg =~ /\A(.*?)\s*$/ then
    221       elsif arg =~ /\A\\"(.*?)\\"\s*\z/ then      # \"  \" で囲まれている場合
    222         rhs = $1
    223         remain = $'
    224       elsif arg =~ /\A%(.*?)%\s*\z/ then      # %   % で囲まれている場合
    225         rhs = $1
    226         remain = $'
    227       elsif arg =~ /\A!(.*?)!\s*\z/ then    # $   $ で囲まれている場合
    228         rhs = $1
    229         remain = $'
    230       elsif arg =~ /\A'(.*?)'\s*\z/ then    # $   $ で囲まれている場合
    231         rhs = $1
    232         remain = $'
    233       elsif  arg =~ /\A\\"(.*?)\\"\s*\z/ then  # || にも [,$] にもできなかった
     199      elsif arg =~ /\A\\"(.*?)\\"\s*\z/ then      # \"  \" で囲まれている場合
     200        rhs = $1
     201        remain = $'
     202      elsif arg =~ /\A%(.*?)%\s*\z/ then      # %   % で囲まれている場合
     203        rhs = $1
     204        remain = $'
     205      elsif arg =~ /\A!(.*?)!\s*\z/ then    # $   $ で囲まれている場合
     206        rhs = $1
     207        remain = $'
     208      elsif arg =~ /\A'(.*?)'\s*\z/ then    # $   $ で囲まれている場合
     209        rhs = $1
     210        remain = $'
     211      elsif  arg =~ /\A\\"(.*?)\\"\s*\z/ then  # || にも [,$] にもできなかった
    234212        rhs = $1
    235213        remain = $'
     
    237215        rhs = $1
    238216        remain = $'
    239         # 前の空白読み飛ばす
     217        # 前の空白読み飛ばす
    240218        rhs.sub!( /\A\s*(.*)\s*\z/, '\1')
    241219      elsif arg =~ /\A(.*?)\s*\z/ then
     
    247225      end
    248226
    249       # 0文字の文字列を to_sym すると例外発生するので空白文字とする
     227      # 0文字の文字列を to_sym すると例外発生するので空白文字とする
    250228      if rhs == "" then
    251229        rhs = " "
    252230      end
    253231
    254       arg = remain         # arg の残りの部分
    255       arg.sub!( /\A\s*(?:\\\n)*\s*(.*)/, '\1')      # 前の空白読み飛ばす
    256 
    257       # \ を外す
    258       rhs = rhs.gsub( /\\(.)/, "\\1" )   # ここで $' が変わることに注意!
     232      arg = remain         # arg の残りの部分
     233      arg.sub!( /\A\s*(?:\\\n)*\s*(.*)/, '\1')      # 前の空白読み飛ばす
     234
     235      # \ を外す
     236      rhs = rhs.gsub( /\\(.)/, "\\1" )   # ここで $' が変わることに注意!
    259237      # print "parse_plugin_arg:  #{ident} #{rhs}\n"
    260238      @plugin_arg_list[ ident ] = rhs
     
    265243  end
    266244
    267   #=== プラグイン引数をチェックする
    268   # @plugin_arg_check_proc_tab に従ってプラグイン引数をチェックすする
    269   # 古い用法:子クラスでオーバーライドし、引数識別子が正しいかチェックする
    270   #ident:: string: 引数識別子
    271   #rhs:: string: 右辺文字列
     245  #=== プラグイン引数をチェックする
     246  # @plugin_arg_check_proc_tab に従ってプラグイン引数をチェックすする
     247  # 古い用法:子クラスでオーバーライドし、引数識別子が正しいかチェックする
     248  #ident:: string: 引数識別子
     249  #rhs:: string: 右辺文字列
    272250  def check_plugin_arg( ident, rhs )
    273251
     
    294272  end
    295273
    296   #=== プラグインのメッセージ出力
     274  #=== プラグインのメッセージ出力
    297275  def print_msg( msg )
    298276    if @b_silent == true then
     
    302280  end
    303281
    304   #=== プラグイン引数 silent
     282  #=== プラグイン引数 silent
    305283  def set_silent rhs
    306284    if rhs == "true" || rhs == nil then
     
    310288end
    311289
    312 #== 出力文字列を utf-8 から出力ファイルに convert する
    313 # tecsgen のソースコードは utf-8 で記述されている
    314 # これを、出力ファイルの文字コードに変換して出力する
     290#== 出力文字列を utf-8 から出力ファイルに convert する
     291# tecsgen のソースコードは utf-8 で記述されている
     292# これを、出力ファイルの文字コードに変換して出力する
    315293#
    316 # generate.rb で出力するものは message.rb で変換している
    317 # generate.rb で出力するものは APPFile クラスを使用している
    318 # mikan: CFile で出力したものに factory で追記できない (cdl ファイルの場合、追記できても意味がない)
     294# generate.rb で出力するものは message.rb で変換している
     295# generate.rb で出力するものは APPFile クラスを使用している
     296# mikan: CFile で出力したものに factory で追記できない (cdl ファイルの場合、追記できても意味がない)
    319297class CFile
    320298  def self.open( path, mode )
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/core/pluginModule.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 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 #== プラグインをロードする側のモジュール
     40#== プラグインをロードする側のモジュール
    5641# @@loaded_plugin_list:: {Symbol=>Integer}
    5742module PluginModule
     
    5944  @@loaded_plugin_list = {}
    6045
    61   #=== プラグインをロードする
     46  #=== プラグインをロードする
    6247  # return:: PluginClass
    63   # V1.4.1 まで return:: true : 成功、 false : 失敗
     48  # V1.4.1 まで return:: true : 成功、 false : 失敗
    6449  #
    65   # #{plugin_name}.rb をロードし、plugin_name クラスのオブジェクトを生成する.
    66   # plugin_name が MultiPlugin の場合、get_plugin により、superClass のプラグインオブジェクトをロードする.
     50  # #{plugin_name}.rb をロードし、plugin_name クラスのオブジェクトを生成する.
     51  # plugin_name が MultiPlugin の場合、get_plugin により、superClass のプラグインオブジェクトをロードする.
    6752  #
    68   # すでにロードされているものは、重複してロードしない
    69   # load 時の例外はこのメソッドの中でキャッチされて false が返される
     53  # すでにロードされているものは、重複してロードしない
     54  # load 時の例外はこのメソッドの中でキャッチされて false が返される
    7055  def load_plugin( plugin_name, superClass )
    7156
     
    7762          print( "load '#{plugin_name}.rb'\n" )
    7863        end
    79         # "#{plugin_name}.rb" をロード(システム用ではないので、fatal エラーにしない)
     64        # "#{plugin_name}.rb" をロード(システム用ではないので、fatal エラーにしない)
    8065        if require_tecsgen_lib( "#{plugin_name}.rb", false ) == false then
    8166          cdl_error( "P2001 $1.rb : fail to load plugin" , plugin_name )
     
    10893      return nil
    10994    end
    110     # ここへは来ない
     95    # ここへは来ない
    11196    return nil
    11297  end
    11398
    114   #=== プラグインの gen_cdl_file を呼びして cdl ファイルを生成させ、解釈を行う
     99  #=== プラグインの gen_cdl_file を呼びして cdl ファイルを生成させ、解釈を行う
    115100  def generate_and_parse plugin_object
    116     if plugin_object == nil     # プラグインのロードに失敗している(既にエラー)
     101    if plugin_object == nil     # プラグインのロードに失敗している(既にエラー)
    117102      return
    118103    end
     
    123108    elsif @@loaded_plugin_list[ plugin_name ] == nil then
    124109      #raise "#{plugin_name} might have different name "
    125       ## プラグインのファイル名と、プラグインのクラス名が相違する場合
    126       #MultiPlugin の get_plugin で返されたケースでは nil になっている
     110      ## プラグインのファイル名と、プラグインのクラス名が相違する場合
     111      #MultiPlugin の get_plugin で返されたケースでは nil になっている
    127112      @@loaded_plugin_list[ plugin_name ] = 0
    128113    end
     
    157142  end
    158143
    159   #=== プラグインが CDL の POST コードを生成
    160   # tmp_plugin_post_code.cdl への出力
     144  #=== プラグインが CDL の POST コードを生成
     145  # tmp_plugin_post_code.cdl への出力
    161146  def self.gen_plugin_post_code file
    162147    dbgPrint "PluginModule #{@@loaded_plugin_list}\n"
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/core/syntaxobj.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 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 ruby の symbol と文字列の使い分けがどうしてもうまくいかないことが時ã€
    56 ã‚るので name.to_sym をå
    57 ¥ã‚Œã‚‹ã“とにした
     40# mikan ruby の symbol と文字列の使い分けがどうしてもうまくいかないことが時々あるので name.to_sym を入れることにした
    5841
    5942#== Node
    6043#
    61 # Node の直接の子クラス: C_EXP, Type, BaseVal, BDNode(ほとんどのものは BDNode の子クラス)
    62 # Node に (BDNodeにも) å
    63 ¥ã‚‰ãªã„もの: Token, Import, Import_C, Generate
     44# Node の直接の子クラス: C_EXP, Type, BaseVal, BDNode(ほとんどのものは BDNode の子クラス)
     45# Node に (BDNodeにも) 入らないもの: Token, Import, Import_C, Generate
    6446#
    65 # owner を持たないものが Node となる
    66 # エラーは、cdl_error を通じて報告する (意味解析が構文解析後に行われる場合には、行番号が正しく出力できる
     47# owner を持たないものが Node となる
     48# エラーは、cdl_error を通じて報告する (意味解析が構文解析後に行われる場合には、行番号が正しく出力できる
    6749#
    6850
     
    7456  end
    7557
    76   #=== エラーを出力する
     58  #=== エラーを出力する
    7759  def cdl_error( message, *arg )
    7860    Generator.error2( @locale, message, *arg )
    7961  end
    8062
    81   #=== エラーを出力する
    82   #locale:: Array(locale info) : 構文解析中は無視される
     63  #=== エラーを出力する
     64  #locale:: Array(locale info) : 構文解析中は無視される
    8365  def cdl_error2( locale, message, *arg )
    8466    Generator.error2( locale, message, *arg )
    8567  end
    8668
    87   #=== エラーを出力する
     69  #=== エラーを出力する
    8870  #locale:: Array(locale info)
    89   # 構文解析中 cdl_error2 では locale が無視されるため、別に locale を出力する
     71  # 構文解析中 cdl_error2 では locale が無視されるため、別に locale を出力する
    9072  def cdl_error3( locale, message, *arg )
    9173    Generator.error(  message, *arg )
     
    9375  end
    9476
    95   #=== ウォーニング出力する
     77  #=== ウォーニング出力する
    9678  def cdl_warning( message, *arg )
    9779    Generator.warning2( @locale, message, *arg )
    9880  end
    9981
    100   #=== ウォーニング出力する
     82  #=== ウォーニング出力する
    10183  def cdl_warning2( locale, message, *arg )
    10284    Generator.warning2( locale, message, *arg )
    10385  end
    10486
    105   #=== æƒ
    106 å ±ã‚’表示する
     87  #=== 情報を表示する
    10788  def cdl_info( message, *arg )
    10889    Generator.info2( @locale, message, *arg )
    10990  end
    11091
    111   #=== æƒ
    112 å ±ã‚’表示する
     92  #=== 情報を表示する
    11393  def cdl_info2( locale, message, *arg )
    11494    Generator.info2( locale, message, *arg )
     
    128108end
    129109
    130 #== 双方向 Node (Bi Direction Node)
     110#== 双方向 Node (Bi Direction Node)
    131111#
    132 #  Node の子クラス
    133 #  owner Node から参ç
    134 §ã•ã‚Œã¦ã„るもの (owner へのリンクも取り出せる)
     112#  Node の子クラス
     113#  owner Node から参照されているもの (owner へのリンクも取り出せる)
    135114#
    136 #  get_owner で得られるもの
     115#  get_owner で得られるもの
    137116#    FuncHead => Signature
    138117#    Decl => Namespace(const), Typedef(typedef),
     
    140119#            Struct(member), ParamDecl(parameter), FuncHead(funchead)
    141120#    Signature, Celltype, CompositeCelltype, Typedef => Namespace
    142 #,   Namespace => Namespace, Generator.class (root Namespace の場合)
     121#,   Namespace => Namespace, Generator.class (root Namespace の場合)
    143122#    Cell => Region, CompositeCelltype(in_composite)
    144123#    Port => Celltype, Composite
     
    150129#    ParamList => FuncHead
    151130#    Expression => Namespace
    152 #    大半のものは new_* メソッドで owner Node に伝達される
    153 #    そのメソッドが呼び出されたときに owner Node が記録される
    154 #    new_* がないもの:
     131#    大半のものは new_* メソッドで owner Node に伝達される
     132#    そのメソッドが呼び出されたときに owner Node が記録される
     133#    new_* がないもの:
    155134#            Decl(parameter), ParamDecl, ParamList, FuncHead, Expression
    156135#
    157 #    Expression は、owner Node となるものが多くあるが、改造が困難であるため
    158 #    Expression が定義されたときの Namespace を owner Node とする
    159 #    StructType は Type の一種なので owner を持たない
     136#    Expression は、owner Node となるものが多くあるが、改造が困難であるため
     137#    Expression が定義されたときの Namespace を owner Node とする
     138#    StructType は Type の一種なので owner を持たない
    160139#
    161140class BDNode < Node
     
    173152  end
    174153
    175   #=== owner を設定する
     154  #=== owner を設定する
    176155  def set_owner owner
    177156    dbgPrint "set_owner: #{owner.class.name}\n"
     
    179158  end
    180159
    181   #=== owner を得る
    182   # class の説明を参ç
    183 §
     160  #=== owner を得る
     161  # class の説明を参照
    184162  def get_owner
    185163    if @owner == nil
     
    190168end
    191169
    192 #== Namespace 名を持つ BDNode
     170#== Namespace 名を持つ BDNode
    193171# Namespace(Region), Signature, Celltype, CompositeCelltype, Cell
    194172class NSBDNode < BDNode
     
    198176  end
    199177
    200   #=== 属する namespace を得る
    201   # owner を namespace にたどり着くまで上にたどる
     178  #=== 属する namespace を得る
     179  # owner を namespace にたどり着くまで上にたどる
    202180  def get_namespace
    203181    if @owner.kind_of? Namespace
     
    206184      return @owner.get_namespace
    207185    else
    208       # @owner == nil なら "::"
     186      # @owner == nil なら "::"
    209187      if @name != "::" then
    210188        raise "non-root namespace has no owner #{self.class.name}##{@name} #{self}"
     
    223201  end
    224202
    225   #=== NamespacePath を得る
     203  #=== NamespacePath を得る
    226204  def get_namespace_path
    227205    return @NamespacePath
     
    232210      return @import.is_imported?
    233211    else
    234       return false    # mikan: ä»® @import が nil になるケースが追求できていない
     212      return false    # mikan: 仮 @import が nil になるケースが追求できていない
    235213    end
    236214  end
     
    239217class NamedList
    240218#  @names:: {} of items
    241 #  @items:: [] of items : item の CLASS は get_name メソッドを持つこと get_name の戻り値は Symbol でなくてはならない
    242 #                         NamedList を clone_for_composite する場合は、item にもメソッドがå¿
    243 è¦
    244 #  @type:: string       ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸
     219#  @items:: [] of items : item の CLASS は get_name メソッドを持つこと get_name の戻り値は Symbol でなくてはならない
     220#                         NamedList を clone_for_composite する場合は、item にもメソッドが必要
     221#  @type:: string       エラーメッセージ
    245222
    246223  def initialize( item, type )
     
    251228  end
    252229
    253   #=== 要素を加える
    254   # parse した時点で加えること(場所を記憶する)
     230  #=== 要素を加える
     231  # parse した時点で加えること(場所を記憶する)
    255232  def add_item( item )
    256233
     
    311288  end
    312289
    313   #=== composite cell を clone した時に要素(JOIN) の clone する
     290  #=== composite cell を clone した時に要素(JOIN) の clone する
    314291  #
    315   # mikan このメソッドは Join に特化されているので NamedList から分離すべき
     292  # mikan このメソッドは Join に特化されているので NamedList から分離すべき
    316293  def clone_for_composite( ct_name, cell_name, locale )
    317294    cl = self.clone
     
    320297  end
    321298
    322   #=== clone された NamedList インスタンスの参ç
    323 §ã™ã‚‹ã‚‚の(item)を clone
     299  #=== clone された NamedList インスタンスの参照するもの(item)を clone
    324300  #
    325   # mikan このメソッドは Join に特化されているので NamedList から分離すべき
     301  # mikan このメソッドは Join に特化されているので NamedList から分離すべき
    326302  def set_cloned( ct_name, cell_name, locale )
    327303    items = []
     
    385361end
    386362
    387 #== 関数頭部
    388 # signature に登録される関数
     363#== 関数頭部
     364# signature に登録される関数
    389365class FuncHead <BDNode
    390366#  @declarator:: Decl
     
    431407  end
    432408
    433   #=== FuncHead# 関数の名前を返す
     409  #=== FuncHead# 関数の名前を返す
    434410  def get_name
    435411    return @declarator.get_name
    436412  end
    437413
    438   #=== FuncHead# 関数の戻り値の型を返す
    439   # types.rb に定義されている型
    440   # 関数ヘッダの定義として不完å
    441 ¨ãªå ´åˆ nil を返す
     414  #=== FuncHead# 関数の戻り値の型を返す
     415  # types.rb に定義されている型
     416  # 関数ヘッダの定義として不完全な場合 nil を返す
    442417  def get_return_type
    443418    if is_function? then
     
    446421  end
    447422
    448   #=== FuncHead# 関数の引数のリストを返す
    449   # ParamList を返す
    450   # 関数ヘッダの定義として不完å
    451 ¨ãªå ´åˆ nil を返す
     423  #=== FuncHead# 関数の引数のリストを返す
     424  # ParamList を返す
     425  # 関数ヘッダの定義として不完全な場合 nil を返す
    452426  def get_paramlist
    453427    if is_function? then
     
    463437end
    464438
    465 #=== 宣言
    466 # @kind で示される各種の宣言
     439#=== 宣言
     440# @kind で示される各種の宣言
    467441class Decl < BDNode
    468442
    469443# @identifer:: String
    470 # @global_name:: String | nil : String(@kind=TYPEDEF||:CONSTANT), nil(@kind=その他)
    471 #                set_kind にて設定される
     444# @global_name:: String | nil : String(@kind=TYPEDEF||:CONSTANT), nil(@kind=その他)
     445#                set_kind にて設定される
    472446# @type:: ArrayType, FuncType, PtrType, IntType, StructType
    473447#         VoidType, FloatType, DefinedType, BoolType
    474448# @initializer:: constant_expression, mikan { initlist }
    475 # @kind:: :VAR, :ATTRIBUTE, :PARAMETER, :TYPEDEF, :CONSTANT, :MEMBER, :FUNCHEAD(signatureの関数定義)
     449# @kind:: :VAR, :ATTRIBUTE, :PARAMETER, :TYPEDEF, :CONSTANT, :MEMBER, :FUNCHEAD(signatureの関数定義)
    476450# @b_referenced:: bool
    477451#
    478 # 以下は、@kind が :VAR, :ATTRIBUTE のときに有効
    479 # @rw:: bool     # 古い文法では attr に指定可能だった(消すには generate の修正もå¿
    480 è¦ï¼‰
     452# 以下は、@kind が :VAR, :ATTRIBUTE のときに有効
     453# @rw:: bool     # 古い文法では attr に指定可能だった(消すには generate の修正も必要)
    481454# @omit:: bool
    482 # @choice_list:: [String]  attr 初期値の選択肢
    483 # 以下は、@kind が :VAR, :ATTRIBUTE, :MEMBER のときに有効
     455# @choice_list:: [String]  attr 初期値の選択肢
     456# 以下は、@kind が :VAR, :ATTRIBUTE, :MEMBER のときに有効
    484457# @size_is:: Expression or nil unless specified
    485 # 以下は、@kind が :MEMBER のときに有効
     458# 以下は、@kind が :MEMBER のときに有効
    486459# @count_is:: Expression or nil unless specified
    487 #             attr, var の場合、count_is は指定できない
     460#             attr, var の場合、count_is は指定できない
    488461# @string:: Expression, -1 (length not specified) or nil (not specified)
    489462#
    490 # mikan  ParamDecl だけ別に設けたが、MemberDecl, AttrDecl なども分けるべきか(?)
     463# mikan  ParamDecl だけ別に設けたが、MemberDecl, AttrDecl なども分けるべきか(?)
    491464
    492465  def initialize( identifier )
     
    518491  end
    519492
    520   #== Decl の意味的誤りをチェックする
     493  #== Decl の意味的誤りをチェックする
    521494  def check
    522495    # return nil if @type == nil
    523496
    524     # 構造体タグチェック(ポインタ型から構造体が参ç
    525 §ã•ã‚Œã¦ã„る場合は、タグの存在をチェックしない)
     497    # 構造体タグチェック(ポインタ型から構造体が参照されている場合は、タグの存在をチェックしない)
    526498    @type.check_struct_tag @kind
    527499
    528     # 型のチェックを行う
     500    # 型のチェックを行う
    529501    res = @type.check
    530502    if res then
     
    532504    end
    533505
    534     # 不要の初期化子をチェックする
     506    # 不要の初期化子をチェックする
    535507    if @initializer then
    536508      case @kind
     
    538510        cdl_error( "S2003 $1: $2 cannot have initializer" , @identifier, @kind.to_s.downcase )
    539511      when :VAR, :ATTRIBUTE, :CONSTANT
    540         # p @initializer  ここでは代å
    541 ¥å¯èƒ½ã‹ã©ã†ã‹ã€ãƒã‚§ãƒƒã‚¯ã—ない
    542         # :VAR, :ATTRIBUTE, :CONSTANT はそれぞれでチェックする
     512        # p @initializer  ここでは代入可能かどうか、チェックしない
     513        # :VAR, :ATTRIBUTE, :CONSTANT はそれぞれでチェックする
    543514        # return @type.check_init( @identifier, @initializer, @kind )
    544515      else
     
    558529  end
    559530
    560   #== ポインタレベルを得る
    561   # 戻り値:
    562   #   éžãƒã‚¤ãƒ³ã‚¿å¤‰æ•°   = 0
    563   #   ãƒã‚¤ãƒ³ã‚¿å¤‰æ•°     = 1
    564   #   äºŒé‡ãƒã‚¤ãƒ³ã‚¿å¤‰æ•° = 2
     531  #== ポインタレベルを得る
     532  # 戻り値:
     533  #   非ポインタ変数   = 0
     534  #   ポインタ変数     = 1
     535  #   二重ポインタ変数 = 2
    565536  def get_ptr_level
    566537    level = 0
     
    570541        level += 1
    571542        type = type.get_referto
    572 #      elsif type.kind_of?( ArrayType ) then  # 添数なしé
    573 åˆ—はポインタとみなす
     543#      elsif type.kind_of?( ArrayType ) then  # 添数なし配列はポインタとみなす
    574544#        if type.get_subscript == nil then
    575545#          level += 1
     
    578548#          break
    579549#        end
    580         # mikan ポインタの添数ありé
    581 åˆ—のポインタレベルは0でよい?
     550        # mikan ポインタの添数あり配列のポインタレベルは0でよい?
    582551      elsif type.kind_of?( DefinedType ) then
    583552        type = type.get_type
     
    602571      @type = type
    603572    else
    604       @type.set_type( type )             # 葉に設定
     573      @type.set_type( type )             # 葉に設定
    605574    end
    606575  end
     
    744713end
    745714
    746 # 関数パラメータの宣言
     715# 関数パラメータの宣言
    747716class ParamDecl < BDNode
    748717
    749718# @declarator:: Decl:  Token, ArrayType, FuncType, PtrType
    750719# @direction:: :IN, :OUT, :INOUT, :SEND, :RECEIVE
    751 # @size:: Expr   (size_is 引数)
    752 # @count:: Expr   (count_is 引数)
    753 # @max:: Expr (size_is の第二引数)
     720# @size:: Expr   (size_is 引数)
     721# @count:: Expr   (count_is 引数)
     722# @max:: Expr (size_is の第二引数)
    754723# @b_nullable:: Bool : nullable
    755 # @string:: Expr or -1(if size not specified) (string 引数)
     724# @string:: Expr or -1(if size not specified) (string 引数)
    756725# @allocator:: Signature of allocator
    757 # @b_ref:: bool : size_is, count_is, string_is 引数として参ç
    758 §ã•ã‚Œã¦ã„ã‚‹
     726# @b_ref:: bool : size_is, count_is, string_is 引数として参照されている
    759727#
    760 # 1. 関数型でないこと
    761 # 2. 2次å
    762 ƒä»¥ä¸Šã®é
    763 åˆ—であって最もå†
    764 å´ä»¥å¤–の添数があること
    765 # 3. in, out, ..., size_is, count_is, ... の重複指定がないこと
    766 # 4. ポインタレベルが適切なこと
     728# 1. 関数型でないこと
     729# 2. 2次元以上の配列であって最も内側以外の添数があること
     730# 3. in, out, ..., size_is, count_is, ... の重複指定がないこと
     731# 4. ポインタレベルが適切なこと
    767732
    768733  def initialize( declarator, specifier, param_specifier )
     
    831796        end
    832797      when :MAX_IS
    833         # max_is は、å†
    834 éƒ¨çš„なもの bnf.y.rb 参ç
    835 §
    836         # size_is で重複チェックされる
     798        # max_is は、内部的なもの bnf.y.rb 参照
     799        # size_is で重複チェックされる
    837800        @max = i[1]
    838801      when :NULLABLE
     
    854817    end
    855818
    856     # mikan ポインタのé
    857 åˆ—(添数有)のレベルが0
     819    # mikan ポインタの配列(添数有)のレベルが0
    858820    ptr_level = @declarator.get_ptr_level
    859821
     
    898860      cdl_error( "S2014 $1 need pointer or more pointer" , @declarator.get_identifier )
    899861    elsif ptr_level > max_level then
    900       # note: 構文解析段階で実行のため get_current 可
     862      # note: 構文解析段階で実行のため get_current 可
    901863      if Signature.get_current == nil || Signature.get_current.is_deviate? == false then
    902864        cdl_warning( "W3003 $1 pointer level mismatch" , @declarator.get_identifier )
     
    910872
    911873    if ptr_level > 0 then
    912       # size_is, count_is, string をセット
     874      # size_is, count_is, string をセット
    913875      if @direction == :RECEIVE && ptr_level > 1 then
    914876        type.get_type.set_scs( @size, @count, @string, @max, @b_nullable )
     
    920882#type.show_tree 1
    921883
    922       # ポインタが指しているå
    923 ˆã®ãƒ‡ãƒ¼ã‚¿åž‹ã‚’å¾—ã‚‹
     884      # ポインタが指している先のデータ型を得る
    924885      i = 0
    925886      t2 = type
     
    936897# p t2.is_const?
    937898
    938       # const 修飾が適切かチェック
     899      # const 修飾が適切かチェック
    939900      if @direction == :IN then
    940901        if ! t2.is_const? then
     
    947908      end
    948909    else
    949       # 非ポインタタイプ
     910      # 非ポインタタイプ
    950911      if @size != nil || @count != nil || @string != nil || @max != nil || @b_nullable then
    951912        type.set_scs( @size, @count, @string, @max, @b_nullable )
     
    1019980  end
    1020981
    1021   #=== PPAllocator がå¿
    1022 è¦ã‹
    1023   # Transparent RPC の場合 in で size_is, count_is, string のいずれかが指定されている場合 oneway では PPAllocator がå¿
    1024 è¦
    1025   # Transparent PC で oneway かどうかは、ここでは判断しないので別途判断がå¿
    1026 è¦
    1027   # Opaque RPC の場合 size_is, count_is, string のいずれかが指定されている場合、PPAllocator がå¿
    1028 è¦
     982  #=== PPAllocator が必要か
     983  # Transparent RPC の場合 in で size_is, count_is, string のいずれかが指定されている場合 oneway では PPAllocator が必要
     984  # Transparent PC で oneway かどうかは、ここでは判断しないので別途判断が必要
     985  # Opaque RPC の場合 size_is, count_is, string のいずれかが指定されている場合、PPAllocator が必要
    1029986  def need_PPAllocator?( b_opaque = false )
    1030987    if ! b_opaque then
     
    10731030end
    10741031
    1075 # 関数パラメータリスト
     1032# 関数パラメータリスト
    10761033class ParamList < BDNode
    10771034# @param_list:: NamedList : item: ParamDecl
     
    10861043
    10871044  def add_param( paramdecl )
    1088     return if paramdecl == nil    # 既にエラー
     1045    return if paramdecl == nil    # 既にエラー
    10891046
    10901047    @param_list.add_item( paramdecl )
     
    10961053  end
    10971054
    1098   #=== size_is, count_is, string の引数の式をチェック
    1099   # 変数は前方参ç
    1100 §å¯èƒ½ãªãŸã‚ã€é–¢æ•°é ­éƒ¨ã®æ§‹æ–‡è§£é‡ˆãŒçµ‚わった後にチェックする
     1055  #=== size_is, count_is, string の引数の式をチェック
     1056  # 変数は前方参照可能なため、関数頭部の構文解釈が終わった後にチェックする
    11011057  def check_param
    11021058    @param_list.get_items.each { |i|
    1103       next if i == nil                      # i == nil : エラー時
     1059      next if i == nil                      # i == nil : エラー時
    11041060
    11051061      if i.get_type.class == VoidType then
    1106         # 単一の void 型はここにはこない
     1062        # 単一の void 型はここにはこない
    11071063        cdl_error( "S2027 '$1' parameter cannot be void type", i.get_name )
    11081064      end
     
    11111067      if size then
    11121068        val = size.eval_const( @param_list )
    1113         if val == nil then                      # 定数式でないか?
    1114           # mikan 変数を含む式:単一の変数のみ OK
     1069        if val == nil then                      # 定数式でないか?
     1070          # mikan 変数を含む式:単一の変数のみ OK
    11151071          type = size.get_type( @param_list )
    11161072          unless type.kind_of?( IntType ) then
     
    11501106      if count then
    11511107        val = count.eval_const( @param_list )
    1152         if val == nil then                      # 定数式でないか?
    1153           # mikan 変数を含む式:単一の変数のみ OK
     1108        if val == nil then                      # 定数式でないか?
     1109          # mikan 変数を含む式:単一の変数のみ OK
    11541110          type = count.get_type( @param_list )
    11551111          unless type.kind_of?( IntType ) then
     
    11701126      if string != -1 && string then
    11711127        val = string.eval_const( @param_list )
    1172         if val == nil then                      # 定数式でないか?
    1173           # mikan 変数を含む式:単一の変数のみ OK
     1128        if val == nil then                      # 定数式でないか?
     1129          # mikan 変数を含む式:単一の変数のみ OK
    11741130          type = string.get_type( @param_list )
    11751131          unless type.kind_of?( IntType ) then
     
    11951151  end
    11961152
    1197   #=== Push Pop Allocator がå¿
    1198 è¦ã‹ï¼Ÿ
    1199   # Transparent RPC の場合 (oneway かつ) in のé
    1200 åˆ—(size_is, count_is, string のいずれかで修飾)がある
     1153  #=== Push Pop Allocator が必要か?
     1154  # Transparent RPC の場合 (oneway かつ) in の配列(size_is, count_is, string のいずれかで修飾)がある
    12011155  def need_PPAllocator?( b_opaque = false )
    12021156    @param_list.get_items.each { |i|
     
    12121166  end
    12131167
    1214   #== ParamList# 文字列化
    1215   #b_name:: Bool: パラメータ名を含める
     1168  #== ParamList# 文字列化
     1169  #b_name:: Bool: パラメータ名を含める
    12161170  def to_str( b_name )
    12171171    str = "("
     
    12361190end
    12371191
    1238 #== CDL の文字列リテラルを扱うためのクラス
    1239 # CDL の文字列リテラルそのものではない
     1192#== CDL の文字列リテラルを扱うためのクラス
     1193# CDL の文字列リテラルそのものではない
    12401194class CDLString
    1241   # エスケープ文字を変換
     1195  # エスケープ文字を変換
    12421196  def self.escape str
    12431197    str = str.dup
     
    12511205    str.gsub!( /(\\[Xx][0-9A-Fa-f]{1,2})/, '{printf \"\\1\"}' )
    12521206    str.gsub!( /(\\[0-7]{1,3})/, '{printf \"\\1\"}' )
    1253     str.gsub!( /\\(.)/, "\\1" )   # mikan 未定義のエスケープシーケンスを変換してしまう (gcc V3.4.4 では警告が出される)
     1207    str.gsub!( /\\(.)/, "\\1" )   # mikan 未定義のエスケープシーケンスを変換してしまう (gcc V3.4.4 では警告が出される)
    12541208    return str
    12551209  end
    12561210
    1257   #=== CDLString#前後の " を取り除く
     1211  #=== CDLString#前後の " を取り除く
    12581212  def self.remove_dquote str
    12591213    s = str.sub( /\A"/, "" )
     
    12631217end
    12641218
    1265 #== CDL の初期化子を扱うためのクラス
    1266 # CDL の初期化子そのものではない
     1219#== CDL の初期化子を扱うためのクラス
     1220# CDL の初期化子そのものではない
    12671221class CDLInitializer
    1268   #=== 初期化子のクローン
    1269   # 初期化子は Expression, C_EXP, Array のいずれか
     1222  #=== 初期化子のクローン
     1223  # 初期化子は Expression, C_EXP, Array のいずれか
    12701224  def self.clone_for_composite( rhs, ct_name, cell_name, locale )
    12711225    if rhs.instance_of? C_EXP then
    1272       # C_EXP の clone を作るとともに置換
     1226      # C_EXP の clone を作るとともに置換
    12731227      rhs = rhs.clone_for_composite( ct_name, cell_name, locale )
    12741228    elsif rhs.instance_of? Expression then
     
    12821236  end
    12831237
    1284   #=== 初期化子(é
    1285 åˆ—)のクローン
    1286   # 要素は clone_for_composite を持つものだけ
     1238  #=== 初期化子(配列)のクローン
     1239  # 要素は clone_for_composite を持つものだけ
    12871240  def self.clone_for_compoiste_array( array, ct_name, cell_name, locale )
    1288     # "compoiste.identifier" の場合 (CDL としては誤り)
     1241    # "compoiste.identifier" の場合 (CDL としては誤り)
    12891242    if array[0] == :COMPOSITE then
    12901243      return array.clone
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/core/tecs_lang.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 #== 言語に関する変数を設定
    56 # メッセージファイルの読み込みも行う (読み込みに失敗した場合、デフォルトの文字コードに変更する)
     40#== 言語に関する変数を設定
     41# メッセージファイルの読み込みも行う (読み込みに失敗した場合、デフォルトの文字コードに変更する)
    5742class TECS_LANG
    58   # ハッシュのタグは case insensitive のため、大文字の文字列とする
     43  # ハッシュのタグは case insensitive のため、大文字の文字列とする
    5944  CHARSET_ALIAS = {
    6045    "UJIS" => :eucJP,
    6146    "UTF-8" => :utf8,
    62     "EUCJP" => :eucJP,   # 以下 case insensitive にするため
     47    "EUCJP" => :eucJP,   # 以下 case insensitive にするため
    6348    "SJIS" => :sjis,
    6449    "UTF8" => :utf8,
     
    6752  LANG_ALIAS = {
    6853    "C" => :en_US,
    69     "EN_US" => :en_US,   # 以下 case insensitive にするため
     54    "EN_US" => :en_US,   # 以下 case insensitive にするため
    7055    "JA_JP" => :ja_JP
    7156  }
     
    7560  }
    7661
    77   #=== LANG のパース
    78   #lang::String  "ja_JP.eucJP@cjknarrow", "C" など
     62  #=== LANG のパース
     63  #lang::String  "ja_JP.eucJP@cjknarrow", "C" など
    7964  #RETURN:: [ :ja_JP, :eucJP, :cjknarrow ]
    8065  def self.parse_lang( lang )
     
    8267
    8368    lang_terri = $1.to_sym if $1 != nil && $1 != ""
    84     # set_kcode_binary により、C.UTF-8 のみを特別扱いするå¿
    85 è¦ãŒãªããªã£ãŸ
    86     # if lang_terri == :C then    # LANG=C.* は、すべて 1 byte 文字コードとして扱う
     69    # set_kcode_binary により、C.UTF-8 のみを特別扱いする必要がなくなった
     70    # if lang_terri == :C then    # LANG=C.* は、すべて 1 byte 文字コードとして扱う
    8771    #  codeset = nil
    8872    #  modifier = nil
     
    9478  end
    9579
    96   #=== lang, charset の別明解決および妥当性のチェック
    97   #lang::Symbol    : :en_US, :ja_JP など
    98   #charset::Symbol : :eucJP, :utf8 など
     80  #=== lang, charset の別明解決および妥当性のチェック
     81  #lang::Symbol    : :en_US, :ja_JP など
     82  #charset::Symbol : :eucJP, :utf8 など
    9983  #RETURN:
    100   #  [ lang, charset, result ]::  result = false の場合 lang, charset は不適切
     84  #  [ lang, charset, result ]::  result = false の場合 lang, charset は不適切
    10185  def self.resolve_alias_and_check( lang, charset )
    10286    if LANG_ALIAS[ lang.to_s.upcase ] then
     
    122106  end
    123107
    124   #=== codepage を取り出す
    125   #codepage は3~5桁の整数として仮定
     108  #=== codepage を取り出す
     109  #codepage は3~5桁の整数として仮定
    126110  def self.get_win_codepage
    127111    cmd_pipe = IO.popen('cmd /c chcp','r')
     
    132116  end
    133117
    134   #=== codepage から LANG の設定文字列に変換
     118  #=== codepage から LANG の設定文字列に変換
    135119  def self.codepage_to_lang cp
    136120    if cp == "932" then
     
    141125  end
    142126
    143   #=== 言語、文字コードに関する変数を設定
    144   # 以下の順にチェックされ、一番最後に設定された値が採用される
    145   #   ãƒ»ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆ
    146   #   ãƒ»codepage  (exerb 版で TERM 未設定または TERM=cygwin の場合のみ)
    147   #   ãƒ»LANG 環境変数
    148   #   ãƒ»TECSGEN_LANG 環境変数
    149   #   ãƒ»TECSGEN_FILE_LANG 環境変数 (ファイルの文字コードのみ)
    150   #   ãƒ»-k オプション (ファイルの文字コードのみ)
     127  #=== 言語、文字コードに関する変数を設定
     128  # 以下の順にチェックされ、一番最後に設定された値が採用される
     129  #   ・デフォルト
     130  #   ・codepage  (exerb 版で TERM 未設定または TERM=cygwin の場合のみ)
     131  #   ・LANG 環境変数
     132  #   ・TECSGEN_LANG 環境変数
     133  #   ・TECSGEN_FILE_LANG 環境変数 (ファイルの文字コードのみ)
     134  #   ・-k オプション (ファイルの文字コードのみ)
    151135  def self.set_lang_var
    152136
    153137    if $IN_EXERB && ( ENV[ 'TERM' ] == nil || ENV[ 'TERM' ] == "cygwin" ) then
    154       # exerb 版で端末 cygwin の時は codepage のみを見る
     138      # exerb 版で端末 cygwin の時は codepage のみを見る
    155139      cp = get_win_codepage
    156140      lang = codepage_to_lang cp
     
    160144
    161145    elsif ENV[ 'LANG' ]then
    162       # 非 exerb 版では LANG 環境変数を見る
    163       # cygwin console では codepage に従って出力した方が平和なため
     146      # 非 exerb 版では LANG 環境変数を見る
     147      # cygwin console では codepage に従って出力した方が平和なため
    164148
    165149      $LANG_FILE, $CHARSET_FILE, *dum = self.parse_lang( ENV[ 'LANG' ] )
     
    181165  end
    182166
    183   #=== -k オプションからファイル用の言語、文字コード変数を設定
     167  #=== -k オプションからファイル用の言語、文字コード変数を設定
    184168  def self.set_lang_by_option
    185169    if $kcode == nil
     
    211195  end
    212196
    213   #=== Kconv クラス用の変数を設定
    214   # 言語æƒ
    215 å ±ã‹ã‚‰ Kconv に関する変数を設定
     197  #=== Kconv クラス用の変数を設定
     198  # 言語情報から Kconv に関する変数を設定
    216199  def self.set_kconv_var
    217200
    218     # 文字コードの設定
     201    # 文字コードの設定
    219202    case $CHARSET_FILE           # string: "EUC" | "SJIS" | "NONE" | "UTF8"
    220203    when :eucJP
     
    251234    end
    252235
    253     $KCODE_TECSGEN = "UTF8"      # string: "EUC"  このファイルの文字コード(オプションではなく定数)
     236    $KCODE_TECSGEN = "UTF8"      # string: "EUC"  このファイルの文字コード(オプションではなく定数)
    254237    $KCONV_TECSGEN = Kconv::UTF8 # const:
    255     set_kcode $KCODE_TECSGEN     # このファイルの文字コードを設定
    256   end
    257 
    258   #=== 一時的に KCODE を BINARY に変更する
    259   # EUC を UTF8 で読み込んだ場合に文字区切りを誤る問題の対応
    260   # コメントの読み飛ばしを誤る点が問題
    261   # ただし、SJIS の場合は、エスケープ文字の問題があるため、変更しない
     238    set_kcode $KCODE_TECSGEN     # このファイルの文字コードを設定
     239  end
     240
     241  #=== 一時的に KCODE を BINARY に変更する
     242  # EUC を UTF8 で読み込んだ場合に文字区切りを誤る問題の対応
     243  # コメントの読み飛ばしを誤る点が問題
     244  # ただし、SJIS の場合は、エスケープ文字の問題があるため、変更しない
    262245  def self.set_kcode_binary
    263246
     
    273256  end
    274257
    275   #=== 一時的なあ KCODE の変更をå
    276 ƒã«æˆ»ã™
     258  #=== 一時的なあ KCODE の変更を元に戻す
    277259  def self.reset_kcode
    278260    set_kcode $KCODE_BACK
     
    280262
    281263  #####
    282   # $LANG_FILE        言語 (C は en_US に変換される)
    283   # $LANG_CONSOLE     è¨€èªž (C は en_US に変換される)
    284   # $CHARSET_FILE     ãƒ•ã‚¡ã‚¤ãƒ«ã®æ–‡å­—コード
    285   # $CHARSET_CONSOLE  コンソール文字コード
    286 
    287   # デフォルトの設定(正規化済みのこと)
     264  # $LANG_FILE        言語 (C は en_US に変換される)
     265  # $LANG_CONSOLE     言語 (C は en_US に変換される)
     266  # $CHARSET_FILE     ファイルの文字コード
     267  # $CHARSET_CONSOLE  コンソール文字コード
     268
     269  # デフォルトの設定(正規化済みのこと)
    288270  $LANG_FILE_DEFAULT  = :en_US
    289271  $CHARSET_FILE_DEFAULT = nil
     
    296278  $CHARSET_CONSOLE = $CHARSET_CONSOLE_DEFAULT
    297279
    298   # -k で指定可能なコード
     280  # -k で指定可能なコード
    299281  $CODE_TYPE_ARRAY = [ "euc", "sjis", "none", "utf8" ]
    300282
    301   # 言語を決定する
     283  # 言語を決定する
    302284  self.set_lang_var
    303285
    304   # 言語、コードのチェックと正規化
     286  # 言語、コードのチェックと正規化
    305287  lang_file, charset_file, res =
    306288    self.resolve_alias_and_check( $LANG_FILE, $CHARSET_FILE )
     
    316298  end
    317299
    318   # メッセージモジュールをロード
     300  # メッセージモジュールをロード
    319301  if require_tecsgen_lib( "tecslib/messages/messages_console_#{lang_console}.rb", false ) == false then
    320302    require_tecsgen_lib( "tecslib/messages/messages_console_#{$LANG_CONSOLE_DEFAULT}.rb" )
     
    330312  end
    331313
    332   # Kconv クラスのための変数を設定
     314  # Kconv クラスのための変数を設定
    333315  self.set_kconv_var
    334316
     
    337319  dbgPrint "Ruby19_File_Encode=#{$Ruby19_File_Encode}\n"
    338320
    339   #=== 単体テスト実行
     321  #=== 単体テスト実行
    340322  if $unit_test then
    341323    print "unit test: set_lang_var\n"
     
    350332end
    351333
    352 #= Console クラス
    353 # 文字コードを変換する
     334#= Console クラス
     335# 文字コードを変換する
    354336class Console
    355337  def self.print str
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/core/tecsgen.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 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$
     
    5641class TECSGEN
    5742
    58   @@b_post_coded = false     # ポストコード生成開始後 true
    59 
    60   #=== import パス (-I) を末尾に追加
    61   # 既に登録済みであれば、追加しない
     43  @@b_post_coded = false     # ポストコード生成開始後 true
     44
     45  #=== import パス (-I) を末尾に追加
     46  # 既に登録済みであれば、追加しない
    6247  def self.add_import_path path
    6348    if $import_path.index( path ) == nil then
     
    6752  end
    6853
    69   #=== EXEB 版のパスの調整
    70   # 環境変数 TECSPATH が cygwin スタイルだと、exerb 版では扱えない
    71   # $import_path と $TECSPATH を調整する
     54  #=== EXEB 版のパスの調整
     55  # 環境変数 TECSPATH が cygwin スタイルだと、exerb 版では扱えない
     56  # $import_path と $TECSPATH を調整する
    7257  def self.adjust_exerb_path
    7358    if $IN_EXERB then
     
    7661      paths = []
    7762      $import_path.each{ |path|
    78         # cygpath は '..' を簡約してしまうので、new_tecspath で置換する
     63        # cygpath は '..' を簡約してしまうので、new_tecspath で置換する
    7964        # paths << cygpath( path, path )
    8065        paths << path.sub( pattern, new_tecspath )
     
    8772  end
    8873
    89   #=== $(TECSPATH) への置換
    90   #path::String   : ENV[ 'TECSPATH' ] に一致する部分があれば、 "$(TECSPATH)" に置換
    91   #b_global::Bool : true なら gsub で置換。false なら sub で置換
     74  #=== $(TECSPATH) への置換
     75  #path::String   : ENV[ 'TECSPATH' ] に一致する部分があれば、 "$(TECSPATH)" に置換
     76  #b_global::Bool : true なら gsub で置換。false なら sub で置換
    9277  def self.subst_tecspath( path, b_global = false )
    9378    tp = $tecspath.dup
     
    10489  end
    10590
    106   #=== path は絶対パスか?
     91  #=== path は絶対パスか?
    10792  #path:: String   :
    108   # '/' または '$' で始まる場合、絶対パスと判定する
     93  # '/' または '$' で始まる場合、絶対パスと判定する
    10994  def self.is_absolute_path?( path )
    11095    pa = path[0..0]; pa2 = path[0..1]
     
    118103  end
    119104
    120   #=== tecsgen のデフォルトを設定
     105  #=== tecsgen のデフォルトを設定
    121106  def self.set_default_config
    122107    Makefile::set_default_config
     
    124109
    125110  ###
    126   #== Makefile.templ の出力å†
    127 å®¹ã‚’追加、変更するための操作
     111  #== Makefile.templ の出力内容を追加、変更するための操作
    128112  module Makefile
    129     # 固定されている変数(add_var で変更できない)
     113    # 固定されている変数(add_var で変更できない)
    130114    @@fixed_vars = { :INCLUDES => nil, :DEFINES => nil, :TARGET_BASE => nil, :BASE_DIR => nil }
    131115    @@config_mode = false
     
    142126    @@lines = []
    143127
    144     #=== OTHER_OBJS に追加する
     128    #=== OTHER_OBJS に追加する
    145129    def self.add_obj obj
    146130      @@objs << obj
    147131    end
    148     #=== 追加する変数
    149     # プラグインからは、デフォルト値を変更できる
    150     # config により
     132    #=== 追加する変数
     133    # プラグインからは、デフォルト値を変更できる
     134    # config により
    151135    def self.add_var( var, val, comment = nil )
    152136      if @@fixed_vars[ var ]
     
    161145      end
    162146    end
    163     #=== LDFLAGS に追加する
     147    #=== LDFLAGS に追加する
    164148    def self.add_ldflag ldflag
    165149      @@ldflags += " " + ldflag
    166150    end
    167     #=== サーチパスを追加する
    168     # CFLAGS, vpath に追加する
     151    #=== サーチパスを追加する
     152    # CFLAGS, vpath に追加する
    169153    def self.add_search_path path
    170154      @@search_path << path
    171155    end
    172     #=== PRE_TECSGEN_TARGET に追加する
    173     # PRE_TECSGEN_TARGET に target を追加する
     156    #=== PRE_TECSGEN_TARGET に追加する
     157    # PRE_TECSGEN_TARGET に target を追加する
    174158    def self.add_pre_tecsgen_target target
    175159      @@pre_tecsgen_target << pre_tecsgen_target
    176160    end
    177     #=== POST_TECSGEN_TARGET に追加する
    178     # POST_TECSGEN_TARGET に target を追加する
     161    #=== POST_TECSGEN_TARGET に追加する
     162    # POST_TECSGEN_TARGET に target を追加する
    179163    def self.add_post_tecsgen_target target
    180164      @@post_tecsgen_target << pre_tecsgen_target
    181165    end
    182     #=== 追加する変数
     166    #=== 追加する変数
    183167    def self.add_line( line )
    184168      @@lines << line.to_s + "\n"
    185169    end
    186170
    187     def self.get_objs  # Array を返す
     171    def self.get_objs  # Array を返す
    188172      return @@objs.uniq
    189173    end
    190     def self.get_vars  # Array を返す
     174    def self.get_vars  # Array を返す
    191175      if RUBY_VERSION >= '1.9' then
    192176        return (@@vars.keys + @@vars_default.keys).sort.uniq
    193177      else
    194         # V1.8 では、Symbol の sort ができないので、一旦 String に置換する
     178        # V1.8 では、Symbol の sort ができないので、一旦 String に置換する
    195179        return (@@vars.keys + @@vars_default.keys).map{|s| s.to_s }.sort.uniq.map!{|s| s.to_sym }
    196180      end
     
    202186      return @@var_comments[ var ]
    203187    end
    204     def self.get_ldflags  # String を返す
     188    def self.get_ldflags  # String を返す
    205189      return @@ldflags
    206190    end
    207     def self.get_search_path  # Array を返す
     191    def self.get_search_path  # Array を返す
    208192      return @@search_path.uniq
    209193    end
    210     def self.get_pre_tecsgen_target  # Array を返す
     194    def self.get_pre_tecsgen_target  # Array を返す
    211195      return @@pre_tecsgen_target.uniq
    212196    end
    213     def self.get_post_tecsgen_target  # Array を返す
     197    def self.get_post_tecsgen_target  # Array を返す
    214198      return @@post_tecsgen_target.uniq
    215199    end
    216     def self.get_lines  # 付加する行を得る
     200    def self.get_lines  # 付加する行を得る
    217201      return @@lines.uniq
    218202    end
    219203
    220     #=== TECSGEN のデフォルト設定を行う
     204    #=== TECSGEN のデフォルト設定を行う
    221205    # Makefile
    222     # @@fixed_vars で定義されている変数は、変更できず、定数定義されている
     206    # @@fixed_vars で定義されている変数は、変更できず、定数定義されている
    223207    def self.set_default_config
    224208      add_var( "TARGET", "$(TARGET_BASE).exe", "default target name"  )
     
    241225
    242226  def syntax_analisys argv
    243     # ルート namespace (region) を生成
     227    # ルート namespace (region) を生成
    244228    @root_namespace = Region.new("::")
    245229
    246     ####  構文解析 (post コードを除く) ####
    247     # すべての cdl を import する
     230    ####  構文解析 (post コードを除く) ####
     231    # すべての cdl を import する
    248232    argv.each{ |f|
    249233      dbgPrint( "## Import: #{f}\n")
     
    251235    }
    252236
    253     # すべての構文解釈が完了したことの報告
    254     #   å®Ÿéš›ã«ã¯ã€å¾Œã‹ã‚‰ãƒ—ラグインの生成する CDL のパースが行われる
    255     #   ã‚¨ãƒ©ãƒ¼è¡Œæ•°ã®æ±ºå®šæ–¹æ³•ã®å¤‰æ›´ã®ãŸã‚ã«è¡Œã†
     237    # すべての構文解釈が完了したことの報告
     238    #   実際には、後からプラグインの生成する CDL のパースが行われる
     239    #   エラー行数の決定方法の変更のために行う
    256240    Generator.end_all_parse
    257241    dbgPrint( "## End all parse (except Post Code)\n")
     
    262246  # other objects (signature, celltype, typedef, etc ) are checked while syntax analisys
    263247  def semantics_analisys_1
    264     ####  意味解析1 (post コードを除く) ####
     248    ####  意味解析1 (post コードを除く) ####
    265249    dbgPrint( "## Creating reverse join \n")
    266250    Cell.create_reverse_join
     
    270254    Celltype.check_dynamic_join
    271255
    272     #0 set_definition_join は2回呼び出される(1回目)
     256    #0 set_definition_join は2回呼び出される(1回目)
    273257    dbgPrint( "## Checking all join\n")
    274258    @root_namespace.set_definition_join
    275     # @root_namespace.set_require_join                   ### いったん見合わせ。重複エラーを見逃す
    276     # through プラグインで生成されたセルにも require も生成できる (set_definition_join の後ろで実施)
    277 
    278     ####  post コードの生成と構文解析 ####
    279     @@b_post_coded = true     # ポストコード生成開始後 true
    280     # 引数がなければ、プラグインのポストコードを出力しない
     259    # @root_namespace.set_require_join                   ### いったん見合わせ。重複エラーを見逃す
     260    # through プラグインで生成されたセルにも require も生成できる (set_definition_join の後ろで実施)
     261
     262    ####  post コードの生成と構文解析 ####
     263    @@b_post_coded = true     # ポストコード生成開始後 true
     264    # 引数がなければ、プラグインのポストコードを出力しない
    281265    if ARGV.length > 0 then
    282266      dbgPrint( "## Generating Post Code\n")
    283       # プラグインのポストコードの出力と import
     267      # プラグインのポストコードの出力と import
    284268      tmp_file_name = "#{$gen}/tmp_plugin_post_code.cdl"
    285269      file = nil
     
    291275
    292276      if file then
    293         # through プラグインのポストコード生成
     277        # through プラグインのポストコード生成
    294278        PluginModule.gen_plugin_post_code file
    295279
     
    304288    end
    305289
    306     ####  意味解析1 (post コード) ####
     290    ####  意味解析1 (post コード) ####
    307291    dbgPrint( "## Creating reverse join (for post code) \n")
    308292    Cell.create_reverse_join
    309293
    310     # Join の定義の設定とチェック
    311     #0 # 前方参ç
    312 §å¯¾å¿œ
    313     #0 set_definition_join は2回呼び出される(2回目)  post_code で生成された
     294    # Join の定義の設定とチェック
     295    #0 # 前方参照対応
     296    #0 set_definition_join は2回呼び出される(2回目)  post_code で生成された
    314297    dbgPrint( "## Checking all join (for cells generated by Post Code\n")
    315298    @root_namespace.set_definition_join
     
    317300
    318301    dbgPrint( "## Set require join\n")
    319     @root_namespace.set_require_join   # mikan post の前にも
    320     # ポストコードで生成されたセルの require のjoin を生成
    321     # mikan require で through が適用されて、ポストコードがå¿
    322 è¦ã¨ãªã£ã¦ã‚‚出力されない
     302    @root_namespace.set_require_join   # mikan post の前にも
     303    # ポストコードで生成されたセルの require のjoin を生成
     304    # mikan require で through が適用されて、ポストコードが必要となっても出力されない
    323305  end # semantics_analisys_1
    324306
    325307  def semantics_analisys_2
    326     ####  意味解析2 ####
     308    ####  意味解析2 ####
    327309    Cell.make_cell_list2
    328310    dbgPrint( "## Set fixed join\n")
    329311    Cell.create_reverse_require_join
    330     # create_reverse_require_join は set_detinition_join に埋め込むことができない
    331         # namespace に依存しない出現順で行う
    332         # mikan through プラグインが適用されポストコードに影響を与える場合が考æ
    333 ®ã§ãã¦ã„ない
    334         # mikan post code に影響のあるものであれば、早くに reverse_require_join の結合がå¿
    335 è¦
     312    # create_reverse_require_join は set_detinition_join に埋め込むことができない
     313        # namespace に依存しない出現順で行う
     314        # mikan through プラグインが適用されポストコードに影響を与える場合が考慮できていない
     315        # mikan post code に影響のあるものであれば、早くに reverse_require_join の結合が必要
    336316    dbgPrint( "## Setting port reference count\n")
    337317    @root_namespace.set_port_reference_count
     
    340320    @root_namespace.check_join
    341321
    342     # mikan プラグインで生成されたコンポーネントの set_def_and_check_join
     322    # mikan プラグインで生成されたコンポーネントの set_def_and_check_join
    343323
    344324    dbgPrint( "## Checking referenced but undefined cell\n")
     
    347327
    348328  def optimize_and_generate
    349     #### Region link root ごとにオプティマイズおよび生成 ####
     329    #### Region link root ごとにオプティマイズおよび生成 ####
    350330    Region.get_link_roots.each { |region|
    351331
     
    369349      end
    370350
    371       # セルが一つもなければ生成しない
    372       # セルの生成がない場合
     351      # セルが一つもなければ生成しない
     352      # セルの生成がない場合
    373353      if region.get_n_cells == 0 then
    374354        if $region_list.length > 0 then
     
    400380
    401381      dbgPrint( "## Unset optimize variables\n")
    402       @root_namespace.reset_optimize   # 最適化をリセットする
     382      @root_namespace.reset_optimize   # 最適化をリセットする
    403383
    404384      if Generator.get_n_error == 0 then
    405         # エラーが発生していたら、設定しない
     385        # エラーが発生していたら、設定しない
    406386        dbgPrint( "## Set cell id\n")
    407         @root_namespace.set_cell_id_and_domain      # セルの ID とドメインæƒ
    408 å ±ã‚’設定(linkunit 毎に0からつける)
    409 
    410         # エラーが発生していたら、最適化は実施しない
     387        @root_namespace.set_cell_id_and_domain      # セルの ID とドメイン情報を設定(linkunit 毎に0からつける)
     388
     389        # エラーが発生していたら、最適化は実施しない
    411390        if ! $unopt then
    412391          dbgPrint( "## Optimizing: Link Region=#{@root_namespace.get_name}\n")
     
    416395
    417396      if $show_tree then
    418         # エラーが発生していても表示(エラー発生時は最適化されていないので注意)
     397        # エラーが発生していても表示(エラー発生時は最適化されていないので注意)
    419398        print "##### show_tree LinkRegion=#{region.get_name} #####\n"
    420399        @root_namespace.show_tree(0)
     
    422401      end
    423402
    424       # 構文解釈、意味解析でエラー発生していたら、コード生成をしない
     403      # 構文解釈、意味解析でエラー発生していたら、コード生成をしない
    425404      if Generator.get_n_error != 0 then
    426405        print_report
     
    428407      end
    429408
    430       #### コード生成 ####
     409      #### コード生成 ####
    431410      begin
    432411        dbgPrint( "## Generating: Link Region=#{@root_namespace.get_name}\n")
     
    435414        @root_namespace.generate_post
    436415      rescue
    437         # 通常ここへは来ない (generate, generate_post で処置される)
     416        # 通常ここへは来ない (generate, generate_post で処置される)
    438417        Generator.error( "G9999 fail to generate" )
    439418      end
     
    453432    }
    454433
    455     # update する
    456     # APPFile で生成されたファイルは、もし変化があれば、ここで更新する
    457     # コード生成段階でエラーが発生すれば、更新しない
    458     # CFile で生成されたものは、更新されている
     434    # update する
     435    # APPFile で生成されたファイルは、もし変化があれば、ここで更新する
     436    # コード生成段階でエラーが発生すれば、更新しない
     437    # CFile で生成されたものは、更新されている
    459438    if Generator.get_n_error == 0 then
    460439      begin
     
    477456  def dump_tecsgen_rbdmp
    478457    dbgPrint "dump_tecsgen_rbdmp 0:\n"
    479     #### unjoin_plugin 後に行うå¿
    480 è¦ãŒã‚るため、コード生成後にダンプを行う
    481     #### Region link root ごとにオプティマイズしてダンプ ####
     458    #### unjoin_plugin 後に行う必要があるため、コード生成後にダンプを行う
     459    #### Region link root ごとにオプティマイズしてダンプ ####
    482460    Namespace.get_root.unjoin_plugin
    483461    Namespace.get_root.find_plugin 0, []
     
    497475
    498476      dbgPrint "dump_tecsgen_rbdmp 2: Region.path_str: #{region.get_namespace_path.get_path_str}\n"
    499       # セルが一つもなければ生成しない
    500       # セルの生成がない場合
     477      # セルが一つもなければ生成しない
     478      # セルの生成がない場合
    501479      if region.get_n_cells == 0 then
    502480        # if $region_list.length > 0 then
     
    522500      dbgPrint "dump_tecsgen_rbdmp 4: Region.path_str: #{region.get_namespace_path.get_path_str}\n"
    523501      dbgPrint( "## Unset optimize variables\n")
    524       @root_namespace.reset_optimize   # 最適化をリセットする
     502      @root_namespace.reset_optimize   # 最適化をリセットする
    525503
    526504      #  if Generator.get_n_error == 0 then
    527       #   # エラーが発生していたら、ここへは来ない
     505      #   # エラーが発生していたら、ここへは来ない
    528506         dbgPrint( "## Set cell id\n")
    529         @root_namespace.set_cell_id_and_domain      # セルの ID とドメインæƒ
    530 å ±ã‚’設定(linkunit 毎に0からつける)
    531 
    532         # エラーが発生していたら、最適化は実施しない
     507        @root_namespace.set_cell_id_and_domain      # セルの ID とドメイン情報を設定(linkunit 毎に0からつける)
     508
     509        # エラーが発生していたら、最適化は実施しない
    533510        if ! $unopt then
    534511          dbgPrint( "## Optimizing: Link Region=#{@root_namespace.get_name}\n")
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/core/tecsinfo.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2017-2018 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 # TECS æƒ
    56 å ±ã‚»ãƒ«ã®ç”Ÿæˆ
     40# TECS 情報セルの生成
    5741module TECSInfo
    58   # region は Link root のこと
     42  # region は Link root のこと
    5943  def self.print_info f, region
    6044    # p "region: "+ region.get_name.to_s
     
    6751    Type.reset_print_info
    6852
    69     # mikan å
    70 ¨éƒ¨ç”Ÿæˆã™ã‚‹ã®ã§ã¯ãªãã€region 下のセルのセルタイプと、そこから参ç
    71 §ã•ã‚Œã‚‹ã‚·ã‚°ãƒ‹ãƒãƒ£ã€ã‚»ãƒ«ã‚¿ã‚¤ãƒ—に限定して出力すべき
    72     # しかし、意味解析後に出力するため、これは容易ではない.最適化とコード生成は、リンクルートごとに行われる.
     53    # mikan 全部生成するのではなく、region 下のセルのセルタイプと、そこから参照されるシグニチャ、セルタイプに限定して出力すべき
     54    # しかし、意味解析後に出力するため、これは容易ではない.最適化とコード生成は、リンクルートごとに行われる.
    7355    Namespace.print_info f, indent
    7456    region.get_link_root.print_info f, indent
     
    9072
    9173class Namespace
    92   # RootRegion と LinkRegion は同じ Region クラスのオブジェクトである
    93   # 子ネームスペースは Namespace クラスの、子リージョンは Region クラスのオブジェクトである
    94   # これは、意味解析段階で呼び出されるため、リンクユニットごとに出しわけることができない
    95   # 出しわけるには、2パスにするå¿
    96 è¦ãŒã‚ã‚‹
     74  # RootRegion と LinkRegion は同じ Region クラスのオブジェクトである
     75  # 子ネームスペースは Namespace クラスの、子リージョンは Region クラスのオブジェクトである
     76  # これは、意味解析段階で呼び出されるため、リンクユニットごとに出しわけることができない
     77  # 出しわけるには、2パスにする必要がある
    9778  def print_info_ns_sub f, indent
    9879    if @name == "::" then
     
    151132    }
    152133    @namespace_list.each { |ns|
    153       if ns.instance_of? Namespace then   # region を含めない
     134      if ns.instance_of? Namespace then   # region を含めない
    154135        ns.print_info_ns f, indent
    155136      end
     
    161142  end
    162143
    163   #=== Namespace# 構造体メンバーのオフセット定義
     144  #=== Namespace# 構造体メンバーのオフセット定義
    164145  def print_struct_define f
    165146    f.print "\n/***** Offset of members of structures  *****/\n"
     
    184165    }
    185166    @namespace_list.each { |ns|
    186       if ns.instance_of? Namespace then   # region を含めない
     167      if ns.instance_of? Namespace then   # region を含めない
    187168        ns.print_celltype_define_offset f
    188169      end
     
    197178    }
    198179    @namespace_list.each { |ns|
    199       if ns.instance_of? Namespace then   # region を含めない
     180      if ns.instance_of? Namespace then   # region を含めない
    200181        ns.print_celltype_define f
    201182      end
     
    210191    }
    211192    @namespace_list.each { |ns|
    212       if ns.instance_of? Namespace then   # region を含めない
     193      if ns.instance_of? Namespace then   # region を含めない
    213194        ns.print_call_define f
    214195      end
     
    223204    }
    224205    @namespace_list.each { |ns|
    225       if ns.instance_of? Namespace then   # region を含めない
     206      if ns.instance_of? Namespace then   # region を含めない
    226207        ns.print_entry_define f
    227208      end
     
    415396
    416397  def print_define_offset f
    417     # intptr_t に一回キャストするのは 64bit 版を考量してのこと.しかし 32bit としているので 4GB をè¶
    418 ãˆã‚‹æ§‹é€ ä½“等は扱えない
     398    # intptr_t に一回キャストするのは 64bit 版を考量してのこと.しかし 32bit としているので 4GB を超える構造体等は扱えない
    419399    if @n_cell_gen > 0 then
    420400      f.print <<EOT
     
    453433// #include "#{@global_name}_tecsgen.h"   // no cell exist
    454434EOT
    455       # 生成されないセルタイプ
     435      # 生成されないセルタイプ
    456436      @attribute.each{ |decl|
    457437        f.printf "#define OFFSET_OF_%-30s  (%s)\n", "#{@global_name}_#{decl.get_name}", "0xffffffff"
     
    641621        red = "(void *)0"
    642622      end
    643       # mikan 受け口é
    644 åˆ—
     623      # mikan 受け口配列
    645624      f.print <<EOT
    646625#{indent}cell nTECSInfo::tRawEntryDescriptorInfo #{@global_name}_#{port.get_name}RawEntryDescriptorInfo {
     
    795774
    796775  def print_info f, indent
    797     # Type の info は、最後にまとめて出力するので、ここでは記録するだけ
     776    # Type の info は、最後にまとめて出力するので、ここでは記録するだけ
    798777    if @@typeinfo_printed[ get_ID_str ] then
    799778      return
     
    821800
    822801  def print_info_post f, indent
    823     if self.class.superclass == Type then     # 親クラスが Type の場合 types.rb のクラス
     802    if self.class.superclass == Type then     # 親クラスが Type の場合 types.rb のクラス
    824803      type_name = self.class.name
    825804    else
    826       type_name = self.class.superclass.name  # ctypes.rb のクラス (親クラスが types.rb のクラス)
     805      type_name = self.class.superclass.name  # ctypes.rb のクラス (親クラスが types.rb のクラス)
    827806    end
    828807    # p "type: #{type_name}, #{self.class.name}"
     
    856835  end
    857836
    858   #=== Type# 型文字列の識別子化
    859   #型文字列に含まれる識別子として用いることのできない文字を用いることのできる文字列に置き換える
    860   # 空白 => __
     837  #=== Type# 型文字列の識別子化
     838  #型文字列に含まれる識別子として用いることのできない文字を用いることのできる文字列に置き換える
     839  # 空白 => __
    861840  # * => _Ptr_
    862841  # [] => _Array_
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/core/tool_info.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 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$
     
    307292
    308293#==  Cell_location
    309   # tecscde の位置æƒ
    310 å ±
     294  # tecscde の位置情報
    311295  class  Cell_location
    312296
     
    335319
    336320  #==  Join_location
    337   # tecscde の位置æƒ
    338 å ±
     321  # tecscde の位置情報
    339322  class  Join_location
    340323    @@join_location_list = []
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/core/types.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 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 #= HasType: @type をå†
    56 éƒ¨ã«æŒã¤åž‹ã®ãŸã‚ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«
     40#= HasType: @type を内部に持つ型のためのモジュール
    5741#  @b_cloned::Bool  : true if @type is cloned
    5842#
    59 # このモジュールは DefinedType, PtrType, ArrayType に include される
    60 # 本当は typedef された時の Decl の要素のみ clone すればよいのだが、get_type, get_original_type で
    61 # 取り出されたとき、set_scs, set_qualifier されたときに無条件で clone する (無駄にメモリを使用する)
    62 # ただし、clone するのは一回のみである (二回 clone すると別の型を参ç
    63 §ã—てしまう)
     43# このモジュールは DefinedType, PtrType, ArrayType に include される
     44# 本当は typedef された時の Decl の要素のみ clone すればよいのだが、get_type, get_original_type で
     45# 取り出されたとき、set_scs, set_qualifier されたときに無条件で clone する (無駄にメモリを使用する)
     46# ただし、clone するのは一回のみである (二回 clone すると別の型を参照してしまう)
    6447#
    65 # initialize で clone しても、å
    66 ±æœ‰ã•ã‚Œã¦ã„るときに clone されない
     48# initialize で clone しても、共有されているときに clone されない
    6749#
    6850module HasType
     
    7153  end
    7254
    73   #=== HasType# @type をクローンする
     55  #=== HasType# @type をクローンする
    7456  def clone_type
    7557#    if @b_cloned == false then
     
    131113  end
    132114
    133   #=== size_is, count_is, string を設定
    134   # 派生クラスでオーバーライドする(デフォルトではエラー)
     115  #=== size_is, count_is, string を設定
     116  # 派生クラスでオーバーライドする(デフォルトではエラー)
    135117  def set_scs( size, count, string, max = nil, b_nullable = false )
    136118    str = ""
     
    170152  end
    171153
    172   #=== 型をチェック
    173   #    正当な型定義かどうか、チェックする
     154  #=== 型をチェック
     155  #    正当な型定義かどうか、チェックする
    174156  def check
    175     # 型に誤りがあれば、エラー文字列を返す
    176   end
    177 
    178   #=== struct の tag をチェック
    179   #    正当な型定義かどうか、チェックする
    180   #kind:: Decl の @kind を参ç
    181 §
     157    # 型に誤りがあれば、エラー文字列を返す
     158  end
     159
     160  #=== struct の tag をチェック
     161  #    正当な型定義かどうか、チェックする
     162  #kind:: Decl の @kind を参照
    182163  def check_struct_tag kind
    183     # tag が存在しなければエラーを出力する
    184     # é
    185 åˆ—型では、要素の型を再帰的にチェック
    186     # ポインタ型では、指すå
    187 ˆã® tag チェックはしない
    188     # 関数型ではパラメータリストのすべてについて行う
    189   end
    190 
    191   #===  初期化可能かチェック
    192   #     attribute など初期化可能かチェックする(型に対し正当な初期化子が与えられているか)
    193   #ident::        string                被代å
    194 ¥å¤‰æ•°å‘½
     164    # tag が存在しなければエラーを出力する
     165    # 配列型では、要素の型を再帰的にチェック
     166    # ポインタ型では、指す先の tag チェックはしない
     167    # 関数型ではパラメータリストのすべてについて行う
     168  end
     169
     170  #===  初期化可能かチェック
     171  #     attribute など初期化可能かチェックする(型に対し正当な初期化子が与えられているか)
     172  #ident::        string                被代入変数命
    195173  #initialize::   Expression, Array of initializer or C_EXP
    196   #               ä»£å
    197 ¥å€¤ã€C_EXP が与えられるのは IntType の場合のみ
     174  #               代入値、C_EXP が与えられるのは IntType の場合のみ
    198175  #kind::         symbol (:ATTRIBUTE, :VAR, :CONSTNAT )
    199   #attribute::    NameList              kind == :VAR のとき参ç
    200 §ã§ãã‚‹ attribute
     176  #attribute::    NameList              kind == :VAR のとき参照できる attribute
    201177  #
    202   #     locale を第一引数として取るのは、以下の理由による。
    203   #     ã“のメソッドは、変数への代å
    204 ¥ãŒè¡Œã‚ã‚Œã‚‹ã€Œè¡Œã€ã«å¯¾ã—て呼び出されるが、
    205   #     Type クラスのインスタンスは、変数が定義された「行」を記憶している。
     178  #     locale を第一引数として取るのは、以下の理由による。
     179  #     このメソッドは、変数への代入が行われる「行」に対して呼び出されるが、
     180  #     Type クラスのインスタンスは、変数が定義された「行」を記憶している。
    206181  #
    207182  # STAGE: S
     
    210185  end
    211186
    212   #=== const_val を指定の型にキャストする
    213   # 派生クラスでオーバーライドしていないとエラー
     187  #=== const_val を指定の型にキャストする
     188  # 派生クラスでオーバーライドしていないとエラー
    214189  def cast( const_val )
    215190    cdl_error( "T1004 cannot cast to $1" , self.class )
    216191  end
    217192
    218   #=== 型が一致するかのチェック
    219   # 型名の字面でチェック.
    220   # typedef された型も字面で一致を見るため、å
    221 ƒã®åž‹ãŒåŒã˜ã§ã‚‚型名が異なれば不一致となる
     193  #=== 型が一致するかのチェック
     194  # 型名の字面でチェック.
     195  # typedef された型も字面で一致を見るため、元の型が同じでも型名が異なれば不一致となる
    222196  def equal? type2
    223197    return ( get_type_str == type2.get_type_str ) && ( get_type_str_post == type2.get_type_str_post )
    224198  end
    225199
    226   #=== bit size を得る
    227   # IntType, FloatType 以外は0
     200  #=== bit size を得る
     201  # IntType, FloatType 以外は0
    228202  def get_bit_size
    229203    return 0
    230204  end
    231205
    232   #=== å
    233 ƒã®åž‹ã‚’å¾—ã‚‹
    234   # typedef された型の場合、そのå
    235 ƒã®åž‹ã‚’返す.
    236   # それ以外は、自分自身を返す.
    237   # (DefinedType では本メソッドがオーバーライドされる)
     206  #=== 元の型を得る
     207  # typedef された型の場合、その元の型を返す.
     208  # それ以外は、自分自身を返す.
     209  # (DefinedType では本メソッドがオーバーライドされる)
    238210  def get_original_type
    239211    return self
    240212  end
    241213
    242   #=== å†
    243 éƒ¨ã«ãƒã‚¤ãƒ³ã‚¿åž‹ã‚’持つ
    244   # ポインタ型、またはポインタ型メンバを持つ構造体、または要素がポインタ型を持つé
    245 åˆ—
     214  #=== 内部にポインタ型を持つ
     215  # ポインタ型、またはポインタ型メンバを持つ構造体、または要素がポインタ型を持つ配列
    246216  def has_pointer?
    247217    false
    248218  end
    249219
    250   #=== size_is, count_is, string 指定されたポインタを持つか
    251   # size_is, count_is, string 指定されたポインタ型、またはそれをメンバに持つ構造体、またはそれをを要素に持つé
    252 åˆ—
     220  #=== size_is, count_is, string 指定されたポインタを持つか
     221  # size_is, count_is, string 指定されたポインタ型、またはそれをメンバに持つ構造体、またはそれをを要素に持つ配列
    253222  def has_sized_pointer?
    254223    false
    255224  end
    256225 
    257   #=== 長さ指定のない string を持つ
    258   # なさ指定のない string 指定されたポインタ型、またはそれをメンバに持つ構造体、またはそれを要素に持つé
    259 åˆ—
     226  #=== 長さ指定のない string を持つ
     227  # なさ指定のない string 指定されたポインタ型、またはそれをメンバに持つ構造体、またはそれを要素に持つ配列
    260228  def has_unsized_string?
    261229    false
     
    281249    @type_name = type_name
    282250
    283     # mikan type_name が path になっていないため暫定
     251    # mikan type_name が path になっていないため暫定
    284252    @typedef = Namespace.find( [ type_name ] )  #1
    285253
     
    317285  end
    318286
    319   #=== qualifier(const, volatile) の設定
     287  #=== qualifier(const, volatile) の設定
    320288  def set_qualifier( qualifier )
    321289    clone_type
     
    338306  end
    339307
    340   def check     # 意味的誤りがあれば、文字列を返す
    341     nil    # typedef の段階で意味チェックされている
     308  def check     # 意味的誤りがあれば、文字列を返す
     309    nil    # typedef の段階で意味チェックされている
    342310  end
    343311
     
    346314  end
    347315
    348   #=== å†
    349 éƒ¨ã«ãƒã‚¤ãƒ³ã‚¿åž‹ã‚’持つ
    350   # ポインタ型、またはポインタ型メンバを持つ構造体、または要素がポインタ型を持つé
    351 åˆ—
     316  #=== 内部にポインタ型を持つ
     317  # ポインタ型、またはポインタ型メンバを持つ構造体、または要素がポインタ型を持つ配列
    352318  def has_pointer?
    353319    @type.has_pointer?
    354320  end
    355321
    356   #=== size_is, count_is, string 指定されたポインタを持つか
    357   # size_is, count_is, string 指定されたポインタ型、またはそれをメンバに持つ構造体、またはそれをを要素に持つé
    358 åˆ—
     322  #=== size_is, count_is, string 指定されたポインタを持つか
     323  # size_is, count_is, string 指定されたポインタ型、またはそれをメンバに持つ構造体、またはそれをを要素に持つ配列
    359324  def has_sized_pointer?
    360325    @type.has_sized_pointer?
    361326  end
    362327 
    363   #=== 長さ指定のない string を持つ
    364   # なさ指定のない string 指定されたポインタ型、またはそれをメンバに持つ構造体、またはそれを要素に持つé
    365 åˆ—
     328  #=== 長さ指定のない string を持つ
     329  # なさ指定のない string 指定されたポインタ型、またはそれをメンバに持つ構造体、またはそれを要素に持つ配列
    366330  def has_unsized_string?
    367331    @type.has_unsized_string?
     
    383347class VoidType < Type
    384348
    385   def check     # 意味的誤りがあれば、文字列を返す
     349  def check     # 意味的誤りがあれば、文字列を返す
    386350    nil
    387351  end
     
    408372class BoolType < Type
    409373
    410   def check     # 意味的誤りがあれば、文字列を返す
     374  def check     # 意味的誤りがあれば、文字列を返す
    411375    nil
    412376  end
     
    458422  end
    459423
    460   def check     # 意味的誤りがあれば、文字列を返す
     424  def check     # 意味的誤りがあれば、文字列を返す
    461425    nil
    462426  end
     
    466430    if val.instance_of?( Expression ) then
    467431      val = val.eval_const2( nil, attribute )
    468       # 評価の結果 C_EXP や Array となる可能性がある
    469     end
    470 
    471     if val.instance_of? Token then    # StringVal 導å
    472 ¥ã«ã‚ˆã‚Šã€ã‚‚はや Token は来ないはず
    473       # val が Token の場合 == の右辺が String だとエラーを起こす (#198)
     432      # 評価の結果 C_EXP や Array となる可能性がある
     433    end
     434
     435    if val.instance_of? Token then    # StringVal 導入により、もはや Token は来ないはず
     436      # val が Token の場合 == の右辺が String だとエラーを起こす (#198)
    474437      cdl_error2( locale, "T1009 $1: $2: not integer" , ident, val )
    475438      return
    476439    elsif val.is_a? C_EXP then
    477       # #192 var が attribute を参ç
    478 §ã—、attribute の右辺が C_EXP の場合
    479       # const の右辺が C_EXP の場合も
     440      # #192 var が attribute を参照し、attribute の右辺が C_EXP の場合
     441      # const の右辺が C_EXP の場合も
    480442      return
    481443    elsif val.kind_of? FloatVal then
     
    521483  end
    522484
    523   #=== IntType# 最大値、最小値をチェックしてクリップする
    524   # キャスト演算を行う
    525   #in_val:: IntegerVal, FloatVal:  この型にキャストする値
    526   #from_type:: Symbol:  :IntType, :FloatType  IntType の場合はビット数でクリップ、FloatType の場合は最大値でクリップ
     485  #=== IntType# 最大値、最小値をチェックしてクリップする
     486  # キャスト演算を行う
     487  #in_val:: IntegerVal, FloatVal:  この型にキャストする値
     488  #from_type:: Symbol:  :IntType, :FloatType  IntType の場合はビット数でクリップ、FloatType の場合は最大値でクリップ
    527489  def check_and_clip( in_val, from_type = :IntType )
    528490    bit_size = get_bit_size
     
    533495    if get_max && val > get_max then
    534496      if from_type == :IntType then
    535         rval = ((1 << bit_size)-1) & val   # bit 数でクリップ
     497        rval = ((1 << bit_size)-1) & val   # bit 数でクリップ
    536498      else
    537         rval = get_max                         # 最大値でクリップ (FloatType)
     499        rval = get_max                         # 最大値でクリップ (FloatType)
    538500      end
    539501      cdl_warning( "W2003 $1: too large to cast to $2, clipped($3)" , in_val, get_type_str, rval )
     
    546508      if @sign == :SIGNED || @sign == nil then
    547509        cdl_warning( "W2004 $1: too small to cast to $2, clipped($3)" , in_val, get_type_str, rval )
    548       else    # @sign == :UNSIGNED || @sign == nil (char の場合)
     510      else    # @sign == :UNSIGNED || @sign == nil (char の場合)
    549511        cdl_warning( "W2005 $1: negative value for unsigned: convert to $2" , in_val, rval )
    550512      end
     
    558520    if @sign == :SIGNED || @sign == nil then
    559521      if @bit_size == -1 then
    560         bit_sz = 8   # char_t は、有符号に扱う
     522        bit_sz = 8   # char_t は、有符号に扱う
    561523      else
    562524        bit_sz = @bit_size
     
    576538    if @bit_size == -1 then
    577539      if @sign == nil then
    578         return 255   # char_t は、無符号に扱う
     540        return 255   # char_t は、無符号に扱う
    579541      else
    580542        bit_sz = 8
     
    600562  end
    601563
    602   #=== IntType# C 言語における型名(修飾子付き)
     564  #=== IntType# C 言語における型名(修飾子付き)
    603565  def get_type_str
    604566    str = super
     
    620582
    621583    case @bit_size
    622     when -1      # char_t 型
     584    when -1      # char_t
    623585      if @sign == :SIGNED then
    624586        sign = "s"
    625587      end
    626588      str = "#{str}#{sign}char_t"
    627     when -11     # char 型(obsolete)
     589    when -11     # char (obsolete)
    628590      str = "#{str}#{signL}char"
    629     when -2      # short 型
     591    when -2      # short
    630592      str = "#{str}#{signL}short"
    631     when -3      # int 型
     593    when -3      # int
    632594      str = "#{str}#{signL}int"
    633     when -4      # long 型
     595    when -4      # long
    634596      str = "#{str}#{signL}long"
    635     when -5      # long long 型
     597    when -5      # long long
    636598      str = "#{str}#{signL}long long"
    637     when 8, 16, 32, 64, 128     # int16, int32, int64, int128 型
     599    when 8, 16, 32, 64, 128     # int16, int32, int64, int128
    638600      str = "#{str}#{sign}int#{@bit_size}_t"
    639601    end
     
    642604  end
    643605
    644   #=== IntType# C 言語における型名(後置文字列)
     606  #=== IntType# C 言語における型名(後置文字列)
    645607  def get_type_str_post
    646608    ""
    647609  end
    648610
    649   #=== IntType#bit_size を得る
    650   #    返される値は @bit_size の仕様を参ç
    651 §
     611  #=== IntType#bit_size を得る
     612  #    返される値は @bit_size の仕様を参照
    652613  def get_bit_size
    653614    return @bit_size
    654615  end
    655616
    656   #=== IntType# sign を得る
    657   # @sign の説明を参ç
    658 §
     617  #=== IntType# sign を得る
     618  # @sign の説明を参照
    659619  def get_sign
    660620    @sign
     
    676636  end
    677637
    678   def check     # 意味的誤りがあれば、文字列を返す
     638  def check     # 意味的誤りがあれば、文字列を返す
    679639    nil
    680640  end
    681641
    682   # mikan Float 型の C_EXP 対応 (generate.rb にも変更å¿
    683 è¦)
     642  # mikan Float 型の C_EXP 対応 (generate.rb にも変更必要)
    684643  def check_init( locale, ident, initializer, kind, attribute = nil )
    685     # 型に対する初期値に誤りがあれば、エラー文字列を返す
     644    # 型に対する初期値に誤りがあれば、エラー文字列を返す
    686645    val = initializer
    687646    if val.instance_of?( Expression ) then
    688647      val = val.eval_const2( nil, attribute )
    689       # 評価の結果 C_EXP や Array となる可能性がある
     648      # 評価の結果 C_EXP や Array となる可能性がある
    690649    end
    691650
    692651    if val.instance_of? Token then
    693       # val が Token の場合 == の右辺が String だとエラーを起こす
     652      # val が Token の場合 == の右辺が String だとエラーを起こす
    694653      cdl_error2( locale, "T1018 $1: $2: not number" , ident, val )
    695654      return
     
    774733#  @members_decl:: NamedList
    775734#  @definition:: StructType
    776 #  @b_has_pointer_member:: bool : メンバにポインタ型がある
    777 #  @b_has_sized_pointer_member:: bool : メンバにポインタ型がある
    778 #  @b_has_unsized_string_member:: bool : メンバにポインタ型がある
    779 #  @b_hasTag:: bool : タグがある
    780 #  @member_types_symbol:: Symbol : tag が無い時のみ設定 (それ以外では nil)
     735#  @b_has_pointer_member:: bool : メンバにポインタ型がある
     736#  @b_has_sized_pointer_member:: bool : メンバにポインタ型がある
     737#  @b_has_unsized_string_member:: bool : メンバにポインタ型がある
     738#  @b_hasTag:: bool : タグがある
     739#  @member_types_symbol:: Symbol : tag が無い時のみ設定 (それ以外では nil)
    781740
    782741  @@structtype_current_stack = []
    783742  @@structtype_current_sp = -1
    784743
    785   # tag なし struct
     744  # tag なし struct
    786745  @@no_struct_tag_num = 0
    787746  @@no_tag_struct_list = {}
     
    811770    if @b_define then
    812771      @members_decl = NamedList.new( nil, "in struct #{@tag}" )
    813       # if @tag then    登録タイミングを終わりに変更 V1.0.2.19
     772      # if @tag then    登録タイミングを終わりに変更 V1.0.2.19
    814773      #  Namespace.new_structtype( self )
    815774      # end
    816775    else
    817776      @definition = Namespace.find_tag( @tag )
    818       # check_struct_tag に移す V1.0.2.19
     777      # check_struct_tag に移す V1.0.2.19
    819778      # if @definition == nil then
    820779      #  cdl_error( "T1021 \'$1\': struct not defined" , @tag )
     
    841800  end
    842801
    843   def check     # 意味的誤りがあれば、文字列を返す
     802  def check     # 意味的誤りがあれば、文字列を返す
    844803    nil
    845804  end
    846805
    847   #=== 構造体のタグをチェック
    848   #  declarator の時点でチェックする
    849   #kind:: Decl の @kind を参ç
    850 §
     806  #=== 構造体のタグをチェック
     807  #  declarator の時点でチェックする
     808  #kind:: Decl の @kind を参照
    851809  def check_struct_tag kind
    852810    if @tag == nil
     
    860818  end
    861819
    862   # mikan Float 型の C_EXP 対応 (generate.rb にも変更å¿
    863 è¦)
     820  # mikan Float 型の C_EXP 対応 (generate.rb にも変更必要)
    864821  def check_init( locale, ident, initializer, kind, attribute = nil )
    865822
     
    870827    end
    871828
    872     # 初期化子が式の場合、型(タグ)が一致するかチェック
     829    # 初期化子が式の場合、型(タグ)が一致するかチェック
    873830    if initializer.instance_of?( Expression ) then
    874831      t = initializer.get_type( attribute )
     
    906863
    907864  def end_of_parse()
    908     if @members_decl == nil   # @b_define = false またはメンバーのない構造体(エラー)
     865    if @members_decl == nil   # @b_define = false またはメンバーのない構造体(エラー)
    909866      return
    910867    end
     
    932889      string = md.get_string
    933890      if string == -1 then
    934         # 長さ指定なし
     891        # 長さ指定なし
    935892      elsif string then
    936893        val = string.eval_const( @members_decl )
     
    970927
    971928    if @b_hasTag then
    972       # typedef struct tag StructType; の形式の場合
    973       # struct の本体は、別に生成される
     929      # typedef struct tag StructType; の形式の場合
     930      # struct の本体は、別に生成される
    974931      return "#{str}struct #{@tag}"
    975932
    976933    else
    977       # typedef struct { int a; } StructType; の形式の場合
     934      # typedef struct { int a; } StructType; の形式の場合
    978935      str += "struct {"
    979936      @members_decl.get_items.each{ |i|
     
    1026983  end
    1027984
    1028   #=== 同じ構造体かどうかチェックする
    1029   # tag のチェックは行わない
    1030   # すべてのメンバの名前と型が一致することを確認する
     985  #=== 同じ構造体かどうかチェックする
     986  # tag のチェックは行わない
     987  # すべてのメンバの名前と型が一致することを確認する
    1031988  def same? another
    1032989    md = another.get_members_decl
     
    11181075  end
    11191076
    1120   def check     # 意味的誤りがあれば、文字列を返す
    1121     if @type.class == ArrayType then    # é
    1122 åˆ—を返す関数
     1077  def check     # 意味的誤りがあれば、文字列を返す
     1078    if @type.class == ArrayType then    # 配列を返す関数
    11231079      return "function returning array"
    1124     elsif @type.class == FuncType then  # 関数を返す関数
     1080    elsif @type.class == FuncType then  # 関数を返す関数
    11251081      return "function returning function"
    11261082    end
    1127     return @type.check   # 関数の return する型のチェック
    1128 
    1129     # パラメータの型のチェックは ParamList#check_param で行う
     1083    return @type.check   # 関数の return する型のチェック
     1084
     1085    # パラメータの型のチェックは ParamList#check_param で行う
    11301086  end
    11311087
    11321088  def check_struct_tag kind
    11331089    @type.check_struct_tag kind
    1134     # ParamDecl でもチェックされるので、ここではチェックしない
     1090    # ParamDecl でもチェックされるので、ここではチェックしない
    11351091    # @paramlist.check_struct_tag kind
    11361092  end
     
    11491105  end
    11501106
    1151   #=== return type を返す
     1107  #=== return type を返す
    11521108  #
    1153   # return type を返す
    1154   # get_return_type とすべきだった
     1109  # return type を返す
     1110  # get_return_type とすべきだった
    11551111  def get_type
    11561112    @type
     
    11621118
    11631119  def get_type_str_post
    1164     # 型だけを返す (仮引数の名前を含めない)
     1120    # 型だけを返す (仮引数の名前を含めない)
    11651121    @paramlist.to_str( false )
    11661122  end
     
    11901146  end
    11911147
    1192   #=== Push Pop Allocator がå¿
    1193 è¦ã‹ï¼Ÿ
    1194   # Transparent RPC の場合 oneway かつ in のé
    1195 åˆ—(size_is, count_is, string のいずれかで修飾)がある
     1148  #=== Push Pop Allocator が必要か?
     1149  # Transparent RPC の場合 oneway かつ in の配列(size_is, count_is, string のいずれかで修飾)がある
    11961150  def need_PPAllocator?( b_opaque = false )
    11971151    if @b_oneway || b_opaque then
     
    12021156  end
    12031157
    1204   #=== パラメータが in, inout, out, send, receive を持つか
     1158  #=== パラメータが in, inout, out, send, receive を持つか
    12051159  def has_in?
    12061160    @has_in
     
    12191173  end
    12201174
    1221   #=== å
    1222 ¥åŠ›æ–¹å‘のパラメータを持つか
     1175  #=== 入力方向のパラメータを持つか
    12231176  def has_inward?
    12241177    @has_in || @has_inout || @has_send
    12251178  end
    1226   #=== 出力方向のパラメータを持つか
     1179  #=== 出力方向のパラメータを持つか
    12271180  def has_outward?
    12281181    @has_inout || @has_out || @has_receive
     
    12661219  end
    12671220
    1268   #=== Array#qualifier(const, volatile) の設定
     1221  #=== Array#qualifier(const, volatile) の設定
    12691222  def set_qualifier( qualifier )
    12701223    clone_type
     
    12731226  end
    12741227
    1275   # é
    1276 åˆ—要素が const なら const
     1228  # 配列要素が const なら const
    12771229  def is_const?
    12781230    @type.is_const?
    12791231  end
    12801232
    1281   # é
    1282 åˆ—要素が volatile なら volatile
     1233  # 配列要素が volatile なら volatile
    12831234  def is_volatile?
    12841235    @type.is_volatile?
     
    13061257  end
    13071258
    1308   def check     # 意味的誤りがあれば、文字列を返す
    1309     if @type.class == FuncType then             # 関数のé
    1310 åˆ—
     1259  def check     # 意味的誤りがあれば、文字列を返す
     1260    if @type.class == FuncType then             # 関数の配列
    13111261      return "array of function"
    1312     elsif @type.class == ArrayType then # 添数なしé
    1313 åˆ—のé
    1314 åˆ—
     1262    elsif @type.class == ArrayType then # 添数なし配列の配列
    13151263      unless @type.get_subscript then
    13161264        return "subscript not specified"
     
    13181266    end
    13191267
    1320     return @type.check    # é
    1321 åˆ—要素の型をチェック
     1268    return @type.check    # 配列要素の型をチェック
    13221269  end
    13231270
     
    13281275  def check_init( locale, ident, initializer, kind, attribute = nil )
    13291276    if ( initializer.instance_of?( Array ) ) then
    1330       # 要素数が指定されている場合、初期化要素数をチェック
     1277      # 要素数が指定されている場合、初期化要素数をチェック
    13311278      if @subscript then
    13321279        n_sub = @subscript.eval_const( nil )
     
    13811328#  @size:: Expr, or nil if not specified
    13821329#  @count:: Expr, or nil if not specified
    1383 #  @string:: Expr or -1(if size not specified) (string 引数), or nil if not specified
     1330#  @string:: Expr or -1(if size not specified) (string 引数), or nil if not specified
    13841331
    13851332  include HasType
     
    13981345      @type = type
    13991346    else
    1400       @type.set_type( type )    # 枝å
    1401 ˆã® type を設定
     1347      @type.set_type( type )    # 枝先の type を設定
    14021348    end
    14031349  end
     
    14211367  end
    14221368
    1423   def check     # 意味的誤りがあれば、文字列を返す
     1369  def check     # 意味的誤りがあれば、文字列を返す
    14241370    return nil if @type == nil
    14251371    @type.check
     
    14271373
    14281374  def check_struct_tag kind
    1429     if kind != :MEMBER  # 構造体メンバーの場合、ポインタのå
    1430 ˆã®æ§‹é€ ä½“タグをチェックしない
     1375    if kind != :MEMBER  # 構造体メンバーの場合、ポインタの先の構造体タグをチェックしない
    14311376      @type.check_struct_tag kind
    14321377    end
     
    14451390          if ( t1.class == t2.class ) && ( t1.get_bit_size == t2.get_bit_size ) then
    14461391          elsif ( t1.kind_of?( CDefinedType) || t2.kind_of?( CDefinedType ) )&& t1.get_type_str == t2.get_type_str && t1.get_type_str_post && t2.get_type_str_post then
    1447             # int8_t などが、一方は .h に定義されているケース
     1392            # int8_t などが、一方は .h に定義されているケース
    14481393          else
    14491394            cdl_error2( locale, "T1032 $1: incompatible pointer type" , ident )
     
    14561401        end
    14571402      elsif val.kind_of? StringVal then
    1458         # 文字列定数
     1403        # 文字列定数
    14591404        # mikan L"wide string"
    14601405        if @type.get_bit_size != -1 && @type.get_bit_size != -11 then  # -1: char_t
     
    15001445    @b_nullable = b_nullable
    15011446
    1502     # string は最も左側の ptr に作用する
     1447    # string は最も左側の ptr に作用する
    15031448    if @type.kind_of?( PtrType ) then
    1504       # ptr_level が 2 以上であることは ParamDecl#initializer でチェックされる
     1449      # ptr_level が 2 以上であることは ParamDecl#initializer でチェックされる
    15051450      clone_type
    15061451      @type.set_scs( nil, nil, string, nil, false )
     
    15491494  end
    15501495
    1551   #=== PtrType# size_is の最大値
     1496  #=== PtrType# size_is の最大値
    15521497  def get_max
    15531498    @max
     
    16121557end
    16131558
    1614 #==  DescriptorType クラス
    1615 # 動的結合で渡すデスクリプタ型
     1559#==  DescriptorType クラス
     1560# 動的結合で渡すデスクリプタ型
    16161561class DescriptorType < Type
    16171562  # @sinagure_nsp::NamespacePath
     
    16431588    case kind
    16441589    when :PARAMETER
    1645       # 引数は初期化できない
     1590      # 引数は初期化できない
    16461591    else
    16471592      cdl_error2( locale, "T9999 Descriptor cannot be used for $1", kind)
     
    16771622end
    16781623
    1679 # 以下単体テストコード
     1624# 以下単体テストコード
    16801625if $unit_test then
    16811626  puts( "===== Unit Test: IntType ===== (types.rb)")
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/core/unjoin_plugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2019 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 # Marshal.dump で不都合な事é 
    56 ã¸ã®å¯¾ç­–
    57 # Proc は _dump_data が定義されていないため、定義する.
    58 # plugin 関係は、tecsflow に Plugin クラスが存在しないため、消しておく.
    59 
    60 # Proc は、Marshal.dump することができないため _dump_data を定義
     40# Marshal.dump で不都合な事項への対策
     41# Proc は _dump_data が定義されていないため、定義する.
     42# plugin 関係は、tecsflow に Plugin クラスが存在しないため、消しておく.
     43
     44# Proc は、Marshal.dump することができないため _dump_data を定義
    6145class Proc
    6246  def _dump_data
     
    8670
    8771    if kind_of? Expression then
    88       # print   # Expression では print が別に定義されている
     72      # print   # Expression では print が別に定義されている
    8973      get_elements.each{|ele|
    9074        ele.find_plugin_1 level+1, object_list
     
    10387    end
    10488
    105     object_list.push self                 ##### ここから return 不可
     89    object_list.push self                 ##### ここから return 不可
    10690
    10791    if (kind_of? Plugin) || (kind_of? HRPSVCPlugin) then
     
    136120      }
    137121    end
    138     object_list.pop                       ##### ここまで return 不可
     122    object_list.pop                       ##### ここまで return 不可
    139123  end
    140124end
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/core/value.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 #= BaseVal 整数、浮動小数などの値を扱うクラスの基底クラス
     40#= BaseVal 整数、浮動小数などの値を扱うクラスの基底クラス
    5641#
    57 # TECS の CDL で扱う値は、以下に分類される
    58 # ・整数
    59 # ・浮動小数
    60 # ・文字列
    61 # ・ブール値
    62 # 集成型(構造体、é
    63 åˆ—)と C_EXP はここでは扱わない
     42# TECS の CDL で扱う値は、以下に分類される
     43# ・整数
     44# ・浮動小数
     45# ・文字列
     46# ・ブール値
     47# 集成型(構造体、配列)と C_EXP はここでは扱わない
    6448#
    65 # このクラスで定義済みの演算子は、エラーとなる
    66 # 型により演算可能な場合、演算子をオーバーライドする
     49# このクラスで定義済みの演算子は、エラーとなる
     50# 型により演算可能な場合、演算子をオーバーライドする
    6751#
    6852class BaseVal < Node
     
    160144end
    161145
    162 #= Pointer 値 (IntegerVal の Pointer 版)
     146#= Pointer 値 (IntegerVal の Pointer 版)
    163147#
    164 # ポインタ値は、CDL で直接生成されることはない
    165 # 整数値のキャスト演算により生成される
     148# ポインタ値は、CDL で直接生成されることはない
     149# 整数値のキャスト演算により生成される
    166150class PointerVal < BaseVal
    167 #@int_val:: IntegerVal: IntegerVal でなくてはならない
    168 #@ptr_type:: PtrType: ポインタの指すå
    169 ˆã®åž‹
     151#@int_val:: IntegerVal: IntegerVal でなくてはならない
     152#@ptr_type:: PtrType: ポインタの指す先の型
    170153
    171154  def initialize( int_val, ptr_type )
     
    175158  end
    176159
    177   #=== ポインタの指すå
    178 ˆã®åž‹ã‚’å¾—ã‚‹
    179   # PointerVal 専用のメソッド
     160  #=== ポインタの指す先の型を得る
     161  # PointerVal 専用のメソッド
    180162  def get_type
    181163    @ptr_type
     
    183165
    184166  def cast type
    185     t = type.get_original_type   # typedef のå
    186 ƒã‚’å¾—ã‚‹
     167    t = type.get_original_type   # typedef の元を得る
    187168    if t.kind_of? IntType then
    188169      val = t.check_and_clip( @int_val, :IntType )
     
    213194end
    214195
    215 #= IntegerVal: 整数値を扱うクラス
     196#= IntegerVal: 整数値を扱うクラス
    216197class IntegerVal < BaseVal
    217198#@val:: Integer: value
     
    250231  def / val
    251232    if val.kind_of? FloatVal then
    252       v2 = val.to_f   # to_f を2回評価しない
     233      v2 = val.to_f   # to_f を2回評価しない
    253234      if v2 == 0.0 then
    254235        cdl_error( "V1009 / : divieded by zero"  )
     
    257238      return FloatVal.new( @val.to_f / v2 )
    258239    else
    259       v2 = val.to_i   # to_i を2回評価しない
     240      v2 = val.to_i   # to_i を2回評価しない
    260241      if v2 == 0 then
    261242        cdl_error( "V1010 / : divieded by zero"  )
     
    267248  def % val
    268249    if val.kind_of? FloatVal then
    269       v2 = val.to_f   # to_f を2回評価しない
     250      v2 = val.to_f   # to_f を2回評価しない
    270251      if v2 == 0.0 then
    271252        cdl_error( "V1011 % : divieded by zero"  )
     
    274255      return FloatVal.new( @val.to_f % v2 )
    275256    else
    276       v2 = val.to_i   # to_i を2回評価しない
     257      v2 = val.to_i   # to_i を2回評価しない
    277258      if v2 == 0 then
    278259        cdl_error( "V1012 % : divieded by zero"  )
     
    360341  end
    361342  def cast( type )
    362     t = type.get_original_type   # typedef のå
    363 ƒã‚’å¾—ã‚‹
     343    t = type.get_original_type   # typedef の元を得る
    364344    if t.kind_of? IntType then
    365345      val = t.check_and_clip( @val, :IntType )
     
    395375end
    396376
    397 #= BoolVal: bool 値を扱うクラス
     377#= BoolVal: bool 値を扱うクラス
    398378class BoolVal < BaseVal
    399379#@val:: bool: true, false
     
    437417  end
    438418  def cast( type )
    439     t = type.get_original_type   # typedef のå
    440 ƒã‚’å¾—ã‚‹
     419    t = type.get_original_type   # typedef の元を得る
    441420    if @val then
    442421      val = 1
     
    478457end
    479458
    480 #= FloatVal: 実数値を扱うクラス
     459#= FloatVal: 実数値を扱うクラス
    481460class FloatVal < BaseVal
    482461#@val:: Float
     
    496475  end
    497476  def / val
    498     v2 = val.to_f   # to_f を2回評価しない
     477    v2 = val.to_f   # to_f を2回評価しない
    499478    if v2 == 0.0 then
    500479      cdl_error( "V1017 / : divieded by zero"  )
     
    504483  end
    505484  def % val
    506     v2 = val.to_f   # to_f を2回評価しない
     485    v2 = val.to_f   # to_f を2回評価しない
    507486    if v2 == 0.0 then
    508487      cdl_error( "V1018 % : divieded by zero"  )
     
    536515  end
    537516  def cast( type )
    538     t = type.get_original_type   # typedef のå
    539 ƒã‚’å¾—ã‚‹
     517    t = type.get_original_type   # typedef の元を得る
    540518    if t.kind_of? IntType then
    541519      val = t.check_and_clip( @val, :FloatType )
     
    565543end
    566544
    567 #= 文字列リテラルを扱うクラス
     545#= 文字列リテラルを扱うクラス
    568546class StringVal < BaseVal
    569547#@str:: Token:
     
    573551    super()
    574552    @str = str
    575     @specifier = spec   # mikan L"str" wide 文字列未対応
     553    @specifier = spec   # mikan L"str" wide 文字列未対応
    576554  end
    577555
    578556  #===
    579557  #
    580   # string の cast はできない mikan ポインタ型への cast はできるべき
     558  # string の cast はできない mikan ポインタ型への cast はできるべき
    581559  def cast type
    582     t = type.get_original_type   # typedef のå
    583 ƒã‚’å¾—ã‚‹
     560    t = type.get_original_type   # typedef の元を得る
    584561    if t.kind_of? IntType then
    585562      cdl_error( "V1022 string cannot cast to integer"  )
     
    598575
    599576  def val
    600     @str.to_s   # Token で扱われていた名残 (val を取り出す)
     577    @str.to_s   # Token で扱われていた名残 (val を取り出す)
    601578  end
    602579end
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/messages/messages_console_en_US.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 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$
     
    5843
    5944###
    60 # エラーメッセージ
     45# エラーメッセージ
    6146@@error_message = {}
    6247
     
    10731058
    10741059###
    1075 # warning メッセージ
     1060# warning メッセージ
    10761061@@warning_message = {}
    10771062
     
    11841169
    11851170###
    1186 # info メッセージ
     1171# info メッセージ
    11871172@@info_message = {}
    11881173
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/messages/messages_console_ja_JP.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 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$
     
    5843
    5944###
    60 # エラーメッセージ
     45# エラーメッセージ
    6146@@error_message = {}
    6247
    6348### C_parser.y.rb
    6449# B1001 need parameter name"
    65 @@error_message[ :"B1001" ] = "パラメータ名がå¿
    66 è¦ã§ã™"
     50@@error_message[ :"B1001" ] = "パラメータ名が必要です"
    6751
    6852# B1002 while open or reading \'$1\'"
    69 @@error_message[ :"B1002" ] = "\'$1\' のオープンまたは読み込みに失敗しました"
     53@@error_message[ :"B1002" ] = "\'$1\' のオープンまたは読み込みに失敗しました"
    7054
    7155# B1003 Unexpected EOF"
    72 @@error_message[ :"B1003" ] = "予期しない EOF です"
     56@@error_message[ :"B1003" ] = "予期しない EOF です"
    7357
    7458# B1004 syntax error near \'$1\'"
    75 @@error_message[ :"B1004" ] = "\'$1\' 付近の構文エラーです"
     59@@error_message[ :"B1004" ] = "\'$1\' 付近の構文エラーです"
    7660
    7761### ctypes.rb
    7862# C1001 $1: mismatch, suitable for integer types"
    79 @@error_message[ :"C1001" ] = "$1: 整合していません, それは整数型に適しています"
     63@@error_message[ :"C1001" ] = "$1: 整合していません, それは整数型に適しています"
    8064
    8165# C1002 $1 not compatible with previous one $2"
    82 @@error_message[ :"C1002" ] = "$1 はそれ以前のものである $2 と両立しません"
     66@@error_message[ :"C1002" ] = "$1 はそれ以前のものである $2 と両立しません"
    8367
    8468# C1003 $1 & $2 incompatible  (\'long double\' not support)"
    85 @@error_message[ :"C1003" ] = "$1 及び $2 は両立しません (\'long double\' は未サポート)"
     69@@error_message[ :"C1003" ] = "$1 及び $2 は両立しません (\'long double\' は未サポート)"
    8670
    8771# C1004 $1: qualifier respecified. previous one: $2"
    88 @@error_message[ :"C1004" ] = "$1: 修飾子が再度指定されました. その前の修飾子: $2"
     72@@error_message[ :"C1004" ] = "$1: 修飾子が再度指定されました. その前の修飾子: $2"
    8973
    9074### expression.rb
    9175# E1001 $1: not found"
    92 @@error_message[ :"E1001" ] = "$1: 見つかりません"
     76@@error_message[ :"E1001" ] = "$1: 見つかりません"
    9377
    9478# E1002 $1: not constant (port)"
    95 @@error_message[ :"E1002" ] = "$1: 定数ではありません (port)"
     79@@error_message[ :"E1002" ] = "$1: 定数ではありません (port)"
    9680
    9781# E1003 $1: not constant"
    98 @@error_message[ :"E1003" ] = "$1: 定数ではありません"
     82@@error_message[ :"E1003" ] = "$1: 定数ではありません"
    9983
    10084# E1004 cannot evaluate \'[]\' operator"
    101 @@error_message[ :"E1004" ] = "\'[]\' 演算子を評価できません"
     85@@error_message[ :"E1004" ] = "\'[]\' 演算子を評価できません"
    10286
    10387# E1005 cannot evaluate \'.\' operator"
    104 @@error_message[ :"E1005" ] = "\'.\' 演算子を評価できません"
     88@@error_message[ :"E1005" ] = "\'.\' 演算子を評価できません"
    10589
    10690# E1006 cannot evaluate \'->\' operator"
    107 @@error_message[ :"E1006" ] = "\'->\' 演算子を評価できません"
     91@@error_message[ :"E1006" ] = "\'->\' 演算子を評価できません"
    10892
    10993# E1007 cannot evaluate \'sizeof\' operator"
    110 @@error_message[ :"E1007" ] = "\'sizeof\' 演算子を評価できません"
     94@@error_message[ :"E1007" ] = "\'sizeof\' 演算子を評価できません"
    11195
    11296# E1008 cannot evaluate \'sizeof\' operator"
    113 @@error_message[ :"E1008" ] = "\'sizeof\' 演算子を評価できません"
     97@@error_message[ :"E1008" ] = "\'sizeof\' 演算子を評価できません"
    11498
    11599# E1009 cannot evaluate \'&\' operator"
    116 @@error_message[ :"E1009" ] = "\'&\' 演算子を評価できません"
     100@@error_message[ :"E1009" ] = "\'&\' 演算子を評価できません"
    117101
    118102# E1010 cannot evaluate \'*\' operator"
    119 @@error_message[ :"E1010" ] = "\'*\' 演算子を評価できません"
     103@@error_message[ :"E1010" ] = "\'*\' 演算子を評価できません"
    120104
    121105# E1011 cannot evaluate unary + for $1"
    122 @@error_message[ :"E1011" ] = "$1 に対する単é 
    123 ã® + を評価できません"
     106@@error_message[ :"E1011" ] = "$1 に対する単項の + を評価できません"
    124107
    125108# E1012 $1: not found in parameter list"
    126 @@error_message[ :"E1012" ] = "$1: パラメータリストの中に見つかりません"
     109@@error_message[ :"E1012" ] = "$1: パラメータリストの中に見つかりません"
    127110
    128111# E1013 \'*\': operand is not pointer value"
    129 @@error_message[ :"E1013" ] = "\'*\': オペランドはポインタ値ではありません"
     112@@error_message[ :"E1013" ] = "\'*\': オペランドはポインタ値ではありません"
    130113
    131114# E1014 $1: elements_get_type: sorry not supported"
    132 @@error_message[ :"E1014" ] = "$1: elements_get_type: 申し訳ありません.サポートされていません"
     115@@error_message[ :"E1014" ] = "$1: elements_get_type: 申し訳ありません.サポートされていません"
    133116
    134117# E1015 \'$1\': direction mismatch for $2, $3 required"
    135 @@error_message[ :"E1015" ] = "\'$1\': $2 に対する方向が整合していません.$3 がå¿
    136 è¦ã§ã™"
     118@@error_message[ :"E1015" ] = "\'$1\': $2 に対する方向が整合していません.$3 が必要です"
    137119
    138120# E1016 $1: elements_check_dir_for_param: sorry not supported"
    139 @@error_message[ :"E1016" ] = "$1: elements_check_dir_for_param: 申し訳ありません.サポートされていません"
     121@@error_message[ :"E1016" ] = "$1: elements_check_dir_for_param: 申し訳ありません.サポートされていません"
    140122
    141123# E1017 $1: rhs not \'Cell.ePort\' form"
    142 @@error_message[ :"E1017" ] = "$1: 右辺が \'Cell.ePort\' 形式ではありません"
     124@@error_message[ :"E1017" ] = "$1: 右辺が \'Cell.ePort\' 形式ではありません"
    143125
    144126# E1018 $1: namespace cannot be specified"
    145 @@error_message[ :"E1018" ] = "$1: namespace を指定できません"
     127@@error_message[ :"E1018" ] = "$1: namespace を指定できません"
    146128
    147129# E1019 $1: rhs not in 'allocator_entry_port' form"
    148 @@error_message[ :"E1019" ] = "$1: 右辺が 'allocator_entry_port' 形式ではありません"
     130@@error_message[ :"E1019" ] = "$1: 右辺が 'allocator_entry_port' 形式ではありません"
    149131
    150132# E1020 rhs not in 'call_port.func.param' form for $1_$2"
    151 @@error_message[ :"E1020" ] = "右辺が 'call_port.func.param' 形式でありません ($1_$2)"
     133@@error_message[ :"E1020" ] = "右辺が 'call_port.func.param' 形式でありません ($1_$2)"
    152134
    153135### bnf.y.rb
    154136# G1001 need specifier for \'$1\'"
    155 @@error_message[ :"G1001" ] = "\'$1\' に対する指定子がå¿
    156 è¦ã§ã™"
     137@@error_message[ :"G1001" ] = "\'$1\' に対する指定子が必要です"
    157138
    158139# G1002 need parameter name"
    159 @@error_message[ :"G1002" ] = "パラメータ名がå¿
    160 è¦ã§ã™"
     140@@error_message[ :"G1002" ] = "パラメータ名が必要です"
    161141
    162142# G1003 need parameter name"
    163 @@error_message[ :"G1003" ] = "パラメータ名がå¿
    164 è¦ã§ã™"
     143@@error_message[ :"G1003" ] = "パラメータ名が必要です"
    165144
    166145# G1004 impossible array type 0"
    167 @@error_message[ :"G1004" ] = "あり得ないé
    168 åˆ—åž‹ 0 です"
     146@@error_message[ :"G1004" ] = "あり得ない配列型 0 です"
    169147
    170148# G1005 impossible array type 1"
    171 @@error_message[ :"G1005" ] = "あり得ないé
    172 åˆ—åž‹ 1 です"
     149@@error_message[ :"G1005" ] = "あり得ない配列型 1 です"
    173150
    174151# G1006 impossible array type 2"
    175 @@error_message[ :"G1006" ] = "あり得ないé
    176 åˆ—åž‹ 2 です"
     152@@error_message[ :"G1006" ] = "あり得ない配列型 2 です"
    177153
    178154# G1007 impossible array type 3"
    179 @@error_message[ :"G1007" ] = "あり得ないé
    180 åˆ—åž‹ 3 です"
     155@@error_message[ :"G1007" ] = "あり得ない配列型 3 です"
    181156
    182157# G1008 impossible function type"
    183 @@error_message[ :"G1008" ] = "あり得ない関数型です"
     158@@error_message[ :"G1008" ] = "あり得ない関数型です"
    184159
    185160# G1009 unexpected specifier"
    186 @@error_message[ :"G1009" ] = "予期しない指定子です"
     161@@error_message[ :"G1009" ] = "予期しない指定子です"
    187162
    188163# G1010 Not function"
    189 @@error_message[ :"G1010" ] = "関数ではありません"
     164@@error_message[ :"G1010" ] = "関数ではありません"
    190165
    191166# G1011 Not function"
    192 @@error_message[ :"G1011" ] = "関数ではありません"
     167@@error_message[ :"G1011" ] = "関数ではありません"
    193168
    194169# G1012 $1 : cannot put specifier here"
    195 @@error_message[ :"G1012" ] = "$1 : ここに指定子を置くことはできません"
     170@@error_message[ :"G1012" ] = "$1 : ここに指定子を置くことはできません"
    196171
    197172# G1013 unexpected specifier"
    198 @@error_message[ :"G1013" ] = "予期しない指定子です"
     173@@error_message[ :"G1013" ] = "予期しない指定子です"
    199174
    200175# G1014 while open or reading \'$1\'"
    201 @@error_message[ :"G1014" ] = "\'$1\' のオープンまたは読み込みに失敗しました"
     176@@error_message[ :"G1014" ] = "\'$1\' のオープンまたは読み込みに失敗しました"
    202177
    203178# G1015 Unexpected EOF"
    204 @@error_message[ :"G1015" ] = "予期しない EOF です"
     179@@error_message[ :"G1015" ] = "予期しない EOF です"
    205180
    206181# G1016 syntax error near \'$1\'"
    207 @@error_message[ :"G1016" ] = "\'$1\' 付近の構文エラーです"
     182@@error_message[ :"G1016" ] = "\'$1\' 付近の構文エラーです"
    208183
    209184### plugin.rb
    210185# P1001 plugin arg: cannot find identifier in $1"
    211 @@error_message[ :"P1001" ] = "plugin arg: $1 の中に識別子を見つけることができません"
     186@@error_message[ :"P1001" ] = "plugin arg: $1 の中に識別子を見つけることができません"
    212187
    213188# P1002 plugin arg: expecting \'=\' not \'$1\'"
    214 @@error_message[ :"P1002" ] = "plugin arg: \'$1\' ではなく \'=\' がå¿
    215 è¦ã§ã™"
     189@@error_message[ :"P1002" ] = "plugin arg: \'$1\' ではなく \'=\' が必要です"
    216190
    217191# P1003 plugin arg: unexpected $1"
    218 @@error_message[ :"P1003" ] = "plugin arg: 予期しない $1 です"
     192@@error_message[ :"P1003" ] = "plugin arg: 予期しない $1 です"
    219193
    220194# P1004 $1: unknown plugin argument\'s identifier\n  $2 are acceptable for RPCPlugin."
    221 @@error_message[ :"P1004" ] = "$1: 不明なプラグイン引数の識別子\n  $2 が RPC プラグインに対して受けå
    222 ¥ã‚Œå¯èƒ½ã§ã™"
     195@@error_message[ :"P1004" ] = "$1: 不明なプラグイン引数の識別子\n  $2 が RPC プラグインに対して受け入れ可能です"
    223196
    224197### pluginModule.rb
    225198# P2001 $1.rb : fail to load plugin"
    226 @@error_message[ :"P2001" ] = "$1.rb : プラグインの読み込みに失敗しました"
     199@@error_message[ :"P2001" ] = "$1.rb : プラグインの読み込みに失敗しました"
    227200
    228201# P2002 $1: not kind of $2"
    229 @@error_message[ :"P2002" ] = "$1: $2 の一種ではありません"
     202@@error_message[ :"P2002" ] = "$1: $2 の一種ではありません"
    230203
    231204# P2003 $1: load failed"
    232 @@error_message[ :"P2003" ] = "$1: 読み込みに失敗しました"
     205@@error_message[ :"P2003" ] = "$1: 読み込みに失敗しました"
    233206
    234207# P2004 $1: open error \'$2\'"
    235 @@error_message[ :"P2004" ] = "$1: オープンエラー \'$2\' が発生しました"
     208@@error_message[ :"P2004" ] = "$1: オープンエラー \'$2\' が発生しました"
    236209
    237210# P2005 $1: plugin error in gen_through_cell_code "
    238 @@error_message[ :"P2005" ] = "$1: gen_through_cell_code å†
    239 ã®ãƒ—ラグインエラーが発生しました"
     211@@error_message[ :"P2005" ] = "$1: gen_through_cell_code 内のプラグインエラーが発生しました"
    240212
    241213# P2006 $1: close error \'$2\'"
    242 @@error_message[ :"P2006" ] = "$1: \'$2\' のクローズエラーが発生しました"
     214@@error_message[ :"P2006" ] = "$1: \'$2\' のクローズエラーが発生しました"
    243215
    244216# P2007 $1: fail to generate post code"
    245 @@error_message[ :"P2007" ] = "$1: ポストコードの生成に失敗しました"
     217@@error_message[ :"P2007" ] = "$1: ポストコードの生成に失敗しました"
    246218
    247219### componentobj.rb
    248220# S1001 context specifier duplicate"
    249 @@error_message[ :"S1001" ] = "コンテキスト指定子が重複しています"
     221@@error_message[ :"S1001" ] = "コンテキスト指定子が重複しています"
    250222
    251223# S1002 \'$1\': unknown specifier for signature"
    252 @@error_message[ :"S1002" ] = "\'$1\': シグニチャに対する不明な指定子です"
     224@@error_message[ :"S1002" ] = "\'$1\': シグニチャに対する不明な指定子です"
    253225
    254226# S1003 $1: \'alloc\' 1st parameter neither [in] integer type nor [out] double pointer type
    255 @@error_message[ :"S1003" ] = "$1: \'alloc\' 関数の第1パラメータが in の整数型でも out の二重ポインタ型でもありません."
     227@@error_message[ :"S1003" ] = "$1: \'alloc\' 関数の第1パラメータが in の整数型でも out の二重ポインタ型でもありません."
    256228
    257229# S1004 $1: \'alloc\' 2nd parameter not [in] double pointer"
    258 @@error_message[ :"S1004" ] = "$1: \'alloc\' 関数の第2パラメータが in のポインタへのポインタではありません."
     230@@error_message[ :"S1004" ] = "$1: \'alloc\' 関数の第2パラメータが in のポインタへのポインタではありません."
    259231
    260232# S1005 $1: \'alloc\' has no parameter, unsuitable for allocator signature"
    261 @@error_message[ :"S1005" ] = "$1: \'alloc\' 関数がパラメータを持っていません.アロケータシグニチャに対して不適当です."
     233@@error_message[ :"S1005" ] = "$1: \'alloc\' 関数がパラメータを持っていません.アロケータシグニチャに対して不適当です."
    262234
    263235# S1006 $1: \'dealloc\' 1st parameter not [in] pointer type"
    264 @@error_message[ :"S1006" ] = "$1: \'dealloc\' 関数の第1パラメータが in のポインタ型ではありません."
     236@@error_message[ :"S1006" ] = "$1: \'dealloc\' 関数の第1パラメータが in のポインタ型ではありません."
    265237
    266238# S1007 "
    267239     # S1007 $1: \'dealloc\' cannot has 2nd parameter"
    268 # @@error_message[ :"S1007" ] = "$1: \'dealloc\' 関数は第2パラメータを持つことができません."
     240# @@error_message[ :"S1007" ] = "$1: \'dealloc\' 関数は第2パラメータを持つことができません."
    269241
    270242# S1008 $1: \'dealloc\' has no parameter, unsuitable for allocator signature"
    271 @@error_message[ :"S1008" ] = "$1: \'dealloc\' 関数がパラメータを持っていません.アロケータシグニチャに対して不適当です."
     243@@error_message[ :"S1008" ] = "$1: \'dealloc\' 関数がパラメータを持っていません.アロケータシグニチャに対して不適当です."
    272244
    273245# S1009 $1: \'alloc\' function not found, unsuitable for allocator signature"
    274 @@error_message[ :"S1009" ] = "$1: \'alloc\' 関数が見つかりません.アロケータシグニチャに対して不適当です."
     246@@error_message[ :"S1009" ] = "$1: \'alloc\' 関数が見つかりません.アロケータシグニチャに対して不適当です."
    275247
    276248# S1010 $1: \'dealloc\' function not found, unsuitable for allocator signature"
    277 @@error_message[ :"S1010" ] = "$1: \'dealloc\' 関数が見つかりません.アロケータシグニチャに対して不適当です."
     249@@error_message[ :"S1010" ] = "$1: \'dealloc\' 関数が見つかりません.アロケータシグニチャに対して不適当です."
    278250
    279251# S1011 $1: size_is specified for non-pointer type"
    280 @@error_message[ :"S1011" ] = "$1: 非ポインタ型に対して size_is が指定されました"
     252@@error_message[ :"S1011" ] = "$1: 非ポインタ型に対して size_is が指定されました"
    281253
    282254# S1012 $1: unsuitable initializer, need array initializer"
    283 @@error_message[ :"S1012" ] = "$1: 不適当な初期化子です.é
    284 åˆ—の初期化子がå¿
    285 è¦ã§ã™ï¼Ž"
     255@@error_message[ :"S1012" ] = "$1: 不適当な初期化子です.配列の初期化子が必要です."
    286256
    287257# S1013 $1: too many initializer, $2 for $3"
    288 @@error_message[ :"S1013" ] = "$1: 初期化子が多すぎます.$3 とするところを $2 としました."
     258@@error_message[ :"S1013" ] = "$1: 初期化子が多すぎます.$3 とするところを $2 としました."
    289259
    290260# S1014 generate specifier duplicate"
    291 @@error_message[ :"S1014" ] = "generate 指定子が重複しました."
     261@@error_message[ :"S1014" ] = "generate 指定子が重複しました."
    292262
    293263# S1015 $1 cannot be specified for composite"
    294 @@error_message[ :"S1015" ] = "$1 は複合セルに対して指定できません."
     264@@error_message[ :"S1015" ] = "$1 は複合セルに対して指定できません."
    295265
    296266# S1016 $1 not found"
    297 @@error_message[ :"S1016" ] = "$1 が見つかりません"
     267@@error_message[ :"S1016" ] = "$1 が見つかりません"
    298268
    299269# S1017 $1 : neither celltype nor cell"
    300 @@error_message[ :"S1017" ] = "$1 : セルタイプでもセルでもありません"
     270@@error_message[ :"S1017" ] = "$1 : セルタイプでもセルでもありません"
    301271
    302272# S1018 $1 : not singleton cell"
    303 @@error_message[ :"S1018" ] = "$1 : シングルトンセルではありません"
     273@@error_message[ :"S1018" ] = "$1 : シングルトンセルではありません"
    304274
    305275# S1019 \'$1\' : not entry port"
    306 @@error_message[ :"S1019" ] = "\'$1\' : 受け口ではありません"
     276@@error_message[ :"S1019" ] = "\'$1\' : 受け口ではありません"
    307277
    308278# S1020 \'$1\' : required port cannot be array"
    309 @@error_message[ :"S1020" ] = "\'$1\' : 要求された口(port)はé
    310 åˆ—に出来ません."
     279@@error_message[ :"S1020" ] = "\'$1\' : 要求された口(port)は配列に出来ません."
    311280
    312281# S1021 $1 : require cannot have same signature with \'$2\'"
    313 @@error_message[ :"S1021" ] = "$1 : リクワイアは \'$2\' と同じシグニチャを持つことが出来ません."
     282@@error_message[ :"S1021" ] = "$1 : リクワイアは \'$2\' と同じシグニチャを持つことが出来ません."
    314283
    315284# S1022 $1.$2 : \'$3\' conflict function name in $4.$5"
    316 @@error_message[ :"S1022" ] = "$1.$2 : \'$3\' は $4.$5 における関数名と衝突しています."
     285@@error_message[ :"S1022" ] = "$1.$2 : \'$3\' は $4.$5 における関数名と衝突しています."
    317286
    318287# S1023 $1: fail to new"
    319 @@error_message[ :"S1023" ] = "$1: new に失敗しました."
     288@@error_message[ :"S1023" ] = "$1: new に失敗しました."
    320289
    321290# S1024 $1: multiple cell for singleton celltype"
    322 @@error_message[ :"S1024" ] = "$1: シングルトンセルタイプに対し複数のセルが存在します."
     291@@error_message[ :"S1024" ] = "$1: シングルトンセルタイプに対し複数のセルが存在します."
    323292
    324293# S1025 not found reachable cell for require \'$1\' in celltype \'$2\'"
    325 @@error_message[ :"S1025" ] = "セルタイプ \'$2\' å†
    326 ã®ãƒªã‚¯ãƒ¯ã‚¤ã‚¢ \'$1\' へ到達可能なセルが見つかりません."
     294@@error_message[ :"S1025" ] = "セルタイプ \'$2\' 内のリクワイア \'$1\' へ到達可能なセルが見つかりません."
    327295
    328296# S1026 required cell \'$1\' not reachable"
    329 @@error_message[ :"S1026" ] = "å¿
    330 è¦ã¨ã•ã‚Œã‚‹ã‚»ãƒ« \'$1\' は到達可能ではありません."
     297@@error_message[ :"S1026" ] = "必要とされるセル \'$1\' は到達可能ではありません."
    331298
    332299# S1027 \'$1\' celltype not found"
    333 @@error_message[ :"S1027" ] = "セルタイプ \'$1\' が見つかりません"
     300@@error_message[ :"S1027" ] = "セルタイプ \'$1\' が見つかりません"
    334301
    335302# S1028 \'$1\' not celltype"
    336 @@error_message[ :"S1028" ] = "\'$1\' はセルタイプではありません"
     303@@error_message[ :"S1028" ] = "\'$1\' はセルタイプではありません"
    337304
    338305# S1029 $1 mismatch with previous one"
    339 @@error_message[ :"S1029" ] = "$1 がそれ以前のものと整合していません"
     306@@error_message[ :"S1029" ] = "$1 がそれ以前のものと整合していません"
    340307
    341308# S1030 $1: celltype mismatch with previous one"
    342 @@error_message[ :"S1030" ] = "$1: セルタイプがそれ以前のものと整合していません"
     309@@error_message[ :"S1030" ] = "$1: セルタイプがそれ以前のものと整合していません"
    343310
    344311# S1031 $1 region \'$2\' mismatch  with previous one \'$3\'"
    345 @@error_message[ :"S1031" ] = "セル $1 のリージョン \'$2\' はそれ以前のリージョン \'$3\' と整合していません."
     312@@error_message[ :"S1031" ] = "セル $1 のリージョン \'$2\' はそれ以前のリージョン \'$3\' と整合していません."
    346313
    347314# S1032 $1: duplicate cell"
    348 @@error_message[ :"S1032" ] = "$1: セルが重複しています"
     315@@error_message[ :"S1032" ] = "$1: セルが重複しています"
    349316
    350317# S1033 rhs expression is not supported. Only attribute is permitted on current version."
    351 @@error_message[ :"S1033" ] = "右辺式はサポートされていません.属性のみが現在のバージョンで使用できます."
     318@@error_message[ :"S1033" ] = "右辺式はサポートされていません.属性のみが現在のバージョンで使用できます."
    352319
    353320# S1034 $1 : cannot refer to $2\'s attribute here. Use \'composite.$3\' to refer to composite celltype\'s"
    354 @@error_message[ :"S1034" ] = "$1 : ここでは $2 の属性を参ç
    355 §ã§ãã¾ã›ã‚“. 複合セルタイプの属性を参ç
    356 §ã™ã‚‹ãŸã‚ \'composite.$3\' をお使いください."
     321@@error_message[ :"S1034" ] = "$1 : ここでは $2 の属性を参照できません. 複合セルタイプの属性を参照するため \'composite.$3\' をお使いください."
    357322
    358323# S1035 composite : cannot specify out of composite celltype definition"
    359 @@error_message[ :"S1035" ] = "composite : 複合セルタイプ定義の外側では指定できません."
     324@@error_message[ :"S1035" ] = "composite : 複合セルタイプ定義の外側では指定できません."
    360325
    361326# S1036 $1 : cannot refer to $2\'s here. Use \'composite.$3\' to refer to composite celltype\'s"
    362 @@error_message[ :"S1036" ] = "$1 : ここでは$2のものを参ç
    363 §ã§ãã¾ã›ã‚“.複合セルタイプのものを参ç
    364 §ã™ã‚‹ãŸã‚ \'composite.$3\' をお使いください."
     327@@error_message[ :"S1036" ] = "$1 : ここでは$2のものを参照できません.複合セルタイプのものを参照するため \'composite.$3\' をお使いください."
    365328
    366329# S1037 $1: celltype plugin fail to new_cell"
    367 @@error_message[ :"S1037" ] = "$1: セルタイププラグインが new_cell に失敗しました."
     330@@error_message[ :"S1037" ] = "$1: セルタイププラグインが new_cell に失敗しました."
    368331
    369332# S1038 $1.$2: self allocator not supported for array entry port"
    370 @@error_message[ :"S1038" ] = "$1.$2: セルフアロケータは受け口é
    371 åˆ—に対してサポートされていません."
     333@@error_message[ :"S1038" ] = "$1.$2: セルフアロケータは受け口配列に対してサポートされていません."
    372334
    373335# S1039 \'$1\': unknown specifier for cell"
    374 @@error_message[ :"S1039" ] = "\'$1\': セルに対する不明な指定子です."
     336@@error_message[ :"S1039" ] = "\'$1\': セルに対する不明な指定子です."
    375337
    376338# S1040 array not supported for relay allocator"
    377 @@error_message[ :"S1040" ] = "é
    378 åˆ—はリレーアロケータに対してサポートされていません."
     339@@error_message[ :"S1040" ] = "配列はリレーアロケータに対してサポートされていません."
    379340
    380341# S1041 \'$1_$2_$3\': not joined. cannot create internal join for relay allocator"
    381 @@error_message[ :"S1041" ] = "\'$1_$2_$3\': 結合されません. リレーアロケータに対してå†
    382 éƒ¨çµåˆã‚’生成できません."
     342@@error_message[ :"S1041" ] = "\'$1_$2_$3\': 結合されません. リレーアロケータに対して内部結合を生成できません."
    383343
    384344# S1042 call port \'$1\' not initialized in cell \'$2\'"
    385 @@error_message[ :"S1042" ] = "呼び口 \'$1\' はセル \'$2\' の中で初期化されません."
     345@@error_message[ :"S1042" ] = "呼び口 \'$1\' はセル \'$2\' の中で初期化されません."
    386346
    387347# S1043 call port \'$1\' not initialized in cell \'$2\'. this call port is created by tecsgen. check allocator specifier"
    388 @@error_message[ :"S1043" ] = "呼び口 \'$1\' はセル \'$2\' の中で初期化されません.この呼び口は tecsgen により生成されます.アロケータ指定子を確認してください."
     348@@error_message[ :"S1043" ] = "呼び口 \'$1\' はセル \'$2\' の中で初期化されません.この呼び口は tecsgen により生成されます.アロケータ指定子を確認してください."
    389349
    390350# S1044 $1: array initializer too many or few, $2 for $3"
    391 @@error_message[ :"S1044" ] = "$1: é
    392 åˆ—の初期化子が多すぎるかまたは少なすぎます.$3 とするところを $2 にしました."
     351@@error_message[ :"S1044" ] = "$1: 配列の初期化子が多すぎるかまたは少なすぎます.$3 とするところを $2 にしました."
    393352
    394353# S1045 $1[$2]: not initialized"
    395 @@error_message[ :"S1045" ] = "$1[$2]: 初期化されません."
     354@@error_message[ :"S1045" ] = "$1[$2]: 初期化されません."
    396355
    397356# S1046 $1[$2]: not initialized"
    398 @@error_message[ :"S1046" ] = "$1[$2]: 初期化されません"
     357@@error_message[ :"S1046" ] = "$1[$2]: 初期化されません"
    399358
    400359# S1047 size_is pointer cannot be exposed for composite attribute"
    401 @@error_message[ :"S1047" ] = "size_is を指定されたポインタ変数は,複合セルタイプの属性名に関しては,外部へå
    402 ¬é–‹ã™ã‚‹ã“とができません."
     360@@error_message[ :"S1047" ] = "size_is を指定されたポインタ変数は,複合セルタイプの属性名に関しては,外部へ公開することができません."
    403361
    404362# S1048 $1: size_is specified for non-pointer type"
    405 @@error_message[ :"S1048" ] = "$1: size_is が非ポインタ型に対して指定されました."
     363@@error_message[ :"S1048" ] = "$1: size_is が非ポインタ型に対して指定されました."
    406364
    407365# S1049 $1: size_is arg not constant"
    408 @@error_message[ :"S1049" ] = "$1: size_is 引数が定数ではありません."
     366@@error_message[ :"S1049" ] = "$1: size_is 引数が定数ではありません."
    409367
    410368# S1050 unsuitable initializer, need array initializer"
    411 @@error_message[ :"S1050" ] = "不適当な初期化子です.é
    412 åˆ—の初期化子がå¿
    413 è¦ã§ã™ï¼Ž"
     369@@error_message[ :"S1050" ] = "不適当な初期化子です.配列の初期化子が必要です."
    414370
    415371# S1051 too many initializer for array, $1 for $2"
    416 @@error_message[ :"S1051" ] = "é
    417 åˆ—に対する初期化子が多すぎます.$2 とするところを $1 にしました."
     372@@error_message[ :"S1051" ] = "配列に対する初期化子が多すぎます.$2 とするところを $1 にしました."
    418373
    419374# S1052 attribute \'$1\' not initialized in cell \'$2\'"
    420 @@error_message[ :"S1052" ] = "属性 \'$1\' はセル \'$2\' の中で初期化されません."
     375@@error_message[ :"S1052" ] = "属性 \'$1\' はセル \'$2\' の中で初期化されません."
    421376
    422377# S1053 $1 must be singleton. inner cell \'$2\' is singleton"
    423 @@error_message[ :"S1053" ] = "$1 はシングルトンであるå¿
    424 è¦ãŒã‚ります.å†
    425 éƒ¨ã‚»ãƒ« \'$2\' はシングルトンです."
     378@@error_message[ :"S1053" ] = "$1 はシングルトンである必要があります.内部セル \'$2\' はシングルトンです."
    426379
    427380# S1054 $1 : specified active but has no active in this celltype"
    428 @@error_message[ :"S1054" ] = "$1 : アクティブに指定されましたが,このセルタイプの中にはアクティブなセルがありません."
     381@@error_message[ :"S1054" ] = "$1 : アクティブに指定されましたが,このセルタイプの中にはアクティブなセルがありません."
    429382
    430383# S1055 $1 must be active. inner cell \'$2\' is active"
    431 @@error_message[ :"S1055" ] = "$1 は active であるå¿
    432 è¦ãŒã‚ります. å†
    433 éƒ¨ã‚»ãƒ« \'$2\' がアクティブです."
     384@@error_message[ :"S1055" ] = "$1 は active である必要があります. 内部セル \'$2\' がアクティブです."
    434385
    435386# S1056 $1 : cannot export, nothing designated"
    436 @@error_message[ :"S1056" ] = "$1 : 外部にå
    437 ¬é–‹ã™ã‚‹ã“とができません.何も指定されていません."
     387@@error_message[ :"S1056" ] = "$1 : 外部に公開することができません.何も指定されていません."
    438388
    439389# S1057 $1 not found in $2"
    440 @@error_message[ :"S1057" ] = "$1 が $2 の中に見つかりません."
     390@@error_message[ :"S1057" ] = "$1 が $2 の中に見つかりません."
    441391
    442392# S1058 \'$1\' : cannot export var"
    443 @@error_message[ :"S1058" ] = "\'$1\' : 変数を外部にå
    444 ¬é–‹ã™ã‚‹ã“とができません."
     393@@error_message[ :"S1058" ] = "\'$1\' : 変数を外部に公開することができません."
    445394
    446395# S1059 \'$1\' : exporting attribute. write in cell or use \'=\' to export attribute"
    447 @@error_message[ :"S1059" ] = "\'$1\' : 属性をå
    448 ¬é–‹ã—ています. セルの中に記述するかまたは属性のå
    449 ¬é–‹ã®ãŸã‚ã« \'=\' を使って下さい."
     396@@error_message[ :"S1059" ] = "\'$1\' : 属性を公開しています. セルの中に記述するかまたは属性の公開のために \'=\' を使って下さい."
    450397
    451398# S1060 \'$1\' : port type mismatch. $2 type is allowed here."
    452 @@error_message[ :"S1060" ] = "\'$1\' : 口(port)の型が整合していません. ここでは $2 型が使用できます."
     399@@error_message[ :"S1060" ] = "\'$1\' : 口(port)の型が整合していません. ここでは $2 型が使用できます."
    453400
    454401# S1061 \'$1\' : not defined"
    455 @@error_message[ :"S1061" ] = "\'$1\' : 定義されていません."
     402@@error_message[ :"S1061" ] = "\'$1\' : 定義されていません."
    456403
    457404# S1062 $1 has no export definition"
    458 @@error_message[ :"S1062" ] = "$1 には外部定義がありません."
     405@@error_message[ :"S1062" ] = "$1 には外部定義がありません."
    459406
    460407# S1063 $1 is port but previously defined as an attribute"
    461 @@error_message[ :"S1063" ] = "$1 は口(port)ですがそれより前に属性として定義されました."
     408@@error_message[ :"S1063" ] = "$1 は口(port)ですがそれより前に属性として定義されました."
    462409
    463410# S1064 $1 : type \'$2$3\' mismatch with pprevious definition\'$4$5\'"
    464 @@error_message[ :"S1064" ] = "$1 : 型 \'$2$3\' はそれ以前の定義 \'$4$5\' と整合してません."
     411@@error_message[ :"S1064" ] = "$1 : 型 \'$2$3\' はそれ以前の定義 \'$4$5\' と整合してません."
    465412
    466413# S1065 $1 : port type $2 mismatch with previous definition $3"
    467 @@error_message[ :"S1065" ] = "$1 : 口(port)型 $2 はそれ以前の定義 $3 と整合していません."
     414@@error_message[ :"S1065" ] = "$1 : 口(port)型 $2 はそれ以前の定義 $3 と整合していません."
    468415
    469416# S1066 $1 : signature \'$2\' mismatch with previous definition \'$3\'"
    470 @@error_message[ :"S1066" ] = "$1 : シグニチャ \'$2\' はそれ以前の定義 \'$3\' と整合していません."
     417@@error_message[ :"S1066" ] = "$1 : シグニチャ \'$2\' はそれ以前の定義 \'$3\' と整合していません."
    471418
    472419# S1067 $1 : array size mismatch with previous definition"
    473 @@error_message[ :"S1067" ] = "$1 : é
    474 åˆ—のサイズがそれ以前の定義と整合していません."
     420@@error_message[ :"S1067" ] = "$1 : 配列のサイズがそれ以前の定義と整合していません."
    475421
    476422# S1068 $1 : optional specifier mismatch with previous definition"
    477 @@error_message[ :"S1068" ] = "$1 : オプショナルな指定子がそれ以前の定義と整合していません."
     423@@error_message[ :"S1068" ] = "$1 : オプショナルな指定子がそれ以前の定義と整合していません."
    478424
    479425# S1069 $1 is an attribute but previously defined as a port"
    480 @@error_message[ :"S1069" ] = "$1 は属性ですがそれより前に口(port)として定義されました."
     426@@error_message[ :"S1069" ] = "$1 は属性ですがそれより前に口(port)として定義されました."
    481427
    482428# S1070 $1: size_is pointer cannot be exposed for composite attribute"
    483 @@error_message[ :"S1070" ] = "$1: size_is を指定されたポインタ変数は,複合セルタイプの属性名に関しては,å
    484 ¬é–‹ã™ã‚‹ã“とができません."
     429@@error_message[ :"S1070" ] = "$1: size_is を指定されたポインタ変数は,複合セルタイプの属性名に関しては,公開することができません."
    485430
    486431# S1071 $1 cannot be specified for composite"
    487 @@error_message[ :"S1071" ] = "$1 は複合セルに対して指定できません."
     432@@error_message[ :"S1071" ] = "$1 は複合セルに対して指定できません."
    488433
    489434# S1072 $1: entry port: sizeless array not supported in current version"
    490 @@error_message[ :"S1072" ] = "$1: 受け口: 現在の版ではサイズ未指定のé
    491 åˆ—はサポートされていません."
     435@@error_message[ :"S1072" ] = "$1: 受け口: 現在の版ではサイズ未指定の配列はサポートされていません."
    492436
    493437# S1073 Not constant expression $1"
    494 @@error_message[ :"S1073" ] = "$1 は定数式ではありません."
     438@@error_message[ :"S1073" ] = "$1 は定数式ではありません."
    495439
    496440# S1074 Not Integer $1"
    497 @@error_message[ :"S1074" ] = "$1 は整数ではありません"
     441@@error_message[ :"S1074" ] = "$1 は整数ではありません"
    498442
    499443# S1075 \'$1\' signature not found"
    500 @@error_message[ :"S1075" ] = "\'$1\' シグニチャが見つかりません."
     444@@error_message[ :"S1075" ] = "\'$1\' シグニチャが見つかりません."
    501445
    502446# S1076 \'$1\' not signature"
    503 @@error_message[ :"S1076" ] = "\'$1\' はシグニチャではありません."
     447@@error_message[ :"S1076" ] = "\'$1\' はシグニチャではありません."
    504448
    505449# S1077 inline: cannot be specified for call port"
    506 @@error_message[ :"S1077" ] = "inline: 呼び口に対して指定できません."
     450@@error_message[ :"S1077" ] = "inline: 呼び口に対して指定できません."
    507451
    508452# S1078 optional: cannot be specified for entry port"
    509 @@error_message[ :"S1078" ] = "optional: 受け口に対して指定できません."
     453@@error_message[ :"S1078" ] = "optional: 受け口に対して指定できません."
    510454
    511455# S1079 allocator: cannot be specified for call port"
    512 @@error_message[ :"S1079" ] = "allocator: 呼び口に対して指定できません."
     456@@error_message[ :"S1079" ] = "allocator: 呼び口に対して指定できません."
    513457
    514458# S1080 duplicate allocator specifier"
    515 @@error_message[ :"S1080" ] = "アロケータ指定子が重複しています."
     459@@error_message[ :"S1080" ] = "アロケータ指定子が重複しています."
    516460
    517461# S1081 self allocator not supported yet"
    518 @@error_message[ :"S1081" ] = "セルフアロケータはまだサポートされていません"
     462@@error_message[ :"S1081" ] = "セルフアロケータはまだサポートされていません"
    519463
    520464# S1082 function \'$1\' not found in signature"
    521 @@error_message[ :"S1082" ] = "関数 \'$1\' がシグニチャで見つかりません"
     465@@error_message[ :"S1082" ] = "関数 \'$1\' がシグニチャで見つかりません"
    522466
    523467# S1083 \'$1\' not found in function \'$2\'"
    524 @@error_message[ :"S1083" ] = "\'$1\' が関数 \'$2\' で見つかりません"
     468@@error_message[ :"S1083" ] = "\'$1\' が関数 \'$2\' で見つかりません"
    525469
    526470# S1084 \'$1\' in function \'$2\' is not send or receive"
    527 @@error_message[ :"S1084" ] = "\'$2\' å†
    528 ã® \'$1\' が基本指定子 send または receive ではありません."
     471@@error_message[ :"S1084" ] = "\'$2\' 内の \'$1\' が基本指定子 send または receive ではありません."
    529472
    530473# S1085 duplicate allocator specifier for \'$1_$2\'"
    531 @@error_message[ :"S1085" ] = "\'$1_$2\' に対する重複したアロケータ指定子です."
     474@@error_message[ :"S1085" ] = "\'$1_$2\' に対する重複したアロケータ指定子です."
    532475
    533476# S1086 rhs not call_port.func.param for $1_$2"
    534 @@error_message[ :"S1086" ] = "$1_$2 に対して not call_port.func.param の形式ではありません."
     477@@error_message[ :"S1086" ] = "$1_$2 に対して not call_port.func.param の形式ではありません."
    535478
    536479# S1087 function \'$1\' not found in signature \'$2\'"
    537 @@error_message[ :"S1087" ] = "関数 \'$1\' がシグニチャ \'$2\' の中に見つかりません."
     480@@error_message[ :"S1087" ] = "関数 \'$1\' がシグニチャ \'$2\' の中に見つかりません."
    538481
    539482# S1088 \'$1\' not found in function \'$2\'"
    540 @@error_message[ :"S1088" ] = "\'$1\' が関数 \'$2\' の中に見つかりません."
     483@@error_message[ :"S1088" ] = "\'$1\' が関数 \'$2\' の中に見つかりません."
    541484
    542485# S1089 relay allocator send/receive mismatch between $1.$2 and $3_$4.$5"
    543 @@error_message[ :"S1089" ] = "リレーアロケータ send/receive は $1.$2 及び $3_$4.$5 の間で整合していません."
     486@@error_message[ :"S1089" ] = "リレーアロケータ send/receive は $1.$2 及び $3_$4.$5 の間で整合していません."
    544487
    545488# S1090 \'$1\' in function \'$2\' is not send or receive"
    546 @@error_message[ :"S1090" ] = "関数 \'$2\' å†
    547 ã® \'$1\' が send または receive ではありません."
     489@@error_message[ :"S1090" ] = "関数 \'$2\' 内の \'$1\' が send または receive ではありません."
    548490
    549491# S1091 call port \'$1\' not found in celltype $2"
    550 @@error_message[ :"S1091" ] = "呼び口 \'$1\' がセルタイプ $2 の中に見つかりません."
     492@@error_message[ :"S1091" ] = "呼び口 \'$1\' がセルタイプ $2 の中に見つかりません."
    551493
    552494# S1092 \'$1\' not namespace"
    553 @@error_message[ :"S1092" ] = "\'$1\' はネームスペースではありません."
     495@@error_message[ :"S1092" ] = "\'$1\' はネームスペースではありません."
    554496
    555497# S1093 $1 : undefined cell"
    556 @@error_message[ :"S1093" ] = "$1 : 未定義のセルです"
     498@@error_message[ :"S1093" ] = "$1 : 未定義のセルです"
    557499
    558500# S1094 $1: pointer is not constant. check \'const\'"
    559 @@error_message[ :"S1094" ] = "$1: ポインタが定数ではありません.\'const\' を確認してください"
     501@@error_message[ :"S1094" ] = "$1: ポインタが定数ではありません.\'const\' を確認してください"
    560502
    561503# S1095 $1: not constant"
    562 @@error_message[ :"S1095" ] = "$1: 定数ではありません"
     504@@error_message[ :"S1095" ] = "$1: 定数ではありません"
    563505
    564506# S1096 $1: should be int, float, bool or pointer type"
    565 @@error_message[ :"S1096" ] = "$1: int, float, bool またはポインタ型であるå¿
    566 è¦ãŒã‚ります"
     507@@error_message[ :"S1096" ] = "$1: int, float, bool またはポインタ型である必要があります"
    567508
    568509# S1097 $1: has no initializer"
    569 @@error_message[ :"S1097" ] = "$1: 初期化子を持っていません"
     510@@error_message[ :"S1097" ] = "$1: 初期化子を持っていません"
    570511
    571512# S1098 $1: has unsuitable initializer"
    572 @@error_message[ :"S1098" ] = "$1: 不適当な初期化子があります."
     513@@error_message[ :"S1098" ] = "$1: 不適当な初期化子があります."
    573514
    574515# S1099 array subscript not constant"
    575 @@error_message[ :"S1099" ] = "é
    576 åˆ—添数が定数ではありません."
     516@@error_message[ :"S1099" ] = "配列添数が定数ではありません."
    577517
    578518# S1100 $1: cannot initialize var"
    579 @@error_message[ :"S1100" ] = "$1: 変数を初期化できません."
     519@@error_message[ :"S1100" ] = "$1: 変数を初期化できません."
    580520
    581521# S1101 \'$1\' cannot initialize entry port"
    582 @@error_message[ :"S1101" ] = "\'$1\' 受け口を初期化できません."
     522@@error_message[ :"S1101" ] = "\'$1\' 受け口を初期化できません."
    583523
    584524# S1102 $1: must specify array subscript here"
    585 @@error_message[ :"S1102" ] = "$1: ここではé
    586 åˆ—添数を指定するå¿
    587 è¦ãŒã‚ります."
     525@@error_message[ :"S1102" ] = "$1: ここでは配列添数を指定する必要があります."
    588526
    589527# S1103 $1: need array subscript"
    590 @@error_message[ :"S1103" ] = "$1: é
    591 åˆ—添数がå¿
    592 è¦ã§ã™ï¼Ž"
     528@@error_message[ :"S1103" ] = "$1: 配列添数が必要です."
    593529
    594530# S1104 $1: need array subscript number. ex. \'[0]\'"
    595 @@error_message[ :"S1104" ] = "$1: é
    596 åˆ—添数の数値がå¿
    597 è¦ã§ã™ï¼Ž(例) \'[0]\'"
     531@@error_message[ :"S1104" ] = "$1: 配列添数の数値が必要です.(例) \'[0]\'"
    598532
    599533# S1105 $1: cannot specify array subscript here"
    600 @@error_message[ :"S1105" ] = "$1: ここではé
    601 åˆ—添数を指定することができません."
     534@@error_message[ :"S1105" ] = "$1: ここでは配列添数を指定することができません."
    602535
    603536# S1106 $1: cannot specify array subscript number. use \'[]\'"
    604 @@error_message[ :"S1106" ] = "$1: é
    605 åˆ—添数の数値を指定することが出来ません.\'[]\' をお使いください."
     537@@error_message[ :"S1106" ] = "$1: 配列添数の数値を指定することが出来ません.\'[]\' をお使いください."
    606538
    607539# S1107 to export port, use \'cCall => composite.cCall\'"
    608 @@error_message[ :"S1107" ] = "口(port)を外部にå
    609 ¬é–‹ã™ã‚‹ãŸã‚, \'cCall => composite.cCall\' をお使いください."
     540@@error_message[ :"S1107" ] = "口(port)を外部に公開するため, \'cCall => composite.cCall\' をお使いください."
    610541
    611542# S1108 $1: rhs not \'Cell.ePort\' form"
    612 @@error_message[ :"S1108" ] = "$1: 右辺が \'Cell.ePort\' の形式ではありません."
     543@@error_message[ :"S1108" ] = "$1: 右辺が \'Cell.ePort\' の形式ではありません."
    613544
    614545# S1109 \'$1\' not found"
    615 @@error_message[ :"S1109" ] = "\'$1\' が見つかりません."
     546@@error_message[ :"S1109" ] = "\'$1\' が見つかりません."
    616547
    617548# S1110 \'$1\' not cell"
    618 @@error_message[ :"S1110" ] = "\'$1\' セルではありません."
     549@@error_message[ :"S1110" ] = "\'$1\' セルではありません."
    619550
    620551# S1111 \'$1\' not found"
    621 @@error_message[ :"S1111" ] = "\'$1\' が見つかりません."
     552@@error_message[ :"S1111" ] = "\'$1\' が見つかりません."
    622553
    623554# S1112 \'$1\' not entry port"
    624 @@error_message[ :"S1112" ] = "\'$1\' 受け口ではありません."
     555@@error_message[ :"S1112" ] = "\'$1\' 受け口ではありません."
    625556
    626557# S1113 \'$1\' signature mismatch"
    627 @@error_message[ :"S1113" ] = "\'$1\' シグニチャが整合していません."
     558@@error_message[ :"S1113" ] = "\'$1\' シグニチャが整合していません."
    628559
    629560# S1114 \'$1\' should be array"
    630 @@error_message[ :"S1114" ] = "\'$1\' é
    631 åˆ—であるå¿
    632 è¦ãŒã‚ります."
     561@@error_message[ :"S1114" ] = "\'$1\' 配列である必要があります."
    633562
    634563# S1115 $1[$2]: subscript out of range (< $3)"
    635 @@error_message[ :"S1115" ] = "$1[$2]: é
    636 åˆ—の添数が範囲外の値です.(< $3)"
     564@@error_message[ :"S1115" ] = "$1[$2]: 配列の添数が範囲外の値です.(< $3)"
    637565
    638566# S1116 \'$1\' entry port is not array"
    639 @@error_message[ :"S1116" ] = "\'$1\' 受け口がé
    640 åˆ—ではありません."
     567@@error_message[ :"S1116" ] = "\'$1\' 受け口が配列ではありません."
    641568
    642569# S1117 \'$1\' not in celltype"
    643 @@error_message[ :"S1117" ] = "\'$1\' はセルタイプå†
    644 ã«ã‚りません."
     570@@error_message[ :"S1117" ] = "\'$1\' はセルタイプ内にありません."
    645571
    646572# S1118 $1: going out from region \'$2\' not permitted"
    647 @@error_message[ :"S1118" ] = "$1: リージョン $2 から out することができません."
     573@@error_message[ :"S1118" ] = "$1: リージョン $2 から out することができません."
    648574
    649575# S1119 $1: going from region \'$2\' to \'$3\' not permitted"
    650 @@error_message[ :"S1119" ] = "$1: リージョン $2 からリージョン $3へ結合できません."
     576@@error_message[ :"S1119" ] = "$1: リージョン $2 からリージョン $3へ結合できません."
    651577
    652578# S1120 $1: going in to region \'$2\' not permitted"
    653 @@error_message[ :"S1120" ] = "$1: リージョン \'$2\' へ in することができません."
     579@@error_message[ :"S1120" ] = "$1: リージョン \'$2\' へ in することができません."
    654580
    655581# S1121 \'$1\' in region \'$2\' cannot be directly joined $3 in  $4"
    656 @@error_message[ :"S1121" ] = "リージョン \'$2\' å†
    657 ã® \'$1\' は直接 $4 å†
    658 ã® $3 に結合できません."
     582@@error_message[ :"S1121" ] = "リージョン \'$2\' 内の \'$1\' は直接 $4 内の $3 に結合できません."
    659583
    660584# S1122 $1 : not port: \'through\' can be specified only for port"
    661 @@error_message[ :"S1122" ] = "$1 :口(port) ではありません: \'through\' は口(port)に対してのみ指定できます."
     585@@error_message[ :"S1122" ] = "$1 :口(port) ではありません: \'through\' は口(port)に対してのみ指定できます."
    662586
    663587# S1123 $1 : not port: \'through\' can be specified only for port"
    664 @@error_message[ :"S1123" ] = "$1 :口(port) ではありません: \'through\' は口(port)に対してのみ指定できます."
     588@@error_message[ :"S1123" ] = "$1 :口(port) ではありません: \'through\' は口(port)に対してのみ指定できます."
    665589
    666590# S1124 $1: plugin function failed: \'get_through_entry_port_name\'"
    667 @@error_message[ :"S1124" ] = "$1: プラグイン関数が失敗しました.: \'get_through_entry_port_name\'"
     591@@error_message[ :"S1124" ] = "$1: プラグイン関数が失敗しました.: \'get_through_entry_port_name\'"
    668592
    669593# S1125 $1: not generated cell \'$2\'"
    670 @@error_message[ :"S1125" ] = "$1: 生成されたセル \'$2\' ではありません."
     594@@error_message[ :"S1125" ] = "$1: 生成されたセル \'$2\' ではありません."
    671595
    672596# S1126 $1: fail to new"
    673 @@error_message[ :"S1126" ] = "$1: new に失敗しました."
     597@@error_message[ :"S1126" ] = "$1: new に失敗しました."
    674598
    675599# S1127 \'$1\' duplicate"
    676 @@error_message[ :"S1127" ] = "\'$1\' が重複しています."
     600@@error_message[ :"S1127" ] = "\'$1\' が重複しています."
    677601
    678602# S1128 \'$1\' inconsistent array definition"
    679 @@error_message[ :"S1128" ] = "\'$1\' は一貫しないé
    680 åˆ—定義です."
     603@@error_message[ :"S1128" ] = "\'$1\' は一貫しない配列定義です."
    681604
    682605# S1129 \'$1\' redefinition of subscript $1"
    683 @@error_message[ :"S1129" ] = "\'$1\' はé
    684 åˆ—添数 $1 の再定義です."
     606@@error_message[ :"S1129" ] = "\'$1\' は配列添数 $1 の再定義です."
    685607
    686608# S1130 \'$1\' inconsistent array definition"
    687 @@error_message[ :"S1130" ] = "\'$1\' は一貫しないé
    688 åˆ—定義です."
     609@@error_message[ :"S1130" ] = "\'$1\' は一貫しない配列定義です."
    689610
    690611# S1131 \'$1.$2\' has duplicate initializer"
    691 @@error_message[ :"S1131" ] = "\'$1.$2\' には重複した初期化子があります."
     612@@error_message[ :"S1131" ] = "\'$1.$2\' には重複した初期化子があります."
    692613
    693614# S1132 $1: 1st parameter is not string(file name)"
    694 @@error_message[ :"S1132" ] = "$1: 第1パラメータが string(ファイル名) ではありません."
     615@@error_message[ :"S1132" ] = "$1: 第1パラメータが string(ファイル名) ではありません."
    695616
    696617# S1133 $1: 2nd parameter is not string(fromat)"
    697 @@error_message[ :"S1133" ] = "$1: 第2パラメータが string(ファイル名) ではありません."
     618@@error_message[ :"S1133" ] = "$1: 第2パラメータが string(ファイル名) ではありません."
    698619
    699620# S1134 $1: unknown factory function"
    700 @@error_message[ :"S1134" ] = "$1: 不明なファクトリ関数です."
     621@@error_message[ :"S1134" ] = "$1: 不明なファクトリ関数です."
    701622
    702623# S1135 celltype factory can\'t have parameter(s)"
    703 @@error_message[ :"S1135" ] = "セルタイプファクトリはパラメータを持つことができません."
     624@@error_message[ :"S1135" ] = "セルタイプファクトリはパラメータを持つことができません."
    704625
    705626# S1136 \'$1\': not found"
    706 @@error_message[ :"S1136" ] = "\'$1\': 見つかりません."
     627@@error_message[ :"S1136" ] = "\'$1\': 見つかりません."
    707628
    708629# S1137 \'$1\': not attribute"
    709 @@error_message[ :"S1137" ] = "\'$1\': 属性ではありません."
     630@@error_message[ :"S1137" ] = "\'$1\': 属性ではありません."
    710631
    711632# S1138 internal error Factory.check_arg()"
    712 @@error_message[ :"S1138" ] = "Factory.check_arg() のå†
    713 éƒ¨ã‚¨ãƒ©ãƒ¼ã§ã™ï¼Ž"
     633@@error_message[ :"S1138" ] = "Factory.check_arg() の内部エラーです."
    714634
    715635# S1139 $1: region path mismatch. previous path: $2"
    716 @@error_message[ :"S1139" ] = "$1: リージョンパスが整合していません.以前のパス: $2"
     636@@error_message[ :"S1139" ] = "$1: リージョンパスが整合していません.以前のパス: $2"
    717637
    718638# S1140 $1: region specifier must place at first appearence"
    719 @@error_message[ :"S1140" ] = "$1: リージョン指定子は最初にé
    720 ç½®ã™ã‚‹å¿
    721 è¦ãŒã‚ります."
     639@@error_message[ :"S1140" ] = "$1: リージョン指定子は最初に配置する必要があります."
    722640
    723641# S1141 $1 duplication, previous one : $2"
    724 @@error_message[ :"S1141" ] = "$1 が重複しています, 以前の値 : $2"
     642@@error_message[ :"S1141" ] = "$1 が重複しています, 以前の値 : $2"
    725643
    726644# S1142 $1 not found in search path"
    727 @@error_message[ :"S1142" ] = "$1 が検索パスの中に見つかりません."
     645@@error_message[ :"S1142" ] = "$1 が検索パスの中に見つかりません."
    728646
    729647# S1143 import_C: arg2: mismatch with previous one"
    730 @@error_message[ :"S1143" ] = "import_C: arg2: 以前のものと整合していません."
     648@@error_message[ :"S1143" ] = "import_C: arg2: 以前のものと整合していません."
    731649
    732650# S1144 $1: temporary C source: open error"
    733 @@error_message[ :"S1144" ] = "$1: 一時的な C ソース: オープンエラーです."
     651@@error_message[ :"S1144" ] = "$1: 一時的な C ソース: オープンエラーです."
    734652
    735653# S1145 $1: temporary C source: writing error"
    736 @@error_message[ :"S1145" ] = "$1: 一時的な C ソース: 書込みエラーです."
     654@@error_message[ :"S1145" ] = "$1: 一時的な C ソース: 書込みエラーです."
    737655
    738656# S1146 $1: error occured while CPP"
    739 @@error_message[ :"S1146" ] = "$1: CPP 実行中にエラーが発生しました."
     657@@error_message[ :"S1146" ] = "$1: CPP 実行中にエラーが発生しました."
    740658
    741659# S1147 $1: popen for CPP failed"
    742 @@error_message[ :"S1147" ] = "$1: CPPに対する popen が失敗しました."
     660@@error_message[ :"S1147" ] = "$1: CPPに対する popen が失敗しました."
    743661
    744662# S1148 $1 not found in search path"
    745 @@error_message[ :"S1148" ] = "$1 が検索パスの中に見つかりません."
     663@@error_message[ :"S1148" ] = "$1 が検索パスの中に見つかりません."
    746664
    747665# S1149 $1 not signature"
    748 @@error_message[ :"S1149" ] = "$1 シグニチャではありません."
     666@@error_message[ :"S1149" ] = "$1 シグニチャではありません."
    749667
    750668# S1150 $1: fail to new"
    751 @@error_message[ :"S1150" ] = "$1: new に失敗しました."
     669@@error_message[ :"S1150" ] = "$1: new に失敗しました."
    752670
    753671# S1151 $1: not namespace"
    754 @@error_message[ :"S1151" ] = "$1: ネームスペースではありません."
     672@@error_message[ :"S1151" ] = "$1: ネームスペースではありません."
    755673
    756674# S1152 $1: call port cannot have fixed join"
    757 @@error_message[ :"S1152" ] = "$1: 呼び口は固定結合を持つことができません."
     675@@error_message[ :"S1152" ] = "$1: 呼び口は固定結合を持つことができません."
    758676
    759677# "S1153 $1: cannot be entry port array for fixed join port"
    760 @@error_message[ :"S1153" ] = "$1: 固定結合の口に対する受け口é
    761 åˆ—はあり得ません."
     678@@error_message[ :"S1153" ] = "$1: 固定結合の口に対する受け口配列はあり得ません."
    762679
    763680# "S1154 $1: must be singleton celltype for fixed join"
    764 @@error_message[ :"S1154" ] = "$1: 固定結合に対するシングルトンセルタイプであるå¿
    765 è¦ãŒã‚ります."
     681@@error_message[ :"S1154" ] = "$1: 固定結合に対するシングルトンセルタイプである必要があります."
    766682
    767683# "S1155 $1: not celltype or not found"
    768 @@error_message[ :"S1155" ] = "$1: セルタイプではないかまたは見つかりません."
     684@@error_message[ :"S1155" ] = "$1: セルタイプではないかまたは見つかりません."
    769685
    770686# "S1156 $1: not call port or not found"
    771 @@error_message[ :"S1156" ] = "$1: 呼び口ではないかまたは見つかりません."
     687@@error_message[ :"S1156" ] = "$1: 呼び口ではないかまたは見つかりません."
    772688
    773689# "S1157 $1: sized array or not array"
    774 @@error_message[ :"S1157" ] = "$1: サイズ指定されたé
    775 åˆ—かまたはé
    776 åˆ—ではありません."
     690@@error_message[ :"S1157" ] = "$1: サイズ指定された配列かまたは配列ではありません."
    777691
    778692# "S1158 $1: singleton cell not found for fixed join"
    779 @@error_message[ :"S1158" ] = "$1: シングルトンセルが固定結合に対して見つかりません."
     693@@error_message[ :"S1158" ] = "$1: シングルトンセルが固定結合に対して見つかりません."
    780694
    781695# S1159 $1: non-size_is pointer cannot be initialized with array initializer"
    782 @@error_message[ :"S1159" ] = "$1: size_is 指定されていないポインタは、é
    783 åˆ—初期化子で初期化できません"
     696@@error_message[ :"S1159" ] = "$1: size_is 指定されていないポインタは、配列初期化子で初期化できません"
    784697
    785698# S1160 $1 must be constant for id"
    786 @@error_message[ :"S1160" ] = "$1 id は定数でなければなりません"
     699@@error_message[ :"S1160" ] = "$1 id は定数でなければなりません"
    787700
    788701# S1161 $1 must be constant for id"
    789 @@error_message[ :"S1161" ] = "$1 id は定数でなければなりません"
     702@@error_message[ :"S1161" ] = "$1 id は定数でなければなりません"
    790703
    791704# S1162 $1: id cannot be 0"
    792 @@error_message[ :"S1162" ] = "$1: id に 0 を指定できません"
     705@@error_message[ :"S1162" ] = "$1: id に 0 を指定できません"
    793706
    794707# S1163 generate specifier duplicate"
    795 @@error_message[ :"S1163" ] = "generate 指定子が重複しています"
     708@@error_message[ :"S1163" ] = "generate 指定子が重複しています"
    796709
    797710# S1164 '$1' set_specified_id: id not positive integer '$2'"
    798 @@error_message[ :"S1164" ] = "'$1' id が正整数でありません '$2'"
     711@@error_message[ :"S1164" ] = "'$1' id が正整数でありません '$2'"
    799712
    800713# S1165 '$1' set_specified_id: id duplicate"
    801 @@error_message[ :"S1165" ] = "'$1' id 指定子が重複しています"
     714@@error_message[ :"S1165" ] = "'$1' id 指定子が重複しています"
    802715
    803716# S1166 $1: fail to new"
    804 @@error_message[ :"S1166" ] = "$1: プラグインの生成に失敗しました"
     717@@error_message[ :"S1166" ] = "$1: プラグインの生成に失敗しました"
    805718
    806719# S1167 \'$1\': relay mismatch \'$2\'"
    807 @@error_message[ :"S1167" ] = "\'$1\': リレーにマッチしません \'$2\'"
     720@@error_message[ :"S1167" ] = "\'$1\': リレーにマッチしません \'$2\'"
    808721
    809722# S1168 too many initializer for array, $1 for $2"
    810 @@error_message[ :"S1168" ] = "é
    811 åˆ—初期化子が多すぎます $1 for $2"
     723@@error_message[ :"S1168" ] = "配列初期化子が多すぎます $1 for $2"
    812724
    813725# S1169 $1: non-size_is pointer cannot be initialized with array initializer"
    814 @@error_message[ :"S1169" ] = "$1: size_is 指定されていないポインタにé
    815 åˆ—初期化子を指定できません"
     726@@error_message[ :"S1169" ] = "$1: size_is 指定されていないポインタに配列初期化子を指定できません"
    816727
    817728# S1170 \'$1\' has size_is but export attr \'$2\' doesn't have"
    818 @@error_message[ :"S1170" ] = "\'$1\' に size_is 指定されていますがエクスポートする \'$2\' に指定されていません"
     729@@error_message[ :"S1170" ] = "\'$1\' に size_is 指定されていますがエクスポートする \'$2\' に指定されていません"
    819730
    820731# S1171 \'$1\' size_is argument of \'$2\' not exported"
    821 @@error_message[ :"S1171" ] = "\'$1\' \'$2\' size_is 引数がエクスポートされていません"
     732@@error_message[ :"S1171" ] = "\'$1\' \'$2\' size_is 引数がエクスポートされていません"
    822733
    823734# S1172 \'$1\' size_is argument mismatch with exporting one \'$2\'"
    824 @@error_message[ :"S1172" ] = "\'$1\' size_is 引数がエクスポートされている \'$2\' と一致しません"
     735@@error_message[ :"S1172" ] = "\'$1\' size_is 引数がエクスポートされている \'$2\' と一致しません"
    825736
    826737# S1173 $1: allocator mismatch from $2's allocator"
    827 @@error_message[ :"S1173" ] = "$1: アロケータが $2' のアロケータと一致しません"
     738@@error_message[ :"S1173" ] = "$1: アロケータが $2' のアロケータと一致しません"
    828739
    829740# S1174 $1 not suitable for lhs, suitable lhs: 'func.param'"
    830 @@error_message[ :"S1174" ] = "$1 左辺が不適切です。適切な左辺は 'func.param' の形式です"
     741@@error_message[ :"S1174" ] = "$1 左辺が不適切です。適切な左辺は 'func.param' の形式です"
    831742
    832743# S1175 $1 not found or not allocator entry port for $2"
    833 @@error_message[ :"S1175" ] = "$1  $2 のアロケータ受け口が見当たらないか、アロケータ受け口ではありません"
     744@@error_message[ :"S1175" ] = "$1  $2 のアロケータ受け口が見当たらないか、アロケータ受け口ではありません"
    834745
    835746# S1176 rhs not in 'call_port.func.param' form for $1_$2"
    836 @@error_message[ :"S1176" ] = "右辺が 'call_port.func.param' 形式でありません ($1_$2)"
     747@@error_message[ :"S1176" ] = "右辺が 'call_port.func.param' 形式でありません ($1_$2)"
    837748
    838749# S1177 cannot specify 'through' in composite in current version"
    839 @@error_message[ :"S1177" ] = "現在のバージョンでは、コンポジットセルに 'through'を指定できません"
     750@@error_message[ :"S1177" ] = "現在のバージョンでは、コンポジットセルに 'through'を指定できません"
    840751
    841752# S1178 $1 region type specifier duplicate, previous $2"
    842 @@error_message[ :"S1178" ] = "$1 リージョンタイプ指定子が重複しています。以前は $2 でした"
     753@@error_message[ :"S1178" ] = "$1 リージョンタイプ指定子が重複しています。以前は $2 でした"
    843754
    844755### syntaxobj.rb
    845756# S2001 \'$1\' duplicate $2"
    846 @@error_message[ :"S2001" ] = "\'$1\': 重複しています ($2)"
     757@@error_message[ :"S2001" ] = "\'$1\': 重複しています ($2)"
    847758
    848759# S2002 $1: $2"
     
    850761
    851762# S2003 $1: $2 cannot have initializer"
    852 @@error_message[ :"S2003" ] = "$1: $2 は初期化子をもつことができません."
     763@@error_message[ :"S2003" ] = "$1: $2 は初期化子をもつことができません."
    853764
    854765# S2004 $1: array subscript must be specified or omit"
    855 @@error_message[ :"S2004" ] = "$1: é
    856 åˆ—添数は指定されるかまたは省略されるå¿
    857 è¦ãŒã‚ります."
     766@@error_message[ :"S2004" ] = "$1: 配列添数は指定されるかまたは省略される必要があります."
    858767
    859768# S2005 $1: array subscript must be specified"
    860 @@error_message[ :"S2005" ] = "$1: é
    861 åˆ—添数は指定されるå¿
    862 è¦ãŒã‚ります."
     769@@error_message[ :"S2005" ] = "$1: 配列添数は指定される必要があります."
    863770
    864771# S2006 \'$1\' function"
    865 @@error_message[ :"S2006" ] = "\'$1\' 関数です."
     772@@error_message[ :"S2006" ] = "\'$1\' 関数です."
    866773
    867774# S2007 \'$1\' $2"
     
    869776
    870777# S2008 $1: inconsitent with previous one"
    871 @@error_message[ :"S2008" ] = "$1: 以前のものと一貫していません."
     778@@error_message[ :"S2008" ] = "$1: 以前のものと一貫していません."
    872779
    873780# S2009 $1: not found or not signature"
    874 @@error_message[ :"S2009" ] = "$1: 見つからないかまたはシグニチャではありません."
     781@@error_message[ :"S2009" ] = "$1: 見つからないかまたはシグニチャではありません."
    875782
    876783# S2010 $1: not allocator signature"
    877 @@error_message[ :"S2010" ] = "$1: アロケータシグニチャではありません."
     784@@error_message[ :"S2010" ] = "$1: アロケータシグニチャではありません."
    878785
    879786# S2011 size_is duplicate"
    880 @@error_message[ :"S2011" ] = "size_is が重複しています."
     787@@error_message[ :"S2011" ] = "size_is が重複しています."
    881788
    882789# S2012 count_is duplicate"
    883 @@error_message[ :"S2012" ] = "count_is が重複しています."
     790@@error_message[ :"S2012" ] = "count_is が重複しています."
    884791
    885792# S2013 string duplicate"
    886 @@error_message[ :"S2013" ] = "string が重複しています."
     793@@error_message[ :"S2013" ] = "string が重複しています."
    887794
    888795# S2014 $1 need pointer or more pointer"
    889 @@error_message[ :"S2014" ] = "$1 は一つ以上のポインタがå¿
    890 è¦ã§ã™ï¼Ž"
     796@@error_message[ :"S2014" ] = "$1 は一つ以上のポインタが必要です."
    891797
    892798# S2015 $1 must be const for \'in\' parameter $2"
    893 @@error_message[ :"S2015" ] = "'$1' は \'in\' パラメータ $2 に対して定数であるå¿
    894 è¦ãŒã‚ります."
     799@@error_message[ :"S2015" ] = "'$1' は \'in\' パラメータ $2 に対して定数である必要があります."
    895800
    896801# S2016 $1 can not be const for $2 parameter"
    897 @@error_message[ :"S2016" ] = "'$1' は $2 パラメータに対して定数指定できません. "
     802@@error_message[ :"S2016" ] = "'$1' は $2 パラメータに対して定数指定できません. "
    898803
    899804# S2017 size_is argument is not integer type"
    900 @@error_message[ :"S2017" ] = "size_is 引数が整数型ではありません."
     805@@error_message[ :"S2017" ] = "size_is 引数が整数型ではありません."
    901806
    902807# S2018 \'$1\' size_is parameter not integer"
    903 @@error_message[ :"S2018" ] = "\'$1\' size_is パラメータは整数ではありません."
     808@@error_message[ :"S2018" ] = "\'$1\' size_is パラメータは整数ではありません."
    904809
    905810# S2019 \'$1\' size_is parameter negative or zero"
    906 @@error_message[ :"S2019" ] = "\'$1\' size_is パラメータが負数またはゼロです."
     811@@error_message[ :"S2019" ] = "\'$1\' size_is パラメータが負数またはゼロです."
    907812
    908813# S2020 count_is argument is not integer type"
    909 @@error_message[ :"S2020" ] = "count_is 引数は整数型ではありません."
     814@@error_message[ :"S2020" ] = "count_is 引数は整数型ではありません."
    910815
    911816# S2021 \'$1\' count_is parameter not integer"
    912 @@error_message[ :"S2021" ] = "\'$1\' count_is パラメータは整数型ではありません."
     817@@error_message[ :"S2021" ] = "\'$1\' count_is パラメータは整数型ではありません."
    913818
    914819# S2022 \'$1\' count_is parameter negative or zero"
    915 @@error_message[ :"S2022" ] = "\'$1\' count_is パラメータは負数またはゼロです."
     820@@error_message[ :"S2022" ] = "\'$1\' count_is パラメータは負数またはゼロです."
    916821
    917822# S2023 string argument is not integer type"
    918 @@error_message[ :"S2023" ] = "string 引数は整数型ではありません."
     823@@error_message[ :"S2023" ] = "string 引数は整数型ではありません."
    919824
    920825# S2024 \'$1\' string parameter not integer"
    921 @@error_message[ :"S2024" ] = "\'$1\' string パラメータは整数型ではありません."
     826@@error_message[ :"S2024" ] = "\'$1\' string パラメータは整数型ではありません."
    922827
    923828# S2025 \'$1\' string parameter negative or zero"
    924 @@error_message[ :"S2025" ] = "\'$1\' string パラメータは負数またはゼロです."
     829@@error_message[ :"S2025" ] = "\'$1\' string パラメータは負数またはゼロです."
    925830
    926831# S2026 '$1' nullable specified for non-pointer type"
    927 @@error_message[ :"S2026" ] = "'$1' ポインタ型以外に nullable が指定されました"
     832@@error_message[ :"S2026" ] = "'$1' ポインタ型以外に nullable が指定されました"
    928833
    929834# S2027 '$1' parameter cannot be void type"
    930 @@error_message[ :"S2027" ] = "'$1' 引数を void 型にできません"
     835@@error_message[ :"S2027" ] = "'$1' 引数を void 型にできません"
    931836
    932837# S2028 '$1' max (size_is 2nd parameter) not constant"
    933 @@error_message[ :"S2028" ] = "'$1' max (size_is の第二引数)が定数でありません"
     838@@error_message[ :"S2028" ] = "'$1' max (size_is の第二引数)が定数でありません"
    934839
    935840# S2029 '$1' max (size_is 2nd parameter) negative or zero, or not integer"
    936 @@error_message[ :"S2029" ] = "'$1' max (size_is の第二引数) が負、ゼロまたは整数ではありません"
     841@@error_message[ :"S2029" ] = "'$1' max (size_is の第二引数) が負、ゼロまたは整数ではありません"
    937842
    938843# S2030 '$1' both size_is and max are const. size_is larger than max"
    939 @@error_message[ :"S2030" ] = "'$1' size_is max の両方が定数で. size_is の方が max をè¶
    940 ãˆã¦ã„ます"
     844@@error_message[ :"S2030" ] = "'$1' size_is max の両方が定数で. size_is の方が max を超えています"
    941845
    942846### optimize.rb
    943847# S3001 $1: id too large $2 (max=$3)"
    944 @@error_message[ :"S3001" ] = "$1: id に $2 は大きすぎます (最大値は$3)"
     848@@error_message[ :"S3001" ] = "$1: id に $2 は大きすぎます (最大値は$3)"
    945849
    946850# S3002 $1: id too large $2 (max=$3)"
     
    948852
    949853# S3003 $1: id number '$2' conflict with $3"
    950 @@error_message[ :"S3003" ] = "$1: id 番号 '$2' は $3 と衝突しています"
     854@@error_message[ :"S3003" ] = "$1: id 番号 '$2' は $3 と衝突しています"
    951855
    952856### types.rb
    953857# T1001 const duplicate"
    954 @@error_message[ :"T1001" ] = "const が重複しています."
     858@@error_message[ :"T1001" ] = "const が重複しています."
    955859
    956860# T1002 volatile duplicate"
    957 @@error_message[ :"T1002" ] = "volatile が重複しています."
     861@@error_message[ :"T1002" ] = "volatile が重複しています."
    958862
    959863# T1003 $1: unsuitable specifier for $2"
    960 @@error_message[ :"T1003" ] = "$1: $2 に対する不適切な指定子です."
     864@@error_message[ :"T1003" ] = "$1: $2 に対する不適切な指定子です."
    961865
    962866# T1004 cannot cast to $1"
    963 @@error_message[ :"T1004" ] = "$1 へキャストできません."
     867@@error_message[ :"T1004" ] = "$1 へキャストできません."
    964868
    965869# T1005 \'$1\' not defined"
    966 @@error_message[ :"T1005" ] = "\'$1\' は定義されていません."
     870@@error_message[ :"T1005" ] = "\'$1\' は定義されていません."
    967871
    968872# T1006 \'$1\' not type name. expecting type name here"
    969 @@error_message[ :"T1006" ] = "\'$1\' は型名ではありません.ここは型名がå¿
    970 è¦ã§ã™ï¼Ž"
     873@@error_message[ :"T1006" ] = "\'$1\' は型名ではありません.ここは型名が必要です."
    971874
    972875# T1007 $1: void type variable cannot have initializer"
    973 @@error_message[ :"T1007" ] = "$1: void 型変数は初期化子をもつことができません."
     876@@error_message[ :"T1007" ] = "$1: void 型変数は初期化子をもつことができません."
    974877
    975878# T1008 ambigous signed or unsigned"
    976 @@error_message[ :"T1008" ] = "符号付きであるかまたは符号無しであるかが曖昧です."
     879@@error_message[ :"T1008" ] = "符号付きであるかまたは符号無しであるかが曖昧です."
    977880
    978881# T1009 $1: $2: not integer"
    979 @@error_message[ :"T1009" ] = "$1: $2: 整数ではありません."
     882@@error_message[ :"T1009" ] = "$1: $2: 整数ではありません."
    980883
    981884# T1010 $1: initializer is not constant"
    982 @@error_message[ :"T1010" ] = "$1: 初期化子は定数ではありません."
     885@@error_message[ :"T1010" ] = "$1: 初期化子は定数ではありません."
    983886
    984887# T1011 $1: need cast to assign float to integer"
    985 @@error_message[ :"T1011" ] = "$1: 浮動小数点型から整数型へ割り当てのためにキャストがå¿
    986 è¦ã§ã™ï¼Ž"
     888@@error_message[ :"T1011" ] = "$1: 浮動小数点型から整数型へ割り当てのためにキャストが必要です."
    987889
    988890# T1012 $1: $2: not integer"
    989 @@error_message[ :"T1012" ] = "$1: $2: 整数ではありません."
     891@@error_message[ :"T1012" ] = "$1: $2: 整数ではありません."
    990892
    991893# T1013 $1: too large (max=$2)"
    992 @@error_message[ :"T1013" ] = "$1: 値が大きすぎます (max=$2)"
     894@@error_message[ :"T1013" ] = "$1: 値が大きすぎます (max=$2)"
    993895
    994896# T1014 $1: too large negative value (min=-$2)"
    995 @@error_message[ :"T1014" ] = "$1: 負数の絶対値が大きすぎます.(min=-$2)"
     897@@error_message[ :"T1014" ] = "$1: 負数の絶対値が大きすぎます.(min=-$2)"
    996898
    997899# T1015 $1: negative value for unsigned"
    998 @@error_message[ :"T1015" ] = "$1: 符号無し整数型に対し負数値が使用されています."
     900@@error_message[ :"T1015" ] = "$1: 符号無し整数型に対し負数値が使用されています."
    999901
    1000902# T1016 $1: too large (max=$2)"
    1001 @@error_message[ :"T1016" ] = "$1: 値が大きすぎます.(max=$2)"
     903@@error_message[ :"T1016" ] = "$1: 値が大きすぎます.(max=$2)"
    1002904
    1003905# T1017 $1: unsuitable initializer for scalar type"
    1004 @@error_message[ :"T1017" ] = "$1: スカラー型に対する不適当な初期化子です."
     906@@error_message[ :"T1017" ] = "$1: スカラー型に対する不適当な初期化子です."
    1005907
    1006908# T1018 $1: $2: not number"
    1007 @@error_message[ :"T1018" ] = "$1: $2: 数値ではありません."
     909@@error_message[ :"T1018" ] = "$1: $2: 数値ではありません."
    1008910
    1009911# T1019 $1: initializer is not constant"
    1010 @@error_message[ :"T1019" ] = "$1: 初期化子は定数ではありません."
     912@@error_message[ :"T1019" ] = "$1: 初期化子は定数ではありません."
    1011913
    1012914# T1020 $1: unsuitable initializer for scalar type"
    1013 @@error_message[ :"T1020" ] = "$1: スカラー型に対する不適当な初期化子です."
     915@@error_message[ :"T1020" ] = "$1: スカラー型に対する不適当な初期化子です."
    1014916
    1015917# T1021 \'$1\': struct not defined"
    1016 @@error_message[ :"T1021" ] = "\'$1\': 構造体が定義されていません."
     918@@error_message[ :"T1021" ] = "\'$1\': 構造体が定義されていません."
    1017919
    1018920# T1022 struct $1: not defined"
    1019 @@error_message[ :"T1022" ] = "構造体 $1: 定義されていません."
     921@@error_message[ :"T1022" ] = "構造体 $1: 定義されていません."
    1020922
    1021923# T1023 struct $1: not defined"
    1022 @@error_message[ :"T1023" ] = "構造体 $1: 定義されていません."
     924@@error_message[ :"T1023" ] = "構造体 $1: 定義されていません."
    1023925
    1024926# T1024 $1: unsuitable initializer for struct"
    1025 @@error_message[ :"T1024" ] = "$1: 構造体に対する不適当な初期化子です."
     927@@error_message[ :"T1024" ] = "$1: 構造体に対する不適当な初期化子です."
    1026928
    1027929# T1025 size_is argument is not integer type"
    1028 @@error_message[ :"T1025" ] = "size_is 引数 は整数型ではありません."
     930@@error_message[ :"T1025" ] = "size_is 引数 は整数型ではありません."
    1029931
    1030932# T1026 count_is argument is not integer type"
    1031 @@error_message[ :"T1026" ] = "count_is 引数 は整数型ではありません."
     933@@error_message[ :"T1026" ] = "count_is 引数 は整数型ではありません."
    1032934
    1033935# T1027 string argument is not integer type"
    1034 @@error_message[ :"T1027" ] = "string 引数は整数型ではありません."
     936@@error_message[ :"T1027" ] = "string 引数は整数型ではありません."
    1035937
    1036938# T1028 $1: cannot initialize function pointer"
    1037 @@error_message[ :"T1028" ] = "$1: 関数ポインタを初期化することはできません."
     939@@error_message[ :"T1028" ] = "$1: 関数ポインタを初期化することはできません."
    1038940
    1039941# T1029 oneway function cannot return type \'$1$2\', \'void\' or \'ER\' is permitted"
    1040 @@error_message[ :"T1029" ] = "一方向関数は型 \'$1$2\' を返すことができません.\'void\' または \'ER\' が使用できます."
     942@@error_message[ :"T1029" ] = "一方向関数は型 \'$1$2\' を返すことができません.\'void\' または \'ER\' が使用できます."
    1041943
    1042944# T1030 oneway function cannot have $1 parameter for \'$2\'"
    1043 @@error_message[ :"T1030" ] = "一方向関数は \'$2\' のために $1 パラメータを持つことができません."
     945@@error_message[ :"T1030" ] = "一方向関数は \'$2\' のために $1 パラメータを持つことができません."
    1044946
    1045947# T1031 $1: unsuitable initializer for array"
    1046 @@error_message[ :"T1031" ] = "$1: é
    1047 åˆ—に対する不適当な初期化子です."
     948@@error_message[ :"T1031" ] = "$1: 配列に対する不適当な初期化子です."
    1048949
    1049950# T1032 $1: incompatible pointer type"
    1050 @@error_message[ :"T1032" ] = "$1: 互換性のないポインタ型です."
     951@@error_message[ :"T1032" ] = "$1: 互換性のないポインタ型です."
    1051952
    1052953# T1033 $1: need cast to assign integer to pointer"
    1053 @@error_message[ :"T1033" ] = "$1: 整数型をポインタへ割り当てるためにはキャストがå¿
    1054 è¦ã§ã™ï¼Ž"
     954@@error_message[ :"T1033" ] = "$1: 整数型をポインタへ割り当てるためにはキャストが必要です."
    1055955
    1056956# T1034 $1: unsuitable string constant"
    1057 @@error_message[ :"T1034" ] = "$1: 不適当な文字列定数です."
     957@@error_message[ :"T1034" ] = "$1: 不適当な文字列定数です."
    1058958
    1059959# T1035 $1: unsuitable initializer for pointer"
    1060 @@error_message[ :"T1035" ] = "$1: ポインタに対する不適当な初期化子です."
     960@@error_message[ :"T1035" ] = "$1: ポインタに対する不適当な初期化子です."
    1061961
    1062962# T1036 $1: unsuitable initializer for pointer"
    1063 @@error_message[ :"T1036" ] = "$1: ポインタに対する不適当な初期化子です."
     963@@error_message[ :"T1036" ] = "$1: ポインタに対する不適当な初期化子です."
    1064964
    1065965# T1037 $1: not number"
    1066 @@error_message[ :"T1037" ] = "$1: 数値ではありません"
     966@@error_message[ :"T1037" ] = "$1: 数値ではありません"
    1067967
    1068968# T1038 $1: initializer type mismatch. '$2' & '$3'"
    1069 @@error_message[ :"T1038" ] = "$1: 初期化子の型が一致しません. '$2' と '$3'"
     969@@error_message[ :"T1038" ] = "$1: 初期化子の型が一致しません. '$2' と '$3'"
    1070970
    1071971# T1039 $1: struct tag mismatch $2 and $3"
    1072 @@error_message[ :"T1039" ] = "$1: 構造体タグが $2 と $3 で一致しません"
     972@@error_message[ :"T1039" ] = "$1: 構造体タグが $2 と $3 で一致しません"
    1073973
    1074974# T1040 $1 specified for void pointer type"
    1075 @@error_message[ :"T1040" ] = "$1 void ポインタ型に指定されました"
     975@@error_message[ :"T1040" ] = "$1 void ポインタ型に指定されました"
    1076976
    1077977### gen_xml.rb
    1078978# T2001 fail to create XML file $1"
    1079 @@error_message[ :"T2001" ] = "XML ファイル $1 の生成に失敗しました"
     979@@error_message[ :"T2001" ] = "XML ファイル $1 の生成に失敗しました"
    1080980
    1081981# TEMPORAL set_definition_join: uninitialized array member"
    1082 @@error_message[ :"TEMPORAL" ] = "set_definition_join: é
    1083 åˆ—メンバが初期化されていません."
     982@@error_message[ :"TEMPORAL" ] = "set_definition_join: 配列メンバが初期化されていません."
    1084983
    1085984# V1001 $1: unable for $2"
     
    1087986
    1088987# V1002 $1: cannot cast to bool (implicitly)"
    1089 @@error_message[ :"V1002" ] = "$1: ブール型への(暗黙的な)キャストを行うことができません."
     988@@error_message[ :"V1002" ] = "$1: ブール型への(暗黙的な)キャストを行うことができません."
    1090989
    1091990# V1003 $1: cannot cast to integer (implicitly)"
    1092 @@error_message[ :"V1003" ] = "$1: 整数型への(暗黙的な)キャストを行うことができません."
     991@@error_message[ :"V1003" ] = "$1: 整数型への(暗黙的な)キャストを行うことができません."
    1093992
    1094993# V1004 $1: cannot cast to float (implicitly)"
    1095 @@error_message[ :"V1004" ] = "$1: 浮動小数点型への(暗黙的な)キャストを行うことができません."
     994@@error_message[ :"V1004" ] = "$1: 浮動小数点型への(暗黙的な)キャストを行うことができません."
    1096995
    1097996# V1005 Cannot cast pointer to float"
    1098 @@error_message[ :"V1005" ] = "ポインタ型を浮動小数点型へキャストを行うことができません."
     997@@error_message[ :"V1005" ] = "ポインタ型を浮動小数点型へキャストを行うことができません."
    1099998
    1100999# V1006 pointer value cannot cast to $1"
    1101 @@error_message[ :"V1006" ] = "ポインタ値は $1 へキャストを行うことができません."
     1000@@error_message[ :"V1006" ] = "ポインタ値は $1 へキャストを行うことができません."
    11021001
    11031002# V1007 convert pointer value to bool"
    1104 @@error_message[ :"V1007" ] = "ポインタ値をブール型へ変換しました."
     1003@@error_message[ :"V1007" ] = "ポインタ値をブール型へ変換しました."
    11051004
    11061005# V1008 convert pointer value to integer without cast"
    1107 @@error_message[ :"V1008" ] = "ポインタ値をキャスト無しで整数型へ変換しました."
     1006@@error_message[ :"V1008" ] = "ポインタ値をキャスト無しで整数型へ変換しました."
    11081007
    11091008# V1009 / : divieded by zero"
    1110 @@error_message[ :"V1009" ] = "/ : ゼロ除算エラーです."
     1009@@error_message[ :"V1009" ] = "/ : ゼロ除算エラーです."
    11111010
    11121011# V1010 / : divieded by zero"
    1113 @@error_message[ :"V1010" ] = "/ : ゼロ除算エラーです."
     1012@@error_message[ :"V1010" ] = "/ : ゼロ除算エラーです."
    11141013
    11151014# V1011 % : divieded by zero"
    1116 @@error_message[ :"V1011" ] = "% : ゼロ除算エラーです."
     1015@@error_message[ :"V1011" ] = "% : ゼロ除算エラーです."
    11171016
    11181017# V1012 % : divieded by zero"
    1119 @@error_message[ :"V1012" ] = "% : ゼロ除算エラーです."
     1018@@error_message[ :"V1012" ] = "% : ゼロ除算エラーです."
    11201019
    11211020# V1013 integer value cannot cast to $1"
    1122 @@error_message[ :"V1013" ] = "整数値は $1 へキャストを行うことができません."
     1021@@error_message[ :"V1013" ] = "整数値は $1 へキャストを行うことができません."
    11231022
    11241023# V1014 comparing bool value with \'$1\'"
    1125 @@error_message[ :"V1014" ] = "ブール値を \'$1\' と比較しました."
     1024@@error_message[ :"V1014" ] = "ブール値を \'$1\' と比較しました."
    11261025
    11271026# V1015 comparing bool value with \'$1\'"
    1128 @@error_message[ :"V1015" ] = "ブール値を \'$1\' と比較しました."
     1027@@error_message[ :"V1015" ] = "ブール値を \'$1\' と比較しました."
    11291028
    11301029# V1016 bool value cannot cast to $1"
    1131 @@error_message[ :"V1016" ] = "ブール値は $1 へキャストを行うことができません."
     1030@@error_message[ :"V1016" ] = "ブール値は $1 へキャストを行うことができません."
    11321031
    11331032# V1017 / : divieded by zero"
    1134 @@error_message[ :"V1017" ] = "/ : ゼロ除算エラーです."
     1033@@error_message[ :"V1017" ] = "/ : ゼロ除算エラーです."
    11351034
    11361035# V1018 % : divieded by zero"
    1137 @@error_message[ :"V1018" ] = "% : ゼロ除算エラーです."
     1036@@error_message[ :"V1018" ] = "% : ゼロ除算エラーです."
    11381037
    11391038# V1019 floating value cannot cast to $1"
    1140 @@error_message[ :"V1019" ] = "浮動小数点値は $1 へのキャストを行うことができません."
     1039@@error_message[ :"V1019" ] = "浮動小数点値は $1 へのキャストを行うことができません."
    11411040
    11421041# V1020 convert floating value to bool without cast"
    1143 @@error_message[ :"V1020" ] = "浮動小数点値をキャスト無しでブール型へ変換しました."
     1042@@error_message[ :"V1020" ] = "浮動小数点値をキャスト無しでブール型へ変換しました."
    11441043
    11451044# V1021 convert floating value to integer without cast"
    1146 @@error_message[ :"V1021" ] = "浮動小数点型をキャスト無しで整数型へ変換しました."
     1045@@error_message[ :"V1021" ] = "浮動小数点型をキャスト無しで整数型へ変換しました."
    11471046
    11481047# V1022 string cannot cast to integer"
    1149 @@error_message[ :"V1022" ] = "文字列は整数型にキャストできません"
     1048@@error_message[ :"V1022" ] = "文字列は整数型にキャストできません"
    11501049
    11511050# V1023 string cannot cast to float"
    1152 @@error_message[ :"V1023" ] = "文字列は浮動小数点型にキャストできません"
     1051@@error_message[ :"V1023" ] = "文字列は浮動小数点型にキャストできません"
    11531052
    11541053# V1024 string cannot cast to pointer"
    1155 @@error_message[ :"V1024" ] = "文字列はポインタ型にキャストできません"
     1054@@error_message[ :"V1024" ] = "文字列はポインタ型にキャストできません"
    11561055
    11571056# V1025 string cannot cast to $1"
    1158 @@error_message[ :"V1025" ] = "文字列は $1 にキャストできません"
     1057@@error_message[ :"V1025" ] = "文字列は $1 にキャストできません"
    11591058
    11601059###
    1161 # warning メッセージ
     1060# warning メッセージ
    11621061@@warning_message = {}
    11631062
    11641063### componentobj.rb
    11651064# W1001 \'$1\': unknown context type. usually specifiy task, non-task or any"
    1166 @@warning_message[ :"W1001" ] = "\'$1\': 不明なコンテキスト型です.通常 task, non-task または any を指定して下さい."
     1065@@warning_message[ :"W1001" ] = "\'$1\': 不明なコンテキスト型です.通常 task, non-task または any を指定して下さい."
    11671066
    11681067# W1002 $1: non-active celltype has no entry port & factory"
    1169 @@warning_message[ :"W1002" ] = "$1: 非アクティブなセルタイプが受け口及びファクトリを持っていません."
     1068@@warning_message[ :"W1002" ] = "$1: 非アクティブなセルタイプが受け口及びファクトリを持っていません."
    11701069
    11711070# W1003 $1 : require call port overridden in $2"
    1172 @@warning_message[ :"W1003" ] = "$1 : リクワイア呼び口が $2 でオーバーライドされました."
     1071@@warning_message[ :"W1003" ] = "$1 : リクワイア呼び口が $2 でオーバーライドされました."
    11731072
    11741073# W1004 $1 : specified singleton but has no singleton in this celltype"
     
    11761075
    11771076# W1005 $1 : idx_is_id is ineffective for composite celltype"
    1178 @@warning_message[ :"W1005" ] = "$1 : idx_is_id は複合セルタイプに対しては無効です."
     1077@@warning_message[ :"W1005" ] = "$1 : idx_is_id は複合セルタイプに対しては無効です."
    11791078
    11801079# W1006 $1 : only prototype, unused and undefined cell"
    1181 @@warning_message[ :"W1006" ] = "$1 : プロトタイプのみ,未使用,かつ未定義のセルです."
     1080@@warning_message[ :"W1006" ] = "$1 : プロトタイプのみ,未使用,かつ未定義のセルです."
    11821081
    11831082# W1007 $1 : non-active cell has no entry join and no factory"
    1184 @@warning_message[ :"W1007" ] = "$1 : 非アクティブセルに受け口の結合及びファクトリがありません."
     1083@@warning_message[ :"W1007" ] = "$1 : 非アクティブセルに受け口の結合及びファクトリがありません."
    11851084
    11861085# W1008 $1: reuse designation mismatch with previous import"
    1187 @@warning_message[ :"W1008" ] = "$1: 再使用の指示が以前のインポートのと整合しません."
     1086@@warning_message[ :"W1008" ] = "$1: 再使用の指示が以前のインポートのと整合しません."
    11881087
    11891088# "W1009 $1: fixed join entry port has multi join"
    1190 @@warning_message[ :"W1009" ] = "$1: 固定結合受け口が複数の結合を持っています."
     1089@@warning_message[ :"W1009" ] = "$1: 固定結合受け口が複数の結合を持っています."
    11911090
    11921091### types.rb
    11931092# W2001 signed int$1_t: obsolete. use int$2_t"
    1194 @@warning_message[ :"W2001" ] = "signed int$1_t: 推奨されません.int$2_t をお使いください."
     1093@@warning_message[ :"W2001" ] = "signed int$1_t: 推奨されません.int$2_t をお使いください."
    11951094
    11961095# W2002 unsinged int$1_t: obsolete. use uint$2_t"
    1197 @@warning_message[ :"W2002" ] = "unsinged int$1_t: 推奨されません.uint$2_t をお使いください."
     1096@@warning_message[ :"W2002" ] = "unsinged int$1_t: 推奨されません.uint$2_t をお使いください."
    11981097
    11991098# W2003 $1: too large to cast to $2, clipped($3)"
    1200 @@warning_message[ :"W2003" ] = "$1: $2 へキャストするのに大きすぎます.切り詰めました($3)"
     1099@@warning_message[ :"W2003" ] = "$1: $2 へキャストするのに大きすぎます.切り詰めました($3)"
    12011100
    12021101# W2004 $1: too small to cast to $2, clipped($3)"
    1203 @@warning_message[ :"W2004" ] = "$1: $2 へキャストするのに小さすぎます.切り詰めました($3)"
     1102@@warning_message[ :"W2004" ] = "$1: $2 へキャストするのに小さすぎます.切り詰めました($3)"
    12041103
    12051104# W2005 $1: negative value for unsigned: convert to $2"
    1206 @@warning_message[ :"W2005" ] = "$1: 符号無し整数型に対して負数値です : $2 へ変換しました."
     1105@@warning_message[ :"W2005" ] = "$1: 符号無し整数型に対して負数値です : $2 へ変換しました."
    12071106
    12081107### syntaxobj.rb
    12091108# W3001 $1: duplicate"
    1210 @@warning_message[ :"W3001" ] = "$1: 重複しています."
     1109@@warning_message[ :"W3001" ] = "$1: 重複しています."
    12111110
    12121111# W3002 $1: this string might cause buffer over run"
    1213 @@warning_message[ :"W3002" ] = "$1: この文字列はバッファーオーバーランを引き起こすかもしれません."
     1112@@warning_message[ :"W3002" ] = "$1: この文字列はバッファーオーバーランを引き起こすかもしれません."
    12141113
    12151114# W3003 $1 pointer level mismatch"
    1216 @@warning_message[ :"W3003" ] = "$1 ポインターレベルの不整合です."
     1115@@warning_message[ :"W3003" ] = "$1 ポインターレベルの不整合です."
    12171116
    12181117# W3004 $1 pointer type has returned. specify deviate or stop return pointer"
    1219 @@error_message[ :"W3004" ] = "$1 ポインタ型が返されました。deviate を指定するかポインタを返すのを止めてください"
     1118@@error_message[ :"W3004" ] = "$1 ポインタ型が返されました。deviate を指定するかポインタを返すのを止めてください"
    12201119
    12211120# W3005 '$1' size_is always lower than max. max is ignored"
    1222 @@error_message[ :"W3005" ] = "'$1' size_is は常に max より小さい. max は無視されます"
     1121@@error_message[ :"W3005" ] = "'$1' size_is は常に max より小さい. max は無視されます"
    12231122
    12241123### bnf.y.rb
    12251124# W5001 bool: obsolete type. use bool_t"
    1226 @@warning_message[ :"W5001" ] = "bool: 推奨されないデータ型です.bool_t をお使いください."
     1125@@warning_message[ :"W5001" ] = "bool: 推奨されないデータ型です.bool_t をお使いください."
    12271126
    12281127# W5002 float: obsolete type. use float32_t"
    1229 @@warning_message[ :"W5002" ] = "float: 推奨されないデータ型です.float32_t をお使いください."
     1128@@warning_message[ :"W5002" ] = "float: 推奨されないデータ型です.float32_t をお使いください."
    12301129
    12311130# W5003 double: obsolete type. use double64_t"
    1232 @@warning_message[ :"W5003" ] = "double: 推奨されないデータ型です.double64_t をお使いください."
     1131@@warning_message[ :"W5003" ] = "double: 推奨されないデータ型です.double64_t をお使いください."
    12331132
    12341133# W5004 char: obsolete type. use char_t"
    1235 @@warning_message[ :"W5004" ] = "char: 推奨されないデータ型です.char_t をお使いください."
     1134@@warning_message[ :"W5004" ] = "char: 推奨されないデータ型です.char_t をお使いください."
    12361135
    12371136# W5005 int8: obsolete. use int8_t"
    1238 @@warning_message[ :"W5005" ] = "int8: 推奨されません.int8_t をお使いください."
     1137@@warning_message[ :"W5005" ] = "int8: 推奨されません.int8_t をお使いください."
    12391138
    12401139# W5006 int16: obsolete. use int16_t"
    1241 @@warning_message[ :"W5006" ] = "int16: 推奨されません.int16_t をお使いください."
     1140@@warning_message[ :"W5006" ] = "int16: 推奨されません.int16_t をお使いください."
    12421141
    12431142# W5007 int32: obsolete. use int32_t"
    1244 @@warning_message[ :"W5007" ] = "int32: 推奨されません.int32_t をお使いください."
     1143@@warning_message[ :"W5007" ] = "int32: 推奨されません.int32_t をお使いください."
    12451144
    12461145# W5008 int64: obsolete. use int64_t"
    1247 @@warning_message[ :"W5008" ] = "int64: 推奨されません.int64_t をお使いください."
     1146@@warning_message[ :"W5008" ] = "int64: 推奨されません.int64_t をお使いください."
    12481147
    12491148# W5009 int64: obsolete. use int64_t"
    1250 @@warning_message[ :"W5009" ] = "int64: 推奨されません.int64_t をお使いください."
     1149@@warning_message[ :"W5009" ] = "int64: 推奨されません.int64_t をお使いください."
    12511150
    12521151# W5010 need 'void' for no parameter"
    1253 @@warning_message[ :"W5010" ] = "パラメータが存在しない場合 'void' がå¿
    1254 è¦ã§ã™"
     1152@@warning_message[ :"W5010" ] = "パラメータが存在しない場合 'void' が必要です"
    12551153
    12561154# W5011 need 'void' for no parameter"
    1257 @@warning_message[ :"W5011" ] = "パラメータが存在しない場合 'void' がå¿
    1258 è¦ã§ã™"
     1155@@warning_message[ :"W5011" ] = "パラメータが存在しない場合 'void' が必要です"
    12591156
    12601157### C_parser.y.rb
    12611158# W6001 need 'void' for no parameter"
    1262 @@warning_message[ :"W6001" ] = "パラメータが存在しない場合 'void' がå¿
    1263 è¦ã§ã™"
     1159@@warning_message[ :"W6001" ] = "パラメータが存在しない場合 'void' が必要です"
    12641160
    12651161# W6002 need 'void' for no parameter"
    1266 @@warning_message[ :"W6002" ] = "パラメータが存在しない場合 'void' がå¿
    1267 è¦ã§ã™"
     1162@@warning_message[ :"W6002" ] = "パラメータが存在しない場合 'void' が必要です"
    12681163
    12691164# W6003 need 'void' for no parameter"
    1270 @@warning_message[ :"W6003" ] = "パラメータが存在しない場合 'void' がå¿
    1271 è¦ã§ã™"
     1165@@warning_message[ :"W6003" ] = "パラメータが存在しない場合 'void' が必要です"
    12721166
    12731167# W6004 need 'void' for no parameter"
    1274 @@warning_message[ :"W6004" ] = "パラメータが存在しない場合 'void' がå¿
    1275 è¦ã§ã™"
     1168@@warning_message[ :"W6004" ] = "パラメータが存在しない場合 'void' が必要です"
    12761169
    12771170###
    1278 # info メッセージ
     1171# info メッセージ
    12791172@@info_message = {}
    12801173
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/messages/messages_file_en_US.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2018 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$
     
    6247
    6348# MSg.note
    64 # @@comment[ :note ] = " * このファイルは tecsgen により自動生成されました
    65 #  * このファイルを編集して使用することは、意図されていません
     49# @@comment[ :note ] = " * このファイルは tecsgen により自動生成されました
     50#  * このファイルを編集して使用することは、意図されていません
    6651# "
    6752@@comment[ :note ] = " * This file was automatically generated by tecsgen.
     
    7055
    7156# @@comment[ :preamble_note ] = "/* #[<PREAMBLE>]#
    72 #  * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
    73 #  * tecsmerge によるマージに使用されます
     57#  * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
     58#  * tecsmerge によるマージに使用されます
    7459# "
    7560@@comment[ :preamble_note ] = "/* #[<PREAMBLE>]#
     
    7964
    8065# @@comment[ :postamble_note ] = "/* #[<POSTAMBLE>]#
    81 #  *   ã“れより下に非受け口関数を書きます
     66#  *   これより下に非受け口関数を書きます
    8267#  * #[</POSTAMBLE>]#*/
    8368# "
     
    8873
    8974# @@comment[ :template_note ] = "/*
    90 #  * このファイルは tecsgen によりテンプレートとして自動生成されました
    91 #  * このファイルを編集して使用することが意図されていますが
    92 #  * tecsgen の再実行により上書きされてしまうため、通常
     75#  * このファイルは tecsgen によりテンプレートとして自動生成されました
     76#  * このファイルを編集して使用することが意図されていますが
     77#  * tecsgen の再実行により上書きされてしまうため、通常
    9378#  *   gen/%s_templ.c => src/%s.c
    94 #  * のように名前, フォルダを変更してから修正します
     79#  * のように名前, フォルダを変更してから修正します
    9580#  */
    9681# "
     
    10489
    10590# @@comment[ :inline_template_note ] = "/*
    106 #  * このファイルは tecsgen によりテンプレートとして自動生成されました
    107 #  * このファイルを編集して使用することが意図されていますが
    108 #  * tecsgen の再実行により上書きされてしまうため、通常
     91#  * このファイルは tecsgen によりテンプレートとして自動生成されました
     92#  * このファイルを編集して使用することが意図されていますが
     93#  * tecsgen の再実行により上書きされてしまうため、通常
    10994#  *   gen/%s_inline_template.h => src/%s_inline.h
    110 #  * のように名前, フォルダを変更してから修正します
     95#  * のように名前, フォルダを変更してから修正します
    11196#  */
    11297# "
     
    119104"
    120105
    121 # @@comment[ :Makefile_note ] = "# このファイルは tecsgen により自動生成されました
    122 # # Makefile.temp は gen の一つ上のディレクトリに移して使用します
     106# @@comment[ :Makefile_note ] = "# このファイルは tecsgen により自動生成されました
     107# # Makefile.temp は gen の一つ上のディレクトリに移して使用します
    123108# #  % mv Makefile.temp Makefile
    124109# #
    125 # # clean のデフォルト動作は $(GEN_DIR)/Makefile.* を削除します
     110# # clean のデフォルト動作は $(GEN_DIR)/Makefile.* を削除します
    126111#
    127112# "
     
    138123"
    139124
    140 # @@comment[ :oneway_ercd_note ] = "/* oneway の場合 E_OK しか返せません */"
     125# @@comment[ :oneway_ercd_note ] = "/* oneway の場合 E_OK しか返せません */"
    141126@@comment[ :oneway_ercd_note ] = "/* Oneway function always returns E_OK. */"
    142127
    143 # @@comment[ :ercd_note ] = "/* エラー処理コードをここに記述します */"
     128# @@comment[ :ercd_note ] = "/* エラー処理コードをここに記述します */"
    144129@@comment[ :ercd_note ] = "/* Write error processing code here */"
    145130
    146 # @@comment[ :IMP_comment ] = "\n/* import_C により import されるヘッダ %s */\n"
     131# @@comment[ :IMP_comment ] = "\n/* import_C により import されるヘッダ %s */\n"
    147132@@comment[ :IMP_comment ] = "\n/* header imported by import_C %s */\n"
    148133
    149 # @@comment[ :MVAR_comment ] = "# 変数 %s\n"
     134# @@comment[ :MVAR_comment ] = "# 変数 %s\n"
    150135@@comment[ :MVAR_comment ] = "# var %s\n"
    151136
    152 # @@comment[ :MRUL_comment ] = "# ルール %s\n"
     137# @@comment[ :MRUL_comment ] = "# ルール %s\n"
    153138@@comment[ :MRUL_comment ] = "# Rule %s\n"
    154139
    155 # @@comment[ :TCM_comment ] = "# テンプレートコードでメークしてみる場合 %s\n"
     140# @@comment[ :TCM_comment ] = "# テンプレートコードでメークしてみる場合 %s\n"
    156141@@comment[ :TCM_comment ] = "# in case build with template code %s\n"
    157142
    158 # @@comment[ :MDEP_comment ] = "\n# depend を include %s\n"
     143# @@comment[ :MDEP_comment ] = "\n# depend include %s\n"
    159144@@comment[ :MDEP_comment ] = "\n# include dependcy %s\n"
    160145
    161 # @@comment[ :SDI_comment ] = "/* シグニチャディスクリプタ参ç
    162 §ãƒ˜ãƒƒãƒ€ %s */\n"
     146# @@comment[ :SDI_comment ] = "/* シグニチャディスクリプタ参照ヘッダ %s */\n"
    163147@@comment[ :SDI_comment ] = "/* descriptor referencing signature header %s */\n"
    164148
    165 # @@comment[ :SD_comment ] = "/* シグニチャディスクリプタ %s */\n"
     149# @@comment[ :SD_comment ] = "/* シグニチャディスクリプタ %s */\n"
    166150@@comment[ :SD_comment ] = "/* signature descriptor %s */\n"
    167151
    168 # @@comment[ :SFT_comment ] = "/* シグニチャ関数テーブル %s */\n"
     152# @@comment[ :SFT_comment ] = "/* シグニチャ関数テーブル %s */\n"
    169153@@comment[ :SFT_comment ] = "/* signature function table %s */\n"
    170154
    171 # @@comment[ :SDES_comment ] = "/* シグニチャディスクリプタ(動的結合用) %s */\n"
     155# @@comment[ :SDES_comment ] = "/* シグニチャディスクリプタ(動的結合用) %s */\n"
    172156@@comment[ :SDES_comment ] = "/* signature descriptor %s for dynamic join */\n"
    173157
    174 # @@comment[ :IRTH_comment ] = "/* ランタイムヘッダ %s */\n"
    175 
    176 # @@comment[ :UDF_comment ] = "/* inline のための undef %s */\n"
     158# @@comment[ :IRTH_comment ] = "/* ランタイムヘッダ %s */\n"
     159
     160# @@comment[ :UDF_comment ] = "/* inline のための undef %s */\n"
    177161@@comment[ :UDF_comment ] = "/* undef for inline %s */\n"
    178162
    179 # @@comment[ :IGH_comment ] = "/* グローバルヘッダ %s */\n"
     163# @@comment[ :IGH_comment ] = "/* グローバルヘッダ %s */\n"
    180164@@comment[ :IGH_comment ] = "/* global header %s */\n"
    181165
    182 # @@comment[ :ISH_comment ] = "/* シグニチャヘッダ %s */\n"
     166# @@comment[ :ISH_comment ] = "/* シグニチャヘッダ %s */\n"
    183167@@comment[ :ISH_comment ] = "/* signature header %s */\n"
    184168
    185 # @@comment[ :ICT_comment ] = "/* 最適化のため参ç
    186 §ã™ã‚‹ã‚»ãƒ«ã‚¿ã‚¤ãƒ—の CB 型の定義を取込む %s */\n"
     169# @@comment[ :ICT_comment ] = "/* 最適化のため参照するセルタイプの CB 型の定義を取込む %s */\n"
    187170@@comment[ :ICT_comment ] = "/* to get the definition of CB type of referenced celltype for optimization %s */\n"
    188171
    189 # @@comment[ :NIDB_comment ] = "ID のベース "
     172# @@comment[ :NIDB_comment ] = "ID のベース "
    190173@@comment[ :NIDB_comment ] = "ID Base "
    191174
    192 # @@comment[ :NCEL_comment ] = "セルの個数"
     175# @@comment[ :NCEL_comment ] = "セルの個数"
    193176@@comment[ :NCEL_comment ] = " number of cells"
    194177
    195 # @@comment[ :CVI_comment ] = "/* IDXの正当性チェックマクロ %s */\n"
     178# @@comment[ :CVI_comment ] = "/* IDXの正当性チェックマクロ %s */\n"
    196179@@comment[ :CVI_comment ] = "/* IDX validation macro %s */\n"
    197180
    198 # @@comment[ :CVIA_comment ] = "/* IDXの正当性チェックマクロ(短縮形) %s */\n"
     181# @@comment[ :CVIA_comment ] = "/* IDXの正当性チェックマクロ(短縮形) %s */\n"
    199182@@comment[ :CVIA_comment ] = "/* IDX validation macro (abbrev.) %s */\n"
    200183
    201 # @@comment[ :NCPA_comment ] = "/* 呼び口é
    202 åˆ—の大きさを得るマクロ %s */\n"
     184# @@comment[ :NCPA_comment ] = "/* 呼び口配列の大きさを得るマクロ %s */\n"
    203185@@comment[ :NCPA_comment ] = "/* call port array size macro %s */\n"
    204186
    205 # @@comment[ :NEPA_comment ] = "/* 受け口é
    206 åˆ—の大きさを得るマクロ %s */\n"
     187# @@comment[ :NEPA_comment ] = "/* 受け口配列の大きさを得るマクロ %s */\n"
    207188@@comment[ :NEPA_comment ] = "/* entry port array size macro %s */\n"
    208189
    209 # @@comment[ :TOCP_comment ] = "/* optional 呼び口をテストするマクロ %s */\n"
     190# @@comment[ :TOCP_comment ] = "/* optional 呼び口をテストするマクロ %s */\n"
    210191@@comment[ :TOCP_comment ] = "/* optional call port test macro %s */\n"
    211192
    212 # @@comment[ :TOCPA_comment ] = "/* optional 呼び口をテストするマクロ(短縮形) %s */\n"
     193# @@comment[ :TOCPA_comment ] = "/* optional 呼び口をテストするマクロ(短縮形) %s */\n"
    213194@@comment[ :TOCPA_comment ] = "/* optional call port test macro (abbrev) %s */\n"
    214195
    215 # @@comment[ :GCB_comment ] = "\n/* セルCBを得るマクロ %s */\n"
     196# @@comment[ :GCB_comment ] = "\n/* セルCBを得るマクロ %s */\n"
    216197@@comment[ :GCB_comment ] = "\n/* celll CB macro %s */\n"
    217198
    218 # @@comment[ :GCBA_comment ] = "\n/* セルCBを得るマクロ(短縮形) %s */\n"
     199# @@comment[ :GCBA_comment ] = "\n/* セルCBを得るマクロ(短縮形) %s */\n"
    219200@@comment[ :GCBA_comment ] = "\n/* cell CB macro (abbrev) %s */\n"
    220201
    221 # @@comment[ :CCT_comment ] = "/* CELLCB 型(短縮形) %s */\n"
     202# @@comment[ :CCT_comment ] = "/* CELLCB 型(短縮形) %s */\n"
    222203@@comment[ :CCT_comment ] = "/* CELLCB type (abbrev) %s */\n"
    223204
    224 # @@comment[ :CTIXA_comment ] = "/* セルタイプのIDX型(短縮形) %s */\n"
     205# @@comment[ :CTIXA_comment ] = "/* セルタイプのIDX型(短縮形) %s */\n"
    225206@@comment[ :CTIXA_comment ] = "/* celltype IDX type (abbrev) %s */\n"
    226207
    227 # @@comment[ :AAM_comment ] = "\n/* 属性アクセスマクロ %s */\n"
     208# @@comment[ :AAM_comment ] = "\n/* 属性アクセスマクロ %s */\n"
    228209@@comment[ :AAM_comment ] = "\n/* attr access  %s */\n"
    229210
    230 # @@comment[ :VAM_comment ] = "\n/* var アクセスマクロ %s */\n"
     211# @@comment[ :VAM_comment ] = "\n/* var アクセスマクロ %s */\n"
    231212@@comment[ :VAM_comment ] = "\n/* var access macro %s */\n"
    232213
    233 # @@comment[ :AAMA_comment ] = "\n/* 属性アクセスマクロ(短縮形) %s */\n"
     214# @@comment[ :AAMA_comment ] = "\n/* 属性アクセスマクロ(短縮形) %s */\n"
    234215@@comment[ :AAMA_comment ] = "\n/* attr access macro (abbrev) %s */\n"
    235216
    236 # @@comment[ :VAMA_comment ] = "\n/* var アクセスマクロ(短縮形) %s */\n"
     217# @@comment[ :VAMA_comment ] = "\n/* var アクセスマクロ(短縮形) %s */\n"
    237218@@comment[ :VAMA_comment ] = "\n/* var access macro (abbrev) %s */\n"
    238219
    239 # @@comment[ :CPM_comment ] = " /* 呼び口関数マクロ %s */\n"
     220# @@comment[ :CPM_comment ] = " /* 呼び口関数マクロ %s */\n"
    240221@@comment[ :CPM_comment ] = " /* call port function macro %s */\n"
    241222
    242 # @@comment[ :CPMA_comment ] = "/* 呼び口関数マクロ(短縮形)%s */\n"
     223# @@comment[ :CPMA_comment ] = "/* 呼び口関数マクロ(短縮形)%s */\n"
    243224@@comment[ :CPMA_comment ] = "/* call port function macro (abbrev) %s */\n"
    244225
    245 # @@comment[ :EPM_comment ] = "\n/* 受け口関数マクロ(短縮形) %s */\n"
     226# @@comment[ :EPM_comment ] = "\n/* 受け口関数マクロ(短縮形) %s */\n"
    246227@@comment[ :EPM_comment ] = "\n/* entry port function macro (abbrev) %s */\n"
    247228
    248 # @@comment[ :CRD_comment ] = "\n/* ディスクリプタ参ç
    249 §é–¢æ•° %s */\n"
     229# @@comment[ :CRD_comment ] = "\n/* ディスクリプタ参照関数 %s */\n"
    250230@@comment[ :CRD_comment ] = "/* refer to descriptor function %s */\n"
    251231
    252 # @@comment[ :CRDA_comment ] = "\n/* ディスクリプタ参ç
    253 §ãƒžã‚¯ãƒ­ï¼ˆçŸ­ç¸®å½¢ï¼‰ %s */\n"
     232# @@comment[ :CRDA_comment ] = "\n/* ディスクリプタ参照マクロ(短縮形) %s */\n"
    254233@@comment[ :CRDA_comment ] = "\n/* refer to descriptor macro (abbrev) %s */\n"
    255234
    256 # @@comment[ :SDF_comment ] = "/* ディスクリプタ設定関数 %s */\n"
     235# @@comment[ :SDF_comment ] = "/* ディスクリプタ設定関数 %s */\n"
    257236@@comment[ :SDF_comment ] = "/* set descriptor function %s */\n"
    258237
    259 # @@comment[ :SDMA_comment ] = "\n/* ディスクリプタ設定マクロ(短縮形) %s */\n"
     238# @@comment[ :SDMA_comment ] = "\n/* ディスクリプタ設定マクロ(短縮形) %s */\n"
    260239@@comment[ :SDMA_comment ] = "\n/* set descriptor macro (abbrev) %s */\n"
    261240
    262 # @@comment[ :CTIX_comment ] = "\n/* セルタイプのIDX型 %s */\n"
     241# @@comment[ :CTIX_comment ] = "\n/* セルタイプのIDX型 %s */\n"
    263242@@comment[ :CTIX_comment ] = "\n/* celltype IDX type %s */\n"
    264243
    265 # @@comment[ :EPP_comment ] = "\n/* 受け口関数プロトタイプ宣言 %s */\n"
     244# @@comment[ :EPP_comment ] = "\n/* 受け口関数プロトタイプ宣言 %s */\n"
    266245@@comment[ :EPP_comment ] = "\n/* prototype declaration of entry port function %s */\n"
    267246
    268 # @@comment[ :EPSP_comment ] = "\n/* 受け口スケルトン関数プロトタイプ宣言(VMT不要最適化により参ç
    269 §ã™ã‚‹ã‚‚の) %s */\n"
     247# @@comment[ :EPSP_comment ] = "\n/* 受け口スケルトン関数プロトタイプ宣言(VMT不要最適化により参照するもの) %s */\n"
    270248@@comment[ :EPSP_comment ] = "\n/* prototype declaration of entry port function (referenced when VMT useless optimise enabled) %s */\n"
    271249
    272 # @@comment[ :INL_comment ] = "/* inline ヘッダの include %s */\n"
     250# @@comment[ :INL_comment ] = "/* inline ヘッダの include %s */\n"
    273251@@comment[ :INL_comment ] = "/*  include inline header %s */\n"
    274252
    275 # @@comment[ :CIP_comment ] = "/* セル INIB 型宣言 %s */\n"
     253# @@comment[ :CIP_comment ] = "/* セル INIB 型宣言 %s */\n"
    276254@@comment[ :CIP_comment ] = "/* cell INIB type definition %s */\n"
    277255
    278 # @@comment[ :CCTPA_comment ] = "/* セル CB 型宣言 %s */\n"
     256# @@comment[ :CCTPA_comment ] = "/* セル CB 型宣言 %s */\n"
    279257@@comment[ :CCTPA_comment ] = "/* cell CB type definition %s */\n"
    280258
    281 # @@comment[ :CCDP_comment ] = "/* セル CB (ダミー)型宣言 %s */\n"
     259# @@comment[ :CCDP_comment ] = "/* セル CB (ダミー)型宣言 %s */\n"
    282260@@comment[ :CCDP_comment ] = "/* cell CB (dummy) type definition %s */\n"
    283261
    284 # @@comment[ :CCTPO_comment ] = "/* セル CB 型宣言 %s */\n"
     262# @@comment[ :CCTPO_comment ] = "/* セル CB 型宣言 %s */\n"
    285263@@comment[ :CCTPO_comment ] = "/* cell CB type definition %s */\n"
    286264
    287 # @@comment[ :SCP_comment ] = "/* シングルトンセル CB プロトタイプ宣言 %s */\n"
     265# @@comment[ :SCP_comment ] = "/* シングルトンセル CB プロトタイプ宣言 %s */\n"
    288266@@comment[ :SCP_comment ] = "/* singleton cell CB prototype declaration %s */\n"
    289267
    290 # @@comment[ :DCI_comment ] = "\n/* CB は存在しない。INIB を CB の代わりに使用するための define %s */\n"
     268# @@comment[ :DCI_comment ] = "\n/* CB は存在しない。INIB を CB の代わりに使用するための define %s */\n"
    291269@@comment[ :DCI_comment ] = "\n/* CB not exist. CB corresponding to INIB %s */\n"
    292270
    293 # @@comment[ :FEC_comment ] = "/* イテレータコード (FOREACH_CELL)の生成 %s */\n"
     271# @@comment[ :FEC_comment ] = "/* イテレータコード (FOREACH_CELL)の生成 %s */\n"
    294272@@comment[ :FEC_comment ] = "/* iteration code (FOREACH_CELL) %s */\n"
    295273
    296 # @@comment[ :DAL_comment ] = "/* deallocate マクロ %s */\n"
     274# @@comment[ :DAL_comment ] = "/* deallocate マクロ %s */\n"
    297275@@comment[ :DAL_comment ] = "/* deallocate macro %s */\n"
    298276
    299 # @@comment[ :NFEC_comment ] = "/* イテレータコード (FOREACH_CELL)の生成(CB,INIB は存在しない) %s */\n"
     277# @@comment[ :NFEC_comment ] = "/* イテレータコード (FOREACH_CELL)の生成(CB,INIB は存在しない) %s */\n"
    300278@@comment[ :NFEC_comment ] = "/* iteration code (FOREACH_CELL) (niether CB, nor NIB exit) %s */\n"
    301279
    302 # @@comment[ :CIM_comment ] = "/* CB 初期化マクロ %s */\n"
     280# @@comment[ :CIM_comment ] = "/* CB 初期化マクロ %s */\n"
    303281@@comment[ :CIM_comment ] = "/* CB initialize macro %s */\n"
    304282
    305 # @@comment[ :EDT_comment ] = "/* 受け口ディスクリプタ型 %s */\n"
     283# @@comment[ :EDT_comment ] = "/* 受け口ディスクリプタ型 %s */\n"
    306284@@comment[ :EDT_comment ] = "/* entry port descriptor type %s */\n"
    307285
    308 # @@comment[ :EPSF_comment ] = "/* 受け口スケルトン関数 %s */\n"
     286# @@comment[ :EPSF_comment ] = "/* 受け口スケルトン関数 %s */\n"
    309287@@comment[ :EPSF_comment ] = "/* entry port skelton function %s */\n"
    310288
    311 # @@comment[ :EPSFT_comment ] = "/* 受け口スケルトン関数テーブル %s */\n"
     289# @@comment[ :EPSFT_comment ] = "/* 受け口スケルトン関数テーブル %s */\n"
    312290@@comment[ :EPSFT_comment ] = "/* entry port skelton function table %s */\n"
    313291
    314 # @@comment[ :CPEPD_comment ] = "/* 呼び口の参ç
    315 §ã™ã‚‹å—け口ディスクリプタ(実際の型と相違した定義) %s */\n"
     292# @@comment[ :CPEPD_comment ] = "/* 呼び口の参照する受け口ディスクリプタ(実際の型と相違した定義) %s */\n"
    316293@@comment[ :CPEPD_comment ] = "/* entry port descriptor referenced by call port (differ from actual definition) %s */\n"
    317294
    318 # @@comment[ :CPA_comment ] = "/* 呼び口é
    319 åˆ— %s */\n"
     295# @@comment[ :CPA_comment ] = "/* 呼び口配列 %s */\n"
    320296@@comment[ :CPA_comment ] = "/* call port array %s */\n"
    321297
    322 # @@comment[ :CIC_comment ] = "/* CB 初期化コード %s */\n"
     298# @@comment[ :CIC_comment ] = "/* CB 初期化コード %s */\n"
    323299@@comment[ :CIC_comment ] = "/* CB initialize code %s */\n"
    324300
    325 # @@comment[ :AVAI_comment ] = "/* 属性・変数のé
    326 åˆ— %s */\n"
     301# @@comment[ :AVAI_comment ] = "/* 属性・変数の配列 %s */\n"
    327302@@comment[ :AVAI_comment ] = "/* array of attr/var %s */\n"
    328303
    329 # @@comment[ :AVI_comment ] = "/* 変数(構造体、é
    330 åˆ—)初期値 %s */\n"
     304# @@comment[ :AVI_comment ] = "/* 変数(構造体、配列)初期値 %s */\n"
    331305@@comment[ :AVI_comment ] = "/* var (struct, array) initial value %s */\n"
    332306
    333 # @@comment[ :INIB_comment ] = "/* セル INIB %s */\n"
     307# @@comment[ :INIB_comment ] = "/* セル INIB %s */\n"
    334308@@comment[ :INIB_comment ] = "/* cell INIB %s */\n"
    335309
    336 # @@comment[ :CB_comment ] = "/* セル CB %s */\n"
     310# @@comment[ :CB_comment ] = "/* セル CB %s */\n"
    337311@@comment[ :CB_comment ] = "/* cell CB %s */\n"
    338312
    339 # @@comment[ :EPD_comment ] = "/* 受け口ディスクリプタ %s */\n"
     313# @@comment[ :EPD_comment ] = "/* 受け口ディスクリプタ %s */\n"
    340314@@comment[ :EPD_comment ] = "/* entry port descriptor %s */\n"
    341315
    342 # @@comment[ :PAC_comment ] = "/* プロトタイプ宣言や変数の定義をここに書きます %s */\n"
     316# @@comment[ :PAC_comment ] = "/* プロトタイプ宣言や変数の定義をここに書きます %s */\n"
    343317@@comment[ :PAC_comment ] = "/* Put prototype declaration and/or variale definition here %s */\n"
    344318
    345 # @@comment[ :CAAM_comment ] = " *\n * 属性アクセスマクロ %s\n"
     319# @@comment[ :CAAM_comment ] = " *\n * 属性アクセスマクロ %s\n"
    346320@@comment[ :CAAM_comment ] = " *\n * attr access macro %s\n"
    347321
    348 # @@comment[ :CAAMI_comment ] = " *\n * 属性アクセスマクロ %s\n"
     322# @@comment[ :CAAMI_comment ] = " *\n * 属性アクセスマクロ %s\n"
    349323@@comment[ :CAAMI_comment ] = " *\n * attr access macro %s\n"
    350324
    351 # @@comment[ :TYP_comment ] = " *\n * 型 %s\n * CELLCB 型  : %s\n * CELLIDX 型 : %s\n"
     325# @@comment[ :TYP_comment ] = " *\n * 型 %s\n * CELLCB 型  : %s\n * CELLIDX 型 : %s\n"
    352326@@comment[ :TYP_comment ] = " *\n * type %s\n * CELLCB type  : %s\n * CELLIDX type : %s\n"
    353327
    354 # @@comment[ :TCPF_comment ] = " * 呼び口関数 %s\n"
     328# @@comment[ :TCPF_comment ] = " * 呼び口関数 %s\n"
    355329@@comment[ :TCPF_comment ] = " * call port function %s\n"
    356330
    357 # @@comment[ :TEPF_comment ] = "/* 受け口関数 %s */\n"
     331# @@comment[ :TEPF_comment ] = "/* 受け口関数 %s */\n"
    358332@@comment[ :TEPF_comment ] = "/* entry port function %s */\n"
    359333
    360 # @@comment[ :TEFB_comment ] = "\t/* ここに処理本体を記述します %s */\n"
     334# @@comment[ :TEFB_comment ] = "\t/* ここに処理本体を記述します %s */\n"
    361335@@comment[ :TEFB_comment ] = "\t/* Put statements here %s */\n"
    362336
    363 # @@comment[ :MCPP_comment ] = "/* セル CB プロトタイプ宣言 %s */\n"
     337# @@comment[ :MCPP_comment ] = "/* セル CB プロトタイプ宣言 %s */\n"
    364338@@comment[ :MCPP_comment ] = "/* cell CB prototype declaration %s */\n"
    365339
    366 # @@comment[ :MCPB_comment ] = "/* セル CB プロトタイプ宣言 %s */\n"
     340# @@comment[ :MCPB_comment ] = "/* セル CB プロトタイプ宣言 %s */\n"
    367341@@comment[ :MCPB_comment ] = "/* cell CB prototype declaration %s */\n"
    368342end
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/messages/messages_file_ja_JP.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2018 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$
     
    6247
    6348# MSg.note
    64 @@comment[ :note ] = " * このファイルは tecsgen により自動生成されました
    65  * このファイルを編集して使用することは、意図されていません
     49@@comment[ :note ] = " * このファイルは tecsgen により自動生成されました
     50 * このファイルを編集して使用することは、意図されていません
    6651"
    6752
    6853@@comment[ :preamble_note ] = "/* #[<PREAMBLE>]#
    69  * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
    70  * tecsmerge によるマージに使用されます
     54 * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
     55 * tecsmerge によるマージに使用されます
    7156"
    7257
    7358@@comment[ :postamble_note ] = "/* #[<POSTAMBLE>]#
    74  *   ã“れより下に非受け口関数を書きます
     59 *   これより下に非受け口関数を書きます
    7560 * #[</POSTAMBLE>]#*/
    7661"
    7762
    7863@@comment[ :template_note ] = "/*
    79  * このファイルは tecsgen によりテンプレートとして自動生成されました
    80  * このファイルを編集して使用することが意図されていますが
    81  * tecsgen の再実行により上書きされてしまうため、通常
     64 * このファイルは tecsgen によりテンプレートとして自動生成されました
     65 * このファイルを編集して使用することが意図されていますが
     66 * tecsgen の再実行により上書きされてしまうため、通常
    8267 *   gen/%s_templ.c => src/%s.c
    83  * のように名前, フォルダを変更してから修正します
     68 * のように名前, フォルダを変更してから修正します
    8469 */
    8570"
    8671
    8772@@comment[ :inline_template_note ] = "/*
    88  * このファイルは tecsgen によりテンプレートとして自動生成されました
    89  * このファイルを編集して使用することが意図されていますが
    90  * tecsgen の再実行により上書きされてしまうため、通常
     73 * このファイルは tecsgen によりテンプレートとして自動生成されました
     74 * このファイルを編集して使用することが意図されていますが
     75 * tecsgen の再実行により上書きされてしまうため、通常
    9176 *   gen/%s_inline_template.h => src/%s_inline.h
    92  * のように名前, フォルダを変更してから修正します
     77 * のように名前, フォルダを変更してから修正します
    9378 */
    9479"
    9580
    96 @@comment[ :Makefile_note ] = "# このファイルは tecsgen により自動生成されました
    97 # Makefile.temp は gen の一つ上のディレクトリに移して使用します
     81@@comment[ :Makefile_note ] = "# このファイルは tecsgen により自動生成されました
     82# Makefile.temp は gen の一つ上のディレクトリに移して使用します
    9883#  % mv Makefile.temp Makefile
    9984#
    100 # clean のデフォルト動作は $(GEN_DIR)/Makefile.* を削除します
     85# clean のデフォルト動作は $(GEN_DIR)/Makefile.* を削除します
    10186#
    102 # このファイルは GNU make で gcc を用い POSIX 環境で動作するモジュールをビルドするのに適切なように生成されています
    103 # vpath, CFLAGS, OTHER_OBJS などを調整するå¿
    104 è¦ãŒã‚るかもしれません
    105 # 他の環境やターゲットの場合、このファイルをå
    106 ƒã«å¤‰æ›´ã™ã‚‹å¿
    107 è¦ãŒã‚ります
     87# このファイルは GNU make で gcc を用い POSIX 環境で動作するモジュールをビルドするのに適切なように生成されています
     88# vpath, CFLAGS, OTHER_OBJS などを調整する必要があるかもしれません
     89# 他の環境やターゲットの場合、このファイルを元に変更する必要があります
    10890
    10991"
    11092
    111 @@comment[ :oneway_ercd_note ] = "/* oneway の場合 E_OK しか返せません */"
    112 @@comment[ :ercd_note ] = "/* エラー処理コードをここに記述します */"
     93@@comment[ :oneway_ercd_note ] = "/* oneway の場合 E_OK しか返せません */"
     94@@comment[ :ercd_note ] = "/* エラー処理コードをここに記述します */"
    11395
    114 @@comment[ :IMP_comment ] = "\n/* import_C により import されるヘッダ %s */\n"
    115 @@comment[ :MVAR_comment ] = "# 変数 %s\n"
    116 @@comment[ :MRUL_comment ] = "# ルール %s\n"
    117 @@comment[ :TCM_comment ] = "# テンプレートコードでメークしてみる場合 %s \n"
    118 @@comment[ :MDEP_comment ] = "\n# depend を include %s\n"
    119 @@comment[ :SDI_comment ] = "/* シグニチャディスクリプタ参ç
    120 §ãƒ˜ãƒƒãƒ€ %s */\n"
    121 @@comment[ :SD_comment ] = "/* シグニチャディスクリプタ %s */\n"
    122 @@comment[ :SFT_comment ] = "/* シグニチャ関数テーブル %s */\n"
    123 @@comment[ :SDES_comment ] = "/* シグニチャディスクリプタ(動的結合用) %s */\n"
    124 # @@comment[ :IRTH_comment ] = "/* ランタイムヘッダ %s */\n"
    125 @@comment[ :UDF_comment ] = "/* inline のための undef %s */\n"
    126 @@comment[ :IGH_comment ] = "/* グローバルヘッダ %s */\n"
    127 @@comment[ :ISH_comment ] = "/* シグニチャヘッダ %s */\n"
    128 @@comment[ :ICT_comment ] = "/* 最適化のため参ç
    129 §ã™ã‚‹ã‚»ãƒ«ã‚¿ã‚¤ãƒ—の CB 型の定義を取込む %s */\n"
    130 @@comment[ :NIDB_comment ] = "ID のベース "
    131 @@comment[ :NCEL_comment ] = "セルの個数"
    132 @@comment[ :CVI_comment ] = "/* IDXの正当性チェックマクロ %s */\n"
    133 @@comment[ :CVIA_comment ] = "/* IDXの正当性チェックマクロ(短縮形) %s */\n"
    134 @@comment[ :NCPA_comment ] = "/* 呼び口é
    135 åˆ—の大きさを得るマクロ %s */\n"
    136 @@comment[ :NEPA_comment ] = "/* 受け口é
    137 åˆ—の大きさを得るマクロ %s */\n"
    138 @@comment[ :TOCP_comment ] = "/* optional 呼び口をテストするマクロ %s */\n"
    139 @@comment[ :TOCPA_comment ] = "/* optional 呼び口をテストするマクロ(短縮形) %s */\n"
    140 @@comment[ :GCB_comment ] = "\n/* セルCBを得るマクロ %s */\n"
    141 @@comment[ :GCBA_comment ] = "\n/* セルCBを得るマクロ(短縮形) %s */\n"
    142 @@comment[ :CCT_comment ] = "/* CELLCB 型(短縮形) %s */\n"
    143 @@comment[ :CTIXA_comment ] = "/* セルタイプのIDX型(短縮形) %s */\n"
    144 @@comment[ :AAM_comment ] = "\n/* 属性アクセスマクロ %s */\n"
    145 @@comment[ :VAM_comment ] = "\n/* var アクセスマクロ %s */\n"
    146 @@comment[ :AAMA_comment ] = "\n/* 属性アクセスマクロ(短縮形) %s */\n"
    147 @@comment[ :VAMA_comment ] = "\n/* var アクセスマクロ(短縮形) %s */\n"
    148 @@comment[ :CPM_comment ] = " /* 呼び口関数マクロ %s */\n"
    149 @@comment[ :CPMA_comment ] = "/* 呼び口関数マクロ(短縮形)%s */\n"
    150 @@comment[ :EPM_comment ] = "\n/* 受け口関数マクロ(短縮形) %s */\n"
    151 @@comment[ :CRD_comment ] = "/* ディスクリプタ参ç
    152 §é–¢æ•° %s */\n"
    153 @@comment[ :CRDA_comment ] = "\n/* ディスクリプタ参ç
    154 §ãƒžã‚¯ãƒ­ï¼ˆçŸ­ç¸®å½¢ï¼‰ %s */\n"
    155 @@comment[ :SDF_comment ] = "/* ディスクリプタ設定関数 %s */\n"
    156 @@comment[ :SDMA_comment ] = "\n/* ディスクリプタ設定マクロ(短縮形) %s */\n"
    157 @@comment[ :CTIX_comment ] = "\n/* セルタイプのIDX型 %s */\n"
    158 @@comment[ :EPP_comment ] = "\n/* 受け口関数プロトタイプ宣言 %s */\n"
    159 @@comment[ :EPSP_comment ] = "\n/* 受け口スケルトン関数プロトタイプ宣言(VMT不要最適化により参ç
    160 §ã™ã‚‹ã‚‚の) %s */\n"
    161 @@comment[ :INL_comment ] = "/* inline ヘッダの include %s */\n"
    162 @@comment[ :CIP_comment ] = "/* セル INIB 型宣言 %s */\n"
    163 @@comment[ :CCTPA_comment ] = "/* セル CB 型宣言 %s */\n"
    164 @@comment[ :CCDP_comment ] = "/* セル CB (ダミー)型宣言 %s */\n"
    165 @@comment[ :CCTPO_comment ] = "/* セル CB 型宣言 %s */\n"
    166 @@comment[ :SCP_comment ] = "/* シングルトンセル CB プロトタイプ宣言 %s */\n"
    167 @@comment[ :DCI_comment ] = "\n/* CB は存在しない。INIB を CB の代わりに使用するための define %s */\n"
    168 @@comment[ :FEC_comment ] = "/* イテレータコード (FOREACH_CELL)の生成 %s */\n"
    169 @@comment[ :DAL_comment ] = "/* deallocate マクロ %s */\n"
    170 @@comment[ :NFEC_comment ] = "/* イテレータコード (FOREACH_CELL)の生成(CB,INIB は存在しない) %s */\n"
    171 @@comment[ :CIM_comment ] = "/* CB 初期化マクロ %s */\n"
    172 @@comment[ :EDT_comment ] = "/* 受け口ディスクリプタ型 %s */\n"
    173 @@comment[ :EPSF_comment ] = "/* 受け口スケルトン関数 %s */\n"
    174 @@comment[ :EPSFT_comment ] = "/* 受け口スケルトン関数テーブル %s */\n"
    175 @@comment[ :CPEPD_comment ] = "/* 呼び口の参ç
    176 §ã™ã‚‹å—け口ディスクリプタ(実際の型と相違した定義) %s */\n"
    177 @@comment[ :CPA_comment ] = "/* 呼び口é
    178 åˆ— %s */\n"
    179 @@comment[ :CIC_comment ] = "/* CB 初期化コード %s */\n"
    180 @@comment[ :AVAI_comment ] = "/* 属性・変数のé
    181 åˆ— %s */\n"
    182 @@comment[ :AVI_comment ] = "/* 変数(構造体、é
    183 åˆ—)初期値 %s */\n"
    184 @@comment[ :INIB_comment ] = "/* セル INIB %s */\n"
    185 @@comment[ :CB_comment ] = "/* セル CB %s */\n"
    186 @@comment[ :EPD_comment ] = "/* 受け口ディスクリプタ %s */\n"
    187 @@comment[ :PAC_comment ] = "/* プロトタイプ宣言や変数の定義をここに書きます %s */\n"
    188 @@comment[ :CAAM_comment ] = " *\n * 属性アクセスマクロ %s\n"
    189 @@comment[ :CAAMI_comment ] = " *\n * 属性アクセスマクロ %s\n"
    190 @@comment[ :TYP_comment ] = " *\n * 型 %s\n * CELLCB 型  : %s\n * CELLIDX 型 : %s\n"
    191 @@comment[ :TCPF_comment ] = " * 呼び口関数 %s\n"
    192 @@comment[ :TEPF_comment ] = "/* 受け口関数 %s */\n"
    193 @@comment[ :TEFB_comment ] = "\t/* ここに処理本体を記述します %s */\n"
    194 @@comment[ :MCPP_comment ] = "/* CB プロトタイプ宣言 %s */\n"
    195 @@comment[ :MCPB_comment ] = "/* CB プロトタイプ宣言 %s */\n"
     96@@comment[ :IMP_comment ] = "\n/* import_C により import されるヘッダ %s */\n"
     97@@comment[ :MVAR_comment ] = "# 変数 %s\n"
     98@@comment[ :MRUL_comment ] = "# ルール %s\n"
     99@@comment[ :TCM_comment ] = "# テンプレートコードでメークしてみる場合 %s \n"
     100@@comment[ :MDEP_comment ] = "\n# depend を include %s\n"
     101@@comment[ :SDI_comment ] = "/* シグニチャディスクリプタ参照ヘッダ %s */\n"
     102@@comment[ :SD_comment ] = "/* シグニチャディスクリプタ %s */\n"
     103@@comment[ :SFT_comment ] = "/* シグニチャ関数テーブル %s */\n"
     104@@comment[ :SDES_comment ] = "/* シグニチャディスクリプタ(動的結合用) %s */\n"
     105# @@comment[ :IRTH_comment ] = "/* ランタイムヘッダ %s */\n"
     106@@comment[ :UDF_comment ] = "/* inline のための undef %s */\n"
     107@@comment[ :IGH_comment ] = "/* グローバルヘッダ %s */\n"
     108@@comment[ :ISH_comment ] = "/* シグニチャヘッダ %s */\n"
     109@@comment[ :ICT_comment ] = "/* 最適化のため参照するセルタイプの CB 型の定義を取込む %s */\n"
     110@@comment[ :NIDB_comment ] = "ID のベース "
     111@@comment[ :NCEL_comment ] = "セルの個数"
     112@@comment[ :CVI_comment ] = "/* IDXの正当性チェックマクロ %s */\n"
     113@@comment[ :CVIA_comment ] = "/* IDXの正当性チェックマクロ(短縮形) %s */\n"
     114@@comment[ :NCPA_comment ] = "/* 呼び口配列の大きさを得るマクロ %s */\n"
     115@@comment[ :NEPA_comment ] = "/* 受け口配列の大きさを得るマクロ %s */\n"
     116@@comment[ :TOCP_comment ] = "/* optional 呼び口をテストするマクロ %s */\n"
     117@@comment[ :TOCPA_comment ] = "/* optional 呼び口をテストするマクロ(短縮形) %s */\n"
     118@@comment[ :GCB_comment ] = "\n/* セルCBを得るマクロ %s */\n"
     119@@comment[ :GCBA_comment ] = "\n/* セルCBを得るマクロ(短縮形) %s */\n"
     120@@comment[ :CCT_comment ] = "/* CELLCB 型(短縮形) %s */\n"
     121@@comment[ :CTIXA_comment ] = "/* セルタイプのIDX型(短縮形) %s */\n"
     122@@comment[ :AAM_comment ] = "\n/* 属性アクセスマクロ %s */\n"
     123@@comment[ :VAM_comment ] = "\n/* var アクセスマクロ %s */\n"
     124@@comment[ :AAMA_comment ] = "\n/* 属性アクセスマクロ(短縮形) %s */\n"
     125@@comment[ :VAMA_comment ] = "\n/* var アクセスマクロ(短縮形) %s */\n"
     126@@comment[ :CPM_comment ] = " /* 呼び口関数マクロ %s */\n"
     127@@comment[ :CPMA_comment ] = "/* 呼び口関数マクロ(短縮形)%s */\n"
     128@@comment[ :EPM_comment ] = "\n/* 受け口関数マクロ(短縮形) %s */\n"
     129@@comment[ :CRD_comment ] = "/* ディスクリプタ参照関数 %s */\n"
     130@@comment[ :CRDA_comment ] = "\n/* ディスクリプタ参照マクロ(短縮形) %s */\n"
     131@@comment[ :SDF_comment ] = "/* ディスクリプタ設定関数 %s */\n"
     132@@comment[ :SDMA_comment ] = "\n/* ディスクリプタ設定マクロ(短縮形) %s */\n"
     133@@comment[ :CTIX_comment ] = "\n/* セルタイプのIDX型 %s */\n"
     134@@comment[ :EPP_comment ] = "\n/* 受け口関数プロトタイプ宣言 %s */\n"
     135@@comment[ :EPSP_comment ] = "\n/* 受け口スケルトン関数プロトタイプ宣言(VMT不要最適化により参照するもの) %s */\n"
     136@@comment[ :INL_comment ] = "/* inline ヘッダの include %s */\n"
     137@@comment[ :CIP_comment ] = "/* セル INIB 型宣言 %s */\n"
     138@@comment[ :CCTPA_comment ] = "/* セル CB 型宣言 %s */\n"
     139@@comment[ :CCDP_comment ] = "/* セル CB (ダミー)型宣言 %s */\n"
     140@@comment[ :CCTPO_comment ] = "/* セル CB 型宣言 %s */\n"
     141@@comment[ :SCP_comment ] = "/* シングルトンセル CB プロトタイプ宣言 %s */\n"
     142@@comment[ :DCI_comment ] = "\n/* CB は存在しない。INIB を CB の代わりに使用するための define %s */\n"
     143@@comment[ :FEC_comment ] = "/* イテレータコード (FOREACH_CELL)の生成 %s */\n"
     144@@comment[ :DAL_comment ] = "/* deallocate マクロ %s */\n"
     145@@comment[ :NFEC_comment ] = "/* イテレータコード (FOREACH_CELL)の生成(CB,INIB は存在しない) %s */\n"
     146@@comment[ :CIM_comment ] = "/* CB 初期化マクロ %s */\n"
     147@@comment[ :EDT_comment ] = "/* 受け口ディスクリプタ型 %s */\n"
     148@@comment[ :EPSF_comment ] = "/* 受け口スケルトン関数 %s */\n"
     149@@comment[ :EPSFT_comment ] = "/* 受け口スケルトン関数テーブル %s */\n"
     150@@comment[ :CPEPD_comment ] = "/* 呼び口の参照する受け口ディスクリプタ(実際の型と相違した定義) %s */\n"
     151@@comment[ :CPA_comment ] = "/* 呼び口配列 %s */\n"
     152@@comment[ :CIC_comment ] = "/* CB 初期化コード %s */\n"
     153@@comment[ :AVAI_comment ] = "/* 属性・変数の配列 %s */\n"
     154@@comment[ :AVI_comment ] = "/* 変数(構造体、配列)初期値 %s */\n"
     155@@comment[ :INIB_comment ] = "/* セル INIB %s */\n"
     156@@comment[ :CB_comment ] = "/* セル CB %s */\n"
     157@@comment[ :EPD_comment ] = "/* 受け口ディスクリプタ %s */\n"
     158@@comment[ :PAC_comment ] = "/* プロトタイプ宣言や変数の定義をここに書きます %s */\n"
     159@@comment[ :CAAM_comment ] = " *\n * 属性アクセスマクロ %s\n"
     160@@comment[ :CAAMI_comment ] = " *\n * 属性アクセスマクロ %s\n"
     161@@comment[ :TYP_comment ] = " *\n * 型 %s\n * CELLCB 型  : %s\n * CELLIDX 型 : %s\n"
     162@@comment[ :TCPF_comment ] = " * 呼び口関数 %s\n"
     163@@comment[ :TEPF_comment ] = "/* 受け口関数 %s */\n"
     164@@comment[ :TEFB_comment ] = "\t/* ここに処理本体を記述します %s */\n"
     165@@comment[ :MCPP_comment ] = "/* CB プロトタイプ宣言 %s */\n"
     166@@comment[ :MCPB_comment ] = "/* CB プロトタイプ宣言 %s */\n"
    196167
    197168end
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/ATK1AlarmPlugin.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 TECS-WG
    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 #== celltype プラグインのå
    56 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     40#== celltype プラグインの共通の親クラス
    5741class ATK1AlarmPlugin < CelltypePlugin
    5842#@celltype:: Celltype
    59 #@option:: String     :オプション文字列
    60 
    61   #signature::     Celltype        シグニチャ(インスタンス)
     43#@option:: String     :オプション文字列
     44
     45  #signature::     Celltype        シグニチャ(インスタンス)
    6246  def initialize( celltype, option )
    6347    super
    6448  end
    6549
    66   #===  CDL ファイルの生成
    67   #      typedef, signature, celltype, cell のコードを生成
    68   #      重複して生成してはならない
    69   #      すでに生成されている場合は出力しないこと。
    70   #      もしくは同名の import により、重複を避けること。
    71   #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     50  #===  CDL ファイルの生成
     51  #      typedef, signature, celltype, cell のコードを生成
     52  #      重複して生成してはならない
     53  #      すでに生成されている場合は出力しないこと。
     54  #      もしくは同名の import により、重複を避けること。
     55  #file::        FILE       生成するファイル
    7256#  def gen_cdl_file file
    7357#  end
     
    7660  end
    7761
    78   #===  受け口関数の本体(C言語)を生成する
    79   #     ã“のメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する
    80   #     ã“のメソッドが定義済みの場合、(テンプレートではなく、変更するå¿
    81 è¦ã®ãªã„)セルタイプコードを生成する
    82   #file::           FILE        出力å
    83 ˆãƒ•ã‚¡ã‚¤ãƒ«
     62  #===  受け口関数の本体(C言語)を生成する
     63  #     このメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する
     64  #     このメソッドが定義済みの場合、(テンプレートではなく、変更する必要のない)セルタイプコードを生成する
     65  #file::           FILE        出力先ファイル
    8466  #b_singleton::    bool        true if singleton
    8567  #ct_name::        Symbol
     
    190172  file2.close
    191173
    192   # 追記するために AppFile を使う(文字コード変換されない)
     174  # 追記するために AppFile を使う(文字コード変換されない)
    193175  file = AppFile.open( "#{$gen}/tAlarm_tecsgen.#{$c_suffix}" )
    194176  file.print "\n/* Generated by ATK1AlarmPlugin */\n"
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/ATK1DelayTaskPlugin.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 TECS-WG
    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 #== celltype プラグインのå
    56 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     40#== celltype プラグインの共通の親クラス
    5741class ATK1DelayTaskPlugin < CelltypePlugin
    5842#@celltype:: Celltype
    59 #@option:: String     :オプション文字列
     43#@option:: String     :オプション文字列
    6044
    61   #signature::     Celltype        シグニチャ(インスタンス)
     45  #signature::     Celltype        シグニチャ(インスタンス)
    6246  def initialize( celltype, option )
    6347    super
    6448  end
    6549
    66   #===  CDL ファイルの生成
    67   #      typedef, signature, celltype, cell のコードを生成
    68   #      重複して生成してはならない
    69   #      すでに生成されている場合は出力しないこと。
    70   #      もしくは同名の import により、重複を避けること。
    71   #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     50  #===  CDL ファイルの生成
     51  #      typedef, signature, celltype, cell のコードを生成
     52  #      重複して生成してはならない
     53  #      すでに生成されている場合は出力しないこと。
     54  #      もしくは同名の import により、重複を避けること。
     55  #file::        FILE       生成するファイル
    7256#  def gen_cdl_file file
    7357#  end
     
    8367  end
    8468
    85   #===  受け口関数の本体(C言語)を生成する
    86   #     ã“のメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する
    87   #     ã“のメソッドが定義済みの場合、(テンプレートではなく、変更するå¿
    88 è¦ã®ãªã„)セルタイプコードを生成する
    89   #file::           FILE        出力å
    90 ˆãƒ•ã‚¡ã‚¤ãƒ«
     69  #===  受け口関数の本体(C言語)を生成する
     70  #     このメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する
     71  #     このメソッドが定義済みの場合、(テンプレートではなく、変更する必要のない)セルタイプコードを生成する
     72  #file::           FILE        出力先ファイル
    9173  #b_singleton::    bool        true if singleton
    9274  #ct_name::        Symbol
     
    10284  def gen_factory file
    10385
    104     # 追記するために AppFile を使う(文字コード変換されない)
     86    # 追記するために AppFile を使う(文字コード変換されない)
    10587    file2 = AppFile.open( "#{$gen}/tDelayTaskBody_factory.#{$h_suffix}" )
    10688    file2.print "\n/* Generated by ATK1DelayTaskPlugin */\n\n"
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/ATK1EventPlugin.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 TECS-WG
    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 #== ATK1 Event celltype プラグインクラス
     40#== ATK1 Event celltype プラグインクラス
    5641class ATK1EventPlugin < CelltypePlugin
    57 #@@instancies:: []     :セル実体群
     42#@@instancies:: []     :セル実体群
    5843@@instancies = []
    5944
    60   #===  初期化
    61   #      å
    62 ¨ã¦ã®ã‚»ãƒ«ã®å®Ÿä½“を意味解析後に参ç
    63 §ã™ã‚‹å¿
    64 è¦ãŒã‚るために
    65   #      初期化時に singleton の instancies に格納する
    66   #signature::     Celltype        シグニチャ(インスタンス)
     45  #===  初期化
     46  #      全てのセルの実体を意味解析後に参照する必要があるために
     47  #      初期化時に singleton の instancies に格納する
     48  #signature::     Celltype        シグニチャ(インスタンス)
    6749  def initialize( celltype, option )
    6850    super
     
    7052  end
    7153
    72   #===  cellの生成
     54  #===  cellの生成
    7355  def new_cell cell
    7456  end
    7557
    76   #===  意味解析実行後のコード生成
     58  #===  意味解析実行後のコード生成
    7759  def self.gen_post_code file
    7860
     
    8365  end
    8466
    85   #===  OILファイル出力
     67  #===  OILファイル出力
    8668  def gen_oil_code file
    8769
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/ATK1ISRPlugin.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 TECS-WG
    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 #== celltype プラグインのå
    56 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     40#== celltype プラグインの共通の親クラス
    5741class ATK1ISRPlugin < CelltypePlugin
    5842#@celltype:: Celltype
    59 #@option:: String     :オプション文字列
     43#@option:: String     :オプション文字列
    6044
    61   #signature::     Celltype        シグニチャ(インスタンス)
     45  #signature::     Celltype        シグニチャ(インスタンス)
    6246  def initialize( celltype, option )
    6347    super
    6448  end
    6549
    66   #===  CDL ファイルの生成
    67   #      typedef, signature, celltype, cell のコードを生成
    68   #      重複して生成してはならない
    69   #      すでに生成されている場合は出力しないこと。
    70   #      もしくは同名の import により、重複を避けること。
    71   #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     50  #===  CDL ファイルの生成
     51  #      typedef, signature, celltype, cell のコードを生成
     52  #      重複して生成してはならない
     53  #      すでに生成されている場合は出力しないこと。
     54  #      もしくは同名の import により、重複を避けること。
     55  #file::        FILE       生成するファイル
    7256#  def gen_cdl_file file
    7357#  end
     
    7660  end
    7761
    78   #===  受け口関数の本体(C言語)を生成する
    79   #     ã“のメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する
    80   #     ã“のメソッドが定義済みの場合、(テンプレートではなく、変更するå¿
    81 è¦ã®ãªã„)セルタイプコードを生成する
    82   #file::           FILE        出力å
    83 ˆãƒ•ã‚¡ã‚¤ãƒ«
     62  #===  受け口関数の本体(C言語)を生成する
     63  #     このメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する
     64  #     このメソッドが定義済みの場合、(テンプレートではなく、変更する必要のない)セルタイプコードを生成する
     65  #file::           FILE        出力先ファイル
    8466  #b_singleton::    bool        true if singleton
    8567  #ct_name::        Symbol
     
    11698      end
    11799
    118       # ENTRY (entryはtecsgenの予約語のためNumberを付加)
     100      # ENTRY (entryはtecsgenの予約語のためNumberを付加)
    119101      join = cell.get_join_list.get_item( :entryNumber )
    120102      if join then
     
    152134  file2.close
    153135
    154   # 追記するために AppFile を使う(文字コード変換されない)
     136  # 追記するために AppFile を使う(文字コード変換されない)
    155137  file = AppFile.open( "#{$gen}/tISR_tecsgen.#{$c_suffix}" )
    156138  file.print "\n/* Generated by ATK1ISRPlugin */\n"
     
    165147#if defined( OMIT_ISR1_ENTRY )
    166148EOT
    167           file.print "/* ISR1å
    168 ¥ã‚Šå£æœªç”Ÿæˆæ™‚は本関数を割込み関数指定する  */\n"
     149          file.print "/* ISR1入り口未生成時は本関数を割込み関数指定する  */\n"
    169150          file.print <<EOT
    170151#pragma INTERRUPT  #{cell.get_name}
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/ATK1KernelPlugin.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 TECS-WG
    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 #== celltype プラグインのå
    56 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     40#== celltype プラグインの共通の親クラス
    5741class ATK1KernelPlugin < CelltypePlugin
    5842#@celltype:: Celltype
    59 #@option:: String     :オプション文字列
     43#@option:: String     :オプション文字列
    6044  @@cell_list = []
    6145
    62   #signature::     Celltype        シグニチャ(インスタンス)
     46  #signature::     Celltype        シグニチャ(インスタンス)
    6347  def initialize( celltype, option )
    6448    super
    6549  end
    6650
    67   #===  CDL ファイルの生成
    68   #      typedef, signature, celltype, cell のコードを生成
    69   #      重複して生成してはならない
    70   #      すでに生成されている場合は出力しないこと。
    71   #      もしくは同名の import により、重複を避けること。
    72   #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     51  #===  CDL ファイルの生成
     52  #      typedef, signature, celltype, cell のコードを生成
     53  #      重複して生成してはならない
     54  #      すでに生成されている場合は出力しないこと。
     55  #      もしくは同名の import により、重複を避けること。
     56  #file::        FILE       生成するファイル
    7357#  def gen_cdl_file file
    7458#  end
     
    8569  end
    8670
    87   #===  受け口関数の本体(C言語)を生成する
    88   #     ã“のメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する
    89   #     ã“のメソッドが定義済みの場合、(テンプレートではなく、変更するå¿
    90 è¦ã®ãªã„)セルタイプコードを生成する
    91   #file::           FILE        出力å
    92 ˆãƒ•ã‚¡ã‚¤ãƒ«
     71  #===  受け口関数の本体(C言語)を生成する
     72  #     このメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する
     73  #     このメソッドが定義済みの場合、(テンプレートではなく、変更する必要のない)セルタイプコードを生成する
     74  #file::           FILE        出力先ファイル
    9375  #b_singleton::    bool        true if singleton
    9476  #ct_name::        Symbol
     
    184166    file2.close
    185167
    186     # 追記するために AppFile を使う(文字コード変換されない)
     168    # 追記するために AppFile を使う(文字コード変換されない)
    187169    file2 = AppFile.open( "#{$gen}/tKernel_tecsgen.#{$c_suffix}" )
    188170    file2.print "\n/* Generated by ATK1KernelPlugin */\n\n"
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/ATK1ResourcePlugin.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 TECS-WG
    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 #== celltype プラグインのå
    56 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     40#== celltype プラグインの共通の親クラス
    5741class ATK1ResourcePlugin < CelltypePlugin
    5842#@celltype:: Celltype
    59 #@option:: String     :オプション文字列
     43#@option:: String     :オプション文字列
    6044
    61   #signature::     Celltype        シグニチャ(インスタンス)
     45  #signature::     Celltype        シグニチャ(インスタンス)
    6246  def initialize( celltype, option )
    6347    super
    6448  end
    6549
    66   #===  CDL ファイルの生成
    67   #      typedef, signature, celltype, cell のコードを生成
    68   #      重複して生成してはならない
    69   #      すでに生成されている場合は出力しないこと。
    70   #      もしくは同名の import により、重複を避けること。
    71   #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     50  #===  CDL ファイルの生成
     51  #      typedef, signature, celltype, cell のコードを生成
     52  #      重複して生成してはならない
     53  #      すでに生成されている場合は出力しないこと。
     54  #      もしくは同名の import により、重複を避けること。
     55  #file::        FILE       生成するファイル
    7256#  def gen_cdl_file file
    7357#  end
     
    7660  end
    7761
    78   #===  受け口関数の本体(C言語)を生成する
    79   #     ã“のメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する
    80   #     ã“のメソッドが定義済みの場合、(テンプレートではなく、変更するå¿
    81 è¦ã®ãªã„)セルタイプコードを生成する
    82   #file::           FILE        出力å
    83 ˆãƒ•ã‚¡ã‚¤ãƒ«
     62  #===  受け口関数の本体(C言語)を生成する
     63  #     このメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する
     64  #     このメソッドが定義済みの場合、(テンプレートではなく、変更する必要のない)セルタイプコードを生成する
     65  #file::           FILE        出力先ファイル
    8466  #b_singleton::    bool        true if singleton
    8567  #ct_name::        Symbol
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/ATK1TaskPlugin.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 TECS-WG
    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 #== celltype プラグインのå
    56 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     40#== celltype プラグインの共通の親クラス
    5741class ATK1TaskPlugin < CelltypePlugin
    5842#@celltype:: Celltype
    59 #@option:: String     :オプション文字列
    60 
    61   #signature::     Celltype        シグニチャ(インスタンス)
     43#@option:: String     :オプション文字列
     44
     45  #signature::     Celltype        シグニチャ(インスタンス)
    6246  def initialize( celltype, option )
    6347    super
    6448  end
    6549
    66   #===  CDL ファイルの生成
    67   #      typedef, signature, celltype, cell のコードを生成
    68   #      重複して生成してはならない
    69   #      すでに生成されている場合は出力しないこと。
    70   #      もしくは同名の import により、重複を避けること。
    71   #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     50  #===  CDL ファイルの生成
     51  #      typedef, signature, celltype, cell のコードを生成
     52  #      重複して生成してはならない
     53  #      すでに生成されている場合は出力しないこと。
     54  #      もしくは同名の import により、重複を避けること。
     55  #file::        FILE       生成するファイル
    7256#  def gen_cdl_file file
    7357#  end
     
    8367  end
    8468
    85   #===  受け口関数の本体(C言語)を生成する
    86   #     ã“のメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する
    87   #     ã“のメソッドが定義済みの場合、(テンプレートではなく、変更するå¿
    88 è¦ã®ãªã„)セルタイプコードを生成する
    89   #file::           FILE        出力å
    90 ˆãƒ•ã‚¡ã‚¤ãƒ«
     69  #===  受け口関数の本体(C言語)を生成する
     70  #     このメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する
     71  #     このメソッドが定義済みの場合、(テンプレートではなく、変更する必要のない)セルタイプコードを生成する
     72  #file::           FILE        出力先ファイル
    9173  #b_singleton::    bool        true if singleton
    9274  #ct_name::        Symbol
     
    218200  file2.close
    219201
    220   # 追記するために AppFile を使う(文字コード変換されない)
     202  # 追記するために AppFile を使う(文字コード変換されない)
    221203  file = AppFile.open( "#{$gen}/tTask_tecsgen.#{$c_suffix}" )
    222204  file.print "\n/* Generated by ATK1TaskPlugin */\n"
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/C2TECSBridgePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2015 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 #== C => TECS 受け口呼び出しのプラグイン
     40#== C => TECS 受け口呼び出しのプラグイン
    5641class C2TECSBridgePlugin < SignaturePlugin
    57 #@signature:: Signature   ãƒ—ラグインの対象となるシグニチャ
    58 #@option:: String   '"', '"' で囲まれた文字列
    59 
    60   # プラグイン引数名と Proc
     42#@signature:: Signature   プラグインの対象となるシグニチャ
     43#@option:: String   '"', '"' で囲まれた文字列
     44
     45  # プラグイン引数名と Proc
    6146  C2TECSBridgePluginArgProc = {
    6247    "prefix" => Proc.new { |obj,rhs| obj.set_prefix rhs },
     
    6853  @@signature_list = { }
    6954
    70   #signature::     Signature        シグニチャ(インスタンス)
     55  #signature::     Signature        シグニチャ(インスタンス)
    7156  def initialize( signature, option )
    7257    super
     
    10085  end
    10186
    102   #=== 後ろのコードを生成
    103   #プラグインの後ろのコードを生成
     87  #=== 後ろのコードを生成
     88  #プラグインの後ろのコードを生成
    10489  #file:: File:
    10590  def self.gen_post_code( file )
    106     # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
     91    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
    10792    # file.print "/* '#{self.class.name}' post code */\n"
    10893  end
    10994
    110   #===  受け口関数の本体(C言語)を生成する
    111   #     é€šå¸¸ã§ã‚れば、ジェネレータは受け口関数のテンプレートを生成する
    112   #     ãƒ—ラグインの場合、変更するå¿
    113 è¦ã®ãªã„セルタイプコードを生成する
    114   #file::           FILE        出力å
    115 ˆãƒ•ã‚¡ã‚¤ãƒ«
     95  #===  受け口関数の本体(C言語)を生成する
     96  #     通常であれば、ジェネレータは受け口関数のテンプレートを生成する
     97  #     プラグインの場合、変更する必要のないセルタイプコードを生成する
     98  #file::           FILE        出力先ファイル
    11699  #b_singleton::    bool        true if singleton
    117100  #ct_name::        Symbol
     
    212195  end
    213196
    214   #===  set_prefix - prefix プラグインオプション
     197  #===  set_prefix - prefix プラグインオプション
    215198  def set_prefix rhs
    216199    @prefix = rhs.to_s
    217200  end
    218   #===  set_suffix - suffix プラグインオプション
     201  #===  set_suffix - suffix プラグインオプション
    219202  def set_suffix rhs
    220203    @suffix = rhs.to_s
    221204  end
    222   #===  set_header_name - header_name プラグインオプション
     205  #===  set_header_name - header_name プラグインオプション
    223206  def set_header_name rhs
    224207    @header_name = "#{$gen}/" + rhs.to_s
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/CellPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2011 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 #== celltype プラグインのå
    56 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     40#== celltype プラグインの共通の親クラス
    5741class CellPlugin < Plugin
    5842
    5943  #=== CellPlugin# initialize
    60   #cell::     Cell        セル(インスタンス)
    61   # このメソッドは、セルの構文解析が終わったところで呼び出される
    62   # この段階では意味解析が終わっていない
     44  #cell::     Cell        セル(インスタンス)
     45  # このメソッドは、セルの構文解析が終わったところで呼び出される
     46  # この段階では意味解析が終わっていない
    6347  def initialize( cell, option )
    6448    super()
    6549    @cell = cell
    6650    @plugin_arg_str = CDLString.remove_dquote option
    67     # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' )    # 前後の "" を取り除く
     51    # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' )    # 前後の "" を取り除く
    6852    # @plugin_arg_str.sub!( /(.*)"\z/, '\1' )
    6953    @plugin_arg_list = {}
    7054  end
    7155
    72   #=== 後ろの CDL コードを生成
    73   #プラグインの後ろの CDL コードを生成
     56  #=== 後ろの CDL コードを生成
     57  #プラグインの後ろの CDL コードを生成
    7458  #file:: File:
    7559  def self.gen_post_code( file )
    76     # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
     60    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
    7761    # file.print "/* '#{self.class.name}' post code */\n"
    7862  end
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/CelltypePlugin.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 #== celltype プラグインのå
    56 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     40#== celltype プラグインの共通の親クラス
    5741class CelltypePlugin < Plugin
    5842
    59   #celltype::     Celltype        セルタイプ(インスタンス)
     43  #celltype::     Celltype        セルタイプ(インスタンス)
    6044  def initialize( celltype, option )
    6145    super()
    6246    @celltype = celltype
    63     # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' )    # 前後の "" を取り除く
     47    # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' )    # 前後の "" を取り除く
    6448    # @plugin_arg_str.sub!( /(.*)"\z/, '\1' )
    6549    @plugin_arg_str = CDLString.remove_dquote option
     
    6751  end
    6852
    69   #=== 新しいセル
    70   #cell::        Cell            セル
     53  #=== 新しいセル
     54  #cell::        Cell            セル
    7155  #
    72   # celltype プラグインを指定されたセルタイプのセルが生成された
    73   # セルタイププラグインに対する新しいセルの報告
     56  # celltype プラグインを指定されたセルタイプのセルが生成された
     57  # セルタイププラグインに対する新しいセルの報告
    7458  def new_cell( cell )
    7559  end
    7660
    7761
    78   #=== tCelltype_factory.h に挿å
    79 ¥ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’生成する
    80   # file 以外の他のファイルにファクトリコードを生成してもよい
    81   # セルタイププラグインが指定されたセルタイプのみ呼び出される
     62  #=== tCelltype_factory.h に挿入するコードを生成する
     63  # file 以外の他のファイルにファクトリコードを生成してもよい
     64  # セルタイププラグインが指定されたセルタイプのみ呼び出される
    8265  def gen_factory file
    8366  end
    8467
    85   #=== 後ろの CDL コードを生成
    86   #プラグインの後ろの CDL コードを生成
     68  #=== 後ろの CDL コードを生成
     69  #プラグインの後ろの CDL コードを生成
    8770  #file:: File:
    8871  def self.gen_post_code( file )
    89     # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
     72    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
    9073    # file.print "/* '#{self.class.name}' post code */\n"
    9174  end
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/CompositePlugin.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 #== CompositeCelltype プラグインのå
    56 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     40#== CompositeCelltype プラグインの共通の親クラス
    5741class CompositePlugin < Plugin
    5842
    59   #celltype::     CompositeCelltype        セルタイプ(インスタンス)
     43  #celltype::     CompositeCelltype        セルタイプ(インスタンス)
    6044  def initialize( celltype, option )
    6145    super()
    6246    @celltype = celltype
    63     # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' )    # 前後の "" を取り除く
     47    # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' )    # 前後の "" を取り除く
    6448    # @plugin_arg_str.sub!( /(.*)"\z/, '\1' )
    6549    @plugin_arg_str = CDLString.remove_dquote option
     
    6751  end
    6852
    69   #=== 新しいセル
    70   #cell::        Cell            セル
     53  #=== 新しいセル
     54  #cell::        Cell            セル
    7155  #
    72   # celltype プラグインを指定されたセルタイプのセルが生成された
    73   # セルタイププラグインに対する新しいセルの報告
     56  # celltype プラグインを指定されたセルタイプのセルが生成された
     57  # セルタイププラグインに対する新しいセルの報告
    7458  def new_cell( cell )
    7559  end
    7660
    77   #=== 後ろの CDL コードを生成
    78   #プラグインの後ろの CDL コードを生成
     61  #=== 後ろの CDL コードを生成
     62  #プラグインの後ろの CDL コードを生成
    7963  #file:: File:
    8064  def self.gen_post_code( file )
    81     # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
     65    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
    8266    # file.print "/* '#{self.class.name}' post code */\n"
    8367  end
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/DomainPlugin.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 #== ドメインプラグインの親クラス
     40#== ドメインプラグインの親クラス
    5641class DomainPlugin < Plugin
    5742
    58   #== domain 指定されたリージョンが定義された
    59   # region で domain 指定があった
    60   #domain_type_name::Symbol : domain 指定子の第一引数
    61   #option::String : domain 指定子の第二引数
     43  #== domain 指定されたリージョンが定義された
     44  # region で domain 指定があった
     45  #domain_type_name::Symbol : domain 指定子の第一引数
     46  #option::String : domain 指定子の第二引数
    6247  def initialize( region, domain_type_name, option )
    6348    super()
    6449  end
    6550
    66   #== 結合 join にプラグインを挿å
    67 ¥ã™ã‚‹
    68   #join::Join : 結合に関するæƒ
    69 å ±
    70   #return::[ plugin_name::String, option::String ]: 挿å
    71 ¥ã™ã‚‹ãƒ—ラグイン。 挿å
    72 ¥ã™ã‚‹ã‚‚のがなければ nil を返す
     51  #== 結合 join にプラグインを挿入する
     52  #join::Join : 結合に関する情報
     53  #return::[ plugin_name::String, option::String ]: 挿入するプラグイン。 挿入するものがなければ nil を返す
    7354  #return::(1) [ plugin_name, option ] or (2) [[ plugin_name, option ], ...], or [] or nil:  (2): not supported now
    74   #   nil: region 間の結合禁止, []: region 間の結合可(プラグイン挿å
    75 ¥ç„¡ã—)
    76   #   [ plugin_name, option ]: *_through( plugin_name, option ) 指定したのと同等
     55  #   nil: region 間の結合禁止, []: region 間の結合可(プラグイン挿入無し)
     56  #   [ plugin_name, option ]: *_through( plugin_name, option ) 指定したのと同等
    7757  #
    78   # region 間の through が指定されている場合、out_through, to_through
    79   # では、それらによって指定されたプラグインの後ろに、in_through の場合
    80   # in_through プラグインの前に挿å
    81 ¥ã•ã‚Œã‚‹
     58  # region 間の through が指定されている場合、out_through, to_through
     59  # では、それらによって指定されたプラグインの後ろに、in_through の場合
     60  # in_through プラグインの前に挿入される
    8261  #
    83   # このメソッドが呼出された時点では Join#get_rhs_cell など意味解析後
    84   # にしか呼び出せないメソッドを呼出しても、有効な値は得られない
     62  # このメソッドが呼出された時点では Join#get_rhs_cell など意味解析後
     63  # にしか呼び出せないメソッドを呼出しても、有効な値は得られない
    8564  #
    8665  def add_through_plugin( join, current_region, next_region, through_type )
    87     # join.get_owner:Cell  左辺のセル
    88     # join.get_definition:Port 呼び口
    89     # join.get_subscript:Integer or nil 呼び口é
    90 åˆ—の添数 (Join::@subscript の説明参ç
    91 §)
    92     # join.get_cell:Cell 右辺のセル
    93     # join.get_port_name:Symbol 受け口
    94     # get_rhs_subscript:Integer or nil 受け口é
    95 åˆ—の添数 (Join::@rhs_subscript の説明参ç
    96 §)
     66    # join.get_owner:Cell  左辺のセル
     67    # join.get_definition:Port 呼び口
     68    # join.get_subscript:Integer or nil 呼び口配列の添数 (Join::@subscript の説明参照)
     69    # join.get_cell:Cell 右辺のセル
     70    # join.get_port_name:Symbol 受け口
     71    # get_rhs_subscript:Integer or nil 受け口配列の添数 (Join::@rhs_subscript の説明参照)
    9772    # return []
    9873    return nil
    9974  end
    10075
    101   #== require が結合可能か?
     76  #== require が結合可能か?
    10277  def joinable?(current_region, next_region, through_type )
    10378    return false
    10479  end
    10580
    106   #== ドメイン種別を返す
     81  #== ドメイン種別を返す
    10782  #return::Symbol :kernel, :user, :OutOfDomain
    10883  def get_kind
     
    11085  end
    11186
    112   #== factory 生成
    113   # DomainPlugin の factory は特定のファイルへの出力が想定されていない
     87  #== factory 生成
     88  # DomainPlugin の factory は特定のファイルへの出力が想定されていない
    11489  def gen_factory
    11590  end
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2AlarmHandlerPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2012 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$
     
    5641#require "HRP2KernelObjectPlugin"
    5742require_tecsgen_lib "HRP2KernelObjectPlugin.rb"
    58 #== celltype プラグインのå
    59 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     43#== celltype プラグインの共通の親クラス
    6044class HRP2AlarmHandlerPlugin < HRP2KernelObjectPlugin
    6145    @@ep = [:eStartAlarm, :eStopAlarm, :eManageAlarm, :eReferAlarm ]
     
    7155        name_array = @celltype.get_name_array cell
    7256        cell_CBP = name_array[8]    # CBP
    73         # CRE_XXXの生成
     57        # CRE_XXXの生成
    7458        if (cell.get_region.get_region_type != :DOMAIN) || (cell.get_region.get_param != :KERNEL_DOMAIN)
    75             # 無所属 or ユーザドメインに属する場合
     59            # 無所属 or ユーザドメインに属する場合
    7660                raise "alarm handler #{val[:id]} must belong to kernel domain."
    7761        else
     
    8670    end
    8771
    88     #tAlarmの受け口リスト
     72    #tAlarmの受け口リスト
    8973    def get_entry_ports_name_list()
    9074        @@ep
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2Cache.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2CyclicHandlerPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 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$
     
    5641require_tecsgen_lib "HRP2KernelObjectPlugin.rb"
    5742
    58 #== celltype プラグインのå
    59 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     43#== celltype プラグインの共通の親クラス
    6044class HRP2CyclicHandlerPlugin < HRP2KernelObjectPlugin
    6145    @@ep = [:eStartCyclic, :eStopCyclic, :eManageCyclic, :eReferCyclic ]
     
    7155        name_array = @celltype.get_name_array cell
    7256        cell_CBP = name_array[8]    # CBP
    73         # CRE_XXXの生成
     57        # CRE_XXXの生成
    7458        if (cell.get_region.get_region_type != :DOMAIN) || (cell.get_region.get_param != :KERNEL_DOMAIN)
    75             # 無所属 or ユーザドメインに属する場合
     59            # 無所属 or ユーザドメインに属する場合
    7660                raise "cyclic handler #{val[:id]} must belong to kernel domain."
    7761        else
     
    8670    end
    8771
    88     #tCyclicHandlerの受け口リスト
     72    #tCyclicHandlerの受け口リスト
    8973    def get_entry_ports_name_list()
    9074        @@ep
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2DataqueuePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 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$
     
    6045    @@ep = [:eSendDataqueue, :eReceiveDataqueue, :eManageDataqueue, :eReferDataqueue ]
    6146    #=== HRP2DataqueuePlugin#print_cfg_cre
    62     # CRE_DTQの出力
    63     # file:: FILE:     å‡ºåŠ›å
    64 ˆãƒ•ã‚¡ã‚¤ãƒ«
    65     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    66     # tab :: string:   ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆç”¨ã®tab
     47    # CRE_DTQの出力
     48    # file:: FILE:     出力先ファイル
     49    # val :: string:   カーネルオブジェクトの属性の解析結果
     50    # tab :: string:   インデント用のtab
    6751    def print_cfg_cre(file, cell, val, tab)
    6852        file.print tab
     
    7054    end
    7155    #=== HRP2DataqueuePlugin#print_cfg_sac
    72     # SAC_DTQの出力
    73     # file:: FILE:     å‡ºåŠ›å
    74 ˆãƒ•ã‚¡ã‚¤ãƒ«
    75     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    76     # acv :: string:   ã‚¢ã‚¯ã‚»ã‚¹ãƒ™ã‚¯ã‚¿   
     56    # SAC_DTQの出力
     57    # file:: FILE:     出力先ファイル
     58    # val :: string:   カーネルオブジェクトの属性の解析結果
     59    # acv :: string:   アクセスベクタ   
    7760    def print_cfg_sac(file, val, acv)
    7861        file.puts "SAC_DTQ(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});"
    7962    end
    80     #tDataqueueの受け口リスト
     63    #tDataqueueの受け口リスト
    8164    def get_entry_ports_name_list()
    8265        @@ep
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2EventflagPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 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$
     
    6045    @@ep = [:eSetEventflag, :eWaitEventflag, :eManageEventflag, :eReferEventflag ]
    6146    #=== HRP2EventflagPlugin#print_cfg_cre
    62     # CRE_FLGの出力
    63     # file:: FILE:     å‡ºåŠ›å
    64 ˆãƒ•ã‚¡ã‚¤ãƒ«
    65     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    66     # tab :: string:   ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆç”¨ã®tab
     47    # CRE_FLGの出力
     48    # file:: FILE:     出力先ファイル
     49    # val :: string:   カーネルオブジェクトの属性の解析結果
     50    # tab :: string:   インデント用のtab
    6751    def print_cfg_cre(file, cell, val, tab)
    6852        file.print tab
     
    7054    end
    7155    #=== HRP2EventflagPlugin#print_cfg_sac
    72     # SAC_FLGの出力
    73     # file:: FILE:     å‡ºåŠ›å
    74 ˆãƒ•ã‚¡ã‚¤ãƒ«
    75     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    76     # acv :: string:   ã‚¢ã‚¯ã‚»ã‚¹ãƒ™ã‚¯ã‚¿   
     56    # SAC_FLGの出力
     57    # file:: FILE:     出力先ファイル
     58    # val :: string:   カーネルオブジェクトの属性の解析結果
     59    # acv :: string:   アクセスベクタ   
    7760    def print_cfg_sac(file, val, acv)
    7861        file.puts "SAC_FLG(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});"
    7962    end
    80     #tEventflagの受け口リスト
     63    #tEventflagの受け口リスト
    8164    def get_entry_ports_name_list()
    8265        @@ep
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2FixedSizeMemoryPoolPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 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$
     
    6045    @@ep = [:eSendFixedSizeMemoryPool, :eReceiveFixedSizeMemoryPool, :eManageFixedSizeMemoryPool, :eReferFixedSizeMemoryPool ]
    6146    #=== HRP2FixedSizeMemoryPoolPlugin#print_cfg_cre
    62     # CRE_MPFの出力
    63     # file:: FILE:     å‡ºåŠ›å
    64 ˆãƒ•ã‚¡ã‚¤ãƒ«
    65     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    66     # tab :: string:   ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆç”¨ã®tab
     47    # CRE_MPFの出力
     48    # file:: FILE:     出力先ファイル
     49    # val :: string:   カーネルオブジェクトの属性の解析結果
     50    # tab :: string:   インデント用のtab
    6751    def print_cfg_cre(file, cell, val, tab)
    6852        file.print tab
     
    7054    end
    7155    #=== HRP2FixedSizeMemoryPoolPlugin#print_cfg_sac
    72     # SAC_MPFの出力
    73     # file:: FILE:     å‡ºåŠ›å
    74 ˆãƒ•ã‚¡ã‚¤ãƒ«
    75     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    76     # acv :: string:   ã‚¢ã‚¯ã‚»ã‚¹ãƒ™ã‚¯ã‚¿   
     56    # SAC_MPFの出力
     57    # file:: FILE:     出力先ファイル
     58    # val :: string:   カーネルオブジェクトの属性の解析結果
     59    # acv :: string:   アクセスベクタ   
    7760    def print_cfg_sac(file, val, acv)
    7861        file.puts "SAC_MPF(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});"
    7962    end
    80     #tFixedSizeMemoryPoolの受け口リスト
     63    #tFixedSizeMemoryPoolの受け口リスト
    8164    def get_entry_ports_name_list()
    8265        @@ep
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2HandlerPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2018 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$
     
    5641require_tecsgen_lib "HRP2KernelObjectPlugin.rb"
    5742
    58 #== celltype プラグインのå
    59 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     43#== celltype プラグインの共通の親クラス
    6044class HRP2HandlerPlugin < HRP2KernelObjectPlugin
    6145    @@ep = [:eStartAlarm, :eStopAlarm, :eManageAlarm, :eReferAlarm ]
     
    7357        name_array = @celltype.get_name_array cell
    7458        cell_CBP = name_array[8]    # CBP
    75         # CRE_XXXの生成
     59        # CRE_XXXの生成
    7660        domainOption = cell.get_region.get_domain_root.get_domain_type.get_option
    7761        # if (cell.get_region.get_region_type != :DOMAIN) || (cell.get_region.get_param != :KERNEL_DOMAIN)
    7862        if (domainOption == "OutOfDomain") || (domainOption != "trusted")
    79             # 無所属 or ユーザドメインに属する場合
     63            # 無所属 or ユーザドメインに属する場合
    8064                raise "#{@plugin_arg_str.to_s.downcase} handler #{val[:id]} must belong to kernel domain."
    8165        elsif @plugin_arg_str == "ALARM"
     
    127111
    128112=begin
    129     #tAlarmの受け口リスト
     113    #tAlarmの受け口リスト
    130114    def get_entry_ports_name_list()
    131115        @@ep
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2KernelObjectPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 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 # Regionクラスにメソッドを追加
     40# Regionクラスにメソッドを追加
    5641=begin
    5742class Region
     
    7055=end
    7156
    72 # Cellクラスにインスタンス変数とメソッドを追加
     57# Cellクラスにインスタンス変数とメソッドを追加
    7358=begin
    7459class Cell
     
    8671    end
    8772
    88     # set_referenced_cellにしたほうがよい
     73    # set_referenced_cellにしたほうがよい
    8974    # def set_referenced_region( region, port_name )
    9075    def set_referenced_cell( cell, port_name )
     
    140125=end
    141126
    142 #== celltype プラグインのå
    143 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     127#== celltype プラグインの共通の親クラス
    144128class HRP2KernelObjectPlugin < CelltypePlugin
    145129    # @@obj_hash = {}
    146130
    147131    #@celltype:: Celltype
    148     #@option:: String     :オプション文字列
     132    #@option:: String     :オプション文字列
    149133    def initialize( celltype, option )
    150134        super
    151         # それぞれのカーネルオブジェクトを解析対象セルタイプに追加
     135        # それぞれのカーネルオブジェクトを解析対象セルタイプに追加
    152136        HRP2KernelObjectPlugin.set_celltype(celltype)
    153137    end
    154138 
    155139    #=== HRP2KernelObjectPlugin#print_cfg_cre
    156     # 各種カーネルオブジェクトのCRE_*の出力
    157     # file:: FILE:     å‡ºåŠ›å
    158 ˆãƒ•ã‚¡ã‚¤ãƒ«
    159     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    160     # tab :: string:   ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆç”¨ã®tab
     140    # 各種カーネルオブジェクトのCRE_*の出力
     141    # file:: FILE:     出力先ファイル
     142    # val :: string:   カーネルオブジェクトの属性の解析結果
     143    # tab :: string:   インデント用のtab
    161144    def print_cfg_cre(file, cell, val, tab)
    162145        raise "called virtual method print_cfg_cre in #{@celltype.get_name} plugin"
     
    164147 
    165148    #=== HRP2KernelObjectPlugin#print_cfg_sac
    166     # 各種カーネルオブジェクトのSAC_*の出力
    167     # file:: FILE:     å‡ºåŠ›å
    168 ˆãƒ•ã‚¡ã‚¤ãƒ«
    169     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    170     # acv :: string:   ã‚¢ã‚¯ã‚»ã‚¹ãƒ™ã‚¯ã‚¿
     149    # 各種カーネルオブジェクトのSAC_*の出力
     150    # file:: FILE:     出力先ファイル
     151    # val :: string:   カーネルオブジェクトの属性の解析結果
     152    # acv :: string:   アクセスベクタ
    171153    def print_cfg_sac(file, val, acv)
    172154        raise "called virtual method print_cfg_sac in #{@celltype.get_name} plugin"
     
    174156 
    175157    #=== HRP2KernelObjectPlugin#get_entry_ports_name_list
    176     # カーネルオブジェクトの各種アクセスの種別の受け口名を取得
     158    # カーネルオブジェクトの各種アクセスの種別の受け口名を取得
    177159    def get_entry_ports_name_list()
    178160        raise "called virtual method get_entry_ports_name_list in #{@celltype.get_name} plugin"
     
    186168        puts "===== begin #{@celltype.get_name.to_s} plugin ====="
    187169
    188         # 対象となるすべてのセルについて、受け口に結合されている
    189         # セルの所属ドメインを解析
     170        # 対象となるすべてのセルについて、受け口に結合されている
     171        # セルの所属ドメインを解析
    190172        if !HRP2KernelObjectPlugin.isChecked()
    191173            HRP2KernelObjectPlugin.check_referenced_cells()
     
    194176        end
    195177
    196         # 追記するために AppFile を使う(文字コード変換されない)
     178        # 追記するために AppFile を使う(文字コード変換されない)
    197179        file2 = AppFile.open( "#{$gen}/tecsgen.cfg" )
    198180        file2.print "\n/* Generated by #{self.class.name} */\n\n"
     
    201183            if cell.is_generate?
    202184                puts "===== begin check my domain #{cell.get_name} ====="
    203                 # attrの値をハッシュにå
    204 ¥ã‚Œã‚‹
     185                # attrの値をハッシュに入れる
    205186                val = {}
    206187                @celltype.get_attribute_list.each{ |a|
     
    209190                        val[a.get_name] = []
    210191                        if j = cell.get_join_list.get_item(a.get_name)
    211                             # セル生成時に初期化する場合
     192                            # セル生成時に初期化する場合
    212193                            j.get_rhs.each { |elem|
    213194                                val[a.get_name] << elem.to_s
    214195                            }
    215196                        elsif i = a.get_initializer
    216                             # セルタイプの初期化値を使う場合
     197                            # セルタイプの初期化値を使う場合
    217198                            i.each { |elem|
    218199                                val[a.get_name] << elem.to_s
     
    223204                    else
    224205                        if j = cell.get_join_list.get_item(a.get_name)
    225                             # セル生成時に初期化する場合
     206                            # セル生成時に初期化する場合
    226207                            val[a.get_name] = j.get_rhs.to_s
    227208                        elsif i = a.get_initializer
    228                             # セルタイプの初期化値を使う場合
     209                            # セルタイプの初期化値を使う場合
    229210                            val[a.get_name] = i.to_s
    230211                        else
     
    233214                    end
    234215                }
    235                 # generate.rbを参考に
    236                 # $id$を置換
     216                # generate.rbを参考に
     217                # $id$を置換
    237218                if val[:id].nil? != true
    238219                    puts val[:id]
     
    240221                    val[:id] = @celltype.subst_name( val[:id], @celltype.get_name_array( cell ) )
    241222                end
    242                 # $cbp$の代わり
     223                # $cbp$の代わり
    243224                index = cell.get_id - @celltype.get_id_base
    244225                cell_CB_name = "#{@celltype.get_global_name}_CB_tab[#{index}]"
     
    246227                cell_domain_type = cell.get_region.get_domain_root.get_domain_type
    247228
    248                 # CRE_XXX/DEF_XXXの生成
     229                # CRE_XXX/DEF_XXXの生成
    249230                if cell_domain_type.get_option.to_s != "OutOfDomain"
    250                     # 保護ドメインに属する場合
     231                    # 保護ドメインに属する場合
    251232                    if !HRP2KernelObjectPlugin.include_region(cell_domain_root.get_name.to_s)
    252                         # その保護ドメインの.cfgが生成されていない場合
     233                        # その保護ドメインの.cfgが生成されていない場合
    253234                        HRP2KernelObjectPlugin.set_region_list(cell_domain_root.get_name.to_s)
    254235                        puts "~~~~~ #{cell_domain_root.get_name.to_s} is registered!"
     
    271252                    file3.close
    272253                else
    273                     # 無所属の場合
     254                    # 無所属の場合
    274255                    puts "~~~~~ #{cell_domain_root.get_name.to_s} is OutOfDomain"
    275256                    print_cfg_cre(file2, cell, val, "")
     
    277258
    278259                puts "===== end check my domain #{cell.get_name} ====="
    279                 # SAC_XXXの生成
     260                # SAC_XXXの生成
    280261                if !val[:accessPattern].nil?
    281262                    puts "===== begin check regions #{cell.get_name} ====="
     
    284265
    285266                    #ep = [ :eTaskActivate, :eTaskControl, :eTaskManage, :eTaskRefer ]
    286                     #各カーネルオブジェクトの受け口名を取得
     267                    #各カーネルオブジェクトの受け口名を取得
    287268                    # ep = get_entry_ports_name_list()
    288269                    i = 0
    289270                    acv = []
    290                     # アクセス許可ベクタの生成
     271                    # アクセス許可ベクタの生成
    291272                    val[:accessPattern].each { |acptnx|
    292                         # アクセス許可パターンの生成
     273                        # アクセス許可パターンの生成
    293274                        if acptnx != "OMIT"
    294275                            acv << acptnx
     
    309290                    p acv
    310291
    311                     #各種SACの生成
     292                    #各種SACの生成
    312293                    domainOption = cell_domain_type.get_option
    313294                    # if cell.get_region.get_region_type == :DOMAIN
    314295                    if domainOption != "OutOfDomain"
    315                         # 保護ドメインに属する場合
     296                        # 保護ドメインに属する場合
    316297                        file3 = AppFile.open( "#{$gen}/tecsgen_#{cell.get_region.get_name.to_s}.cfg" )
    317298                        print_cfg_sac(file3, val, acv)
    318299                        file3.close
    319300                    else
    320                         # 無所属の場合
     301                        # 無所属の場合
    321302                        print_cfg_sac(file2, val, acv)
    322303                    end
     
    331312    end
    332313
    333     # カーネルオブジェクトセルタイプの管理
    334     # HRP2KernelObjectPluginクラスに対してメソッド呼出しを行うことを想定
     314    # カーネルオブジェクトセルタイプの管理
     315    # HRP2KernelObjectPluginクラスに対してメソッド呼出しを行うことを想定
    335316    @@checked = false
    336317    @@celltype_list = []
     
    355336                printf "===== check call port : "
    356337                # p p.get_name.to_s
    357                 next if j.nil? # 未結合の場合
     338                next if j.nil? # 未結合の場合
    358339                if @@celltype_list.include?(j.get_celltype)
    359340                    # j.get_cell.set_referenced_region(cell.get_region)
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2ObjectPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 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$
     
    7055
    7156    #=== HRP2SemaphorePlugin#print_cfg_cre
    72     # CRE_SEMの出力
    73     # file:: FILE:     å‡ºåŠ›å
    74 ˆãƒ•ã‚¡ã‚¤ãƒ«
    75     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    76     # tab :: string:   ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆç”¨ã®tab
     57    # CRE_SEMの出力
     58    # file:: FILE:     出力先ファイル
     59    # val :: string:   カーネルオブジェクトの属性の解析結果
     60    # tab :: string:   インデント用のtab
    7761    def print_cfg_cre(file, cell, val, tab)
    7862        if @@api.has_key?(@plugin_arg_str) == false
     
    8872    end
    8973    #=== HRP2SemaphorePlugin#print_cfg_sac
    90     # SAC_SEMの出力
    91     # file:: FILE:     å‡ºåŠ›å
    92 ˆãƒ•ã‚¡ã‚¤ãƒ«
    93     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    94     # acv :: string:   ã‚¢ã‚¯ã‚»ã‚¹ãƒ™ã‚¯ã‚¿   
     74    # SAC_SEMの出力
     75    # file:: FILE:     出力先ファイル
     76    # val :: string:   カーネルオブジェクトの属性の解析結果
     77    # acv :: string:   アクセスベクタ   
    9578    def print_cfg_sac(file, val, acv)
    9679        if @@api.has_key?(@plugin_arg_str) == false
     
    10487
    10588=begin
    106     #tSemaphoreの受け口リスト
     89    #tSemaphoreの受け口リスト
    10790    def get_entry_ports_name_list()
    10891        @@ep
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2Plugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2018 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$
     
    5439
    5540#
    56 # 各メソッドの役割りは、DomainPlugin.rb を参ç
    57 §ã®ã“と
    58 # HRP2カーネル用ドメインプラグイン
     41# 各メソッドの役割りは、DomainPlugin.rb を参照のこと
     42# HRP2カーネル用ドメインプラグイン
    5943class HRP2Plugin < DomainPlugin
    6044
     
    7155    else
    7256      cdl_error( "HRPPlugin: '$1' is unacceptable domain kind, specify 'trusted' or 'nontrusted'", option )
    73       @option = "trusted"   # とりあえず trusted を設定しておく
     57      @option = "trusted"   # とりあえず trusted を設定しておく
    7458    end
    7559  end
    7660
    7761  def add_through_plugin( join, current_region, next_region, through_type )
    78     # join.get_owner:Cell  左辺のセル
    79     # join.get_definition:Port 呼び口
    80     # join.get_subscript:Integer or nil 呼び口é
    81 åˆ—の添数 (Join::@subscript の説明参ç
    82 §)
    83     # join.get_cell:Cell 右辺のセル
    84     # join.get_port_name:Symbol 受け口
    85     # get_rhs_subscript:Integer or nil 受け口é
    86 åˆ—の添数 (Join::@rhs_subscript の説明参ç
    87 §)
     62    # join.get_owner:Cell  左辺のセル
     63    # join.get_definition:Port 呼び口
     64    # join.get_subscript:Integer or nil 呼び口配列の添数 (Join::@subscript の説明参照)
     65    # join.get_cell:Cell 右辺のセル
     66    # join.get_port_name:Symbol 受け口
     67    # get_rhs_subscript:Integer or nil 受け口配列の添数 (Join::@rhs_subscript の説明参照)
    8868    # return []
    8969    print "HRP2Plugin: add_through_plugin: #{current_region.get_name}=>#{next_region.get_name}, #{join.get_owner.get_name}.#{join.get_definition.get_name}=>#{join.get_cell.get_name}.#{join.get_port_name}, #{through_type}\n"
     
    10282
    10383    if HRP2KernelObjectPlugin.include_celltype?(join.get_cell.get_celltype)
    104         # 結合å
    105 ˆãŒã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトセル
     84        # 結合先がカーネルオブジェクトセル
    10685        # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
    107         # 何もしないthrough
     86        # 何もしないthrough
    10887        puts "***** #{join.get_cell.get_celltype.get_name} is kernel object"
    10988        return []
     
    11392    # elsif next_domain.nil?
    11493    elsif next_domain.get_option.to_s == "OutOfDomain"
    115     #     # 結合å
    116 ˆãŒç„¡æ‰€å±ž
    117     #     # 何もしないthrough
     94    #     # 結合先が無所属
     95    #     # 何もしないthrough
    11896    #     # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
    11997        puts "***** nil"
     
    122100    #elsif @start_region.get_param != :KERNEL_DOMAIN && @end_region.get_param == :KERNEL_DOMAIN
    123101    elsif current_domain.get_option.to_s != "trusted" && next_domain.get_option.to_s == "trusted"
    124         # ユーザドメインからカーネルドメインへの結合
     102        # ユーザドメインからカーネルドメインへの結合
    125103        # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
    126104        puts "***** svc"
    127105        return [ :HRP2SVCPlugin, "" ]
    128106    elsif current_domain != next_domain
    129         # ユーザドメインから別のユーザドメインへの結合
     107        # ユーザドメインから別のユーザドメインへの結合
    130108        # @plugin_body = HRP2RPCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
    131109        puts "***** rpc"
    132110        return [ :HRP2RPCPlugin, "channelCelltype=tMessagebufferChannel,noClientSemaphore=true" ]
    133111    else
    134         # その他
    135         # 何もしないthrough
     112        # その他
     113        # 何もしないthrough
    136114        # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
    137115        print "warning: at HRP2 Join Check"
     
    142120  end
    143121
    144   #== ドメイン種別を返す
     122  #== ドメイン種別を返す
    145123  #return::Symbol :kernel, :user, :OutOfDomain
    146124  def get_kind
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2PostHook.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2017 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$
     
    6449
    6550    def generate
    66         # カーネルオブジェクトのセルタイプはメモリ保護しない
     51        # カーネルオブジェクトのセルタイプはメモリ保護しない
    6752#=begin
    68         # TODO: テストのために無効化
     53        # TODO: テストのために無効化
    6954        if HRP2KernelObjectPlugin.include_celltype?( @celltype )
    7055            puts "nothing is generated for kernel object component"
     
    7560        rlist = @celltype.get_region_list
    7661        if @celltype.is_singleton?
    77             # singletonの場合
     62            # singletonの場合
    7863            puts "<singleton>"
    7964
     
    8368                file = AppFile.open( "#{$gen}/tecsgen_#{rlist[0].get_param.to_s}.cfg" )
    8469            end
    85             # セル管理ブロックとスケルトンのメモリ保護
     70            # セル管理ブロックとスケルトンのメモリ保護
    8671            file.print "ATT_MOD(\"#{@celltype.get_global_name}_tecsgen.o\");\n"
    8772            if !@celltype.is_all_entry_inline?
    88                 # セルタイプコードのメモリ保護
     73                # セルタイプコードのメモリ保護
    8974                file.print "ATT_MOD(\"#{@celltype.get_global_name}.o\");\n"
    9075            end
     
    9378
    9479        else
    95             # singletonでない場合
     80            # singletonでない場合
    9681            puts "<non-singleton>"
    9782
    98             # スケルトンとセルタイプコードの保護
     83            # スケルトンとセルタイプコードの保護
    9984            if (rlist.length == 1) &&
    10085                (@celltype.get_n_cell_gen == @celltype.get_n_cell_gen_r( rlist[0] ))
    101                 # 所属する保護ドメインが1つの場合
     86                # 所属する保護ドメインが1つの場合
    10287                puts "<private celltype>"
    10388                file = AppFile.open( "#{$gen}/tecsgen_#{rlist[0].get_param.to_s}.cfg" )
    10489            else
    105                 # 無所属 or 所属する保護ドメインが複数の場合
     90                # 無所属 or 所属する保護ドメインが複数の場合
    10691                puts "<shared celltype>"
    10792                file = AppFile.open( "#{$gen}/tecsgen.cfg" )
    10893            end
    10994
    110             # スケルトンのメモリ保護
     95            # スケルトンのメモリ保護
    11196            file.print "ATT_MOD(\"#{@celltype.get_global_name}_tecsgen.o\");\n"
    11297            if !@celltype.is_all_entry_inline?
    113                 # セルタイプコードのメモリ保護
     98                # セルタイプコードのメモリ保護
    11499                file.print "ATT_MOD(\"#{@celltype.get_global_name}.o\");\n"
    115100            end
    116101            file.close
    117102
    118             # セル管理ブロックの保護
     103            # セル管理ブロックの保護
    119104            rlist.each { |reg|
    120105                file = AppFile.open( "#{$gen}/tecsgen_#{reg.get_param.to_s}.cfg" )
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2PriorityDataqueuePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2012 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$
     
    5843    @@ep = [:eSendPriorityDataqueue, :eReceivePriorityDataqueue, :eManagePriorityDataqueue, :eReferPriorityDataqueue ]
    5944    #=== HRP2PriorityDataqueuePlugin#print_cfg_cre
    60     # CRE_PDQの出力
    61     # file:: FILE:     å‡ºåŠ›å
    62 ˆãƒ•ã‚¡ã‚¤ãƒ«
    63     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    64     # tab :: string:   ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆç”¨ã®tab
     45    # CRE_PDQの出力
     46    # file:: FILE:     出力先ファイル
     47    # val :: string:   カーネルオブジェクトの属性の解析結果
     48    # tab :: string:   インデント用のtab
    6549    def print_cfg_cre(file, cell, val, tab)
    6650        file.print tab
     
    6852    end
    6953    #=== HRP2PriorityDataqueuePlugin#print_cfg_sac
    70     # SAC_PDQの出力
    71     # file:: FILE:     å‡ºåŠ›å
    72 ˆãƒ•ã‚¡ã‚¤ãƒ«
    73     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    74     # acv :: string:   ã‚¢ã‚¯ã‚»ã‚¹ãƒ™ã‚¯ã‚¿   
     54    # SAC_PDQの出力
     55    # file:: FILE:     出力先ファイル
     56    # val :: string:   カーネルオブジェクトの属性の解析結果
     57    # acv :: string:   アクセスベクタ   
    7558    def print_cfg_sac(file, val, acv)
    7659        file.puts "SAC_PDQ(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});"
    7760    end
    78     #tPriorityDataqueueの受け口リスト
     61    #tPriorityDataqueueの受け口リスト
    7962    def get_entry_ports_name_list()
    8063        @@ep
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2RPCPlugin.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$
     
    5742# require_tecsgen_lib "GenParamCopy.rb"
    5843
    59 #= Transparent RPC プラグイン
    60 # Transparent RPC チャンネルを生成する
    61 # プラグイン引数は以下の RPCPluginArgProc を参ç
    62 §
    63 
    64 # mikan through plugin: namespace が考æ
    65 ®ã•ã‚Œã¦ã„ない
    66 # これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定するå¿
    67 è¦ãŒã‚ã‚‹
     44#= Transparent RPC プラグイン
     45# Transparent RPC チャンネルを生成する
     46# プラグイン引数は以下の RPCPluginArgProc を参照
     47
     48# mikan through plugin: namespace が考慮されていない
     49# これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定する必要がある
    6850# tecsgen toppers_jsp.cdl sChannel.cdl your_description.cdl
    6951
    70 # 以下を仮定(制限事é 
    71 ï¼‰
    72 #  呼びå
    73 ƒã€å‘¼ã³å
    74 ˆã®ã‚¨ãƒ³ãƒ‡ã‚£ã‚¢ãƒ³ã€char, short, int_t, long_t, intptr_t のサイズが同じ
    75 #  有符号、無符号でサイズが同じ
     52# 以下を仮定(制限事項)
     53#  呼び元、呼び先のエンディアン、char, short, int_t, long_t, intptr_t のサイズが同じ
     54#  有符号、無符号でサイズが同じ
    7655
    7756#
    78 # RPCを用いたドメイン間通信の
    79 # throughプラグイン
    80 # HRP2ドメインプラグインによって挿å
    81 ¥ã•ã‚Œã‚‹
     57# RPCを用いたドメイン間通信の
     58# throughプラグイン
     59# HRP2ドメインプラグインによって挿入される
    8260#
    8361class HRP2RPCPlugin < ThroughPlugin
     
    8664  # include GenParamCopy
    8765
    88   # RPCPlugin 専用のオプション
    89   TransparentRPCPluginArgProc = RPCPluginArgProc.dup  # 複製を作ってå
    90 ƒã‚’変更しないようにする
     66  # RPCPlugin 専用のオプション
     67  TransparentRPCPluginArgProc = RPCPluginArgProc.dup  # 複製を作って元を変更しないようにする
    9168  TransparentRPCPluginArgProc[ "noClientSemaphore"  ] = Proc.new { |obj,rhs| obj.set_noClientSemaphore rhs }
    9269  TransparentRPCPluginArgProc[ "semaphoreCelltype"  ] = Proc.new { |obj,rhs| obj.set_semaphoreCelltype rhs }
    9370
    94   #=== RPCPlugin の initialize
    95   #  説明は ThroughPlugin (plugin.rb) を参ç
    96 §
     71  #=== RPCPlugin の initialize
     72  #  説明は ThroughPlugin (plugin.rb) を参照
    9773  def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell )
    9874    super
     
    10177    initialize_transparent_marshaler cell_name
    10278
    103     # オプション:GenTransparentMarshaler 参ç
    104 §
     79    # オプション:GenTransparentMarshaler 参照
    10580    @plugin_arg_check_proc_tab = TransparentRPCPluginArgProc
    10681    parse_plugin_arg
     
    11287      if @PPAllocatorSize == nil then
    11388        cdl_error( "PPAllocatorSize must be speicified for oneway [in] array" )
    114         # @PPAllocatorSize = 0   # 仮に 0 としておく (cdl の構文エラーを避けるため)
     89        # @PPAllocatorSize = 0   # 仮に 0 としておく (cdl の構文エラーを避けるため)
    11590      end
    11691    end
     
    11994#      if func_decl.get_type.is_oneway? then
    12095#        if ( param_decl.get_size || param_decl.get_count ) && param_decl.get_string then
    121 #          cdl_error( "array of string not supported for oneway function in Transparent RPC" )  # mikan 文字列のé
    122 åˆ—
     96#          cdl_error( "array of string not supported for oneway function in Transparent RPC" )  # mikan 文字列の配列
    12397#        elsif param_decl.get_string == -1 then
    124 #          cdl_error( "length unspecified string is not permited for oneway function in Transparent RPC" )  # mikan 長さ未指定文字列
     98#          cdl_error( "length unspecified string is not permited for oneway function in Transparent RPC" )  # mikan 長さ未指定文字列
    12599#        end
    126100#      end
     
    128102  end
    129103
    130   #=== plugin の宣言コード (celltype の定義) 生成
     104  #=== plugin の宣言コード (celltype の定義) 生成
    131105  def gen_plugin_decl_code( file )
    132106
    133107    ct_name = "#{@ct_name}_#{@channelCelltype}"
    134108
    135     # このセルタイプ(同じシグニチャ)は既に生成されているか?
     109    # このセルタイプ(同じシグニチャ)は既に生成されているか?
    136110    if @@generated_celltype[ ct_name ] == nil then
    137111      @@generated_celltype[ ct_name ] = [ self ]
     
    166140
    167141    f = CFile.open( @rpc_channel_celltype_file_name, "w" )
    168     # 同じå†
    169 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     142    # 同じ内容を二度書く可能性あり (AppFile は不可)
    170143
    171144    f.print <<EOT
     
    223196};
    224197EOT
    225     # mikan stackSize option & 最新 tecs_package 対応
     198    # mikan stackSize option & 最新 tecs_package 対応
    226199
    227200    f.close
    228201  end
    229202
    230   #===  through cell コードを生成
     203  #===  through cell コードを生成
    231204  #
    232205  #
     
    235208    gen_plugin_decl_code( file )
    236209
    237     # セルを探す
     210    # セルを探す
    238211    # path =["::",@next_cell.get_name]
    239212    # cell = Namespace.find( path )
     
    258231    indent_str = "  " * nest
    259232
    260     # #473 が解決された場合、composite リレーアロケータに変更すべき
    261     # アロケータの指定があるか?
     233    # #473 が解決された場合、composite リレーアロケータに変更すべき
     234    # アロケータの指定があるか?
    262235    if cell.get_allocator_list.length > 0 then
    263236
     
    269242
    270243        file.print delim
    271         delim = ",\n#{indent_str}           "        # 最終行には出さない
    272 
    273         if subsc then        # é
    274 åˆ—添数
     244        delim = ",\n#{indent_str}           "        # 最終行には出さない
     245
     246        if subsc then        # 配列添数
    275247          subsc_str = '[#{subsc}]'
    276248        else
     
    278250        end
    279251
    280         eport = "eThroughEntry" #RPCの受け口名に変更
     252        eport = "eThroughEntry" #RPCの受け口名に変更
    281253        file.print  "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc}"
    282254      end
     
    321293
    322294
    323   #=== プラグイン引数 noClientSemaphore のチェック
     295  #=== プラグイン引数 noClientSemaphore のチェック
    324296  def set_noClientSemaphore rhs
    325297    rhs = rhs.to_sym
     
    333305  end
    334306
    335   #=== プラグイン引数 semaphoreCelltype のチェック
     307  #=== プラグイン引数 semaphoreCelltype のチェック
    336308  def set_semaphoreCelltype rhs
    337309    @semaphoreCelltype = rhs.to_sym
     
    343315  end
    344316
    345   #=== NamespacePath を得る
    346   # 生成するセルの namespace path を生成する
     317  #=== NamespacePath を得る
     318  # 生成するセルの namespace path を生成する
    347319  def get_cell_namespace_path
    348320#    nsp = @region.get_namespace.get_namespace_path
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2SVCPlugin.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 # これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定するå¿
    58 è¦ãŒã‚ã‚‹
     40# mikan through plugin: namespace が考慮されていない
     41# これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定する必要がある
    5942# tecsgen toppers_jsp.cdl sChannel.cdl your_description.cdl
    6043
    61 # 以下を仮定(制限事é 
    62 ï¼‰
    63 #  呼びå
    64 ƒã€å‘¼ã³å
    65 ˆã®ã‚¨ãƒ³ãƒ‡ã‚£ã‚¢ãƒ³ã€char, short, int_t, long_t, intptr_t のサイズが同じ
    66 #  有符号、無符号でサイズが同じ
     44# 以下を仮定(制限事項)
     45#  呼び元、呼び先のエンディアン、char, short, int_t, long_t, intptr_t のサイズが同じ
     46#  有符号、無符号でサイズが同じ
    6747
    6848class SVCManage
    69     # TODO: デフォルトの拡張サービスコール分を予約しておく
    70     # デフォルトの拡張サービスコール(syslogなど)もコンポーネント化するまで
     49    # TODO: デフォルトの拡張サービスコール分を予約しておく
     50    # デフォルトの拡張サービスコール(syslogなど)もコンポーネント化するまで
    7151    @@id = 20
    7252    @@func_ids = {}
     
    9474
    9575#
    96 # 拡張サービスコールを用いたドメイン間通信の
    97 # throughプラグイン
    98 # HRP2ドメインプラグインによって挿å
    99 ¥ã•ã‚Œã‚‹
     76# 拡張サービスコールを用いたドメイン間通信の
     77# throughプラグイン
     78# HRP2ドメインプラグインによって挿入される
    10079#
    10180class HRP2SVCPlugin < ThroughPlugin
    10281
    103   #=== RPCPlugin の initialize
    104   #  説明は ThroughPlugin (plugin.rb) を参ç
    105 §
     82  #=== RPCPlugin の initialize
     83  #  説明は ThroughPlugin (plugin.rb) を参照
    10684  @@generated_celltype_header = {}
    10785
     
    11795  end
    11896
    119   #=== NamespacePath を得る
    120   # 生成するセルの namespace path を生成する
     97  #=== NamespacePath を得る
     98  # 生成するセルの namespace path を生成する
    12199  def get_cell_namespace_path
    122100#    nsp = @region.get_namespace.get_namespace_path
     
    127105  def gen_plugin_decl_code( file )
    128106
    129     # このセルタイプ(同じシグニチャ)は既に生成されているか?
     107    # このセルタイプ(同じシグニチャ)は既に生成されているか?
    130108    if !HRP2KernelObjectPlugin.include_celltype?(@next_cell.get_celltype)
    131109    if @@generated_celltype[ @ct_name_body ] == nil then
     
    145123    end
    146124
    147     # このセルタイプ(同じシグニチャ)は既に生成されているか?
     125    # このセルタイプ(同じシグニチャ)は既に生成されているか?
    148126    if @@generated_celltype[ @ct_name ] == nil then
    149127        @@generated_celltype[ @ct_name ] = [ self ]
     
    156134EOT
    157135        else
    158             # TODO inlineにした方が効率がよいが,tecsgenの生成したヘッダファイルの
    159             # 読込順のためにエラーとなる
     136            # TODO inlineにした方が効率がよいが,tecsgenの生成したヘッダファイルの
     137            # 読込順のためにエラーとなる
    160138        file2.print <<EOT
    161139celltype #{@ct_name} {
     
    174152
    175153=begin
    176     # TODO: send. receive 対応
     154    # TODO: send. receive 対応
    177155    send_receive = []
    178156    if @signature != nil then
     
    206184  end
    207185
    208   #===  through cell コードを生成
     186  #===  through cell コードを生成
    209187  #
    210188  #
     
    215193
    216194    if !HRP2KernelObjectPlugin.include_celltype?(@next_cell.get_celltype)
    217     # セルを探す
     195    # セルを探す
    218196    # path =["::",@next_cell.get_name]  # mikan namespace
    219197    # cell = Namespace.find( path )
    220198    # cell = Namespace.find( @next_cell.get_namespace_path )
    221199
    222     ##### クライアント側のセルの生成 #####
     200    ##### クライアント側のセルの生成 #####
    223201    # file.print "[domain(HRP2, \"trusted\")]"
    224202    nest = @start_region.gen_region_str_pre file
    225203    nest_str = "  " * nest
    226204
    227     # クライアント側チャンネルの生成
    228     # 拡張サービスコール呼出し
     205    # クライアント側チャンネルの生成
     206    # 拡張サービスコール呼出し
    229207    file.print <<EOT
    230208#{nest_str}  //  Client Side Channel
     
    237215    file.print "\n\n"
    238216
    239     ##### サーバー側のセルの生成 #####
     217    ##### サーバー側のセルの生成 #####
    240218    nest = @end_region.gen_region_str_pre file
    241219    nest_str = "  " * nest
     
    246224    end
    247225
    248     # サーバー側チャンネルの生成
    249     # 拡張サービスコール本体
     226    # サーバー側チャンネルの生成
     227    # 拡張サービスコール本体
    250228    file.print <<EOT
    251229
     
    266244    else
    267245
    268     ##### クライアント側のセルの生成 #####
     246    ##### クライアント側のセルの生成 #####
    269247    nest = @start_region.gen_region_str_pre file
    270248    nest_str = "  " * nest
     
    275253    end
    276254
    277     # クライアント側チャンネルの生成
    278     # 拡張サービスコール呼出し
     255    # クライアント側チャンネルの生成
     256    # 拡張サービスコール呼出し
    279257    file.print <<EOT
    280258#{nest_str}  //  Client Side Channel
     
    291269   end
    292270
    293   #===  受け口関数の本体(C言語)を生成する
    294   #     é€šå¸¸ã§ã‚れば、ジェネレータは受け口関数のテンプレートを生成する
    295   #     ãƒ—ラグインの場合、変更するå¿
    296 è¦ã®ãªã„セルタイプコードを生成する
    297   #file::           FILE        出力å
    298 ˆãƒ•ã‚¡ã‚¤ãƒ«
     271  #===  受け口関数の本体(C言語)を生成する
     272  #     通常であれば、ジェネレータは受け口関数のテンプレートを生成する
     273  #     プラグインの場合、変更する必要のないセルタイプコードを生成する
     274  #file::           FILE        出力先ファイル
    299275  #b_singleton::    bool        true if singleton
    300276  #ct_name::        Symbol
     
    309285
    310286    if !HRP2KernelObjectPlugin.include_celltype?(@next_cell.get_celltype)
    311         # 拡張サービスコール呼出し
     287        # 拡張サービスコール呼出し
    312288        if ! func_type.get_type.kind_of?( VoidType ) then
    313289            file.print( "  #{func_type.get_type_str}  retval;\n" )
     
    321297    p_cellcb = #{global_ct_name}_GET_CELLCB(idx);
    322298  }else{
    323      /* エラー処理コードをここに記述 */
     299     /* エラー処理コードをここに記述 */
    324300  }
    325301
     
    372348        end
    373349
    374         # 拡張サービスコール本体
     350        # 拡張サービスコール本体
    375351        if new_func
    376352            file2 = AppFile.open( "#{$gen}/#{@ct_name_body}.c" )
     
    381357#                 file2.print <<EOT
    382358# /*
    383 #  * このファイルは tecsgen により自動生成されました
    384 #  * このファイルを編集して使用することは、意図されていません
     359#  * このファイルは tecsgen により自動生成されました
     360#  * このファイルを編集して使用することは、意図されていません
    385361#  */
    386362# /* #[<PREAMBLE>]#
    387 #  * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
    388 #  * tecsmerge によるマージに使用されます
     363#  * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
     364#  * tecsmerge によるマージに使用されます
    389365#  *
    390366#  * #[</PREAMBLE>]# */
    391367#
    392 # /* プロトタイプ宣言や変数の定義をここに書きます #_PAC_# */
     368# /* プロトタイプ宣言や変数の定義をここに書きます #_PAC_# */
    393369# #include "#{@ct_name_body}_tecsgen.h"
    394370#
     
    418394      p_cellcb = #{@ct_name_body}_GET_CELLCB(idx);
    419395    }else{
    420        /* エラー処理コードをここに記述 */
     396       /* エラー処理コードをここに記述 */
    421397    }
    422398#else
     
    474450            file2 = AppFile.open( "#{$gen}/tecsgen.cfg" )
    475451            file2.print "\n/* Generated by HRP2SVCPlugin */\n\n"
    476             # TODO: スタックサイズは適当
     452            # TODO: スタックサイズは適当
    477453            file2.print <<EOT
    478454KERNEL_DOMAIN{
     
    490466        end
    491467    else
    492         # カーネルドメインのセルは特別なことは何もせず,普通に呼び出す
     468        # カーネルドメインのセルは特別なことは何もせず,普通に呼び出す
    493469        super
    494470    end
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2SemaphorePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2011 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$
     
    5944    @@ep = [:eSignalSemaphore, :eWaitSemaphore, :eManageSemaphore, :eReferSemaphore ]
    6045    #=== HRP2SemaphorePlugin#print_cfg_cre
    61     # CRE_SEMの出力
    62     # file:: FILE:     å‡ºåŠ›å
    63 ˆãƒ•ã‚¡ã‚¤ãƒ«
    64     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    65     # tab :: string:   ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆç”¨ã®tab
     46    # CRE_SEMの出力
     47    # file:: FILE:     出力先ファイル
     48    # val :: string:   カーネルオブジェクトの属性の解析結果
     49    # tab :: string:   インデント用のtab
    6650    def print_cfg_cre(file, cell, val, tab)
    6751        file.print tab
     
    6953    end
    7054    #=== HRP2SemaphorePlugin#print_cfg_sac
    71     # SAC_SEMの出力
    72     # file:: FILE:     å‡ºåŠ›å
    73 ˆãƒ•ã‚¡ã‚¤ãƒ«
    74     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    75     # acv :: string:   ã‚¢ã‚¯ã‚»ã‚¹ãƒ™ã‚¯ã‚¿   
     55    # SAC_SEMの出力
     56    # file:: FILE:     出力先ファイル
     57    # val :: string:   カーネルオブジェクトの属性の解析結果
     58    # acv :: string:   アクセスベクタ   
    7659    def print_cfg_sac(file, val, acv)
    7760        file.puts "SAC_SEM(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});"
    7861    end
    79     #tSemaphoreの受け口リスト
     62    #tSemaphoreの受け口リスト
    8063    def get_entry_ports_name_list()
    8164        @@ep
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2TaskPlugin.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$
     
    5540#require "HRP2KernelObjectPlugin"
    5641require_tecsgen_lib "HRP2KernelObjectPlugin.rb"
    57 #== celltype プラグインのå
    58 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     42#== celltype プラグインの共通の親クラス
    5943class HRP2TaskPlugin < HRP2KernelObjectPlugin
    6044    # @@ep = [:eActivateTask, :eControlTask, :eManageTask, :eReferTask ]
    61     # ATT_MODを生成済みかどうか
     45    # ATT_MODを生成済みかどうか
    6246    @@generate_memory_module = false
    6347
     
    7155        #val[:id] = val[:id].gsub( /(^|[^\$])\$id\$/, "\\1#{@celltype.get_name.to_s}_#{cell.get_global_name.to_s}" )
    7256        #val[:id] = @celltype.subst_name( val[:id], @celltype.get_name_array( cell ) )
    73         # $cbp$の代わり
     57        # $cbp$の代わり
    7458        index = cell.get_id - @celltype.get_id_base
    7559        #cell_CB_name = "#{@celltype.get_global_name}_pCB_tab[#{index}]"
    7660        cell_CB_name = "#{index}"
    77         # CRE_XXX/DEF_XXXの生成
     61        # CRE_XXX/DEF_XXXの生成
    7862        dbgPrint "assign task plugin\n"
    7963        domainOption = cell.get_region.get_domain_root.get_domain_type.get_option
     
    8165# cell.show_tree 1
    8266        if domainOption != "OutOfDomain"
    83             # 保護ドメインに属する場合
     67            # 保護ドメインに属する場合
    8468            if domainOption == "trusted"
    85                 # カーネルドメイン
     69                # カーネルドメイン
    8670                if val[:userStackSize] != "OMIT"
    8771                    raise "system task cannot have user stack."
     
    9276EOT
    9377            else
    94                 # ユーザドメイン
     78                # ユーザドメイン
    9579                if val[:userStackSize] == "OMIT"
    9680                    raise "user task must have user stack."
     
    10993            end
    11094        else
    111             # 無所属の場合
     95            # 無所属の場合
    11296            raise "task #{val[:id]} must belong to a domain."
    11397        end
    11498   
    115         # 例外用のを生成
     99        # 例外用のを生成
    116100        file.print <<EOT
    117101#{tab}DEF_TEX(#{val[:id]}, { #{val[:exceptionAttribute]}, tTask_start_exception });
     
    124108
    125109=begin
    126     #tTaskの受け口リスト
     110    #tTaskの受け口リスト
    127111    def get_entry_ports_name_list()
    128112        @@ep
     
    130114=end
    131115    #
    132     #  ATT_MODの生成
    133     #  gen_factory実行時には,すべてのセルタイププラグインを生成済みのはずなので,
    134     #  カーネルAPIコードのメモリ保護を省略できる.
     116    #  ATT_MODの生成
     117    #  gen_factory実行時には,すべてのセルタイププラグインを生成済みのはずなので,
     118    #  カーネルAPIコードのメモリ保護を省略できる.
    135119    #
    136120    def gen_factory file
     
    140124
    141125            Cell.get_cell_list2.each { |cell|
    142                 # すべてのセルを走査してセルタイプをチェック
     126                # すべてのセルを走査してセルタイプをチェック
    143127                ct = cell.get_celltype
    144128                if ct.class == Celltype && check_celltype_list.include?( ct ) == false
    145                     # チェック済みセルタイプに登録
     129                    # チェック済みセルタイプに登録
    146130                    check_celltype_list << ct
    147131
    148                     # 未チェックのセルタイプだった場合
     132                    # 未チェックのセルタイプだった場合
    149133                    # puts "check for ATT_MOD : #{ct.classget_global_name}"
    150134                    puts "check for ATT_MOD : #{ct.get_global_name}"
    151135                       
    152                     # カーネルAPIのコード,データはメモリ保護しない
     136                    # カーネルAPIのコード,データはメモリ保護しない
    153137                    next if HRP2KernelObjectPlugin.include_celltype?( ct )
    154138
    155                     # å¿
    156 è¦ã®ãªã„セルタイプのコード,データはメモリ保護しない
     139                    # 必要のないセルタイプのコード,データはメモリ保護しない
    157140                    next if ! ct.need_generate?
    158141
    159                     # HRP2のドメインリージョンを取得
     142                    # HRP2のドメインリージョンを取得
    160143                    regions = ct.get_domain_roots
    161144                    regions_hrp2 = regions[ :HRP2 ]
     
    166149                    puts ""
    167150
    168                     # セル管理ブロックとスケルトンのメモリ保護
    169                     # gen_celltype_names_domain 相当の処理
     151                    # セル管理ブロックとスケルトンのメモリ保護
     152                    # gen_celltype_names_domain 相当の処理
    170153                    if regions_hrp2.include?( Region.get_root ) == false && regions_hrp2.length > 1
    171                         # ドメインが複数で,OutOfDomainにセルが存在しないセルタイプの場合
    172                         # å
    173 ±æœ‰ã®ã‚»ãƒ«ç®¡ç†ãƒ–ロックとスケルトンコードを登録する
     154                        # ドメインが複数で,OutOfDomainにセルが存在しないセルタイプの場合
     155                        # 共有のセル管理ブロックとスケルトンコードを登録する
    174156                        file = AppFile.open( "#{$gen}/tecsgen.cfg" )
    175157                        file.print "ATT_MOD(\"#{ct.get_global_name}_tecsgen.o\");\n"
     
    188170                    }
    189171
    190                     # セルタイプコードがない場合はスキップ
     172                    # セルタイプコードがない場合はスキップ
    191173                    next if ct.is_all_entry_inline? && ! ct.is_active?
    192174
    193                     # セルタイプコードのメモリ保護
    194                     # gen_celltype_names_domain2 相当の処理
     175                    # セルタイプコードのメモリ保護
     176                    # gen_celltype_names_domain2 相当の処理
    195177                    if regions_hrp2.include?( Region.get_root ) == true || regions_hrp2.length > 1
    196                         # OutOfDomainにセルが存在するセルタイプの場合
    197                         # または,複数のドメインにセルが存在するセルタイプの場合
    198                         # セルタイプコードをå
    199 ±æœ‰ã™ã‚‹ã‚ˆã†ã«ç™»éŒ²ã™ã‚‹
     178                        # OutOfDomainにセルが存在するセルタイプの場合
     179                        # または,複数のドメインにセルが存在するセルタイプの場合
     180                        # セルタイプコードを共有するように登録する
    200181                        file = AppFile.open( "#{$gen}/tecsgen.cfg" )
    201182                    else
    202                         # OutOfDomainでない単一のドメインにセルが存在するセルタイプの場合
    203                         # セルタイプコードを専有するように登録する
     183                        # OutOfDomainでない単一のドメインにセルが存在するセルタイプの場合
     184                        # セルタイプコードを専有するように登録する
    204185                        file = AppFile.open( "#{$gen}/tecsgen_#{regions_hrp2[0].get_namespace_path.get_global_name}.cfg" )
    205186                    end
     
    208189                    file.close
    209190                else
    210                     # 何もしない
     191                    # 何もしない
    211192                end
    212193            }
     
    214195            @@generate_memory_module = true
    215196        else
    216             # 何もしない
     197            # 何もしない
    217198        end
    218199    end
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRPHandlerPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2018 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#++
     
    5540
    5641
    57 #== celltype プラグインのå
    58 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     42#== celltype プラグインの共通の親クラス
    5943class HRPHandlerPlugin < HRPKernelObjectPlugin
    6044
     
    7862            val[:id] = val[:id].gsub( /(^|[^\$])\$id\$/, "\\1#{@celltype.get_name.to_s}_#{cell.get_name.to_s}" )
    7963        end
    80         # $cbp$の代わり
     64        # $cbp$の代わり
    8165        index = cell.get_id - @celltype.get_id_base
    8266        #cell_CB_name = "#{@celltype.get_global_name}_CB_tab[#{index}]"
    8367        name_array = cell.get_celltype.get_name_array cell
    8468        cell_CBP = name_array[8]
    85         # CRE_XXXの生成
     69        # CRE_XXXの生成
    8670        domainOption = cell.get_region.get_domain_root.get_domain_type.get_option
    8771        if (domainOption == "OutOfDomain") || (domainOption != "kernel")
    88             # 無所属 or ユーザドメインに属する場合
     72            # 無所属 or ユーザドメインに属する場合
    8973                raise "#{@plugin_arg_str.to_s.downcase} handler #{val[:id]} must belong to kernel domain."
    9074        elsif @plugin_arg_str == "CONFIG_INT"
     
    125109            # nothing to do
    126110        elsif @plugin_arg_str == "ISR"
    127             # kernel.cdl の tISR で accessPattern1 ~ accessPattern4 が定義されているときの名残。
    128             # accessPattern1 が定義されていない場合、こここへは来ない.復活したときに備えて残しておく.
     111            # kernel.cdl の tISR で accessPattern1 ~ accessPattern4 が定義されているときの名残。
     112            # accessPattern1 が定義されていない場合、こここへは来ない.復活したときに備えて残しておく.
    129113            # file.puts "SAC_#{@plugin_arg_str}(#{val[:id]}, { #{acv[:accessPattern1]}, #{acv[:accessPattern2]}, #{acv[:accessPattern3]}, #{acv[:accessPattern4]} });"
    130114            puts "*** Unsupported *** SAC_#{@plugin_arg_str}(#{val[:id]}, { #{acv[:accessPattern1]}, #{acv[:accessPattern2]}, #{acv[:accessPattern3]}, #{acv[:accessPattern4]} });\n"
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRPKernelObjectManager.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    55#   Copyright (C) 2015-2018 by TOPPERS Project
    66#--
    7 #   ä¸Šè¨˜è‘—作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    9 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    10 #   å¤‰ãƒ»å†é
    11 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    12 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    13 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    14 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    15 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    16 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    17 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    18 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    19 #       è€
    20 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    21 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    22 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    23 #       ç”¨ã§ããªã„形で再é
    24 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    25 #       ã¨ï¼Ž
    26 #     (a) 再é
    27 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    28 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    29 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    30 #     (b) 再é
    31 å¸ƒã®å½¢æ
    32 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    33 #         å ±å‘Šã™ã‚‹ã“と.
    34 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    35 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    36 ãŠã‚ˆã³TOPPERSプロジェクトをå
    37 è²¬ã™ã‚‹ã“と.
    38 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    39 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトを
    41 #       å
    42 è²¬ã™ã‚‹ã“と.
     7#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     8#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     9#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     10#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     11#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     12#       スコード中に含まれていること.
     13#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     14#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     15#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     16#       の無保証規定を掲載すること.
     17#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     18#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     19#       と.
     20#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     21#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     22#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     23#         報告すること.
     24#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     25#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     26#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     27#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     28#       免責すること.
    4329
    44 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    45 ãŠ
    46 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    47 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    48 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    49 #   ã®è²¬ä»»ã‚’負わない.
     30#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     31#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     32#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     33#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     34#   の責任を負わない.
    5035#
    5136#   $Id$
     
    7762    def initialize()
    7863        #
    79         #  本クラスはインスタンスを持たない仮想的なクラスである
     64        #  本クラスはインスタンスを持たない仮想的なクラスである
    8065        #
    8166        raise "class #{self.class.name} shall not have instances"
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRPKernelObjectPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2018 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#
     
    5439#++
    5540
    56 #== celltype プラグインのå
    57 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     41#== celltype プラグインの共通の親クラス
    5842class HRPKernelObjectPlugin < CelltypePlugin
    5943    # @@obj_hash = {}
    6044
    6145    #@celltype:: Celltype
    62     #@option:: String     :オプション文字列
     46    #@option:: String     :オプション文字列
    6347    def initialize( celltype, option )
    6448        super
    6549        #
    66         #  それぞれのカーネルオブジェクトを解析対象セルタイプに追加
    67         #  目的:
    68         #   - カーネルオブジェクトのセルをメモリ保護対象外とする
    69         #    - カーネルオブジェクト本体の管理はTECSでなくOSで実施するため
    70         #   - カーネルオブジェクトのセルへのアクセスを直接関数呼出し
    71         #   ã€€ã¨ã™ã‚‹
    72         #    - システムサービス呼出しはOSが提供するため
     50        #  それぞれのカーネルオブジェクトを解析対象セルタイプに追加
     51        #  目的:
     52        #   - カーネルオブジェクトのセルをメモリ保護対象外とする
     53        #    - カーネルオブジェクト本体の管理はTECSでなくOSで実施するため
     54        #   - カーネルオブジェクトのセルへのアクセスを直接関数呼出し
     55        #    とする
     56        #    - システムサービス呼出しはOSが提供するため
    7357        HRPKernelObjectPlugin.set_celltype(celltype)
    7458    end
    7559 
    7660    #=== HRPKernelObjectPlugin#print_cfg_cre
    77     # 各種カーネルオブジェクトのCRE_*の出力
    78     # file:: FILE:     å‡ºåŠ›å
    79 ˆãƒ•ã‚¡ã‚¤ãƒ«
    80     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    81     # tab :: string:   ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆç”¨ã®tab
     61    # 各種カーネルオブジェクトのCRE_*の出力
     62    # file:: FILE:     出力先ファイル
     63    # val :: string:   カーネルオブジェクトの属性の解析結果
     64    # tab :: string:   インデント用のtab
    8265    def print_cfg_cre(file, cell, val, tab)
    8366        raise "called virtual method print_cfg_cre in #{@celltype.get_name} plugin"
     
    8568 
    8669    #=== HRPKernelObjectPlugin#print_cfg_sac
    87     # 各種カーネルオブジェクトのSAC_*の出力
    88     # file:: FILE:     å‡ºåŠ›å
    89 ˆãƒ•ã‚¡ã‚¤ãƒ«
    90     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    91     # acv :: string:   ã‚¢ã‚¯ã‚»ã‚¹ãƒ™ã‚¯ã‚¿
     70    # 各種カーネルオブジェクトのSAC_*の出力
     71    # file:: FILE:     出力先ファイル
     72    # val :: string:   カーネルオブジェクトの属性の解析結果
     73    # acv :: string:   アクセスベクタ
    9274    def print_cfg_sac(file, val, acv)
    9375        raise "called virtual method print_cfg_sac in #{@celltype.get_name} plugin"
     
    9577 
    9678    #
    97     #  セルタイププラグインの本体メソッド
    98     #   - 静的APIの生成
    99     #  file:: FILE:     å‡ºåŠ›å
    100 ˆãƒ•ã‚¡ã‚¤ãƒ«
     79    #  セルタイププラグインの本体メソッド
     80    #   - 静的APIの生成
     81    #  file:: FILE:     出力先ファイル
    10182    #
    10283    def gen_factory file
     
    10485
    10586        #
    106         # 対象となるすべてのセルについて、受け口に結合されている
    107         # セルの所属ドメインを解析
    108         #  - 生成すべきcfgファイル名を取得するためにå¿
    109 è¦
     87        # 対象となるすべてのセルについて、受け口に結合されている
     88        # セルの所属ドメインを解析
     89        #  - 生成すべきcfgファイル名を取得するために必要
    11090        #
    11191        if !HRPKernelObjectPlugin.isChecked()
     
    11595        end
    11696
    117         # 追記するために AppFile を使う(文字コード変換されない)
     97        # 追記するために AppFile を使う(文字コード変換されない)
    11898        file2 = AppFile.open( "#{$gen}/tecsgen.cfg" )
    11999        file2.print "\n/* Generated by #{self.class.name} */\n\n"
     
    123103                dbgPrint "===== begin check my domain #{cell.get_name} =====\n"
    124104                #
    125                 #  カーネルオブジェクトの属性を,valにコピー
     105                #  カーネルオブジェクトの属性を,valにコピー
    126106                #
    127107                val = {}
     
    131111                        val[a.get_name] = []
    132112                        if j = cell.get_join_list.get_item(a.get_name)
    133                             # セル生成時に初期化する場合
     113                            # セル生成時に初期化する場合
    134114                            j.get_rhs.each { |elem|
    135115                                val[a.get_name] << elem.to_s
    136116                            }
    137117                        elsif i = a.get_initializer
    138                             # セルタイプの初期化値を使う場合
     118                            # セルタイプの初期化値を使う場合
    139119                            i.each { |elem|
    140120                                val[a.get_name] << elem.to_s
     
    145125                    else
    146126                        if j = cell.get_join_list.get_item(a.get_name)
    147                             # セル生成時に初期化する場合
     127                            # セル生成時に初期化する場合
    148128                            val[a.get_name] = j.get_rhs.to_s
    149129                        elsif i = a.get_initializer
    150                             # セルタイプの初期化値を使う場合
     130                            # セルタイプの初期化値を使う場合
    151131                            val[a.get_name] = i.to_s
    152132                        else
     
    155135                    end
    156136                }
    157                 # generate.rbを参考に
    158                 # $id$を置換
     137                # generate.rbを参考に
     138                # $id$を置換
    159139                if val[:id].nil? != true
    160140                    name_array = @celltype.get_name_array( cell )
    161141                    val[:id]   = @celltype.subst_name( val[:id], name_array )
    162142                end
    163                 # $cbp$の代わり
     143                # $cbp$の代わり
    164144                cell_domain_root = cell.get_region.get_domain_root
    165145                cell_domain_type = cell.get_region.get_domain_root.get_domain_type
    166146
    167                 # CRE_XXX/DEF_XXXの生成
     147                # CRE_XXX/DEF_XXXの生成
    168148                if cell_domain_type.get_option.to_s != "OutOfDomain"
    169                     # 保護ドメインに属する場合
     149                    # 保護ドメインに属する場合
    170150                    if !HRPKernelObjectPlugin.include_region(cell_domain_root.get_name.to_s)
    171                         # その保護ドメインの.cfgが生成されていない場合
     151                        # その保護ドメインの.cfgが生成されていない場合
    172152                        HRPKernelObjectPlugin.set_region_list(cell_domain_root.get_name.to_s)
    173153                        dbgPrint "~~~~~ #{cell_domain_root.get_name.to_s} is registered!\n"
     
    189169                    file3.close
    190170                else
    191                     # 無所属の場合
     171                    # 無所属の場合
    192172                    dbgPrint "~~~~~ #{cell_domain_root.get_namespace_path} is OutOfDomain\n"
    193173                    # print "~~~~~ #{cell_domain_root.get_namespace_path} is OutOfDomain\n"
     
    197177                    else
    198178#                      if !HRPKernelObjectPlugin.include_region(cell_domain_root.get_name.to_s)
    199 #                        # その保護ドメインの.cfgが生成されていない場合
     179#                        # その保護ドメインの.cfgが生成されていない場合
    200180#                        HRPKernelObjectPlugin.set_region_list(cell_domain_root.get_name.to_s)
    201181#                        file2.puts "INCLUDE(\"#{$gen}/tecsgen_#{cell_domain_root.get_name.to_s}.cfg\");\n"
     
    211191
    212192                #
    213                 # SAC_XXXの生成
     193                # SAC_XXXの生成
    214194                #
    215195                if !val[:accessPattern1].nil?
     
    224204                    acv_tmp = []
    225205                    domain_roots = HRPPlugin.get_inter_domain_join_roots cell
    226                     # 結合å
    227 ˆã‚»ãƒ«ã®ãƒ‰ãƒ¡ã‚¤ãƒ³ã‚’加える
     206                    # 結合先セルのドメインを加える
    228207                    if cell_domain_type.get_kind != :OutOfDomain then
    229208                      domain_roots << cell_domain_root
     
    237216                      when :OutOfDomain
    238217                        if cell_domain_type.get_kind == :OutOfDomain then
    239                           # 呼びå
    240 ƒã‚‚、呼びå
    241 ˆã‚‚ OutOfDomain の場合
     218                          # 呼び元も、呼び先も OutOfDomain の場合
    242219                          acv_tmp << "TACP_SHARED"
    243220                        end
     
    246223                    acv_tmp.uniq!
    247224                    if acv_tmp.length == 0 then
    248                       # 呼びå
    249 ˆã‚»ãƒ«ãŒç„¡æ‰€å±žã‹ã¤ã€å‘¼ã³å
    250 ƒã‚‚無所属のみ、または結合無しの場合
     225                      # 呼び先セルが無所属かつ、呼び元も無所属のみ、または結合無しの場合
    251226                      acv_tmp = [ "TACP_SHARED" ]
    252227                    end
     
    265240                                when :user
    266241                                  if dr.get_namespace_path != cell.get_region.get_domain_root.get_namespace_path
    267                                     # 他のユーザードメインからの結合
     242                                    # 他のユーザードメインからの結合
    268243                                    if( b_warn == false ) then
    269244                                      cdl_error( "HRP9999 '$1': kernel object joined from other user domain. kernel object joined from multi-user-domain must be placed out of domain", cell.get_name )
     
    273248                                when :OutOfDomain
    274249                                  if( b_info == false ) then
    275                                     # 無所属からの結合
     250                                    # 無所属からの結合
    276251                                    # cdl_error( "HRP9999 kernel object joined from out of domain" )
    277252                                    if cell_domain_type.get_kind == :OutOfDomain
    278                                       # このæƒ
    279 å ±ã¯ã€ä¸è¦ã¨åˆ¤æ–­ã™ã‚‹ (無所属から無所属へ結合があると、アクセス許可ベクタが設定されない)
     253                                      # この情報は、不要と判断する (無所属から無所属へ結合があると、アクセス許可ベクタが設定されない)
    280254                                      # cdl_info2( cell.get_locale, "HRP9999 '$1': kernel object joined from out of domain, access vector is not set", cell.get_name )
    281255                                      b_info = true
     
    289263                            else
    290264                              # p "OutOfDomainCell"
    291                               # 無所属のセル
    292                               # 結合å
    293 ƒãƒ‰ãƒ¡ã‚¤ãƒ³ã«è¨±å¯ã™ã‚‹
    294                               # 結合å
    295 ƒã«ç„¡æ‰€å±žã®ã‚»ãƒ«ãŒã‚ると、TACP_SHARED が設定される. フロー解析してドメインを特定できるのが、あるべき仕様
     265                              # 無所属のセル
     266                              # 結合元ドメインに許可する
     267                              # 結合元に無所属のセルがあると、TACP_SHARED が設定される. フロー解析してドメインを特定できるのが、あるべき仕様
    296268                            end
    297269                            if acp == "OMIT"
     
    300272                        end
    301273                    }
    302                     #各種SACの生成
     274                    #各種SACの生成
    303275                    domainOption = cell_domain_type.get_option
    304276                    # p "domain_root ", cell.get_region.get_domain_root.get_name
    305277                    if domainOption != "OutOfDomain" || cell.get_region.get_domain_root.get_name != "::"
    306                         # 保護ドメインに属する場合
     278                        # 保護ドメインに属する場合
    307279                        file3 = AppFile.open( "#{$gen}/tecsgen_#{cell.get_region.get_name.to_s}.cfg" )
    308280                        print_cfg_sac(file3, val, acv)
    309281                        file3.close
    310282                    else
    311                         # 無所属の場合
     283                        # 無所属の場合
    312284                        print_cfg_sac(file2, val, acv)
    313285                    end
     
    321293    end
    322294
    323     # カーネルオブジェクトセルタイプの管理
    324     # HRPKernelObjectPluginクラスに対してメソッド呼出しを行うことを想定
     295    # カーネルオブジェクトセルタイプの管理
     296    # HRPKernelObjectPluginクラスに対してメソッド呼出しを行うことを想定
    325297    @@checked = false
    326298    @@celltype_list = []
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRPObjectPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2018 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$
     
    6954
    7055    #=== HRPObjectPlugin#print_cfg_cre
    71     # CRE_XXXの出力
    72     # file:: FILE:     å‡ºåŠ›å
    73 ˆãƒ•ã‚¡ã‚¤ãƒ«
    74     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    75     # tab :: string:   ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆç”¨ã®tab
     56    # CRE_XXXの出力
     57    # file:: FILE:     出力先ファイル
     58    # val :: string:   カーネルオブジェクトの属性の解析結果
     59    # tab :: string:   インデント用のtab
    7660    def print_cfg_cre(file, cell, val, tab)
    7761        if @@api.has_key?(@plugin_arg_str) == false
     
    8165            params = @@api[@plugin_arg_str]
    8266            if @plugin_arg_str == "MUTEX" && ((val[:attribute] =~ /\bTA_CEILING\b/)==nil)
    83               slice_end = -2   # :ceilingPriority を外す
     67              slice_end = -2   # :ceilingPriority を外す
    8468            else
    8569              slice_end = -1
     
    9478    end
    9579    #=== HRPObjectPlugin#print_cfg_sac
    96     # SAC_XXXの出力
    97     # file:: FILE:     å‡ºåŠ›å
    98 ˆãƒ•ã‚¡ã‚¤ãƒ«
    99     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    100     # acv :: string:   ã‚¢ã‚¯ã‚»ã‚¹ãƒ™ã‚¯ã‚¿   
     80    # SAC_XXXの出力
     81    # file:: FILE:     出力先ファイル
     82    # val :: string:   カーネルオブジェクトの属性の解析結果
     83    # acv :: string:   アクセスベクタ   
    10184    def print_cfg_sac(file, val, acv)
    10285        if @@api.has_key?(@plugin_arg_str) == false
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRPPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2014-2018 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$
     
    5641require_tecsgen_lib "HRPKernelObjectManager.rb"
    5742#
    58 # 各メソッドの役割りは、DomainPlugin.rb を参ç
    59 §ã®ã“と
    60 # HRPカーネル用ドメインプラグイン
     43# 各メソッドの役割りは、DomainPlugin.rb を参照のこと
     44# HRPカーネル用ドメインプラグイン
    6145class HRPPlugin < DomainPlugin
    6246 
     
    7256    else
    7357      cdl_error( "HRPPlugin: '$1' is unacceptable domain kind, specify 'kernel' or 'user'", option )
    74       @option = "kernel"   # とりあえず kernel を設定しておく
     58      @option = "kernel"   # とりあえず kernel を設定しておく
    7559    end
    7660  end
    7761
    7862  def add_through_plugin( join, current_region, next_region, through_type )
    79     # join.get_owner:Cell  左辺のセル
    80     # join.get_definition:Port 呼び口
    81     # join.get_subscript:Integer or nil 呼び口é
    82 åˆ—の添数 (Join::@subscript の説明参ç
    83 §)
    84     # join.get_cell:Cell 右辺のセル
    85     # join.get_port_name:Symbol 受け口
    86     # get_rhs_subscript:Integer or nil 受け口é
    87 åˆ—の添数 (Join::@rhs_subscript の説明参ç
    88 §)
     63    # join.get_owner:Cell  左辺のセル
     64    # join.get_definition:Port 呼び口
     65    # join.get_subscript:Integer or nil 呼び口配列の添数 (Join::@subscript の説明参照)
     66    # join.get_cell:Cell 右辺のセル
     67    # join.get_port_name:Symbol 受け口
     68    # get_rhs_subscript:Integer or nil 受け口配列の添数 (Join::@rhs_subscript の説明参照)
    8969    # return []
    9070    dbgPrint "MyDomainPlugin: add_through_plugin: #{current_region.get_name}=>#{next_region.get_name}, #{join.get_owner.get_name}.#{join.get_definition.get_name}=>#{join.get_cell.get_name}.#{join.get_port_name}, #{through_type}\n"
     
    11090                                                 get_real_celltype(join.get_rhs_port1).
    11191                                                 get_global_name)                #oyama: get_name => get_global_name
    112         # 結合å
    113 ˆãŒã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトセル
     92        # 結合先がカーネルオブジェクトセル
    11493        # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
    115         # 何もしないthrough
     94        # 何もしないthrough
    11695        # puts "***** #{join.get_cell.get_celltype.get_name} is kernel object"
    11796        return []
     
    121100    # elsif next_domain.nil?
    122101    elsif next_domain.get_option.to_s == "OutOfDomain"
    123     #     # 結合å
    124 ˆãŒç„¡æ‰€å±ž
    125     #     # 何もしないthrough
     102    #     # 結合先が無所属
     103    #     # 何もしないthrough
    126104    #     # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
    127105        # puts "***** nil"
     
    129107    #elsif @start_region.get_param != :KERNEL_DOMAIN && @end_region.get_param == :KERNEL_DOMAIN
    130108    elsif current_domain.get_option.to_s != "kernel" && next_domain.get_option.to_s == "kernel"
    131         # ユーザドメインからカーネルドメインへの結合
     109        # ユーザドメインからカーネルドメインへの結合
    132110        # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
    133111        # puts "***** svc"
    134112        return [ :HRPSVCPlugin, "" ]
    135113    elsif current_domain != next_domain
    136         # 別のユーザドメインへの結合
     114        # 別のユーザドメインへの結合
    137115        # @plugin_body = HRP2RPCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
    138116        # puts "***** rpc"
     
    141119        return [ :HRPRPCPlugin, "noClientSemaphore=false,PPAllocatorSize=256" ]
    142120    else
    143         # その他
    144         # 何もしないthrough
     121        # その他
     122        # 何もしないthrough
    145123        # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
    146124        dbgPrint "warning: at HRP Join Check"
     
    156134  end
    157135
    158   #== ドメイン種別を返す
     136  #== ドメイン種別を返す
    159137  #return::Symbol :kernel, :user, :OutOfDomain
    160138  def get_kind
     
    165143  end
    166144
    167   # ATT_MODを生成済みかどうか                   # 2017.8.27
     145  # ATT_MODを生成済みかどうか                   # 2017.8.27
    168146  @@generate_memory_module = false
    169147
    170   @@include_extsvc_fncd = false  # 17.07.26 暫定
     148  @@include_extsvc_fncd = false  # 17.07.26 暫定
    171149  #
    172   #  ATT_MODの生成
    173   #  gen_factory実行時には,すべてのセルタイププラグインを生成済みのはずなので,
    174   #  カーネルAPIコードのメモリ保護を省略できる.
     150  #  ATT_MODの生成
     151  #  gen_factory実行時には,すべてのセルタイププラグインを生成済みのはずなので,
     152  #  カーネルAPIコードのメモリ保護を省略できる.
    175153  #
    176154  def gen_factory
     
    187165    if @@generate_memory_module == false
    188166
    189       # INCLUDE を出力
    190       #  すべてのドメインに対する cfg をå
    191 ˆã«ç”Ÿæˆã—ておく
    192       #  もし、ドメインに属するカーネルオブジェクトも、モジュールもない場合でも、cfg が出力される
     167      # INCLUDE を出力
     168      #  すべてのドメインに対する cfg を先に生成しておく
     169      #  もし、ドメインに属するカーネルオブジェクトも、モジュールもない場合でも、cfg が出力される
    193170      regions = DomainType.get_domain_regions[ :HRP ]
    194171      file = AppFile.open( "#{$gen}/tecsgen.cfg" )
     
    219196
    220197      #
    221       #  ATT_MODの生成
     198      #  ATT_MODの生成
    222199      #
    223200      Cell.get_cell_list2.each { |cell|
    224         # すべてのセルを走査してセルタイプをチェック
     201        # すべてのセルを走査してセルタイプをチェック
    225202        ct = cell.get_celltype
    226203        if ct.class == Celltype && check_celltype_list.include?( ct ) == false
    227           # チェック済みセルタイプに登録
     204          # チェック済みセルタイプに登録
    228205          check_celltype_list << ct
    229206
    230           # 未チェックのセルタイプだった場合
     207          # 未チェックのセルタイプだった場合
    231208          # puts "check for ATT_MOD : #{ct.classget_global_name}"
    232209          # puts "check for ATT_MOD : #{ct.get_global_name}"
    233210
    234           # カーネルAPIのコード,データはメモリ保護しない # HRP3 oyama delete by Takada's request
     211          # カーネルAPIのコード,データはメモリ保護しない # HRP3 oyama delete by Takada's request
    235212          # next if HRPKernelObjectManager.include_celltype?( ct.get_name )
    236213
    237           # å¿
    238 è¦ã®ãªã„セルタイプのコード,データはメモリ保護しない
     214          # 必要のないセルタイプのコード,データはメモリ保護しない
    239215          next if ! ct.need_generate?
    240216
    241           # HRPのドメインリージョンを取得
     217          # HRPのドメインリージョンを取得
    242218          regions = ct.get_domain_roots
    243219          regions_hrp = regions[ :HRP ]
     
    248224          # puts ""
    249225
    250           # セル管理ブロックとスケルトンのメモリ保護
    251           # gen_celltype_names_domain 相当の処理
     226          # セル管理ブロックとスケルトンのメモリ保護
     227          # gen_celltype_names_domain 相当の処理
    252228          if regions_hrp.include?( Region.get_root ) == false && regions_hrp.length > 1
    253             # ドメインが複数で,OutOfDomainにセルが存在しないセルタイプの場合
    254             # å
    255 ±æœ‰ã®ã‚»ãƒ«ç®¡ç†ãƒ–ロックとスケルトンコードを登録する
     229            # ドメインが複数で,OutOfDomainにセルが存在しないセルタイプの場合
     230            # 共有のセル管理ブロックとスケルトンコードを登録する
    256231            file = AppFile.open( "#{$gen}/tecsgen.cfg" )
    257232            file.printf "%-60s/* HRPPlugin 003 */\n", "ATT_MOD(\"#{ct.get_global_name}_tecsgen.o\");"
     
    270245          }
    271246
    272           # セルタイプコードがない場合はスキップ
     247          # セルタイプコードがない場合はスキップ
    273248          next if ct.is_all_entry_inline? && ! ct.is_active?
    274249
    275           # セルタイプコードのメモリ保護
    276           # gen_celltype_names_domain2 相当の処理
     250          # セルタイプコードのメモリ保護
     251          # gen_celltype_names_domain2 相当の処理
    277252          if regions_hrp.include?( Region.get_root ) == true || regions_hrp.length > 1
    278             # OutOfDomainにセルが存在するセルタイプの場合
    279             # または,複数のドメインにセルが存在するセルタイプの場合
    280             # セルタイプコードをå
    281 ±æœ‰ã™ã‚‹ã‚ˆã†ã«ç™»éŒ²ã™ã‚‹
     253            # OutOfDomainにセルが存在するセルタイプの場合
     254            # または,複数のドメインにセルが存在するセルタイプの場合
     255            # セルタイプコードを共有するように登録する
    282256            file = AppFile.open( "#{$gen}/tecsgen.cfg" )
    283257          else
    284             # OutOfDomainでない単一のドメインにセルが存在するセルタイプの場合
    285             # セルタイプコードを専有するように登録する
     258            # OutOfDomainでない単一のドメインにセルが存在するセルタイプの場合
     259            # セルタイプコードを専有するように登録する
    286260            file = AppFile.open( "#{$gen}/tecsgen_#{regions_hrp[0].get_global_name}.cfg" )
    287261          end
     
    290264          file.close
    291265        else
    292           # 何もしない
     266          # 何もしない
    293267        end
    294268      }
     
    296270      @@generate_memory_module = true
    297271    else
    298       # 何もしない
     272      # 何もしない
    299273    end
    300274  end
     
    309283      @@inter_domain_join_set[ rhs_cell ] = []
    310284    end
    311     # 左辺のドメインルートを記録
     285    # 左辺のドメインルートを記録
    312286    @@inter_domain_join_set[ rhs_cell ] << join
    313287  end
     
    339313    cell_domain_root = cell.get_region.get_domain_root
    340314    if cell_domain_root.get_domain_type.get_kind != :OutOfDomain then
    341       domain_roots << cell.get_region.get_domain_root  # 結合å
    342 ˆã®ãƒ‰ãƒ¡ã‚¤ãƒ³ã‚‚含める
     315      domain_roots << cell.get_region.get_domain_root  # 結合先のドメインも含める
    343316    end
    344317    domain_roots.each{ |dr|
     
    364337    }
    365338    if acv == "" then
    366       # 呼びå
    367 ˆã‚»ãƒ«ãŒç„¡æ‰€å±žã‹ã¤ã€å‘¼ã³å
    368 ƒã‚‚無所属のみ、または結合無しの場合
     339      # 呼び先セルが無所属かつ、呼び元も無所属のみ、または結合無しの場合
    369340      acv = "TACP_SHARED"
    370341    end
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRPRPCPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2018 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$
     
    5641require_tecsgen_lib "lib/GenParamCopy.rb"
    5742
    58 #= HRPRPCPlugin プラグイン
    59 # スループラグイン (through)
    60 # ・OpaqueMarshalerPlugin を使用してマーシャラセルタイプを生成する
    61 # ・マーシャラ、TDR、チャンネル、メッセージバッファを生成する
     43#= HRPRPCPlugin プラグイン
     44# スループラグイン (through)
     45# ・OpaqueMarshalerPlugin を使用してマーシャラセルタイプを生成する
     46# ・マーシャラ、TDR、チャンネル、メッセージバッファを生成する
    6247#
    6348class HRPRPCPlugin < ThroughPlugin
     
    6651  include GenParamCopy
    6752
    68   # RPCPlugin 専用のオプション
    69   HRPRPCPluginArgProc = RPCPluginArgProc.dup  # 複製を作ってå
    70 ƒã‚’変更しないようにする
     53  # RPCPlugin 専用のオプション
     54  HRPRPCPluginArgProc = RPCPluginArgProc.dup  # 複製を作って元を変更しないようにする
    7155  HRPRPCPluginArgProc[ "noClientSemaphore"  ] = Proc.new { |obj,rhs| obj.set_noClientSemaphore rhs }
    7256  HRPRPCPluginArgProc[ "semaphoreCelltype"  ] = Proc.new { |obj,rhs| obj.set_semaphoreCelltype rhs }
    7357  @@isFirstInstance = true
    7458
    75   #=== RPCPlugin の initialize
    76   #  説明は ThroughPlugin (plugin.rb) を参ç
    77 §
     59  #=== RPCPlugin の initialize
     60  #  説明は ThroughPlugin (plugin.rb) を参照
    7861  def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell )
    7962    super
     
    8265    initialize_opaque_marshaler
    8366
    84     # オプション:GenOpaqueMarshaler 参ç
    85 §
     67    # オプション:GenOpaqueMarshaler 参照
    8668    @plugin_arg_check_proc_tab = HRPRPCPluginArgProc
    8769    parse_plugin_arg
     
    9981      if @PPAllocatorSize == nil then
    10082        cdl_error( "HRP9999 PPAllocatorSize must be speicified for pointer argments" )
    101         # @PPAllocatorSize = 0   # 仮に 0 としておく (cdl の構文エラーを避けるため)
     83        # @PPAllocatorSize = 0   # 仮に 0 としておく (cdl の構文エラーを避けるため)
    10284      end
    10385    elsif @PPAllocatorSize then
     
    10991#      if func_decl.get_type.is_oneway? then
    11092#        if ( param_decl.get_size || param_decl.get_count ) && param_decl.get_string then
    111 #          cdl_error( "array of string not supported for oneway function in Transparent RPC" )  # mikan 文字列のé
    112 åˆ—
     93#          cdl_error( "array of string not supported for oneway function in Transparent RPC" )  # mikan 文字列の配列
    11394#        elsif param_decl.get_string == -1 then
    114 #          cdl_error( "length unspecified string is not permited for oneway function in Transparent RPC" )  # mikan 長さ未指定文字列
     95#          cdl_error( "length unspecified string is not permited for oneway function in Transparent RPC" )  # mikan 長さ未指定文字列
    11596#        end
    11697#      end
     
    11899
    119100    #
    120     #  tecsgen/tecs/rpcにincludeパスを通す
    121     #  #include "tecs_rpc.h" を実現するためにå¿
    122 è¦
    123     #    大山:削除 Makefile.tecsgen に vpath, INCLUDES をå
    124 ¥ã‚Œã‚‹ã®ã¯ã€ã‚ˆããªã„考え
    125     #             TECSGEN.add_search_path で Makefile_templ にå
    126 ¥ã‚Œã‚‹ã®ãŒã‚ˆã„
     101    #  tecsgen/tecs/rpcにincludeパスを通す
     102    #  #include "tecs_rpc.h" を実現するために必要
     103    #    大山:削除 Makefile.tecsgen に vpath, INCLUDES を入れるのは、よくない考え
     104    #             TECSGEN.add_search_path で Makefile_templ に入れるのがよい
    127105    # if @@isFirstInstance
    128106    #     f = AppFile.open( "#{$gen}/Makefile.tecsgen" )
     
    134112  end
    135113
    136   #=== plugin の宣言コード (celltype の定義) 生成
     114  #=== plugin の宣言コード (celltype の定義) 生成
    137115  def gen_plugin_decl_code( file )
    138116
    139117    ct_name = "#{@ct_name}_#{@channelCelltype}"
    140118
    141     # このセルタイプ(同じシグニチャ)は既に生成されているか?
     119    # このセルタイプ(同じシグニチャ)は既に生成されているか?
    142120    if @@generated_celltype[ ct_name ] == nil then
    143121      @@generated_celltype[ ct_name ] = [ self ]
     
    148126
    149127    f = CFile.open( @rpc_channel_celltype_file_name, "w" )
    150     # 同じå†
    151 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     128    # 同じ内容を二度書く可能性あり (AppFile は不可)
    152129
    153130    f.print <<EOT
     
    177154  end
    178155
    179   #===  through cell コードを生成
     156  #===  through cell コードを生成
    180157  #
    181158  #
     
    229206EOT
    230207
    231     ##### クライアント側のセルの生成 #####
     208    ##### クライアント側のセルの生成 #####
    232209    nest = @start_region.gen_region_str_pre file
    233210    nest_str = "  " * nest
    234211
    235     # セマフォの生成
     212    # セマフォの生成
    236213    if @b_noClientSemaphore == false then
    237214      file.print <<EOT
     
    243220    end
    244221
    245     # クライアント側チャンネル (tMessageBufferCEP)の生成
    246     # チャンネルはå¿
    247 ãšãƒªãƒ¼ã‚¸ãƒ§ãƒ³ä¸‹ã«ã‚るので、 '::' でつなぐ (でなければ、ルートリージョンにないかチェックがå¿
    248 è¦ï¼‰
     222    # クライアント側チャンネル (tMessageBufferCEP)の生成
     223    # チャンネルは必ずリージョン下にあるので、 '::' でつなぐ (でなければ、ルートリージョンにないかチェックが必要)
    249224
    250225    file.print <<EOT
     
    263238EOT
    264239
    265     # セマフォの結合文
     240    # セマフォの結合文
    266241    if @b_noClientSemaphore == false then
    267242      semaphore = "#{nest_str}    cLockChannel = #{@serverChannelCell}_Semaphore.eSemaphore;\n"
     
    270245    end
    271246
    272     ### クライアント側チャンネル (マーシャラ+TDR)の生成 ###
     247    ### クライアント側チャンネル (マーシャラ+TDR)の生成 ###
    273248    cell = @next_cell
    274     # アロケータの指定があるか?
     249    # アロケータの指定があるか?
    275250    if cell.get_allocator_list.length > 0 then
    276251
     
    288263
    289264        file.print delim
    290         delim = ",\n"        # 最終行には出さない
    291 
    292         if subsc then        # é
    293 åˆ—添数
     265        delim = ",\n"        # 最終行には出さない
     266
     267        if subsc then        # 配列添数
    294268          subsc_str = '[#{subsc}]'
    295269        else
     
    297271        end
    298272
    299         eport = "eThroughEntry" #RPCの受け口名に変更
     273        eport = "eThroughEntry" #RPCの受け口名に変更
    300274        file.print nest_str
    301275        file.print  "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc_str}"
     
    316290#{clientErrorHandler_str}#{semaphore}#{nest_str}  };
    317291EOT
    318     ### END: クライアント側チャンネル (マーシャラ+TDR)の生成 ###
     292    ### END: クライアント側チャンネル (マーシャラ+TDR)の生成 ###
    319293    @start_region.gen_region_str_post file
    320294    file.print "\n\n"
    321295
    322     ##### サーバー側のセルの生成 #####
     296    ##### サーバー側のセルの生成 #####
    323297    nest = @end_region.gen_region_str_pre file
    324298    nest_str = "  " * nest
     
    336310    end
    337311
    338     # サーバー側チャンネル (tMessageBufferCEP)
     312    # サーバー側チャンネル (tMessageBufferCEP)
    339313    if @PPAllocatorSize then
    340314      alloc_cell =<<EOT
     
    358332EOT
    359333
    360     # サーバー側TDR
     334    # サーバー側TDR
    361335    file.print <<EOT
    362336
     
    373347    end
    374348
    375     # サーバー側チャンネル (アンマーシャラ)
     349    # サーバー側チャンネル (アンマーシャラ)
    376350    file.print <<EOT
    377351#{alloc_cell}
     
    383357EOT
    384358
    385     # サーバー側タスクメイン
     359    # サーバー側タスクメイン
    386360    file.print <<EOT
    387361
     
    392366EOT
    393367
    394     # サーバー側タスク
     368    # サーバー側タスク
    395369    file.print <<EOT
    396370
     
    407381
    408382
    409   #=== プラグイン引数 noClientSemaphore のチェック
     383  #=== プラグイン引数 noClientSemaphore のチェック
    410384  def set_noClientSemaphore rhs
    411385    rhs = rhs.to_sym
     
    419393  end
    420394
    421   #=== プラグイン引数 semaphoreCelltype のチェック
     395  #=== プラグイン引数 semaphoreCelltype のチェック
    422396  def set_semaphoreCelltype rhs
    423397    @semaphoreCelltype = rhs.to_sym
     
    429403  end
    430404
    431   #=== NamespacePath を得る
    432   # 生成するセルの namespace path を生成する
     405  #=== NamespacePath を得る
     406  # 生成するセルの namespace path を生成する
    433407  def get_cell_namespace_path
    434408#    nsp = @region.get_namespace.get_namespace_path
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRPSVCPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2018 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 # これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定するå¿
    58 è¦ãŒã‚ã‚‹
     40# mikan through plugin: namespace が考慮されていない
     41# これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定する必要がある
    5942# tecsgen toppers_jsp.cdl sChannel.cdl your_description.cdl
    6043
    61 # 以下を仮定(制限事é 
    62 ï¼‰
    63 #  呼びå
    64 ƒã€å‘¼ã³å
    65 ˆã®ã‚¨ãƒ³ãƒ‡ã‚£ã‚¢ãƒ³ã€char, short, int_t, long_t, intptr_t のサイズが同じ
    66 #  有符号、無符号でサイズが同じ
     44# 以下を仮定(制限事項)
     45#  呼び元、呼び先のエンディアン、char, short, int_t, long_t, intptr_t のサイズが同じ
     46#  有符号、無符号でサイズが同じ
    6747
    6848class SVCManage
    6949    #
    70     #  @@id: TECSのプラグインで生成した拡張サービスコールに割り当てるid
    71     #        実際の拡張サービスコールIDは,TFN_TECSGEN_ORIGINで下駄を
    72     #        履かせた値となる
    73     #        TFN_TECSGEN_ORIGINは,hrp3/include/extsvc_fncode.h で定義
    74     #        される
    75     #  @@func_ids: 拡張サービスコールの関数名と拡張サービスコールIDを
    76     #     対応づけるハッシュ
     50    #  @@id: TECSのプラグインで生成した拡張サービスコールに割り当てるid
     51    #        実際の拡張サービスコールIDは,TFN_TECSGEN_ORIGINで下駄を
     52    #        履かせた値となる
     53    #        TFN_TECSGEN_ORIGINは,hrp3/include/extsvc_fncode.h で定義
     54    #        される
     55    #  @@func_ids: 拡張サービスコールの関数名と拡張サービスコールIDを
     56    #     対応づけるハッシュ
    7757    #
    7858    @@id = 0
     
    8060    def initialize()
    8161        #
    82       #  本クラスはインスタンスを持たない仮想的なクラスである
     62      #  本クラスはインスタンスを持たない仮想的なクラスである
    8363        #
    8464        raise "class #{self.class.name} shall not have instances"
     
    10585
    10686#
    107 #  拡張サービスコールを用いたドメイン間通信の
    108 #  throughプラグイン
    109 #  HRPドメインプラグインによって挿å
    110 ¥ã•ã‚Œã‚‹
    111 #  前提条件: 呼出しå
    112 ˆãŒã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトかどうかの判定はHRPドメインプラグイン
    113 #       で実施されるため,ここでは判定しないこととした
     87#  拡張サービスコールを用いたドメイン間通信の
     88#  throughプラグイン
     89#  HRPドメインプラグインによって挿入される
     90#  前提条件: 呼出し先がカーネルオブジェクトかどうかの判定はHRPドメインプラグイン
     91#       で実施されるため,ここでは判定しないこととした
    11492#
    11593class HRPSVCPlugin < ThroughPlugin
    11694
    117   NUM_SVC_ARG_MAX = 5              # HRP3 の拡張サービスコールで扱うことのできる引数の最大個数
    118 
    119   @@generated_celltype ={}    # セルタイプの重複排除用
    120   @@generated_cell = {}       # セルの重複排除用
     95  NUM_SVC_ARG_MAX = 5              # HRP3 の拡張サービスコールで扱うことのできる引数の最大個数
     96
     97  @@generated_celltype ={}    # セルタイプの重複排除用
     98  @@generated_cell = {}       # セルの重複排除用
    12199
    122100  def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell )
    123101    super
    124102
    125     # 受け口é
    126 åˆ—の場合、é
    127 åˆ—添数ごとに別のセルタイプとする
    128     # セルタイプをシングルトン化したいため。
    129     # さもないと、セルを識別する引数を渡すå¿
    130 è¦ãŒã‚り、NUM_SVC_ARG_MAX(5) つしか渡せない引数の一つを消費することになるため。
     103    # 受け口配列の場合、配列添数ごとに別のセルタイプとする
     104    # セルタイプをシングルトン化したいため。
     105    # さもないと、セルを識別する引数を渡す必要があり、NUM_SVC_ARG_MAX(5) つしか渡せない引数の一つを消費することになるため。
    131106    if @next_cell_port_subscript then
    132107      subscript = "__" + @next_cell_port_subscript.to_s
     
    145120  end
    146121
    147   #=== NamespacePath を得る
    148   # 生成するセルの namespace path を生成する
     122  #=== NamespacePath を得る
     123  # 生成するセルの namespace path を生成する
    149124  def get_cell_namespace_path
    150125#    nsp = @region.get_namespace.get_namespace_path
     
    155130  def gen_plugin_decl_code( file )
    156131
    157     # このセルタイプ(同じシグニチャ)は既に生成されているか?
     132    # このセルタイプ(同じシグニチャ)は既に生成されているか?
    158133    if @@generated_celltype[ @ct_name_body ] == nil then
    159134        @@generated_celltype[ @ct_name_body ] = [ self ]
     
    177152    file.print "import( \"#{$gen}/#{@ct_name_body}.cdl\" );\n"
    178153
    179     # このセルタイプ(同じシグニチャ)は既に生成されているか?
     154    # このセルタイプ(同じシグニチャ)は既に生成されているか?
    180155    if @@generated_celltype[ @ct_name ] == nil then
    181156        @@generated_celltype[ @ct_name ] = [ self ]
     
    197172
    198173=begin
    199     # TODO: send. receive 対応
     174    # TODO: send. receive 対応
    200175    send_receive = []
    201176    if @signature != nil then
     
    229204  end
    230205
    231   #===  through cell コードを生成
     206  #===  through cell コードを生成
    232207  #
    233208  #
     
    236211    # gen_plugin_decl_code( file )  this is called from super.
    237212
    238     # セルを探す
     213    # セルを探す
    239214    # path =["::",@next_cell.get_name]  # mikan namespace
    240215    # cell = Namespace.find( path )
    241216    # cell = Namespace.find( @next_cell.get_namespace_path )
    242217
    243     ##### クライアント側のセルの生成 #####
     218    ##### クライアント側のセルの生成 #####
    244219    # file.print "[domain(HRP, \"kernel\")]"
    245220    nest = @start_region.gen_region_str_pre file
    246221    nest_str = "  " * nest
    247222
    248     # クライアント側チャンネルの生成
    249     # 拡張サービスコール呼出し
     223    # クライアント側チャンネルの生成
     224    # 拡張サービスコール呼出し
    250225    file.print <<EOT
    251226/* HRPSVC0003 */
     
    259234    file.print "\n\n"
    260235
    261     ##### サーバー側のセルの生成 #####
     236    ##### サーバー側のセルの生成 #####
    262237    # print "######  #{@cell_name_body} ... #{@ct_name_body} #{@@generated_cell[ @ct_name_body ].class}  #####\n"
    263238
     
    274249      end
    275250
    276       # サーバー側チャンネルの生成
    277       # 拡張サービスコール本体
     251      # サーバー側チャンネルの生成
     252      # 拡張サービスコール本体
    278253      file.print <<EOT
    279254
     
    295270      file2.close
    296271
    297       # callee_cell のget_restricted_regions を呼び出しておく
    298       # restrict が参ç
    299 §ã•ã‚ŒãŸå°ã‚’つけるため
     272      # callee_cell のget_restricted_regions を呼び出しておく
     273      # restrict が参照された印をつけるため
    300274      @callee_cell.get_restricted_regions( :dummy_entry_name, :dummy_func_name )
    301275    end
    302276  end
    303277
    304   #===  受け口関数の本体(C言語)を生成する
    305   #     é€šå¸¸ã§ã‚れば、ジェネレータは受け口関数のテンプレートを生成する
    306   #     ãƒ—ラグインの場合、変更するå¿
    307 è¦ã®ãªã„セルタイプコードを生成する
    308   #file::           FILE        出力å
    309 ˆãƒ•ã‚¡ã‚¤ãƒ«
     278  #===  受け口関数の本体(C言語)を生成する
     279  #     通常であれば、ジェネレータは受け口関数のテンプレートを生成する
     280  #     プラグインの場合、変更する必要のないセルタイプコードを生成する
     281  #file::           FILE        出力先ファイル
    310282  #b_singleton::    bool        true if singleton
    311283  #ct_name::        Symbol
     
    320292
    321293        #
    322         #  拡張サービスコール呼出し側の関数生成
     294        #  拡張サービスコール呼出し側の関数生成
    323295        #
    324         #  完成形のイメージ
     296        #  完成形のイメージ
    325297        # 
    326298        # ER_UINT
     
    332304        #       p_cellcb = tHRPSVCPlugin_<Sig>SVCBody_<Cell>_<Entry>_GET_CELLCB(idx);
    333305        #   }else{
    334         #       /* エラー処理コードをここに記述 */
     306        #       /* エラー処理コードをここに記述 */
    335307        #   }
    336308        #
     
    389361
    390362        #
    391         #  拡張サービスコール本体側の関数生成
     363        #  拡張サービスコール本体側の関数生成
    392364        #
    393         #  完成形のイメージ
     365        #  完成形のイメージ
    394366        # 
    395367        # ER_UINT
     
    401373        #       p_cellcb = tHRPSVCPlugin_<Sig>SVCBody_<Cell>_<Entry>_GET_CELLCB(idx);
    402374        #   }else{
    403         #       /* エラー処理コードをここに記述 */
     375        #       /* エラー処理コードをここに記述 */
    404376        #   }
    405377        #
     
    436408
    437409            #
    438             #  エラーチェック処理の生成
     410            #  エラーチェック処理の生成
    439411            #
    440412
    441413            #
    442             #  呼出しå
    443 ƒãƒ‰ãƒ¡ã‚¤ãƒ³ã®ãƒã‚§ãƒƒã‚¯
    444             #   * private method: gen_caller_check_code参ç
    445 §
     414            #  呼出し元ドメインのチェック
     415            #   * private method: gen_caller_check_code参照
    446416            #
    447417            generated_check_code = gen_caller_check_code(func_name)
     
    450420
    451421            #
    452             #  パラメータにポインタが存在する場合,呼出しå
    453 ƒã‚¿ã‚¹ã‚¯ã«å¯¾ã™ã‚‹
    454             #  アクセス権のチェック処理を出力する
    455             #  ※ cdmidがカーネルドメイン(拡張サービスコール呼出し中のユーザ
    456             #    ドメインを含む)であればprb_memの処理をスキップし,初段の
    457             #    拡張サービスコールのみprb_memを呼出しå
    458 ƒã‚¿ã‚¹ã‚¯ã«ç™ºè¡Œã™ã‚‹
     422            #  パラメータにポインタが存在する場合,呼出し元タスクに対する
     423            #  アクセス権のチェック処理を出力する
     424            #  ※ cdmidがカーネルドメイン(拡張サービスコール呼出し中のユーザ
     425            #    ドメインを含む)であればprb_memの処理をスキップし,初段の
     426            #    拡張サービスコールのみprb_memを呼出し元タスクに発行する
    459427            #
    460428            num = 0
     
    465433                    if param.get_type.get_referto.kind_of?(IntType) then
    466434                        case param.get_type.get_referto.get_bit_size
    467                         when -11, -1, 8   # char, char_t, int8_t (無符号含む)
     435                        when -11, -1, 8   # char, char_t, int8_t (無符号含む)
    468436                        #
    469                         #  charデータの場合,ALIGN_TYPEはå¿
    470 ãšTRUE
    471                         #  となるので,エラーチェックを省略
    472                         #  char型の@bit_sizeは-11
    473                         #  tecsgen/tecslib/core/types.rbを参ç
    474 §
     437                        #  charデータの場合,ALIGN_TYPEは必ずTRUE
     438                        #  となるので,エラーチェックを省略
     439                        #  char型の@bit_sizeは-11
     440                        #  tecsgen/tecslib/core/types.rbを参照
    475441                        #
    476442                          align_check_str = ""
     
    479445                    if param.get_direction == :IN then
    480446                        #
    481                         #  å
    482 ¥åŠ›([in])のポインタパラメータは,呼出しå
    483 ƒã‚¿ã‚¹ã‚¯ã«
    484                         #  TPM_READ(読出し可能)のアクセス権がå¿
    485 è¦
     447                        #  入力([in])のポインタパラメータは,呼出し元タスクに
     448                        #  TPM_READ(読出し可能)のアクセス権が必要
    486449                        #
    487                         # 二重ポインタが不可のため、size_is と string が同時に設定されることはない
     450                        # 二重ポインタが不可のため、size_is と string が同時に設定されることはない
    488451                        prb_func = "prb_mem"
    489452                        if param.get_size then
     
    507470                    elsif param.get_direction == :OUT || param.get_direction == :INOUT then
    508471                        #
    509                         #  出力([out])のポインタパラメータは,呼出しå
    510 ƒã‚¿ã‚¹ã‚¯ã«
    511                         #  TPM_WRITE(書込み可能)のアクセス権がå¿
    512 è¦
     472                        #  出力([out])のポインタパラメータは,呼出し元タスクに
     473                        #  TPM_WRITE(書込み可能)のアクセス権が必要
    513474                        #
    514475                        prb_func = "prb_mem"
    515476                        if param.get_size then
    516477                          size_str = param.get_size.to_s
    517                         elsif param.get_string then          # 引数なしの string はない
     478                        elsif param.get_string then          # 引数なしの string はない
    518479                          size_str = param.get_string.to_s
    519                           # prb_func = "prb_str"             # out, inout の場合、å¿
    520 ãšé ˜åŸŸã‚’確保する. prb_mem を用いる
     480                          # prb_func = "prb_str"             # out, inout の場合、必ず領域を確保する. prb_mem を用いる
    521481                        else
    522482                          size_str = "1"
     
    535495
    536496            #
    537             #  呼出しå
    538 ƒãŒã‚«ãƒ¼ãƒãƒ«ãƒ‰ãƒ¡ã‚¤ãƒ³ã®ã¿è¨±å¯ã•ã‚Œã¦ã„る場合,
    539             #  すべてのユーザドメインからの呼出しに対し,E_OACVを返す
     497            #  呼出し元がカーネルドメインのみ許可されている場合,
     498            #  すべてのユーザドメインからの呼出しに対し,E_OACVを返す
    540499            #
    541500            if user_cannot_callable
     
    545504            if check_code != ""
    546505                #
    547                 #  呼出しå
    548 ƒãŒã‚«ãƒ¼ãƒãƒ«ãƒ‰ãƒ¡ã‚¤ãƒ³ã®å ´åˆï¼Œã‚¢ã‚¯ã‚»ã‚¹æ¨©ã®ãƒã‚§ãƒƒã‚¯
    549                 #  処理をスキップさせる
     506                #  呼出し元がカーネルドメインの場合,アクセス権のチェック
     507                #  処理をスキップさせる
    550508                #
    551509                file2.print <<eot
     
    557515
    558516            #
    559             #  拡張サービスコール本体(本来の受け口関数)を呼び出す
     517            #  拡張サービスコール本体(本来の受け口関数)を呼び出す
    560518            #
    561519            file2.print"    #{retval_assign}#{@call_port_name}_#{func_name}("
     
    580538
    581539            #
    582             #  拡張サービスコールの登録
     540            #  拡張サービスコールの登録
    583541            #
    584542            file2 = AppFile.open( "#{$gen}/tecsgen.cfg" )
     
    593551
    594552            #
    595             #  拡張サービスコール登録にå¿
    596 è¦ãªæƒ
    597 å ±ã‚’ヘッダに出力
    598             #   - 拡張サービスコール呼出し時のチェックで使用するスタックサイズを出力
    599             #   - 拡張サービスコールとして登録する関数名のextern宣言を出力
     553            #  拡張サービスコール登録に必要な情報をヘッダに出力
     554            #   - 拡張サービスコール呼出し時のチェックで使用するスタックサイズを出力
     555            #   - 拡張サービスコールとして登録する関数名のextern宣言を出力
    600556            #
    601557            file2 = AppFile.open( "#{$gen}/#{@ct_name_body}_factory.h" )
     
    627583  private
    628584  #
    629   #  拡張サービスコール本体における,呼出しå
    630 ƒãƒã‚§ãƒƒã‚¯ã®ã‚³ãƒ¼ãƒ‰ã‚’
    631   #  出力する
    632   #  gen_ep_func_body からのみ呼び出される
    633   #  引数: 対象の関数名
    634   #  返り値: 下記のハッシュ
    635   #    {"check_code"=>出力するエラーチェックコード,
    636   #     "user_cannot_callable"=>ユーザドメインが呼出し不可能かどうかのフラグ}
     585  #  拡張サービスコール本体における,呼出し元チェックのコードを
     586  #  出力する
     587  #  gen_ep_func_body からのみ呼び出される
     588  #  引数: 対象の関数名
     589  #  返り値: 下記のハッシュ
     590  #    {"check_code"=>出力するエラーチェックコード,
     591  #     "user_cannot_callable"=>ユーザドメインが呼出し不可能かどうかのフラグ}
    637592  #
    638593  def gen_caller_check_code(func_name) 
    639594    dbgPrint "gen_caller_check_code(func_name): #{@callee_cell.get_name}\n"
    640595      #
    641       #  エラーチェック処理
     596      #  エラーチェック処理
    642597      #
    643598      check_code = ""
     
    647602
    648603      #
    649       #  呼出しå
    650 ƒãƒ‰ãƒ¡ã‚¤ãƒ³ã®ãƒã‚§ãƒƒã‚¯å‡¦ç†
    651       #  callable_domains: 拡張サービスコールを呼出し可能なドメインのリスト
    652       #    - 無所属のセルから結合されている場合,すべてのセルに対して,
    653       #     callable?をチェックし,呼出し可能なすべてのドメインを返す
    654       #    - 無所属以外のセルから結合されている場合,そのセルに対して
    655       #      callable?をチェックし,呼出し可能であれば,そのドメインを返す
     604      #  呼出し元ドメインのチェック処理
     605      #  callable_domains: 拡張サービスコールを呼出し可能なドメインのリスト
     606      #    - 無所属のセルから結合されている場合,すべてのセルに対して,
     607      #     callable?をチェックし,呼出し可能なすべてのドメインを返す
     608      #    - 無所属以外のセルから結合されている場合,そのセルに対して
     609      #      callable?をチェックし,呼出し可能であれば,そのドメインを返す
    656610      #
    657611      callable_domains = []
    658612      @@generated_celltype[ @ct_name_body ].each { |svcplugin|
    659613          if svcplugin.get_caller_cell.get_region.get_domain_root.get_domain_type.get_option == "OutOfDomain"
    660               # 無所属かつ active な場合も、restrict に従う
     614              # 無所属かつ active な場合も、restrict に従う
    661615              # if svcplugin.get_caller_cell.get_celltype.is_active?
    662616              #    #
    663               #    #  無所属かつactiveなセルは、TECSから存在が認識されていないのを
    664               #    #  含む任意のドメインから呼び出される可能性も存在する
     617              #    #  無所属かつactiveなセルは、TECSから存在が認識されていないのを
     618              #    #  含む任意のドメインから呼び出される可能性も存在する
    665619              #    #
    666620              #    caller_unrestricted = true
    667621              # else
    668622              #     #
    669               #     #  無所属から接続されている場合は,すべてのセルの
    670               #     #  restrictをチェック
     623              #     #  無所属から接続されている場合は,すべてのセルの
     624              #     #  restrictをチェック
    671625              #     #
    672626              #     Cell.get_cell_list2.each { |cell|
     
    680634              # end
    681635
    682               # restrict 指定がある場合には、それに従う。さもなければ、チェックしない
     636              # restrict 指定がある場合には、それに従う。さもなければ、チェックしない
    683637              callable_domains = @callee_cell.get_restricted_regions( get_callee_ep_name, func_name )
    684638              if callable_domains == nil then
     
    695649          elsif svcplugin.get_caller_cell.callable?( svcplugin.get_callee_cell, svcplugin.get_callee_ep_name, func_name )
    696650              #
    697               #  特定のドメインから接続されている場合は,呼出しå
    698 ƒã‚»ãƒ«ã®
    699               #  restrictをチェック
     651              #  特定のドメインから接続されている場合は,呼出し元セルの
     652              #  restrictをチェック
    700653              #
    701654              callable_domains << svcplugin.get_caller_cell.get_region.get_domain_root
    702655          else
    703656              #
    704               #  無所属から結合されておらず,特定の呼出しå
    705 ƒãƒ‰ãƒ¡ã‚¤ãƒ³ã«ã‚¢ã‚¯ã‚»ã‚¹æ¨©
    706               #  がない場合,callable_domainsは空となる
     657              #  無所属から結合されておらず,特定の呼出し元ドメインにアクセス権
     658              #  がない場合,callable_domainsは空となる
    707659              #
    708660              # pp "#{svcplugin.get_caller_cell.get_name} cannot call #{svcplugin.get_callee_cell.get_name}_#{svcplugin.get_callee_ep_name}_#{func_name}"
     
    716668
    717669      #
    718       #  重複を削除
     670      #  重複を削除
    719671      #
    720672      callable_domains.uniq!
    721673      #
    722       #  無所属に対するドメインチェックは実施しない
    723       #  カーネルドメインに対するドメインチェックは実施しない
     674      #  無所属に対するドメインチェックは実施しない
     675      #  カーネルドメインに対するドメインチェックは実施しない
    724676      #
    725677      callable_domains = callable_domains.select { |domain|
     
    730682      # pp callable_domains.map{|domain| domain.get_name }
    731683      #
    732       #  すべてのユーザドメインから呼出し可能な場合,ドメインチェックは
    733       #  実施しない
     684      #  すべてのユーザドメインから呼出し可能な場合,ドメインチェックは
     685      #  実施しない
    734686      #
    735687      all_domain_regions = DomainType.get_domain_regions[:HRP].select { |reg|
     
    745697
    746698      #
    747       #  呼出しå
    748 ƒãƒ‰ãƒ¡ã‚¤ãƒ³ã®ãƒã‚§ãƒƒã‚¯å‡¦ç†æœ¬ä½“の生成
     699      #  呼出し元ドメインのチェック処理本体の生成
    749700      #
    750701      if callable_domains.length == 0
    751702        dbgPrint "callable_domain.length = 0\n"
    752703          #
    753           #  ユーザドメインから呼出し不可能な場合は
    754           #  個別のエラーチェックはせず,問答無用でE_OACVを返す
     704          #  ユーザドメインから呼出し不可能な場合は
     705          #  個別のエラーチェックはせず,問答無用でE_OACVを返す
    755706          #
    756707          user_cannot_callable = true
     
    758709        dbgPrint "callable_domain.length = 1\n"
    759710          #
    760           #  呼出し可能なユーザドメインが単一の場合は
    761           #  cdmid != <domain名> の形式でチェックする
     711          #  呼出し可能なユーザドメインが単一の場合は
     712          #  cdmid != <domain名> の形式でチェックする
    762713          #
    763714          check_code += "\t/* HRPSVC0012.1 */\n"
     
    766717        dbgPrint "callable_domain.length > 1 && not all_domains \n"
    767718          #
    768           #  呼出し可能なユーザドメインが複数の場合は
    769           #  TACP(cdmid) & (TACP(<domain名>) | ...) != 0U
    770           #  の形式でチェックする
     719          #  呼出し可能なユーザドメインが複数の場合は
     720          #  TACP(cdmid) & (TACP(<domain>) | ...) != 0U
     721          #  の形式でチェックする
    771722          #
    772723          check_code += "\t/* HRPSVC0012.2 */\n"
     
    779730      if check_code != ""
    780731          #
    781           #  呼出し可能なユーザドメインのチェックがある場合は
    782           #  エラーコードを返すためのコードを出力する
     732          #  呼出し可能なユーザドメインのチェックがある場合は
     733          #  エラーコードを返すためのコードを出力する
    783734          #
    784735          check_code += <<EOS
     
    793744
    794745  #---------------------------------------------------------#
    795   #=== シグニチャのチェック
     746  #=== シグニチャのチェック
    796747  def check_signature signature
    797748    signature.get_function_head_array.each{ |fh|
     
    806757    }
    807758  end
    808   #=== 戻り値の型のチェック
    809   # ER, ER_UINT は推奨される型
    810   # 整数、ブール、void は可能、他は不可
     759  #=== 戻り値の型のチェック
     760  # ER, ER_UINT は推奨される型
     761  # 整数、ブール、void は可能、他は不可
    811762  def check_return_type signature, fh, type
    812763    ot = type.get_original_type
     
    820771    end
    821772  end
    822   #=== 引数の型のチェック
     773  #=== 引数の型のチェック
    823774  def check_param signature, fh, param
    824775    type = param.get_type
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRPTaskPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2018 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$
     
    5540require_tecsgen_lib "HRPKernelObjectPlugin.rb"
    5641require_tecsgen_lib "HRPKernelObjectManager.rb"
    57 #== celltype プラグインのå
    58 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     42#== celltype プラグインの共通の親クラス
    5943class HRPTaskPlugin < HRPKernelObjectPlugin
    6044    ##
     
    6953    end
    7054
    71     # # ATT_MODを生成済みかどうか                   # 2017.8.27
     55    # # ATT_MODを生成済みかどうか                   # 2017.8.27
    7256    # @@generate_memory_module = false
    7357
    7458    #
    75     #  CRE_TSKの出力
    76     #  file:: FILE:     å‡ºåŠ›å
    77 ˆãƒ•ã‚¡ã‚¤ãƒ«
    78     #  cell :: Cell タスクセルインスタンス
    79     #  val :: Hash {attr => string}:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    80     #  tab :: string: タブ
     59    #  CRE_TSKの出力
     60    #  file:: FILE:     出力先ファイル
     61    #  cell :: Cell タスクセルインスタンス
     62    #  val :: Hash {attr => string}:   カーネルオブジェクトの属性の解析結果
     63    #  tab :: string: タブ
    8164    #
    8265    def print_cfg_cre(file, cell, val, tab)
    8366        val[:id] = val[:id].gsub( /(^|[^\$])\$id\$/, "\\1#{@celltype.get_name.to_s}_#{cell.get_name.to_s}" )
    84         # $cbp$の代わり
     67        # $cbp$の代わり
    8568        cell_IDX = @celltype.get_name_array(cell)[7]
    86         # CRE_TSKの生成
     69        # CRE_TSKの生成
    8770        dbgPrint "assign task plugin\n"
    8871        domainOption = cell.get_region.get_domain_root.get_domain_type.get_option
     
    9174            if val[:systemStackSize] == "0"
    9275                #
    93                 #  システムスタックの定義を省略
     76                #  システムスタックの定義を省略
    9477                #
    9578                file.print <<EOT
     
    9881            else
    9982                #
    100                 #  システムスタックの定義を追加
     83                #  システムスタックの定義を追加
    10184                #
    10285                file.print <<EOT
     
    10689        else
    10790            #
    108             #  無所属のタスクは存在してはならないため,エラーとする
     91            #  無所属のタスクは存在してはならないため,エラーとする
    10992            #
    11093            raise "task #{val[:id]} must belong to a domain."
     
    11396
    11497    #
    115     #  SAC_TSKの出力
    116     #  file:: FILE:     å‡ºåŠ›å
    117 ˆãƒ•ã‚¡ã‚¤ãƒ«
    118     #  val :: Hash {attr => string}:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    119     #  acv :: Hash {accessPatternx => string}:   ã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ãƒ™ã‚¯ã‚¿
     98    #  SAC_TSKの出力
     99    #  file:: FILE:     出力先ファイル
     100    #  val :: Hash {attr => string}:   カーネルオブジェクトの属性の解析結果
     101    #  acv :: Hash {accessPatternx => string}:   アクセス許可ベクタ
    120102    #
    121103    def print_cfg_sac(file, val, acv)
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/Mruby2CBridgePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    55#   Copyright (C) 2008-2014 by TOPPERS Project
    66#
    7 #   ä¸Šè¨˜è‘—作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    9 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    10 #   å¤‰ãƒ»å†é
    11 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    12 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    13 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    14 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    15 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    16 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    17 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    18 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    19 #       è€
    20 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    21 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    22 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    23 #       ç”¨ã§ããªã„形で再é
    24 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    25 #       ã¨ï¼Ž
    26 #     (a) 再é
    27 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    28 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    29 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    30 #     (b) 再é
    31 å¸ƒã®å½¢æ
    32 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    33 #         å ±å‘Šã™ã‚‹ã“と.
    34 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    35 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    36 ãŠã‚ˆã³TOPPERSプロジェクトをå
    37 è²¬ã™ã‚‹ã“と.
    38 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    39 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトを
    41 #       å
    42 è²¬ã™ã‚‹ã“と.
     7#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     8#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     9#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     10#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     11#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     12#       スコード中に含まれていること.
     13#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     14#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     15#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     16#       の無保証規定を掲載すること.
     17#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     18#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     19#       と.
     20#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     21#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     22#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     23#         報告すること.
     24#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     25#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     26#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     27#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     28#       免責すること.
    4329
    44 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    45 ãŠ
    46 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    47 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    48 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    49 #   ã®è²¬ä»»ã‚’負わない.
     30#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     31#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     32#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     33#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     34#   の責任を負わない.
    5035
    5136#   $Id$
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/MrubyBridgeCellPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 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 #== celltype プラグインのå
    56 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     40#== celltype プラグインの共通の親クラス
    5741class MrubyBridgeCellPlugin < CellPlugin
    5842
    59   # プラグイン引数名 => Proc
     43  # プラグイン引数名 => Proc
    6044  MrubyBridgePluginArgProc = {
    6145      "ignoreUnsigned" => Proc.new { |obj,rhs| obj.set_ignoreUnsigned rhs },
     
    7559
    7660  #=== CellPlugin# initialize
    77   #cell::     Cell        セル(インスタンス)
    78   # このメソッドは、セルの構文解析が終わったところで呼び出される
    79   # この段階では意味解析が終わっていない
     61  #cell::     Cell        セル(インスタンス)
     62  # このメソッドは、セルの構文解析が終わったところで呼び出される
     63  # この段階では意味解析が終わっていない
    8064  def initialize( cell, option )
    8165    dbgPrint "  #{self.class.name}: initialzie=#{cell.get_name} option=#{option}\n"
     
    9175
    9276    @plugin_arg_str = CDLString.remove_dquote option
    93     # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' )    # 前後の "" を取り除く
     77    # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' )    # 前後の "" を取り除く
    9478    # @plugin_arg_str.sub!( /(.*)"\z/, '\1' )
    9579    @plugin_arg_list = {}
     
    10488    port_list = ct.get_port_list
    10589    if @exclude_port.length > 0 then
    106       # この実è£
    107 ã§ã¯ã€å­˜åœ¨ã—ない port を指定されてもチェックできない
     90      # この実装では、存在しない port を指定されてもチェックできない
    10891      # print "MRBBridgeCellPlugin: exclude list\n"
    10992      port_list.each{ |port|
     
    193176  end
    194177
    195   #=== 後ろの CDL コードを生成
    196   #プラグインの後ろの CDL コードを生成
     178  #=== 後ろの CDL コードを生成
     179  #プラグインの後ろの CDL コードを生成
    197180  #file:: File:
    198181  def self.gen_post_code( file )
     
    210193
    211194  def self.gen_post_code_body file
    212     # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
     195    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
    213196    # file.print "/* '#{self.class.name}' post code */\n"
    214197    dbgPrint "#{self.name}: gen_post_code_body\n"
     
    216199  end
    217200
    218   #=== プラグイン引数 ignoreUnsigned
     201  #=== プラグイン引数 ignoreUnsigned
    219202  def set_ignoreUnsigned rhs
    220203    if rhs == "true" || rhs == nil then
     
    223206  end
    224207
    225   #=== プラグイン引数 exclude_port
     208  #=== プラグイン引数 exclude_port
    226209  def set_exclude_port rhs
    227210    ports = rhs.split ','
     
    239222  end
    240223
    241   #=== プラグイン引数 exclude_port_func
     224  #=== プラグイン引数 exclude_port_func
    242225  def set_exclude_port_func rhs
    243226    port_funcs = rhs.split ','
     
    269252    }
    270253  end
    271   #=== プラグイン引数 auto_exclude
     254  #=== プラグイン引数 auto_exclude
    272255  def set_auto_exclude rhs
    273256    # print "MrubyBridgeCellPlugin: auto_exclude=#{rhs}\n"
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/MrubyBridgeCelltypePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 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$
     
    6752
    6853#
    69 ##== celltype プラグインのå
    70 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     54##== celltype プラグインの共通の親クラス
    7155#class MrubyBridgeCelltypePlugin < CelltypePlugin
    7256#
    73 #  # プラグイン引数名 => Proc
     57#  # プラグイン引数名 => Proc
    7458#  MrubyBridgePluginArgProc = {
    7559#      "ignoreUnsigned" => Proc.new { |obj,rhs| obj.set_ignoreUnsigned rhs },
     
    8569#  @@count = 1
    8670#
    87 #  #celltype::     Celltype        セルタイプ(インスタンス)
     71#  #celltype::     Celltype        セルタイプ(インスタンス)
    8872#  def initialize( celltype, option )
    8973#    dbgPrint "#{self.class.name}: initialzie: #{celltype.get_name}\n"
     
    10791#  end
    10892#
    109 #  #=== 新しいセル
    110 #  #cell::        Cell            セル
     93#  #=== 新しいセル
     94#  #cell::        Cell            セル
    11195#  #
    112 #  # celltype プラグインを指定されたセルタイプのセルが生成された
    113 #  # セルタイププラグインに対する新しいセルの報告
    114 #  # generate 文により呼び出された場合、それまでに定義された cell については、initialize のタイミングで呼び出される
     96#  # celltype プラグインを指定されたセルタイプのセルが生成された
     97#  # セルタイププラグインに対する新しいセルの報告
     98#  # generate 文により呼び出された場合、それまでに定義された cell については、initialize のタイミングで呼び出される
    11599#  def new_cell( cell )
    116100#    dbgPrint "MrubyBridgeCelltypePlugin: new_cell: #{cell.get_name}\n"
    117101#
    118 #    return if @cell_list.include? cell   # この行は、本来不要のはず
    119 #    if TECSGEN.post_coded?               # post_code 以降のセルは対象から外す
     102#    return if @cell_list.include? cell   # この行は、本来不要のはず
     103#    if TECSGEN.post_coded?               # post_code 以降のセルは対象から外す
    120104#      cdl_info( "I9999 MrubyBridgeCelltypePlugin: $1 is excluded because cell generated after post_coded", cell.get_name )
    121105#      return
     
    160144#  end
    161145#
    162 #### 意味解析段階で呼び出されるメソッド ###
    163 #  #===  CDL ファイルの生成
    164 #  #      typedef, signature, celltype, cell のコードを生成
    165 #  #      重複して生成してはならない
    166 #  #      すでに生成されている場合は出力しないこと。
    167 #  #      もしくは同名の import により、重複を避けること。
    168 #  #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     146#### 意味解析段階で呼び出されるメソッド ###
     147#  #===  CDL ファイルの生成
     148#  #      typedef, signature, celltype, cell のコードを生成
     149#  #      重複して生成してはならない
     150#  #      すでに生成されている場合は出力しないこと。
     151#  #      もしくは同名の import により、重複を避けること。
     152#  #file::        FILE       生成するファイル
    169153#  def gen_cdl_file file
    170 ##   ã“の段階で呼びだすと generate 文が呼び出される前のセルのみの出力となる
     154##   この段階で呼びだすと generate 文が呼び出される前のセルのみの出力となる
    171155#   
    172156##    dbgPrint "MrubyBridgeCelltypePlugin: gen_cdl_file: #{@celltype.get_name}\n"
     
    189173#  end
    190174#
    191 #  #=== tCelltype_factory.h に挿å
    192 ¥ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’生成する
    193 #  # file 以外の他のファイルにファクトリコードを生成してもよい
    194 #  # セルタイププラグインが指定されたセルタイプのみ呼び出される
     175#  #=== tCelltype_factory.h に挿入するコードを生成する
     176#  # file 以外の他のファイルにファクトリコードを生成してもよい
     177#  # セルタイププラグインが指定されたセルタイプのみ呼び出される
    195178#  def gen_factory file
    196179#  end
     
    200183#  end
    201184#
    202 #  #=== 後ろの CDL コードを生成
    203 #  #プラグインの後ろの CDL コードを生成
     185#  #=== 後ろの CDL コードを生成
     186#  #プラグインの後ろの CDL コードを生成
    204187#  #file:: File:
    205188#  def self.gen_post_code( file )
    206189#    dbgPrint "#{self.name}: gen_post_code_body\n"
    207190#    print "#{self.name}: gen_post_code_body\n"
    208 ##    この段階で生成すると、同じポストコードで出力される mruby の初期化コードに反映されない
     191##    この段階で生成すると、同じポストコードで出力される mruby の初期化コードに反映されない
    209192#   
    210 ##    # MrubyBridgeCelltypePlugin の生成する generate 文は、
     193##    # MrubyBridgeCelltypePlugin の生成する generate 文は、
    211194##    fn2 = "#{$gen}/tmp_MrubyBridgeCelltypePlugin_post.cdl"
    212195##    f2 = File.open( fn2, "w" )
    213 ##    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
     196##    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
    214197##    dbgPrint "MrubyBridgeCelltypePlugin: gen_post_code\n"
    215198##    f2.print "/* '#{self.name}' post code */\n"
     
    229212#  end
    230213#
    231 #  #=== プラグイン引数
    232 #
    233 #  #=== プラグイン引数 ignoreUnsigned
     214#  #=== プラグイン引数
     215#
     216#  #=== プラグイン引数 ignoreUnsigned
    234217#  def set_ignoreUnsigned rhs
    235218#    if rhs == "true" || rhs == nil then
     
    266249#  end
    267250#
    268 #  #=== プラグイン引数 exclude_port_func
     251#  #=== プラグイン引数 exclude_port_func
    269252#  def set_exclude_port_func rhs
    270253#    port_funcs = rhs.split ','
     
    297280#  end
    298281#
    299 #  #=== プラグイン引数 auto_exclude
     282#  #=== プラグイン引数 auto_exclude
    300283#  def set_auto_exclude rhs
    301284#    # print "MrubyBridgeCellPlugin: auto_exclude=#{rhs}\n"
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/MrubyBridgeCompositePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 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$
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/MrubyBridgePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    55#   Copyright (C) 2008-2017 by TOPPERS Project
    66#
    7 #   ä¸Šè¨˜è‘—作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    9 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    10 #   å¤‰ãƒ»å†é
    11 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    12 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    13 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    14 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    15 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    16 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    17 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    18 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    19 #       è€
    20 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    21 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    22 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    23 #       ç”¨ã§ããªã„形で再é
    24 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    25 #       ã¨ï¼Ž
    26 #     (a) 再é
    27 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    28 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    29 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    30 #     (b) 再é
    31 å¸ƒã®å½¢æ
    32 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    33 #         å ±å‘Šã™ã‚‹ã“と.
    34 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    35 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    36 ãŠã‚ˆã³TOPPERSプロジェクトをå
    37 è²¬ã™ã‚‹ã“と.
    38 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    39 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトを
    41 #       å
    42 è²¬ã™ã‚‹ã“と.
     7#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     8#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     9#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     10#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     11#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     12#       スコード中に含まれていること.
     13#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     14#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     15#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     16#       の無保証規定を掲載すること.
     17#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     18#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     19#       と.
     20#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     21#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     22#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     23#         報告すること.
     24#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     25#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     26#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     27#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     28#       免責すること.
    4329
    44 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    45 ãŠ
    46 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    47 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    48 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    49 #   ã®è²¬ä»»ã‚’負わない.
     30#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     31#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     32#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     33#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     34#   の責任を負わない.
    5035
    5136#   $Id$
    5237#
    5338
    54 #== MrubyBridgePlugin クラス
     39#== MrubyBridgePlugin クラス
    5540class MrubyBridgePlugin < MultiPlugin
    5641  def self.get_plugin superClass
    57     # case when (つまりは ===) では、期å¾
    58 ã—たように一致しない模様
     42    # case when (つまりは ===) では、期待したように一致しない模様
    5943    if superClass == SignaturePlugin then
    6044      dbgPrint "MrubyBridgePlugin: SignaturePlugin"
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/MrubyBridgeSignaturePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    55#   Copyright (C) 2008-2017 by TOPPERS Project
    66#
    7 #   ä¸Šè¨˜è‘—作権è€
    8 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    9 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    10 #   å¤‰ãƒ»å†é
    11 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    12 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    13 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    14 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    15 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    16 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    17 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    18 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    19 #       è€
    20 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    21 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    22 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    23 #       ç”¨ã§ããªã„形で再é
    24 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    25 #       ã¨ï¼Ž
    26 #     (a) 再é
    27 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    28 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    29 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    30 #     (b) 再é
    31 å¸ƒã®å½¢æ
    32 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    33 #         å ±å‘Šã™ã‚‹ã“と.
    34 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    35 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    36 ãŠã‚ˆã³TOPPERSプロジェクトをå
    37 è²¬ã™ã‚‹ã“と.
    38 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    39 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトを
    41 #       å
    42 è²¬ã™ã‚‹ã“と.
     7#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     8#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     9#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     10#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     11#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     12#       スコード中に含まれていること.
     13#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     14#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     15#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     16#       の無保証規定を掲載すること.
     17#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     18#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     19#       と.
     20#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     21#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     22#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     23#         報告すること.
     24#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     25#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     26#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     27#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     28#       免責すること.
    4329
    44 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    45 ãŠ
    46 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    47 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    48 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    49 #   ã®è²¬ä»»ã‚’負わない.
     30#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     31#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     32#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     33#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     34#   の責任を負わない.
    5035
    5136#   $Id$
     
    5338
    5439# Todo:
    55 # 生成するもの
     40# 生成するもの
    5641#  gen_cdl_file
    57 #    ブリッジ初期化セルタイプ (シグニチャごと)
    58 #       @@init_celltypes に記録
    59 #    ブリッジセルタイプ (シグニチャごと)
    60 #       @@celltypes に記録
    61 #    構造体セルタイプ
    62 #       @@struct_list に記録
     42#    ブリッジ初期化セルタイプ (シグニチャごと)
     43#       @@init_celltypes に記録
     44#    ブリッジセルタイプ (シグニチャごと)
     45#       @@celltypes に記録
     46#    構造体セルタイプ
     47#       @@struct_list に記録
    6348#  new_cell
    64 #    TECS 初期化セル(プロトタイプ宣言)
    65 #       @@VM_init_cells に記録
    66 #       @@VM_struct_list に記録
    67 #       @@VM_ptr_list に記録
     49#    TECS 初期化セル(プロトタイプ宣言)
     50#       @@VM_init_cells に記録
     51#       @@VM_struct_list に記録
     52#       @@VM_ptr_list に記録
    6853#  gen_post_code
    69 #    構造体初期化セル
    70 #    ポインタ初期化セル
    71 #    TECS 初期化セル
     54#    構造体初期化セル
     55#    ポインタ初期化セル
     56#    TECS 初期化セル
    7257#
    73 #   ep_func の作成
    74 #     signature, ポインタ、構造体 … 初期化受け口=mruby VM への登録
    75 #     ãƒã‚¤ãƒ³ã‚¿
    76 #   preamble の作成
    77 #     ãƒã‚¤ãƒ³ã‚¿ã€æ§‹é€ ä½“ … アクセス用コードの生成
    78 #     signature … ブリッジ関数のプロトタイプ宣言
    79 #   postamble の作成
    80 #     signature … ブリッジ関数の定義
     58#   ep_func の作成
     59#     signature, ポインタ、構造体 … 初期化受け口=mruby VM への登録
     60#     ポインタ
     61#   preamble の作成
     62#     ポインタ、構造体 … アクセス用コードの生成
     63#     signature … ブリッジ関数のプロトタイプ宣言
     64#   postamble の作成
     65#     signature … ブリッジ関数の定義
    8166
    8267class MrubyBridgeSignaturePlugin < SignaturePlugin
    8368
    84   # プラグイン引数名 => Proc
     69  # プラグイン引数名 => Proc
    8570  MrubyBridgePluginArgProc = {
    8671      "ignoreUnsigned" => Proc.new { |obj,rhs| obj.set_ignoreUnsigned rhs },
     
    9277  @@b_no_banner = false         #
    9378  @@b_gen_post_code_by_dependent = false  # true if gen_post_code is called by MrubyBridgeCellPlugin
    94   @@celltypes = { }             # {celltype_name => [ BridgePlugin のインスタンスのé
    95 åˆ— }
    96   @@init_celltypes = { }        # {celltype_name => [ BridgePlugin のインスタンスのé
    97 åˆ— }
     79  @@celltypes = { }             # {celltype_name => [ BridgePlugin のインスタンスの配列 }
     80  @@init_celltypes = { }        # {celltype_name => [ BridgePlugin のインスタンスの配列 }
    9881  @@struct_list = { }           # {struct_name=>StructType}
    99   @@ptr_list = { }              # {ptr_celltype_name=> @@TYPE_MAP の対応するもの}
     82  @@ptr_list = { }              # {ptr_celltype_name=> @@TYPE_MAP の対応するもの}
    10083  @@VM_list = { }               # VM_name => true
    101   @@VM_celltypes = {  }             # VM_name => { @celltype_name => セルのé
    102 åˆ— }
     84  @@VM_celltypes = {  }             # VM_name => { @celltype_name => セルの配列 }
    10385  @@VM_struct_list = { }           # {name=>StructType}
    104   @@VM_ptr_list = { }              # { VM_name => {name=> @@TYPE_MAP の対応するもの} }
     86  @@VM_ptr_list = { }              # { VM_name => {name=> @@TYPE_MAP の対応するもの} }
    10587  @@TYPE_MAP = {           # type_str   class             GET_SET
    10688    :char_t            => [:char_t,    "Char",     :Char,  :INT   ],
     
    119101
    120102    :int               => [:int,       "Int",      :Int,  :INT   ],
    121     :char              => [:char,      "Char",     :Char, :INT   ],    # char は char_t として扱う
     103    :char              => [:char,      "Char",     :Char, :INT   ],    # char は char_t として扱う
    122104    :short             => [:short,     "Short",    :Int,  :INT   ],
    123105    :long              => [:long,      "Long",     :Int,  :INT   ],
     
    141123  # included  or excluded functions
    142124
    143   ### ロードされた時点で実行される ###
    144 
    145   # -I に $(TECSPATH)/mruby を追加
     125  ### ロードされた時点で実行される ###
     126
     127  # -I に $(TECSPATH)/mruby を追加
    146128  # TECSGEN::Makefile.add_obj "$(MRUBY_MAIN_OBJ)"
    147129  TECSGEN::Makefile.add_ldflag "-lmruby -L$(MRUBYPATH)/lib -lm"
     
    150132  # TECSGEN::Makefile.add_var "MRUBY_MAIN_OBJ", "$(_TECS_OBJ_DIR)tecs_mruby.o", "CHANGE this if your have your main"
    151133
    152   #=== プラグインインスタンスの初期化
    153   # 戻り値、引数の型が使用可能なものかチェックする
     134  #=== プラグインインスタンスの初期化
     135  # 戻り値、引数の型が使用可能なものかチェックする
    154136  #
    155137  def initialize( signature, option )
     
    184166
    185167    if signature.get_function_head_array == nil then
    186       return   # 以前に文法エラー発生
     168      return   # 以前に文法エラー発生
    187169    end
    188170
     
    281263        when FloatType
    282264        when PtrType
    283           ttype_org = type_org.get_type       # ポインタの指しているå
    284 ˆã®åž‹
    285           ttype = ttype_org.get_original_type # 上記の typedef されている場合、å
    286 ƒã®åž‹
     265          ttype_org = type_org.get_type       # ポインタの指している先の型
     266          ttype = ttype_org.get_original_type # 上記の typedef されている場合、元の型
    287267          register_ptr_type ttype_org, fh
    288268
     
    340320  end
    341321
    342   #=== 構造体のメンバーの型のチェック
     322  #=== 構造体のメンバーの型のチェック
    343323  def check_struct_member struct_type, fh
    344324    #p "tag name:#{struct_type.get_name}"
     
    349329        cdl_info( "MRI9999 tagless-struct cannot be handled, $1 automatcally excluded", fh.get_name )
    350330        @auto_exclude_list[ fh.get_name ] = fh
    351         return  # 登録しないように打ち切る
     331        return  # 登録しないように打ち切る
    352332      else
    353333        cdl_error( "MRB10007 tagless-struct cannot be handled")
     
    363343                    d.get_name, d.get_type.get_type_str + d.get_type.get_type_str_post, fh.get_name )
    364344          @auto_exclude_list[ fh.get_name ] = fh
    365           return  # 登録しないように打ち切る
     345          return  # 登録しないように打ち切る
    366346        else
    367347          cdl_error( "MRB1006 $1: type $2 not allowed for struct member", d.get_name, d.get_type.get_type_str + d.get_type.get_type_str_post )
     
    400380      return
    401381    end
    402     tstr = ttype.get_type_str.sub( /const /, "" )    # const は無視
    403     tstr = tstr.sub( /volatile /, "" )               # volatile も無視
     382    tstr = ttype.get_type_str.sub( /const /, "" )    # const は無視
     383    tstr = tstr.sub( /volatile /, "" )               # volatile も無視
    404384    if @b_ignoreUnsigned then
    405       tstr = tstr.sub( /unsigned /, "" )             # volatile も無視
    406       tstr = tstr.sub( /uint/, "int" )               # volatile も無視
    407       tstr = tstr.sub( /[cs]char/, "char" )          # volatile も無視
     385      tstr = tstr.sub( /unsigned /, "" )             # volatile も無視
     386      tstr = tstr.sub( /uint/, "int" )               # volatile も無視
     387      tstr = tstr.sub( /[cs]char/, "char" )          # volatile も無視
    408388    end
    409389    return @@TYPE_MAP[ tstr.to_sym ]
    410390  end
    411391
    412   #===  CDL ファイルの生成
    413   #      typedef, signature, celltype, cell コードを生成
    414   #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     392  #===  CDL ファイルの生成
     393  #      typedef, signature, celltype, cell コードを生成
     394  #file::        FILE       生成するファイル
    415395  def gen_cdl_file(file)
    416396
    417     # ブリッジセルタイプの生成
     397    # ブリッジセルタイプの生成
    418398    if @@celltypes[ @celltype_name ] == nil then
    419399      @@celltypes[ @celltype_name ] = [ self ]
     
    458438EOT
    459439
    460       # 構造体セルタイプの生成
     440      # 構造体セルタイプの生成
    461441      @struct_list.each{ |name, sttype|
    462442        if @@struct_list[ name ] == nil then
     
    479459  end
    480460
    481   #=== gen_cdl_file で定義したセルタイプに 新しいセルが定義された
    482   # cell のセルタイプの名前は @celltype_name
     461  #=== gen_cdl_file で定義したセルタイプに 新しいセルが定義された
     462  # cell のセルタイプの名前は @celltype_name
    483463  def new_cell cell
    484464    if cell.get_celltype.get_name != @celltype_name then
     
    499479      file = CFile.open( initializer_celltype_cdl, "w" )
    500480
    501       # TECS 初期化セル(プロトタイプ宣言)
     481      # TECS 初期化セル(プロトタイプ宣言)
    502482      print_msg "  MrubyBridgePlugin: join your VM's cInitialize to #{vm_name}_TECSInitializer.eInitialize\n"
    503483
     
    544524  end
    545525
    546   #=== プラグインが CDL の POST コードを生成
    547   # tmp_plugin_post_code.cdl への出力
     526  #=== プラグインが CDL の POST コードを生成
     527  # tmp_plugin_post_code.cdl への出力
    548528  def self.gen_post_code file
    549529    dbgPrint "#{self.name}: gen_post_code\n"
     
    580560# EOT
    581561
    582 # gen_post_code で生成した celltype は gen_ep_func が呼び出されない #847
     562# gen_post_code で生成した celltype は gen_ep_func が呼び出されない #847
    583563#    @@struct_list.each{ |name,sttype|
    584564#      file.print <<EOT
     
    649629  end
    650630
    651   ####### 以下コード生成段階 ######
    652 
    653   #===  受け口関数の本体コードを生成(頭部と末尾は別途出力)
    654   #ct_name:: Symbol    (プラグインで生成された) セルタイプ名 .Symbol として送られてくる
     631  ####### 以下コード生成段階 ######
     632
     633  #===  受け口関数の本体コードを生成(頭部と末尾は別途出力)
     634  #ct_name:: Symbol    (プラグインで生成された) セルタイプ名 .Symbol として送られてくる
    655635  def gen_ep_func_body( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
    656636    if @@celltypes[ ct_name ] then
     
    756736  end
    757737
    758   #===  受け口関数の preamble (C言語)を生成する
    759   #     å¿
    760 è¦ãªã‚‰ preamble 部に出力する
    761   #file::           FILE        出力å
    762 ˆãƒ•ã‚¡ã‚¤ãƒ«
     738  #===  受け口関数の preamble (C言語)を生成する
     739  #     必要なら preamble 部に出力する
     740  #file::           FILE        出力先ファイル
    763741  #b_singleton::    bool        true if singleton
    764742  #ct_name::        Symbol
     
    805783
    806784  def gen_preamble_instance( file, b_singleton, ct_name, global_ct_name )
    807     # 「#1005  MrubyBridgePlugin-test のビルドに失敗」にて追加
    808     # 「#1004 idx_is_id が true の場合(domain の場合は未指定でも true) の CBP のプロトタイプ宣言」にて不要になる見込み
     785    # 「#1005  MrubyBridgePlugin-test のビルドに失敗」にて追加
     786    # 「#1004 idx_is_id が true の場合(domain の場合は未指定でも true) の CBP のプロトタイプ宣言」にて不要になる見込み
    809787    nsp = NamespacePath.new( :nMruby, true )
    810788    nsp.append! ct_name
     
    12501228    if( param.get_size ) then
    12511229      sz_str = param.get_size.to_s
    1252     elsif param.get_string then      # mikan とりあえず size_is と string の同時指定 (二重ポインタ) はなし
     1230    elsif param.get_string then      # mikan とりあえず size_is と string の同時指定 (二重ポインタ) はなし
    12531231      sz_str = param.get_string.to_s
    12541232    else
    12551233      sz_str = "1"
    12561234    end
    1257     # unsigned 型の場合には cast がå¿
    1258 è¦
     1235    # unsigned 型の場合には cast が必要
    12591236    if ttype.get_original_type.get_type_str != param.get_type.get_type.get_type_str then
    12601237      cast_str = "(#{param.get_type.get_type_str})"
     
    12861263  end
    12871264
    1288   #=== プラグイン引数 ignoreUnsigned
     1265  #=== プラグイン引数 ignoreUnsigned
    12891266  def set_ignoreUnsigned rhs
    12901267    if rhs == "true" || rhs == nil then
     
    12921269    end
    12931270  end
    1294   #=== プラグイン引数 include
     1271  #=== プラグイン引数 include
    12951272  def set_include rhs
    12961273    funcs = rhs.split ','
     
    13101287    }
    13111288  end
    1312   #=== プラグイン引数 exclude
     1289  #=== プラグイン引数 exclude
    13131290  def set_exclude rhs
    13141291    funcs = rhs.split ','
     
    13231300    }
    13241301  end
    1325   #=== プラグイン引数 auto_exclude
     1302  #=== プラグイン引数 auto_exclude
    13261303  def set_auto_exclude rhs
    13271304    if rhs == "false" then
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/MultiPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 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 #== MultiPlugin クラス
     40#== MultiPlugin クラス
    5641class MultiPlugin < Node
    5742  def self.get_plugin superClass
    58     # case when (つまりは ===) では、期å¾
    59 ã—たように一致しない模様
     43    # case when (つまりは ===) では、期待したように一致しない模様
    6044    if superClass == SignaturePlugin then
    6145      return SignaturePlugin
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/NotifierPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    1111#
    1212#--
    13 #   ä¸Šè¨˜è‘—作権è€
    14 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    15 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    16 #   å¤‰ãƒ»å†é
    17 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    18 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    19 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    20 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    21 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    22 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    23 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    24 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    25 #       è€
    26 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    27 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    28 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    29 #       ç”¨ã§ããªã„形で再é
    30 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    31 #       ã¨ï¼Ž
    32 #     (a) 再é
    33 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    34 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    35 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    36 #     (b) 再é
    37 å¸ƒã®å½¢æ
    38 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    39 #         å ±å‘Šã™ã‚‹ã“と.
    40 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    41 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    42 ãŠã‚ˆã³TOPPERSプロジェクトをå
    43 è²¬ã™ã‚‹ã“と.
    44 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    45 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    46 ãŠã‚ˆã³TOPPERSプロジェクトを
    47 #       å
    48 è²¬ã™ã‚‹ã“と.
     13#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     14#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     15#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     16#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     17#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     18#       スコード中に含まれていること.
     19#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     20#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     21#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     22#       の無保証規定を掲載すること.
     23#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     24#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     25#       と.
     26#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     27#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     28#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     29#         報告すること.
     30#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     31#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     32#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     33#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     34#       免責すること.
    4935
    50 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    51 ãŠ
    52 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    53 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    54 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    55 #   ã®è²¬ä»»ã‚’負わない.
     36#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     37#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     38#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     39#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     40#   の責任を負わない.
    5641
    5742#  $Id$
     
    6550class NotifierPlugin < CelltypePlugin
    6651
    67         # ---------- アダプタ関数の生成 -------------
     52        # ---------- アダプタ関数の生成 -------------
    6853        #
    69         # siHandlerBodyの受け口関数は,タイムイベント通知の通知å
    70 ˆã¨ã—て直接指定する
    71         # ことはできない.シグネチャが一致していないことが理由である.このため,アダ
    72         # プタとして動作する関数を生成し,カーネルからの呼出しをTECSの呼出しに変換で
    73         # きるようにするå¿
    74 è¦ãŒã‚る.
     54        # siHandlerBodyの受け口関数は,タイムイベント通知の通知先として直接指定する
     55        # ことはできない.シグネチャが一致していないことが理由である.このため,アダ
     56        # プタとして動作する関数を生成し,カーネルからの呼出しをTECSの呼出しに変換で
     57        # きるようにする必要がある.
    7558        #
    76         # 基本的には,受け口毎にアダプタ関数を生成すれば十分である.しかし,これでは
    77         # メモリ消費量が不å¿
    78 è¦ã«å¢—加してしまう.そこで,通知å
    79 ˆé–¢æ•°ã«intptr_t型の引数
    80         # を渡せることに着目し,関数の"一般化"を図る.すなわち受け口のある属性(ここ
    81         # では,結合å
    82 ˆã®ã‚»ãƒ«ï¼Œæ·»å­—などを指す)を,アダプタ関数の引数として受け取れる
    83         # ようにし,1個のアダプタ関数を2個以上の結合に対し用いることができるように
    84         # する.
     59        # 基本的には,受け口毎にアダプタ関数を生成すれば十分である.しかし,これでは
     60        # メモリ消費量が不必要に増加してしまう.そこで,通知先関数にintptr_t型の引数
     61        # を渡せることに着目し,関数の"一般化"を図る.すなわち受け口のある属性(ここ
     62        # では,結合先のセル,添字などを指す)を,アダプタ関数の引数として受け取れる
     63        # ようにし,1個のアダプタ関数を2個以上の結合に対し用いることができるように
     64        # する.
    8565        #
    86         # アダプタ関数の属性について整理すると,
    87         #  - 受け口関数 - 一般化を行うと,実行時コストが大きく増大してしまうことが
    88         #    確認されている.このため,一般化は行わない.EntryPropertyにも含めない.
    89         #  - セルインデックス - CELLIDX型で,型の規定はないが,"ホ゜インタ値て゛あったり
    90         #    整数値て゛あったりする。" (TECS 5.3.6) より,インデックスかポインタある
    91         #    ことが分かる.インデックスだとすると,この値はセルCBのアドレッシングに
    92         #    使用されるので,intptr_tに収まる筈である.ポインタの場合,当然intptr_t
    93         #    に収まる.
    94         #  - 受け口é
    95 åˆ—の添字 - int_t.同様にintptr_tに収まる筈である.
    96         # これらのうち,セルインデックスと受け口é
    97 åˆ—の添字はパラメータに含めることが
    98         # できそうであるが,両方は無理である.
    99         # 両方を格納したé
    100 åˆ—を生成し,そのé
    101 åˆ—の要素へのポインタを渡すようにするとい
    102         # う選択肢も可能であるが,実行速度を優å
    103 ˆã™ã‚‹ãŸã‚ã«ï¼Œã“の方法はとらなかった.
     66        # アダプタ関数の属性について整理すると,
     67        #  - 受け口関数 - 一般化を行うと,実行時コストが大きく増大してしまうことが
     68        #    確認されている.このため,一般化は行わない.EntryPropertyにも含めない.
     69        #  - セルインデックス - CELLIDX型で,型の規定はないが,"ホ゜インタ値て゛あったり
     70        #    整数値て゛あったりする。" (TECS 5.3.6) より,インデックスかポインタある
     71        #    ことが分かる.インデックスだとすると,この値はセルCBのアドレッシングに
     72        #    使用されるので,intptr_tに収まる筈である.ポインタの場合,当然intptr_t
     73        #    に収まる.
     74        #  - 受け口配列の添字 - int_t.同様にintptr_tに収まる筈である.
     75        # これらのうち,セルインデックスと受け口配列の添字はパラメータに含めることが
     76        # できそうであるが,両方は無理である.
     77        # 両方を格納した配列を生成し,その配列の要素へのポインタを渡すようにするとい
     78        # う選択肢も可能であるが,実行速度を優先するために,この方法はとらなかった.
    10479        #
    105         # このため,一般化は以下のパターンに分類して行う.
     80        # このため,一般化は以下のパターンに分類して行う.
    10681        #
    107         # 1. セルインデックスのみ一般化.セルインデックスのパターン数が受け口é
    108 åˆ—の
    109         #    添字のパターン数より多いか,あるいは受け口がé
    110 åˆ—でない場合に行われる.
    111         # 2. 受け口é
    112 åˆ—の添字のみ一般化.この場合,セルごとに異なる関数を用いる.
     82        # 1. セルインデックスのみ一般化.セルインデックスのパターン数が受け口配列の
     83        #    添字のパターン数より多いか,あるいは受け口が配列でない場合に行われる.
     84        # 2. 受け口配列の添字のみ一般化.この場合,セルごとに異なる関数を用いる.
    11385        #
    114         # これより,各受け口関数について,アダプタ関数の生成個数は,
    115         #         O(min{セルインデックスのパターン数, 添字のパターン数})
    116         # となる.
     86        # これより,各受け口関数について,アダプタ関数の生成個数は,
     87        #         O(min{セルインデックスのパターン数, 添字のパターン数})
     88        # となる.
    11789        #
    118         # プラグインでの処理をワンパスで行うために,tecsgen.cfgではアダプタ関数を直
    119         # 接指定するのではなく,代わりにアダプタ関数を表すマクロを使用する.この
    120         # マクロはアダプタ関数ハンドルと呼ぶことにする.
    121         # アダプタ関数ハンドルは,次の2個の要素から成る.
    122         #  - アダプタ関数へののポインタ
    123         #  - アダプタ関数の引数
     90        # プラグインでの処理をワンパスで行うために,tecsgen.cfgではアダプタ関数を直
     91        # 接指定するのではなく,代わりにアダプタ関数を表すマクロを使用する.この
     92        # マクロはアダプタ関数ハンドルと呼ぶことにする.
     93        # アダプタ関数ハンドルは,次の2個の要素から成る.
     94        #  - アダプタ関数へののポインタ
     95        #  - アダプタ関数の引数
    12496        #
    12597        #   $Id$
     
    128100        class AdapterGenerator
    129101
    130                 # 結合å
    131 ˆã«é–¢ã™ã‚‹å±žæ€§ã‚’含む.セル,受け口é
    132 åˆ—の添字から成る.
    133                 # 同一のEntryPropertyとなる結合は,å
    134 ¨ãåŒã˜æ–¹æ³•ã§ãã®å—け口関数を呼び
    135                 # 出せる.
     102                # 結合先に関する属性を含む.セル,受け口配列の添字から成る.
     103                # 同一のEntryPropertyとなる結合は,全く同じ方法でその受け口関数を呼び
     104                # 出せる.
    136105                # @private
    137106                class EntryProperty
    138                         # @return [Cell] 受け口側のセル.
     107                        # @return [Cell] 受け口側のセル.
    139108                        attr_reader :cell
    140109
    141                         # @return [Integer, nil] 受け口é
    142 åˆ—の添字.é
    143 åˆ—でない場合はnil.
     110                        # @return [Integer, nil] 受け口配列の添字.配列でない場合はnil.
    144111                        attr_reader :subscript
    145112
     
    153120                        end
    154121
    155                         # 同値性の定義.Hashのキーとして使用するのにå¿
    156 è¦ï¼Ž
     122                        # 同値性の定義.Hashのキーとして使用するのに必要.
    157123                        def eql?(o) @cell == o.cell && @subscript == o.subscript end
    158124                        def hash() @cell.hash ^ @subscript.hash end
     
    161127                # @private
    162128                class EntryPort
    163                         # @param [Port] port 結合å
    164 ˆã®ã‚»ãƒ«ã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—の受け口.
     129                        # @param [Port] port 結合先のセルのセルタイプの受け口.
    165130                        def initialize(port, prefix)
    166131                                @port = port
    167132                                @global_name = "#{prefix}_#{@port.get_celltype.get_global_name}_#{@port.get_name}"
    168133
    169                                 # 受け口関数名.siHandlerBodyを想定しているので,関数名はmainで固定である.
     134                                # 受け口関数名.siHandlerBodyを想定しているので,関数名はmainで固定である.
    170135                                @entry_fn_name = "#{@port.get_celltype.get_global_name}_#{@port.get_name}_main"
    171136
     
    174139                        end
    175140
    176                         # @return [String] グローバルに一意(なものとして扱えるよう)な識別子.
     141                        # @return [String] グローバルに一意(なものとして扱えるよう)な識別子.
    177142                        attr_reader :global_name
    178143
     
    180145                        attr_reader :port
    181146
    182                         # 指定したEntryPropertyに対応するアダプタ関数ハンドルを取得する.
     147                        # 指定したEntryPropertyに対応するアダプタ関数ハンドルを取得する.
    183148                        # @param [EntryProperty] ep
    184                         # @return [String] アダプタ関数ハンドル.
     149                        # @return [String] アダプタ関数ハンドル.
    185150                        # @private
    186151                        def adapter_handle_for_entry_property(ep)
     
    192157                        end
    193158
    194                         # 結合å
    195 ˆã®æƒ
    196 å ±ã«å¿œã˜ãŸã‚¢ãƒ€ãƒ—タ関数をソース・ヘッダーに出力する.
    197                         # 一般化指定は,`cell`または`subscript`の一方のみ行うことができる.
     159                        # 結合先の情報に応じたアダプタ関数をソース・ヘッダーに出力する.
     160                        # 一般化指定は,`cell`または`subscript`の一方のみ行うことができる.
    198161                        #
    199162                        # @param [AdapterGenerator] context
    200                         # @param [String] fn_name 関数名.
    201                         # @param [Cell, Symbol] cell セル.セルについて一般化する場合は `:generic`
    202                         # @param [Integer, Symbol, nil] subscript 添字.添字について一般化する場合は `:generic`
    203                         # @param [Celltype] 呼びå
    204 ˆã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—、cell==:generic の場合のみ有効
     163                        # @param [String] fn_name 関数名.
     164                        # @param [Cell, Symbol] cell セル.セルについて一般化する場合は `:generic`
     165                        # @param [Integer, Symbol, nil] subscript 添字.添字について一般化する場合は `:generic`
     166                        # @param [Celltype] 呼び先のセルタイプ、cell==:generic の場合のみ有効
    205167                        # @private
    206168                        def generate_inner(context, fn_name, cell, subscript, callee_ct=nil)
     
    213175                                ct = @port.get_celltype
    214176
    215                                 # シングルトンセルタイプ以外では,CELLIDXの指定がå¿
    216 è¦ï¼Ž
     177                                # シングルトンセルタイプ以外では,CELLIDXの指定が必要.
    217178                                unless ct.is_singleton?
    218179                                        if cell == :generic
     
    220181                                                # params << "(CELLIDX)extinf"
    221182                                        else
    222                                                 # セルのCELLIDXを得る
     183                                                # セルのCELLIDXを得る
    223184                                                if ct.has_INIB? || ct.has_CB?
    224185                                                        params << ct.get_name_array(cell)[7]
     
    229190                                end
    230191
    231                                 # 受け口é
    232 åˆ—の添字.
     192                                # 受け口配列の添字.
    233193                                if @port.get_array_size
    234194                                        if subscript == :generic
     
    248208                        end
    249209
    250                         # 指定したJoinに対応するアダプタ関数ハンドルを取得する.
    251                         # @return [Array] アダプタ関数ハンドル.
     210                        # 指定したJoinに対応するアダプタ関数ハンドルを取得する.
     211                        # @return [Array] アダプタ関数ハンドル.
    252212                        def make_adapter_handle(join)
    253213                                prop = EntryProperty.from_join(join)
     
    259219                        end
    260220
    261                         # ソース・ヘッダーの記述を生成する.
     221                        # ソース・ヘッダーの記述を生成する.
    262222                        # @param [AdapterGenerator] context
    263223                        def generate(context)
     
    273233                                no_cellidx = false
    274234                                if !(ct.has_INIB? || ct.has_CB?)
    275                                         # CB, INIB最適化により,CB, INIBが両方不要になったケース.
    276                                         # CELLIDXが不要であるので,セルについて一般化しても意味
    277                                         # はないので,添字による一般化を選択する.
     235                                        # CB, INIB最適化により,CB, INIBが両方不要になったケース.
     236                                        # CELLIDXが不要であるので,セルについて一般化しても意味
     237                                        # はないので,添字による一般化を選択する.
    278238                                        generalize_by_cell_idx = false
    279239                                        no_cellidx = true
    280240
    281                                         # å
    282 ¨ã¦ã®ã‚»ãƒ«ã‚’同一視する.
     241                                        # 全てのセルを同一視する.
    283242                                        cells = { @props[0].cell => @props }
    284243
    285244                                        header_file.print " * No INIB & CB: generalized by subscript\n"
    286245                                elsif @port.get_array_size
    287                                         # 一般化パターンの分類を行うために,受け口側セルや添字の
    288                                         # パターン数を分析して,最適な方を選択する.
     246                                        # 一般化パターンの分類を行うために,受け口側セルや添字の
     247                                        # パターン数を分析して,最適な方を選択する.
    289248                                        generalize_by_cell_idx = cells.length >= subscripts.length
    290249                                        if generalize_by_cell_idx
     
    294253                                        end
    295254                                else
    296                                         # 常にCELLIDXで一般化
     255                                        # 常にCELLIDXで一般化
    297256                                        generalize_by_cell_idx = true
    298257                                        header_file.print " * non-array entry port: generalized by cell\n"
     
    302261
    303262                                if generalize_by_cell_idx
    304                                         # CELLIDXについて一般化
     263                                        # CELLIDXについて一般化
    305264                                        subscripts.each { |subscript, props|
    306265                                                if subscript
    307266                                                        fn_name = "#{@global_name}_adap_#{subscript}"
    308267                                                else
    309                                                         # 受け口é
    310 åˆ—でない場合
     268                                                        # 受け口配列でない場合
    311269                                                        fn_name = "#{@global_name}_adap"
    312270                                                end
     
    318276                                                        handle = adapter_handle_for_entry_property(prop)
    319277
    320                                                         # セルのCELLIDXを得る
     278                                                        # セルのCELLIDXを得る
    321279                                                        if ct.has_INIB? || ct.has_CB?
    322280                                                                idx = ct.get_name_array(prop.cell)[7]
     
    329287                                        }
    330288                                else
    331                                         # 添字について一般化
     289                                        # 添字について一般化
    332290                                        cells.each { |cell, props|
    333291                                                if no_cellidx
    334                                                         # CB/INIB なし
     292                                                        # CB/INIB なし
    335293                                                        fn_name = "#{@global_name}_adap"
    336294                                                else
     
    358316                attr :header_file
    359317
    360                 # @param [String] celltype_name ハンドラ関数のセルタイプ.
    361                 # @param [String] prefix 名前衝突を防ぐためのプレフィックス.
     318                # @param [String] celltype_name ハンドラ関数のセルタイプ.
     319                # @param [String] prefix 名前衝突を防ぐためのプレフィックス.
    362320                def initialize(celltype_name, prefix)
    363321                        @celltype_name = celltype_name
     
    369327
    370328                # ===AdapterGenerator#make_adapter_handle===
    371                 # 指定した結合の呼出しを行うためのアダプタ関数ハンドルを生成する.
    372                 # @return [Array] アダプタ関数ハンドル.
     329                # 指定した結合の呼出しを行うためのアダプタ関数ハンドルを生成する.
     330                # @return [Array] アダプタ関数ハンドル.
    373331                def make_adapter_handle(join)
    374332                        entry_port = @entry_ports[join.get_rhs_port]
     
    382340
    383341                # ===AdapterGenerator#finish===
    384                 # 各受け口に対し,アダプタ関数を生成する.
     342                # 各受け口に対し,アダプタ関数を生成する.
    385343                def finish
    386344                        @source_file = AppFile.open( "#{$gen}/#{@celltype_name}.c" )
     
    392350                @header_file.print "\n/* Generated by #{self.class.name} */\n\n"
    393351
    394                         # NotifierPluginを使用するセルタイプが複数ある場合,それぞれに
    395                         # 対しAdapterGenerator#finishが呼び出される.tTimeEventHandler.hに
    396                         # 続けて書き込んでしまうと,ヘッダーガードの関係で2回目以降の記述
    397                         # が読み込まれなくなってしまう.このため,ファイル名 + セルタイプ名
    398                         # という少し特殊なヘッダーガードを用いる.
     352                        # NotifierPluginを使用するセルタイプが複数ある場合,それぞれに
     353                        # 対しAdapterGenerator#finishが呼び出される.tTimeEventHandler.hに
     354                        # 続けて書き込んでしまうと,ヘッダーガードの関係で2回目以降の記述
     355                        # が読み込まれなくなってしまう.このため,ファイル名 + セルタイプ名
     356                        # という少し特殊なヘッダーガードを用いる.
    399357                        header_guard = "#{@celltype_name}_H_#{@prefix}"
    400358
     
    402360                @header_file.print "\#define #{header_guard}\n\n"
    403361
    404                 # カーネルコンフィギュレータを実行する際,ハンドラ受け口のセルタイプ
    405                 # のセルCBの定義がå¿
    406 è¦ãªå ´åˆãŒã‚る.
     362                # カーネルコンフィギュレータを実行する際,ハンドラ受け口のセルタイプ
     363                # のセルCBの定義が必要な場合がある.
    407364                @header_file.print "\#include \"#{@celltype_name}_aux.h\"\n\n"
    408365
    409                         # 結合å
    410 ˆã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—の定義は,自分のセルのtecsgen.hよりもå
    411 ˆã«
    412                         # 読み込まなければならないが,このプラグインが複数実行されると,
    413                         # 順序が崩れてしまう.そこで,結合å
    414 ˆã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—の定義はもう一つの
    415                         # ヘッダーファイル(tCelltypeName_aux.h)から読み込むようにする.
     366                        # 結合先のセルタイプの定義は,自分のセルのtecsgen.hよりも先に
     367                        # 読み込まなければならないが,このプラグインが複数実行されると,
     368                        # 順序が崩れてしまう.そこで,結合先のセルタイプの定義はもう一つの
     369                        # ヘッダーファイル(tCelltypeName_aux.h)から読み込むようにする.
    416370                        aux_header_file = AppFile.open( "#{$gen}/#{@celltype_name}_aux.h" )
    417371                aux_header_file.print "\n/* Generated by #{self.class.name} */\n\n"
     
    424378                        cb_type_only_guard = "#{@celltype_name}_AUX_H_#{@prefix}_CB_TYPE_ONLY"
    425379
    426                         # 結合å
    427 ˆã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—の定義を読み込む
     380                        # 結合先のセルタイプの定義を読み込む
    428381                        aux_header_file.print "#ifndef TOPPERS_CB_TYPE_ONLY\n"
    429382                    aux_header_file.print "#define TOPPERS_CB_TYPE_ONLY\n"
     
    456409        end
    457410
    458         # ------ 通知のハンドラの種類の定義 -------
     411        # ------ 通知のハンドラの種類の定義 -------
    459412
    460413        class Handler
     
    466419        end
    467420
    468         # 通常のハンドラ
     421        # 通常のハンドラ
    469422        EVENT_HANDLER = Handler::new("ciNotificationHandler")
    470423
    471         # エラーハンドラ (通常のハンドラが失敗した場合に呼び出される)
     424        # エラーハンドラ (通常のハンドラが失敗した場合に呼び出される)
    472425        ERROR_HANDLER = Handler::new("ciErrorNotificationHandler")
    473426
     
    492445        end
    493446
    494         # ------ 通知の属性の定義 -------
     447        # ------ 通知の属性の定義 -------
    495448        #
    496         # ハンドラタイプに合致しない属性が指定された場合に
    497         # エラーを出力できるよう、å
    498 ¨ã¦ã®å±žæ€§ã‚’ここで列挙する。
     449        # ハンドラタイプに合致しない属性が指定された場合に
     450        # エラーを出力できるよう、全ての属性をここで列挙する。
    499451
    500452        SETVAR_ADDR_ATTR =   HandlerAttribute::new("setVariableAddress")
     
    512464        ]
    513465
    514         # ------ ハンドラタイプの定義 -------
     466        # ------ ハンドラタイプの定義 -------
    515467
    516468        class BaseHandlerType
     
    526478
    527479            #=== NotifierPlugin#BaseHandlerType#validate_join
    528             # 指定したセルの結合å
    529 ˆãŒã€ã“のハンドラタイプに該当するかを検証
    530             # handler:: Handler : ハンドラ
    531             # cell:: Cell : セル
    532             # join:: Join : 結合 (declarationがPortであるもの)
     480            # 指定したセルの結合先が、このハンドラタイプに該当するかを検証
     481            # handler:: Handler : ハンドラ
     482            # cell:: Cell : セル
     483            # join:: Join : 結合 (declarationがPortであるもの)
    533484                def validate_join(handler, cell, join)
    534485        return !generate_attr_map(handler, cell).nil?
     
    536487
    537488            #=== NotifierPlugin#BaseHandlerType#generate_attr_map
    538             # 指定したセルの属性と、既知のHandlerAttributeのマッピングを
    539             # 生成し、Hash<HandlerAttribute, Join> (各属性とそれに対応する
    540             # Join(declarationがDeclのもの)を表すHash)、あるいは、
    541                 # マッピングが行えない場合(属性の不足、過剰)はnilを返す。
     489            # 指定したセルの属性と、既知のHandlerAttributeのマッピングを
     490            # 生成し、Hash<HandlerAttribute, Join> (各属性とそれに対応する
     491            # Join(declarationがDeclのもの)を表すHash)、あるいは、
     492                # マッピングが行えない場合(属性の不足、過剰)はnilを返す。
    542493            #
    543             # handler:: Handler : ハンドラ
    544             # cell:: Cell : セル
     494            # handler:: Handler : ハンドラ
     495            # cell:: Cell : セル
    545496                def generate_attr_map(handler, cell)
    546497                        map = {}
     
    552503                                join = join_list.get_item(attr_name.to_sym)
    553504
    554                                 # このセルタイプにおいてå¿
    555 é ˆã®å±žæ€§ã‹?
     505                                # このセルタイプにおいて必須の属性か?
    556506                                is_required = @required_attributes.include?(known_attr)
    557507
    558                                 # 属性の指定が不足している? or 過剰?
    559                                 # 注: ハンドラタイプの判別には、セルで値が指定されているか
    560                                 #     ãŒè€ƒæ
    561 ®ã•ã‚Œã‚‹ã€‚セルタイプで初期値が指定されていても、
    562                                 #     ãã‚Œã¯ãƒãƒ³ãƒ‰ãƒ©ã‚¿ã‚¤ãƒ—の決定に影響しない。
     508                                # 属性の指定が不足している? or 過剰?
     509                                # 注: ハンドラタイプの判別には、セルで値が指定されているか
     510                                #     が考慮される。セルタイプで初期値が指定されていても、
     511                                #     それはハンドラタイプの決定に影響しない。
    563512                                return nil if join.nil? != !is_required
    564513
    565                                 # å¿
    566 è¦ã®ãªã„属性であり、指定もされていないので飛ばす
     514                                # 必要のない属性であり、指定もされていないので飛ばす
    567515                                next if join.nil?
    568516
    569                                 # TODO: attrの結合であることを検証
     517                                # TODO: attrの結合であることを検証
    570518
    571519                                map[known_attr] = join
     
    576524
    577525            #=== NotifierPlugin#BaseHandlerType#gen_cfg_handler_type
    578             # タイムイベントの通知の種類を表すコンフィギュレータの記述を生成し、Stringまたはnilを返す
    579             # handler:: Handler : ハンドラ
     526            # タイムイベントの通知の種類を表すコンフィギュレータの記述を生成し、Stringまたはnilを返す
     527            # handler:: Handler : ハンドラ
    580528                def gen_cfg_handler_type(handler)
    581529                raise "called abstract method gen_cfg_handler_type"
     
    583531
    584532            #=== NotifierPlugin#BaseHandlerType#gen_cfg_handler_parameters
    585             # タイムイベントの通知の引数を表すコンフィギュレータの記述を生成し、String[]を返す
    586             # handler:: Handler : ハンドラ
    587             # join:: Join : 結合 (declarationがPortであるもの)
     533            # タイムイベントの通知の引数を表すコンフィギュレータの記述を生成し、String[]を返す
     534            # handler:: Handler : ハンドラ
     535            # join:: Join : 結合 (declarationがPortであるもの)
    588536            # attrMap:: Hash<HandlerAttribute, Join> :
    589             #     å„属性とそれに対応するJoin (declarationがDeclのもの)
    590             # cell:: Cell : セル
    591                 # adpt_gen:: AdapterGenerator : アダプタ関数を生成するオブジェクト
     537            #     各属性とそれに対応するJoin (declarationがDeclのもの)
     538            # cell:: Cell : セル
     539                # adpt_gen:: AdapterGenerator : アダプタ関数を生成するオブジェクト
    592540                def gen_cfg_handler_parameters(handler, join, attrMap, cell, adpt_gen)
    593541                return nil
     
    595543
    596544            #=== NotifierPlugin#BaseHandlerType#might_fail
    597             # 通知の際、エラーが発生し、その結果エラー通知を呼ぶå¿
    598 è¦ãŒç”Ÿã˜ã‚‹
    599             # かどうかを返す。
     545            # 通知の際、エラーが発生し、その結果エラー通知を呼ぶ必要が生じる
     546            # かどうかを返す。
    600547                def might_fail
    601548                        return false
     
    613560                        id_attr = join.get_rhs_cell.get_celltype.find(:id)
    614561                        if id_attr_join
    615                                 # セル生成時に初期化する場合
     562                                # セル生成時に初期化する場合
    616563                                id = id_attr_join.get_rhs.to_s
    617564                        else
    618                                 # セルタイプの初期化値を使う場合
     565                                # セルタイプの初期化値を使う場合
    619566                                id = id_attr.get_initializer.to_s
    620567                        end
    621568
    622                         # $id$等の置換
     569                        # $id$等の置換
    623570                        name_array = taskCell.get_celltype.get_name_array(taskCell)
    624571                        id = taskCell.get_celltype.subst_name(id, name_array)
     
    673620                        var_value = attrMap[SETVAR_VALUE_ATTR].get_rhs.to_s
    674621
    675                         # $id$等の置換
     622                        # $id$等の置換
    676623                        name_array = cell.get_celltype.get_name_array(cell)
    677624                        var_addr = cell.get_celltype.subst_name(var_addr, name_array)
     
    702649                        var_addr = attrMap[SETVAR_ADDR_ATTR].get_rhs.to_s
    703650
    704                         # $id$等の置換
     651                        # $id$等の置換
    705652                        name_array = cell.get_celltype.get_name_array(cell)
    706653                        var_addr = cell.get_celltype.subst_name(var_addr, name_array)
     
    729676                        var_addr = attrMap[INCVAR_ADDR_ATTR].get_rhs.to_s
    730677
    731                         # $id$等の置換
     678                        # $id$等の置換
    732679                        name_array = cell.get_celltype.get_name_array(cell)
    733680                        var_addr = cell.get_celltype.subst_name(var_addr, name_array)
     
    753700                        id_attr = join.get_rhs_cell.get_celltype.find(:id)
    754701                        if id_attr_join
    755                                 # セル生成時に初期化する場合
     702                                # セル生成時に初期化する場合
    756703                                id = id_attr_join.get_rhs.to_s
    757704                        else
    758                                 # セルタイプの初期化値を使う場合
     705                                # セルタイプの初期化値を使う場合
    759706                                id = id_attr.get_initializer.to_s
    760707                        end
    761708
    762                         # $id$等の置換
     709                        # $id$等の置換
    763710                        name_array = semaphoreCell.get_celltype.get_name_array(semaphoreCell)
    764711                        id = semaphoreCell.get_celltype.subst_name(id, name_array)
     
    793740                        id_attr = join.get_rhs_cell.get_celltype.find(:id)
    794741                        if id_attr_join
    795                                 # セル生成時に初期化する場合
     742                                # セル生成時に初期化する場合
    796743                                id = id_attr_join.get_rhs.to_s
    797744                        else
    798                                 # セルタイプの初期化値を使う場合
     745                                # セルタイプの初期化値を使う場合
    799746                                id = id_attr.get_initializer.to_s
    800747                        end
    801748                        flg_pattern = attrMap[SETFLG_FLAG_ATTR].get_rhs.to_s
    802749
    803                         # $id$等の置換
     750                        # $id$等の置換
    804751                        name_array = eventflagCell.get_celltype.get_name_array(eventflagCell)
    805752                        id = eventflagCell.get_celltype.subst_name(id, name_array)
     
    834781                        id_attr = join.get_rhs_cell.get_celltype.find(:id)
    835782                        if id_attr_join
    836                                 # セル生成時に初期化する場合
     783                                # セル生成時に初期化する場合
    837784                                id = id_attr_join.get_rhs.to_s
    838785                        else
    839                                 # セルタイプの初期化値を使う場合
     786                                # セルタイプの初期化値を使う場合
    840787                                id = id_attr.get_initializer.to_s
    841788                        end
    842789
    843                         # $id$等の置換
     790                        # $id$等の置換
    844791                        name_array = dataqueueCell.get_celltype.get_name_array(dataqueueCell)
    845792                        id = dataqueueCell.get_celltype.subst_name(id, name_array)
     
    868815                        sent_value = attrMap[SNDDTQ_VALUE_ATTR].get_rhs.to_s
    869816
    870                         # $id$等の置換
     817                        # $id$等の置換
    871818                        name_array = cell.get_celltype.get_name_array(cell)
    872819                        sent_value = cell.get_celltype.subst_name(sent_value, name_array)
     
    910857                end
    911858                def gen_cfg_handler_parameters(handler, join, attrMap, cell, adpt_gen)
    912                         # tTimeEventHandlerの結合å
    913 ˆã‚’取得
     859                        # tTimeEventHandlerの結合先を取得
    914860                        handler_cell = join.get_rhs_cell
    915861                call_join = handler_cell.get_join_list.get_item(:ciHandlerBody)
    916862
    917                         # 結合されていない場合はtecsgenがエラーを出すはずなのでここでは
    918                         # エラーにせず無視する.
     863                        # 結合されていない場合はtecsgenがエラーを出すはずなのでここでは
     864                        # エラーにせず無視する.
    919865                        return [] unless call_join
    920866
    921                         # アダプタ関数ハンドルを取得
     867                        # アダプタ関数ハンドルを取得
    922868                        adapter_handle = adpt_gen.make_adapter_handle(call_join)
    923869                return [adapter_handle[1], adapter_handle[0]]
     
    953899
    954900    #@celltype:: Celltype
    955     #@option:: String     :オプション文字列
     901    #@option:: String     :オプション文字列
    956902    def initialize( celltype, option )
    957903        super
    958904        @plugin_arg_check_proc_tab = NotifierPluginArgProc
    959905        @plugin_arg_str = option
    960         @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' )    # 前後の "" を取り除く
     906        @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' )    # 前後の "" を取り除く
    961907        @plugin_arg_str.sub!( /(.*)"\z/, '\1' )
    962908        @factory = nil
     
    996942        kernelCfg.print "\#include \"tTimeEventHandler.h\"\n"
    997943
    998                 # アダプタ関数を生成する準備
     944                # アダプタ関数を生成する準備
    999945                @adpt_gen = AdapterGenerator.new("tTimeEventHandler", @celltype.get_global_name)
    1000946
    1001         # 属性置換が行えることを検証する。
    1002         # ここで行うのは、factoryで指定された属性名が
    1003         # 存在することを確認し、しなければエラーを出力することのみである。
    1004         # セルごとの処理の最中にエラーを出力することも可能ではあるが、
    1005         # そうするとセルタイプ側の問題であるのにもかかわらず、セルごとに
    1006         # エラーが表示されてしまう。
     947        # 属性置換が行えることを検証する。
     948        # ここで行うのは、factoryで指定された属性名が
     949        # 存在することを確認し、しなければエラーを出力することのみである。
     950        # セルごとの処理の最中にエラーを出力することも可能ではあるが、
     951        # そうするとセルタイプ側の問題であるのにもかかわらず、セルごとに
     952        # エラーが表示されてしまう。
    1007953        # {{attribute_name}} -> attribute_value
    1008954        @factory.scan(/\{\{([a-zA-Z0-9_]*?)\}\}/) { |match|
    1009955                name = $1.to_sym
    1010956
    1011                 # {{_handler_params_}} はハンドラに関する指定。プラグインå†
    1012 ã§å€¤ãŒç”Ÿæˆã•ã‚Œã‚‹
     957                # {{_handler_params_}} はハンドラに関する指定。プラグイン内で値が生成される
    1013958                next if name == :_handler_params_
    1014959
     
    1024969        }
    1025970
    1026                 # アダプタ関数の生成を完了させる
     971                # アダプタ関数の生成を完了させる
    1027972                @adpt_gen.finish
    1028973
     
    1039984        handler_flag = nil
    1040985
    1041                 # ignoreErrorsを取得
     986                # ignoreErrorsを取得
    1042987                ignoreErrors_attr_join = cell.get_join_list.get_item(:ignoreErrors)
    1043988                ignoreErrors_attr = cell.get_celltype.find(:ignoreErrors)
    1044989                if ignoreErrors_attr_join
    1045                         # セル生成時に初期化する場合
     990                        # セル生成時に初期化する場合
    1046991                        ignoreErrors = ignoreErrors_attr_join.get_rhs.to_s
    1047992                else
    1048                         # セルタイプの初期化値を使う場合
     993                        # セルタイプの初期化値を使う場合
    1049994                        ignoreErrors = ignoreErrors_attr.get_initializer.to_s
    1050995                end
     
    10581003                end
    10591004
    1060     # ドメイン指定用文字列
     1005    # ドメイン指定用文字列
    10611006    pre_text  = ""
    10621007    post_text = "\n"
     
    10641009 
    10651010        [EVENT_HANDLER, ERROR_HANDLER].each { |handler|
    1066                 # 呼び口の結合を取得
     1011                # 呼び口の結合を取得
    10671012                call_join = cell.get_join_list.get_item(handler.call_port_name.to_sym)
    10681013        domain_root = cell.get_region.get_domain_root
     
    10781023        end
    10791024
    1080                 # ハンドラタイプを判別する
     1025                # ハンドラタイプを判別する
    10811026                matches = HANDLER_TYPES.select { |handler_type|
    10821027                        handler_type.validate_join(handler, cell, call_join)
     
    10881033        end
    10891034
    1090                         # 最初に見つかった有効なハンドラタイプを使用
     1035                        # 最初に見つかった有効なハンドラタイプを使用
    10911036                ht = matches[0]
    10921037
    1093       # ドメインプラグインが指定されている場合、所属ドメインのチェック
     1038      # ドメインプラグインが指定されている場合、所属ドメインのチェック
    10941039      domain_root = cell.get_region.get_domain_root
    10951040      if domain_root.get_domain_type then
     
    11191064              end
    11201065              dbgPrint "#{self.class.name}: match pattern 2.\n"
    1121                         when NullHandlerType.new  # エラー通知を指定していない
     1066                        when NullHandlerType.new  # エラー通知を指定していない
    11221067              dbgPrint "#{self.class.name}: match pattern 3.\n"
    11231068            end
     
    11401085      end
    11411086
    1142                         # 通知ハンドラで「エラーが発生するはずがない」のに「エラーハンドラが指定されている」
    1143                         # もしくはその逆のパターンを検出する。
    1144                         # (handler_flagがnilである場合、ハンドラタイプが不明であり、エラーが発生するか不明
    1145                         #  なため、検出は行わない。)
     1087                        # 通知ハンドラで「エラーが発生するはずがない」のに「エラーハンドラが指定されている」
     1088                        # もしくはその逆のパターンを検出する。
     1089                        # (handler_flagがnilである場合、ハンドラタイプが不明であり、エラーが発生するか不明
     1090                        #  なため、検出は行わない。)
    11461091                if handler == ERROR_HANDLER && !ht.is_a?(NullHandlerType) && !event_handler_might_fail
    11471092                        cdl_error2( cell.get_locale, "NTF1004 cell $1: handler type $2 which never raises an error was inferred for the normal notification handler, but an error notification handler was specified.",
     
    11581103                end
    11591104
    1160                         # 通知方法の静的API記述を生成する
     1105                        # 通知方法の静的API記述を生成する
    11611106                handler_flag = ht.gen_cfg_handler_type(handler)
    11621107                handler_flags << handler_flag if handler_flag
     
    11721117        }
    11731118
    1174                 # $id$等の置換
     1119                # $id$等の置換
    11751120                name_array = cell.get_celltype.get_name_array(cell)
    11761121                handler_args.collect! { |e|
     
    11821127                }
    11831128
    1184         # tecsgen.cfgの記述を生成する。
    1185         # factoryに対し、パラメータ置換を行う。
     1129        # tecsgen.cfgの記述を生成する。
     1130        # factoryに対し、パラメータ置換を行う。
    11861131        # {{attribute_name}} -> attribute_value
    11871132        text = @factory.gsub(/\{\{([a-zA-Z0-9_]*?)\}\}/) { |match|
     
    11891134                        subst_attr = cell.get_celltype.find(name)
    11901135
    1191                         # {{_handler_params_}} はハンドラの指定に置換する。
     1136                        # {{_handler_params_}} はハンドラの指定に置換する。
    11921137                        if name == :_handler_params_
    11931138                        args_joined = handler_flags.join(' | ')
     
    12001145
    12011146                        unless subst_attr
    1202                                 # 属性が見つからないというエラーはすでに報告されているので
    1203                                 # ここではダミー値を返しておくだけである。
     1147                                # 属性が見つからないというエラーはすでに報告されているので
     1148                                # ここではダミー値を返しておくだけである。
    12041149                                next ""
    12051150                        end
     
    12071152                        subst_attr_join = cell.get_join_list.get_item(name)
    12081153                        if subst_attr_join
    1209                                 # セル生成時に初期化する場合
     1154                                # セル生成時に初期化する場合
    12101155                                subst = subst_attr_join.get_rhs.to_s
    12111156                        else
    1212                                 # セルタイプの初期化値を使う場合
     1157                                # セルタイプの初期化値を使う場合
    12131158                                subst = subst_attr.get_initializer.to_s
    12141159                        end
    12151160
    1216                         # $id$等の置換
     1161                        # $id$等の置換
    12171162                        cell.get_celltype.subst_name(subst, name_array)
    12181163      }
    12191164
    1220      # 出力 (CRE_xxx)
     1165     # 出力 (CRE_xxx)
    12211166     kernelCfg.print pre_text
    12221167     kernelCfg.print indent, text, "\n"
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/OpaqueMarshalerPlugin.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$
     
    5439
    5540#== OpaqueMarshaler
    56 # OpaqueRPC 用のマーシャラ、アンマーシャラセルタイプを生成するシグニチャプラグイン
     41# OpaqueRPC 用のマーシャラ、アンマーシャラセルタイプを生成するシグニチャプラグイン
    5742
    5843require_tecsgen_lib "lib/GenOpaqueMarshaler.rb"
     
    7661    # check_PPAllocator
    7762    if @signature.need_PPAllocator?(true) then
    78       @PPAllocatorSize = 1    # PPAllocatorのå¿
    79 è¦æ€§æœ‰ã®ãŸã‚ã«è¨­å®š (サイズは使われない)
     63      @PPAllocatorSize = 1    # PPAllocatorの必要性有のために設定 (サイズは使われない)
    8064      necessity = "Necessary"
    8165    else
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/OpaqueRPCPlugin.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 # 以下を仮定(制限事é 
    56 ï¼‰
    57 #  呼びå
    58 ƒã€å‘¼ã³å
    59 ˆã®ã‚¨ãƒ³ãƒ‡ã‚£ã‚¢ãƒ³ã€char, short, int_t, long_t, intptr_t のサイズが同じ
    60 #  有符号、無符号でサイズが同じ
     40# 以下を仮定(制限事項)
     41#  呼び元、呼び先のエンディアン、char, short, int_t, long_t, intptr_t のサイズが同じ
     42#  有符号、無符号でサイズが同じ
    6143
    6244require_tecsgen_lib "lib/GenOpaqueMarshaler.rb"
     
    6850  include GenParamCopy
    6951
    70   # OpaqueRPCPlugin 専用のオプション
    71   OpaqueRPCPluginArgProc = RPCPluginArgProc.dup  # 複製を作ってå
    72 ƒã‚’変更しないようにする
     52  # OpaqueRPCPlugin 専用のオプション
     53  OpaqueRPCPluginArgProc = RPCPluginArgProc.dup  # 複製を作って元を変更しないようにする
    7354  OpaqueRPCPluginArgProc[ "noClientSemaphore"  ] = Proc.new { |obj,rhs| obj.set_noClientSemaphore rhs }
    7455
    75   #=== RPCPlugin の initialize
    76   #  説明は ThroughPlugin (plugin.rb) を参ç
    77 §
     56  #=== RPCPlugin の initialize
     57  #  説明は ThroughPlugin (plugin.rb) を参照
    7858  def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell )
    7959    super
     
    9878    gen_marshaler_celltype
    9979
    100     # チャンネル composite セルタイプの生成
    101     #  ここで生成された CDL ファイルは、tecsgen が直接 import するのではなく
    102     #  セルコードの CDL から import される
     80    # チャンネル composite セルタイプの生成
     81    #  ここで生成された CDL ファイルは、tecsgen が直接 import するのではなく
     82    #  セルコードの CDL から import される
    10383
    10484    f = CFile.open( @rpc_client_channel_celltype_file_name, "w" )
    105     # 同じå†
    106 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     85    # 同じ内容を二度書く可能性あり (AppFile は不可)
    10786
    10887    f.print <<EOT
     
    142121
    143122    f = CFile.open( @rpc_server_channel_celltype_file_name, "w" )
    144     # 同じå†
    145 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     123    # 同じ内容を二度書く可能性あり (AppFile は不可)
    146124
    147125    f.print <<EOT
     
    173151  end
    174152
    175   #===  through cell コードを生成
     153  #===  through cell コードを生成
    176154  #
    177155  #
     
    180158    gen_plugin_decl_code( file )
    181159
    182     # セルを探す
     160    # セルを探す
    183161    # path =["::",@next_cell.get_name]  # mikan namespace
    184162    # cell = Namespace.find( path )
     
    191169EOT
    192170
    193     ##### クライアント側のセルの生成 #####
     171    ##### クライアント側のセルの生成 #####
    194172    nest = @start_region.gen_region_str_pre file
    195173    nest_str = "  " * nest
    196174
    197     # セマフォの生成
     175    # セマフォの生成
    198176    if @b_noClientSemaphore == false then
    199177      file.print <<EOT
     
    206184    end
    207185
    208     # クライアント側チャンネル (TINET, Socket など)の生成
     186    # クライアント側チャンネル (TINET, Socket など)の生成
    209187    file.print <<EOT
    210188#{nest_str}  //  Client Side Channel
     
    216194EOT
    217195
    218     # セマフォの結合文
     196    # セマフォの結合文
    219197    if @b_noClientSemaphore == false then
    220198      semaphore = "#{nest_str}    cLockChannel = #{@serverChannelCell}_Semaphore.eSemaphore;\n"
     
    223201    end
    224202
    225     ### クライアント側チャンネル (マーシャラ+TDR)の生成 ###
    226     # アロケータの指定があるか?
     203    ### クライアント側チャンネル (マーシャラ+TDR)の生成 ###
     204    # アロケータの指定があるか?
    227205    if cell.get_allocator_list.length > 0 then
    228206
     
    240218
    241219        file.print delim
    242         delim = ",\n"        # 最終行には出さない
    243 
    244         if subsc then        # é
    245 åˆ—添数
     220        delim = ",\n"        # 最終行には出さない
     221
     222        if subsc then        # 配列添数
    246223          subsc_str = '[#{subsc}]'
    247224        else
     
    249226        end
    250227
    251         eport = "eThroughEntry" #RPCの受け口名に変更
     228        eport = "eThroughEntry" #RPCの受け口名に変更
    252229        file.print nest_str
    253230        file.print  "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc_str}"
     
    269246
    270247EOT
    271     ### END: クライアント側チャンネル (マーシャラ+TDR)の生成 ###
     248    ### END: クライアント側チャンネル (マーシャラ+TDR)の生成 ###
    272249
    273250    @start_region.gen_region_str_post file
    274251    file.print "\n\n"
    275252
    276     ##### サーバー側のセルの生成 #####
     253    ##### サーバー側のセルの生成 #####
    277254    nest = @end_region.gen_region_str_pre file
    278255    nest_str = "  " * nest
     
    295272    end
    296273
    297     # サーバー側チャンネル (TINET, Socket など)
     274    # サーバー側チャンネル (TINET, Socket など)
    298275    file.print <<EOT
    299276
     
    304281EOT
    305282
    306     # サーバー側チャンネル (アンマーシャラ+TDR)
     283    # サーバー側チャンネル (アンマーシャラ+TDR)
    307284    file.print <<EOT
    308285
     
    314291EOT
    315292
    316     # サーバー側タスクメイン
     293    # サーバー側タスクメイン
    317294    file.print <<EOT
    318295
     
    323300EOT
    324301
    325     # サーバー側タスク
     302    # サーバー側タスク
    326303    file.print <<EOT
    327304
     
    337314  end
    338315
    339   #=== プラグイン引数 noClientSemaphore のチェック
     316  #=== プラグイン引数 noClientSemaphore のチェック
    340317  def set_noClientSemaphore rhs
    341318    rhs = rhs.to_sym
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/RPCPlugin.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$
     
    5641require_tecsgen_lib "lib/GenParamCopy.rb"
    5742
    58 #= Transparent RPC プラグイン
    59 # Transparent RPC チャンネルを生成する
    60 # プラグイン引数は以下の RPCPluginArgProc を参ç
    61 §
    62 
    63 # mikan through plugin: namespace が考æ
    64 ®ã•ã‚Œã¦ã„ない
    65 # これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定するå¿
    66 è¦ãŒã‚ã‚‹
     43#= Transparent RPC プラグイン
     44# Transparent RPC チャンネルを生成する
     45# プラグイン引数は以下の RPCPluginArgProc を参照
     46
     47# mikan through plugin: namespace が考慮されていない
     48# これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定する必要がある
    6749# tecsgen toppers_jsp.cdl sChannel.cdl your_description.cdl
    6850
    69 # 以下を仮定(制限事é 
    70 ï¼‰
    71 #  呼びå
    72 ƒã€å‘¼ã³å
    73 ˆã®ã‚¨ãƒ³ãƒ‡ã‚£ã‚¢ãƒ³ã€char, short, int_t, long_t, intptr_t のサイズが同じ
    74 #  有符号、無符号でサイズが同じ
     51# 以下を仮定(制限事項)
     52#  呼び元、呼び先のエンディアン、char, short, int_t, long_t, intptr_t のサイズが同じ
     53#  有符号、無符号でサイズが同じ
    7554
    7655class RPCPlugin < ThroughPlugin
     
    7958  include GenParamCopy
    8059
    81   # RPCPlugin 専用のオプション
    82   TransparentRPCPluginArgProc = RPCPluginArgProc.dup  # 複製を作ってå
    83 ƒã‚’変更しないようにする
     60  # RPCPlugin 専用のオプション
     61  TransparentRPCPluginArgProc = RPCPluginArgProc.dup  # 複製を作って元を変更しないようにする
    8462  TransparentRPCPluginArgProc[ "noClientSemaphore"  ] = Proc.new { |obj,rhs| obj.set_noClientSemaphore rhs }
    8563  TransparentRPCPluginArgProc[ "semaphoreCelltype"  ] = Proc.new { |obj,rhs| obj.set_semaphoreCelltype rhs }
    8664
    87   #=== RPCPlugin の initialize
    88   #  説明は ThroughPlugin (plugin.rb) を参ç
    89 §
     65  #=== RPCPlugin の initialize
     66  #  説明は ThroughPlugin (plugin.rb) を参照
    9067  def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell )
    9168    super
     
    9471    initialize_transparent_marshaler cell_name
    9572
    96     # オプション:GenTransparentMarshaler 参ç
    97 §
     73    # オプション:GenTransparentMarshaler 参照
    9874    @plugin_arg_check_proc_tab = TransparentRPCPluginArgProc
    9975    parse_plugin_arg
     
    10581      if @PPAllocatorSize == nil then
    10682        cdl_error( "PPAllocatorSize must be speicified for oneway [in] array" )
    107         # @PPAllocatorSize = 0   # 仮に 0 としておく (cdl の構文エラーを避けるため)
     83        # @PPAllocatorSize = 0   # 仮に 0 としておく (cdl の構文エラーを避けるため)
    10884      end
    10985    end
     
    11288#      if func_decl.get_type.is_oneway? then
    11389#        if ( param_decl.get_size || param_decl.get_count ) && param_decl.get_string then
    114 #          cdl_error( "array of string not supported for oneway function in Transparent RPC" )  # mikan 文字列のé
    115 åˆ—
     90#          cdl_error( "array of string not supported for oneway function in Transparent RPC" )  # mikan 文字列の配列
    11691#        elsif param_decl.get_string == -1 then
    117 #          cdl_error( "length unspecified string is not permited for oneway function in Transparent RPC" )  # mikan 長さ未指定文字列
     92#          cdl_error( "length unspecified string is not permited for oneway function in Transparent RPC" )  # mikan 長さ未指定文字列
    11893#        end
    11994#      end
     
    12196  end
    12297
    123   #=== plugin の宣言コード (celltype の定義) 生成
     98  #=== plugin の宣言コード (celltype の定義) 生成
    12499  def gen_plugin_decl_code( file )
    125100
    126101    ct_name = "#{@ct_name}_#{@channelCelltype}"
    127102
    128     # このセルタイプ(同じシグニチャ)は既に生成されているか?
     103    # このセルタイプ(同じシグニチャ)は既に生成されているか?
    129104    if @@generated_celltype[ ct_name ] == nil then
    130105      @@generated_celltype[ ct_name ] = [ self ]
     
    159134
    160135    f = CFile.open( @rpc_channel_celltype_file_name, "w" )
    161     # 同じå†
    162 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     136    # 同じ内容を二度書く可能性あり (AppFile は不可)
    163137
    164138    f.print <<EOT
     
    199173};
    200174EOT
    201     # mikan stackSize option & 最新 tecs_package 対応
     175    # mikan stackSize option & 最新 tecs_package 対応
    202176
    203177    f.close
    204178  end
    205179
    206   #===  through cell コードを生成
     180  #===  through cell コードを生成
    207181  #
    208182  #
     
    211185    gen_plugin_decl_code( file )
    212186
    213     # セルを探す
     187    # セルを探す
    214188    # path =["::",@next_cell.get_global_name]
    215189    # cell = Namespace.find( path )
     
    230204
    231205    file.print <<EOT
    232 #{indent_str}// 一方向チャンネルセル
     206#{indent_str}// 一方向チャンネルセル
    233207#{indent_str}cell #{@channelCelltype} #{@channelCellName} {
    234208#{indent_str}};
    235209
    236 #{indent_str}// RPC チャンネルセル
    237 EOT
    238 
    239     # #473 が解決された場合、composite リレーアロケータに変更すべき
    240     # アロケータの指定があるか?
     210#{indent_str}// RPC チャンネルセル
     211EOT
     212
     213    # #473 が解決された場合、composite リレーアロケータに変更すべき
     214    # アロケータの指定があるか?
    241215    if cell.get_allocator_list.length > 0 then
    242216
     
    247221
    248222        file.print delim
    249         delim = ",\n#{indent_str}           "        # 最終行には出さない
    250 
    251         if subsc then        # é
    252 åˆ—添数
     223        delim = ",\n#{indent_str}           "        # 最終行には出さない
     224
     225        if subsc then        # 配列添数
    253226          subsc_str = '[#{subsc}]'
    254227        else
     
    256229        end
    257230
    258         eport = "eThroughEntry" #RPCの受け口名に変更
     231        eport = "eThroughEntry" #RPCの受け口名に変更
    259232        file.print  "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc}"
    260233      end
     
    275248
    276249
    277   #=== プラグイン引数 noClientSemaphore のチェック
     250  #=== プラグイン引数 noClientSemaphore のチェック
    278251  def set_noClientSemaphore rhs
    279252    rhs = rhs.to_sym
     
    287260  end
    288261
    289   #=== プラグイン引数 semaphoreCelltype のチェック
     262  #=== プラグイン引数 semaphoreCelltype のチェック
    290263  def set_semaphoreCelltype rhs
    291264    @semaphoreCelltype = rhs.to_sym
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/RepeatCellPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    77#
    88#--
    9 #   ä¸Šè¨˜è‘—作権è€
    10 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    11 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    12 #   å¤‰ãƒ»å†é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    14 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    15 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    16 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    17 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    18 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    19 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    20 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    21 #       è€
    22 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    23 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    24 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    25 #       ç”¨ã§ããªã„形で再é
    26 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    27 #       ã¨ï¼Ž
    28 #     (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    32 #     (b) 再é
    33 å¸ƒã®å½¢æ
    34 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    35 #         å ±å‘Šã™ã‚‹ã“と.
    36 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    37 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    38 ãŠã‚ˆã³TOPPERSプロジェクトをå
    39 è²¬ã™ã‚‹ã“と.
    40 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    41 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    42 ãŠã‚ˆã³TOPPERSプロジェクトを
    43 #       å
    44 è²¬ã™ã‚‹ã“と.
     9#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     10#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14#       スコード中に含まれていること.
     15#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18#       の無保証規定を掲載すること.
     19#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21#       と.
     22#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     24#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25#         報告すること.
     26#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30#       免責すること.
    4531
    46 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    47 ãŠ
    48 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    49 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    50 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    51 #   ã®è²¬ä»»ã‚’負わない.
     32#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36#   の責任を負わない.
    5237
    5338#  $Id$
    5439#++
    5540
    56 #== cell を count 個繰り返すセルプラグイン
    57 # 不完å
    58 ¨ç‚¹ï¼š
    59 #    指定子に対応していない
    60 #       cell の指定子 (allocator, id)
    61 #       çµåˆã®æŒ‡å®šå­ (through)
     41#== cell を count 個繰り返すセルプラグイン
     42# 不完全点:
     43#    指定子に対応していない
     44#       cell の指定子 (allocator, id)
     45#       結合の指定子 (through)
    6246class RepeatCellPlugin < CellPlugin
    6347
     
    10286    while count < num
    10387
    104       # セル名のカウント
     88      # セル名のカウント
    10589      count_str = (count + base_count).to_s
    10690      if tail_zero.length > count_str.length then
     
    11498      file.print "#{indent_str}cell #{@cell.get_celltype.get_name} #{cname}{\n"
    11599
    116       # Join の CDL 文字列生成
     100      # Join の CDL 文字列生成
    117101      @cell.get_join_list.get_items.each{ |j|
    118102
    119         # Join の右辺の解析
     103        # Join の右辺の解析
    120104        res = j.get_rhs.analyze_cell_join_expression
    121105        if res then
     
    131115        end
    132116
    133         # 右辺のセル名 (末尾の数字をカウントアップ)
     117        # 右辺のセル名 (末尾の数字をカウントアップ)
    134118        nsp.get_name.to_s =~ /(.*[^0-9])([0-9]+)\z/
    135119        if $2 then
     
    145129        end
    146130
    147         # Join 文字列の出力
     131        # Join 文字列の出力
    148132        if port_name then
    149           # 右辺は セルの結合
     133          # 右辺は セルの結合
    150134          if subscript then
    151135            file.print "#{indent_str}  #{j.get_name} = #{nsp.get_path_str}.#{port_name}[#{(count+subscript).to_s}];\n"
     
    154138          end
    155139        else
    156           # 右辺は単一の識別子
     140          # 右辺は単一の識別子
    157141          file.print "#{indent_str}  #{j.get_name} = #{nsp.get_path_str};\n"
    158142        end
     
    166150  end
    167151
    168   #=== count オプションの解析
     152  #=== count オプションの解析
    169153  def set_count rhs
    170154    if rhs =~ /\A\d+\z/
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/RepeatJoinPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    77#
    88#--
    9 #   ä¸Šè¨˜è‘—作権è€
    10 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    11 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    12 #   å¤‰ãƒ»å†é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    14 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    15 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    16 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    17 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    18 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    19 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    20 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    21 #       è€
    22 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    23 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    24 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    25 #       ç”¨ã§ããªã„形で再é
    26 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    27 #       ã¨ï¼Ž
    28 #     (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    32 #     (b) 再é
    33 å¸ƒã®å½¢æ
    34 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    35 #         å ±å‘Šã™ã‚‹ã“と.
    36 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    37 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    38 ãŠã‚ˆã³TOPPERSプロジェクトをå
    39 è²¬ã™ã‚‹ã“と.
    40 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    41 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    42 ãŠã‚ˆã³TOPPERSプロジェクトを
    43 #       å
    44 è²¬ã™ã‚‹ã“と.
     9#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     10#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14#       スコード中に含まれていること.
     15#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18#       の無保証規定を掲載すること.
     19#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21#       と.
     22#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     24#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25#         報告すること.
     26#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30#       免責すること.
    4531
    46 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    47 ãŠ
    48 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    49 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    50 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    51 #   ã®è²¬ä»»ã‚’負わない.
     32#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36#   の責任を負わない.
    5237
    5338#  $Id$
     
    7055      # print "Join: #{j.get_name} = #{j.get_rhs.to_s}\n"
    7156
    72       # Join の右辺を解析
     57      # Join の右辺を解析
    7358      ret = j.get_rhs.analyze_cell_join_expression
    7459      if ret == nil then
     
    7762      rhs_nsp = ret[0]; rhs_subscript = ret[1]; rhs_port_name = ret[2]
    7863
    79       # 呼び口é
    80 åˆ—で、添数が 0 の場合にのみカウントアップさせる
     64      # 呼び口配列で、添数が 0 の場合にのみカウントアップさせる
    8165      if j.get_subscript == 0 then
    8266        rhs_name = rhs_nsp.get_name.to_s
     
    128112  end
    129113
    130   #=== count オプションの解析
     114  #=== count オプションの解析
    131115  def set_count rhs
    132116    if rhs =~ /\A\d+\z/
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/SharedOpaqueRPCPlugin.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$
     
    5641require_tecsgen_lib "lib/GenParamCopy.rb"
    5742
    58 #= SharedOpaqueRPC プラグイン
    59 # SharedOpaqueRPC チャンネルを生成する
    60 # プラグイン引数は GenTransparentMarshaler 参ç
    61 §
    62 
    63 # mikan through plugin: namespace が考æ
    64 ®ã•ã‚Œã¦ã„ない
    65 # これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定するå¿
    66 è¦ãŒã‚ã‚‹
     43#= SharedOpaqueRPC プラグイン
     44# SharedOpaqueRPC チャンネルを生成する
     45# プラグイン引数は GenTransparentMarshaler 参照
     46
     47# mikan through plugin: namespace が考慮されていない
     48# これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定する必要がある
    6749# tecsgen toppers_jsp.cdl sChannel.cdl your_description.cdl
    6850
    69 # 以下を仮定(制限事é 
    70 ï¼‰
    71 #  呼びå
    72 ƒã€å‘¼ã³å
    73 ˆã®ã‚¨ãƒ³ãƒ‡ã‚£ã‚¢ãƒ³ã€char, short, int_t, long_t, intptr_t のサイズが同じ
    74 #  有符号、無符号でサイズが同じ
     51# 以下を仮定(制限事項)
     52#  呼び元、呼び先のエンディアン、char, short, int_t, long_t, intptr_t のサイズが同じ
     53#  有符号、無符号でサイズが同じ
    7554
    7655class SharedOpaqueRPCPlugin < ThroughPlugin
    7756
    78   # チャンネルをå
    79 ±æœ‰ã™ã‚‹ãƒ—ラグインオブジェクトへのハッシュリスト
     57  # チャンネルを共有するプラグインオブジェクトへのハッシュリスト
    8058  @@shared_channel_list = {}    # { chan_name => [ Plugin_obj0, Plugin_Obj1, ... ] }
    8159
     
    8462  include GenParamCopy
    8563
    86   # SharedOpaqueRPCPlugin 専用のオプション
    87   SharedOpaqueRPCPluginArgProc = RPCPluginArgProc.dup  # 複製を作ってå
    88 ƒã‚’変更しないようにする
     64  # SharedOpaqueRPCPlugin 専用のオプション
     65  SharedOpaqueRPCPluginArgProc = RPCPluginArgProc.dup  # 複製を作って元を変更しないようにする
    8966  SharedOpaqueRPCPluginArgProc[ "sharedChannelName"  ] = Proc.new { |obj,rhs| obj.set_sharedChannelName rhs }
    9067
    91   #=== RPCPlugin の initialize
    92   #  説明は ThroughPlugin (plugin.rb) を参ç
    93 §
     68  #=== RPCPlugin の initialize
     69  #  説明は ThroughPlugin (plugin.rb) を参照
    9470  def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell )
    9571    super
    9672    initialize_opaque_marshaler
    97     @entry_port_name = :"eClientEntry"   # Marshaler の受け口名 (through セルのå
    98 ¥ã‚Šå£)
    99 
    100     # オプション:GenOpaqueMarshaler 参ç
    101 §
     73    @entry_port_name = :"eClientEntry"   # Marshaler の受け口名 (through セルの入り口)
     74
     75    # オプション:GenOpaqueMarshaler 参照
    10276    @plugin_arg_check_proc_tab = SharedOpaqueRPCPluginArgProc
    10377    @sharedChannelName = nil
     
    12599    prev_start = @@shared_channel_list[ @shared_channel_cell ][0].start_region
    126100    if @start_region != prev_start then
    127       # 初出と start リージョン不一致 (初出は、自分自身とチェックされる。無駄だが小さいので放置)
     101      # 初出と start リージョン不一致 (初出は、自分自身とチェックされる。無駄だが小さいので放置)
    128102      cdl_error( "SharedRPCPlugin: start region mismatch current: #{@region.get_name} previous: #{prev_start.get_name}")
    129103    end
     
    131105    prev_end = @@shared_channel_list[ @shared_channel_cell ][0].end_region
    132106    if @end_region != prev_end then
    133       # 初出と end リージョン不一致  (初出は、自分自身とチェックされる。無駄だが小さいので放置)
     107      # 初出と end リージョン不一致  (初出は、自分自身とチェックされる。無駄だが小さいので放置)
    134108      cdl_error( "SharedRPCPlugin: end region mismatch current: #{@region.get_name} previous: #{prev_end.get_name}")
    135109    end
     
    141115  # end
    142116
    143   #=== プラグイン引数 sharedChannelCell のチェック
     117  #=== プラグイン引数 sharedChannelCell のチェック
    144118  def set_sharedChannelName( rhs )
    145119    @sharedChannelName = rhs
     
    153127  def gen_plugin_decl_code( file )
    154128
    155     # このセルタイプ(同じシグニチャ)は既に生成されているか?
     129    # このセルタイプ(同じシグニチャ)は既に生成されているか?
    156130    if @@generated_celltype[ @shared_channel_server_ct_name ] == nil then
    157131      @@generated_celltype[ @shared_channel_server_ct_name ] = [ self ]
     
    162136    gen_marshaler_celltype
    163137
    164     # 同じå†
    165 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     138    # 同じ内容を二度書く可能性あり (AppFile は不可)
    166139
    167140    if @PPAllocatorSize then
     
    174147
    175148    f = CFile.open( @shared_channel_ct_file_name, "w" )
    176     # 同じå†
    177 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     149    # 同じ内容を二度書く可能性あり (AppFile は不可)
    178150
    179151    f.print <<EOT
     
    233205  end
    234206
    235   #===  through cell コードを生成
     207  #===  through cell コードを生成
    236208  #
    237209  #
     
    256228    end
    257229
    258     # セルを探す
     230    # セルを探す
    259231    # path =["::",@next_cell.get_name]
    260232    # cell = Namespace.find( path )
    261233    cell = Namespace.find( @next_cell.get_namespace_path )
    262234
    263     # å
    264 ±æœ‰ã•ã‚Œã‚‹é€šä¿¡ãƒãƒ£ãƒ³ãƒãƒ«ã®ç”Ÿæˆã®ãƒ—ロトタイプ宣言
     235    # 共有される通信チャンネルの生成のプロトタイプ宣言
    265236    file.print <<EOT
    266237#{indent_str}cell #{@shared_channel_client_ct_name} #{@shared_channel_cell};
    267238EOT
    268239
    269     # マーシャラセルの生成(アロケータコードの生成から)
    270     # アロケータの指定があるか?
     240    # マーシャラセルの生成(アロケータコードの生成から)
     241    # アロケータの指定があるか?
    271242    if cell.get_allocator_list.length > 0 then
    272243
     
    284255
    285256        file.print delim
    286         delim = ",\n#{indent_str}           "        # 最終行には出さない
    287 
    288         if subsc then        # é
    289 åˆ—添数
     257        delim = ",\n#{indent_str}           "        # 最終行には出さない
     258
     259        if subsc then        # 配列添数
    290260          subsc_str = '[#{subsc}]'
    291261        else
     
    293263        end
    294264
    295         eport = @entry_port_name #RPCの受け口名に変更
     265        eport = @entry_port_name #RPCの受け口名に変更
    296266        file.print  "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc_str}"
    297267      end
     
    300270    end
    301271
    302     # マーシャラセル本体生成
     272    # マーシャラセル本体生成
    303273    file.print <<EOT
    304274/* OpaqueRPC Marshaler Cell */
     
    311281    @start_region.gen_region_str_post file
    312282
    313     # アンマーシャラセルの出力
    314     # セル本体の生成
     283    # アンマーシャラセルの出力
     284    # セル本体の生成
    315285    nest = @end_region.gen_region_str_pre file
    316286
     
    321291EOT
    322292
    323     # PPAllocator がå¿
    324 è¦ã‹?
     293    # PPAllocator が必要か?
    325294    if @PPAllocatorSize then
    326295      if @sub_channel_no == 0 then
     
    347316  end
    348317
    349   #=== post コード(CDL) を生成
    350   # プラグインの後のコードを生成
     318  #=== post コード(CDL) を生成
     319  # プラグインの後のコードを生成
    351320  #file:: File:
    352321  def self.gen_post_code( file )
     
    361330  end
    362331
    363   #=== post コード(CDL) を生成
    364   # å
    365 ±æœ‰ãƒãƒ£ãƒ³ãƒãƒ«ã‚’生成する
    366   # このメソッドは、チャンネルをå
    367 ±æœ‰ã™ã‚‹æœ€åˆã®ãƒ—ラグインオブジェクトのみ呼び出される
     332  #=== post コード(CDL) を生成
     333  # 共有チャンネルを生成する
     334  # このメソッドは、チャンネルを共有する最初のプラグインオブジェクトのみ呼び出される
    368335  def gen_post_code( file, plugin_obj_array )
    369336
    370     # å
    371 ±æœ‰ã•ã‚Œã¦ã„る通信チャンネルの生成
    372     # 各プラグインインスタンスでは @shared_channel_ct_name として記憶している
     337    # 共有されている通信チャンネルの生成
     338    # 各プラグインインスタンスでは @shared_channel_ct_name として記憶している
    373339    # region = @caller_cell.get_region
    374340    nest = @start_region.gen_region_str_pre file
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/SharedRPCPlugin.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$
     
    5641require_tecsgen_lib "lib/GenParamCopy.rb"
    5742
    58 #= SharedRPC プラグイン
    59 # SharedRPC チャンネルを生成する
    60 # プラグイン引数は GenTransparentMarshaler 参ç
    61 §
    62 
    63 # mikan through plugin: namespace が考æ
    64 ®ã•ã‚Œã¦ã„ない
    65 # これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定するå¿
    66 è¦ãŒã‚ã‚‹
     43#= SharedRPC プラグイン
     44# SharedRPC チャンネルを生成する
     45# プラグイン引数は GenTransparentMarshaler 参照
     46
     47# mikan through plugin: namespace が考慮されていない
     48# これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定する必要がある
    6749# tecsgen toppers_jsp.cdl sChannel.cdl your_description.cdl
    6850
    69 # 以下を仮定(制限事é 
    70 ï¼‰
    71 #  呼びå
    72 ƒã€å‘¼ã³å
    73 ˆã®ã‚¨ãƒ³ãƒ‡ã‚£ã‚¢ãƒ³ã€char, short, int_t, long_t, intptr_t のサイズが同じ
    74 #  有符号、無符号でサイズが同じ
     51# 以下を仮定(制限事項)
     52#  呼び元、呼び先のエンディアン、char, short, int_t, long_t, intptr_t のサイズが同じ
     53#  有符号、無符号でサイズが同じ
    7554
    7655class SharedRPCPlugin < ThroughPlugin
     
    8160  include GenParamCopy
    8261
    83   #=== RPCPlugin の initialize
    84   #  説明は ThroughPlugin (plugin.rb) を参ç
    85 §
     62  #=== RPCPlugin の initialize
     63  #  説明は ThroughPlugin (plugin.rb) を参照
    8664  def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell )
    8765
    88     # mikan プラグインオプション指定の不一致のチェック task_priority,
     66    # mikan プラグインオプション指定の不一致のチェック task_priority,
    8967
    9068    super
    9169    initialize_transparent_marshaler cell_name
    9270
    93     # オプション:GenTransparentMarshaler 参ç
    94 §
     71    # オプション:GenTransparentMarshaler 参照
    9572    @plugin_arg_check_proc_tab = RPCPluginArgProc
    96     @channelCellName = ""     # nil にしておく
     73    @channelCellName = ""     # nil にしておく
    9774    parse_plugin_arg
    9875
     
    10885
    10986    if @@shared_channel_list[ @shared_channel_cell ] == nil then
    110       # 初出
     87      # 初出
    11188      @@shared_channel_list[ @shared_channel_cell ] = [ self ]
    11289    else
    113       # 二番目以降
     90      # 二番目以降
    11491      @@shared_channel_list[ @shared_channel_cell ] << self
    11592    end
     
    11794
    11895    if @region != @@shared_channel_list[ @shared_channel_cell ][0].region then
    119       # 初出とリージョン不一致 (初出は、自分自身とチェックされる。無駄だが小さいので放置)
     96      # 初出とリージョン不一致 (初出は、自分自身とチェックされる。無駄だが小さいので放置)
    12097      cdl_error( "SharedRPCPlugin: preferred region mismatch current: #{@region.get_name} previous: #{@@shared_channel_list[ @shared_channel_cell ][0].region.get_name}")
    12198    else
     
    138115  def gen_plugin_decl_code( file )
    139116
    140     # このセルタイプ(同じシグニチャ)は既に生成されているか?
     117    # このセルタイプ(同じシグニチャ)は既に生成されているか?
    141118    if @@generated_celltype[ @shared_channel_ct_name ] == nil then
    142119      @@generated_celltype[ @shared_channel_ct_name ] = [ self ]
     
    152129
    153130    gen_marshaler_celltype
    154     # 同じå†
    155 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     131    # 同じ内容を二度書く可能性あり (AppFile は不可)
    156132
    157133    if @signature.need_PPAllocator? then
     
    164140
    165141    f = CFile.open( @rpc_channel_celltype_file_name, "w" )
    166     # 同じå†
    167 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     142    # 同じ内容を二度書く可能性あり (AppFile は不可)
    168143
    169144    f.print <<EOT
     
    196171};
    197172EOT
    198     # mikan stackSize option & 最新 tecs_package 対応
     173    # mikan stackSize option & 最新 tecs_package 対応
    199174
    200175    f.close
    201176
    202177    f = CFile.open( "#{$gen}/#{@shared_channel_ct_name}.cdl", "w" )
    203     # 同じå†
    204 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     178    # 同じ内容を二度書く可能性あり (AppFile は不可)
    205179
    206180    f.print <<EOT
     
    247221  end
    248222
    249   #===  through cell コードを生成
     223  #===  through cell コードを生成
    250224  #
    251225  #
     
    268242    end
    269243
    270     # セルを探す
     244    # セルを探す
    271245    # path =["::",@next_cell.get_name]
    272246    # cell = Namespace.find( path )
    273247    cell = Namespace.find( @next_cell.get_namespace_path )
    274248
    275     # PPAllocator がå¿
    276 è¦ã‹?
     249    # PPAllocator が必要か?
    277250    if @signature.need_PPAllocator? then
    278251      if @sub_channel_no == 0 then
     
    289262    end
    290263
    291     # å
    292 ±æœ‰ã•ã‚Œã‚‹é€šä¿¡ãƒãƒ£ãƒ³ãƒãƒ«ã®ç”Ÿæˆã®ãƒ—ロトタイプ宣言
     264    # 共有される通信チャンネルの生成のプロトタイプ宣言
    293265    file.print <<EOT
    294266#{indent_str}cell #{@shared_channel_ct_name} #{@shared_channel_cell};
    295267EOT
    296268
    297     # ここから各結合ごとのセルを生成
    298 
    299     # アロケータの指定があるか?
     269    # ここから各結合ごとのセルを生成
     270
     271    # アロケータの指定があるか?
    300272    if cell.get_allocator_list.length > 0 then
    301273
     
    306278
    307279        file.print delim
    308         delim = ",\n#{indent_str}           "        # 最終行には出さない
    309 
    310         if subsc then        # é
    311 åˆ—添数
     280        delim = ",\n#{indent_str}           "        # 最終行には出さない
     281
     282        if subsc then        # 配列添数
    312283          subsc_str = '[#{subsc}]'
    313284        else
     
    315286        end
    316287
    317         eport = "eThroughEntry" #RPCの受け口名に変更
     288        eport = "eThroughEntry" #RPCの受け口名に変更
    318289        file.print  "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc}"
    319290      end
     
    322293    end
    323294
    324     # セル本体の生成
     295    # セル本体の生成
    325296    file.print <<EOT
    326297#{indent_str}cell #{@rpc_channel_celltype_name} #{@cell_name} {
     
    334305  end
    335306
    336   #=== 後ろのコードを生成
    337   #プラグインの後ろのコードを生成
     307  #=== 後ろのコードを生成
     308  #プラグインの後ろのコードを生成
    338309  #file:: File:
    339310  def self.gen_post_code( file )
     
    344315  end
    345316
    346   #=== 後ろのコードを生成
    347   # plugin_obj[0] が代表して出力する(インスタンス変数にアクセスしたいため)
     317  #=== 後ろのコードを生成
     318  # plugin_obj[0] が代表して出力する(インスタンス変数にアクセスしたいため)
    348319  def gen_post_code( file, plugin_obj )
    349320
     
    353324    indent_str = "  " * nest
    354325
    355     # å
    356 ±æœ‰ã•ã‚Œã¦ã„る通信チャンネルの生成
    357     # 各プラグインインスタンスでは @shared_channel_ct_name として記憶している
     326    # 共有されている通信チャンネルの生成
     327    # 各プラグインインスタンスでは @shared_channel_ct_name として記憶している
    358328    file.print "#{indent_str}cell tSharedRPCPlugin_#{@channelCelltype} #{chan_name} {\n"
    359329    plugin_obj.each{ |po|
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/SignaturePlugin.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 #== signature プラグインのå
    56 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     40#== signature プラグインの共通の親クラス
    5741class SignaturePlugin < Plugin
    58 #@signature:: Signature   ãƒ—ラグインの対象となるシグニチャ
    59 #@option:: String   '"', '"' で囲まれた文字列
     42#@signature:: Signature   プラグインの対象となるシグニチャ
     43#@option:: String   '"', '"' で囲まれた文字列
    6044
    61   #signature::     Signature        シグニチャ(インスタンス)
     45  #signature::     Signature        シグニチャ(インスタンス)
    6246  def initialize( signature, option )
    6347    super()
    6448    @signature = signature
    65     # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' )    # 前後の "" を取り除く
     49    # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' )    # 前後の "" を取り除く
    6650    # @plugin_arg_str.sub!( /(.*)"\z/, '\1' )
    6751    @plugin_arg_str = CDLString.remove_dquote option
     
    6953  end
    7054
    71   #=== 後ろのコードを生成
    72   #プラグインの後ろの CDL コードを生成
     55  #=== 後ろのコードを生成
     56  #プラグインの後ろの CDL コードを生成
    7357  #file:: File:
    7458  def self.gen_post_code( file )
    75     # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
     59    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
    7660    # file.print "/* '#{self.class.name}' post code */\n"
    7761  end
    7862
    79   #===  受け口関数の本体(C言語)を生成する
    80   #     é€šå¸¸ã§ã‚れば、ジェネレータは受け口関数のテンプレートを生成する
    81   #     ãƒ—ラグインの場合、変更するå¿
    82 è¦ã®ãªã„セルタイプコードを生成する
    83   #file::           FILE        出力å
    84 ˆãƒ•ã‚¡ã‚¤ãƒ«
     63  #===  受け口関数の本体(C言語)を生成する
     64  #     通常であれば、ジェネレータは受け口関数のテンプレートを生成する
     65  #     プラグインの場合、変更する必要のないセルタイプコードを生成する
     66  #file::           FILE        出力先ファイル
    8567  #b_singleton::    bool        true if singleton
    8668  #ct_name::        Symbol
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/TECS2CBridgePlugin.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 #== TECS => C 呼び出しプラグイン
     40#== TECS => C 呼び出しプラグイン
    5641class TECS2CBridgePlugin < SignaturePlugin
    57 #@signature:: Signature   ãƒ—ラグインの対象となるシグニチャ
    58 #@option:: String   '"', '"' で囲まれた文字列
     42#@signature:: Signature   プラグインの対象となるシグニチャ
     43#@option:: String   '"', '"' で囲まれた文字列
    5944
    6045  @@signature_list = { }
    6146
    62   #signature::     Signature        シグニチャ(インスタンス)
     47  #signature::     Signature        シグニチャ(インスタンス)
    6348  def initialize( signature, option )
    6449    super
     
    9176  end
    9277
    93   #=== 後ろのコードを生成
    94   #プラグインの後ろのコードを生成
     78  #=== 後ろのコードを生成
     79  #プラグインの後ろのコードを生成
    9580  #file:: File:
    9681  def self.gen_post_code( file )
    97     # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
     82    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
    9883    # file.print "/* '#{self.class.name}' post code */\n"
    9984  end
    10085
    101   #===  受け口関数の本体(C言語)を生成する
    102   #     é€šå¸¸ã§ã‚れば、ジェネレータは受け口関数のテンプレートを生成する
    103   #     ãƒ—ラグインの場合、変更するå¿
    104 è¦ã®ãªã„セルタイプコードを生成する
    105   #file::           FILE        出力å
    106 ˆãƒ•ã‚¡ã‚¤ãƒ«
     86  #===  受け口関数の本体(C言語)を生成する
     87  #     通常であれば、ジェネレータは受け口関数のテンプレートを生成する
     88  #     プラグインの場合、変更する必要のないセルタイプコードを生成する
     89  #file::           FILE        出力先ファイル
    10790  #b_singleton::    bool        true if singleton
    10891  #ct_name::        Symbol
     
    129112    p_cellcb = #{global_ct_name}_GET_CELLCB(idx);
    130113  }else{
    131      /* エラー処理コードをここに記述 */
     114     /* エラー処理コードをここに記述 */
    132115  }
    133116
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/TECSInfoPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2017-2018 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$
     
    6247  #@cell_list::[Cell]
    6348
    64   #celltype::     Celltype        セルタイプ(インスタンス)
     49  #celltype::     Celltype        セルタイプ(インスタンス)
    6550  def initialize( celltype, option )
    6651    super
     
    7156  end
    7257
    73   #=== 新しいセル
    74   #cell::        Cell            セル
     58  #=== 新しいセル
     59  #cell::        Cell            セル
    7560  #
    76   # celltype プラグインを指定されたセルタイプのセルが生成された
    77   # セルタイププラグインに対する新しいセルの報告
     61  # celltype プラグインを指定されたセルタイプのセルが生成された
     62  # セルタイププラグインに対する新しいセルの報告
    7863  def new_cell( cell )
    7964    @@cell_list << cell
    8065
    81     # AppFile は、重ね書きようなので、やめる
     66    # AppFile は、重ね書きようなので、やめる
    8267    # p "import: cell nTECSInfo::tTECSInfoSub #{cell.get_namespace_path.to_s} under #{cell.get_region.get_name}"
    8368    # cell.show_tree 0
    84     # TECSInfoSub セルのプロトタイプ宣言
     69    # TECSInfoSub セルのプロトタイプ宣言
    8570    fn = "#{$gen}/tmp_#{cell.get_region.get_global_name}_TECSInfoSub.cdl"
    8671    File.open( fn, "w" ){ |f|
     
    9883    Import.new fn
    9984
    100     # セルに cTECSInfo の結合があるか?
     85    # セルに cTECSInfo の結合があるか?
    10186    if cell.get_join_list.get_item( :cTECSInfo ) == nil then
    102       # cTECSInfo = rTECSInfo::TECSInfosub.eTECSInfo; の追加
     87      # cTECSInfo = rTECSInfo::TECSInfosub.eTECSInfo; の追加
    10388      nsp = NamespacePath.new( :rTECSInfo, false )
    10489      nsp.append! :TECSInfoSub
     
    10994  end
    11095
    111   #=== tCelltype_factory.h に挿å
    112 ¥ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’生成する
    113   # file 以外の他のファイルにファクトリコードを生成してもよい
    114   # セルタイププラグインが指定されたセルタイプのみ呼び出される
     96  #=== tCelltype_factory.h に挿入するコードを生成する
     97  # file 以外の他のファイルにファクトリコードを生成してもよい
     98  # セルタイププラグインが指定されたセルタイプのみ呼び出される
    11599  def gen_factory file
    116100    File.open( "#{$gen}/include_all_signature_header.h", "w" ){ |f|
     
    199183    f.print "#define TOPPERS_CB_TYPE_ONLY\n"
    200184    Namespace.get_root.print_celltype_define f
    201     # FOREACH_CELL を出しなおす
     185    # FOREACH_CELL を出しなおす
    202186    ct = Namespace.find [ "::", :nTECSInfo, :tCelltypeInfo ]
    203187    ct.gen_ph_foreach_cell f
     
    269253    }
    270254    Region.get_root.print_cell_define f
    271     # FOREACH_CELL を出しなおす
     255    # FOREACH_CELL を出しなおす
    272256    ct = Namespace.find [ "::", :nTECSInfo, :tCellInfo ]
    273257    ct.gen_ph_foreach_cell f
     
    280264  end
    281265
    282   #=== 後ろの CDL コードを生成
    283   #プラグインの後ろの CDL コードを生成
     266  #=== 後ろの CDL コードを生成
     267  #プラグインの後ろの CDL コードを生成
    284268  #file:: File:
    285269  def self.gen_post_code( file )
     
    288272      return
    289273    end
    290     # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
     274    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
    291275    file.print <<EOT
    292276/*------------ #{self.name} post code ------------*/
  • 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
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/TracePlugin.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$
     
    5540class TracePlugin < ThroughPlugin
    5641#@cellEntry_list::[ "Cell.eEntry", "Cell2.eEntry2", ... ]
    57 #@b_generate::bool  : true : TracePlugin を生成するå¿
    58 è¦ãŒã‚ã‚‹
    59 
    60   #=== TracePlugin の initialize
    61   #  説明は ThroughPlugin (plugin.rb) を参ç
    62 §
     42#@b_generate::bool  : true : TracePlugin を生成する必要がある
     43
     44  #=== TracePlugin の initialize
     45  #  説明は ThroughPlugin (plugin.rb) を参照
    6346  def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell )
    6447
     
    8669
    8770    if @b_generate == false then
    88       # å
    89 ƒã€
    90 å‘¼ã³å‡ºã™ã‚»ãƒ«ã«çµåˆã™ã‚‹ã‚‚のとする
     71      # 元々呼び出すセルに結合するものとする
    9172      @entry_port_name = next_cell_port_name
    9273      @cell_name = next_cell.get_name
     
    9475  end
    9576
    96   #===  宣言コードの生成
    97   #      typedef, signature, celltype など(cell 以外)のコードを生成
    98   #          重複して生成してはならない(すでに生成されている場合は出力しないこと)
    99   #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     77  #===  宣言コードの生成
     78  #      typedef, signature, celltype など(cell 以外)のコードを生成
     79  #          重複して生成してはならない(すでに生成されている場合は出力しないこと)
     80  #file::        FILE       生成するファイル
    10081  def gen_plugin_decl_code( file )
    10182
    102     # このセルタイプ(同じシグニチャ)は既に生成されているか?
     83    # このセルタイプ(同じシグニチャ)は既に生成されているか?
    10384    if @@generated_celltype[ @ct_name ] == nil then
    10485      @@generated_celltype[ @ct_name ] = [ self ]
     
    449430  end
    450431
    451   # プラグイン引数名と Proc
     432  # プラグイン引数名と Proc
    452433  TracePluginArgProc = {
    453434    "maxArrayDisplay"    => Proc.new { |obj,rhs| obj.set_maxArrayDisplay rhs },
     
    489470  end
    490471
    491   #=== プラグイン引数 tKernel のチェック
     472  #=== プラグイン引数 tKernel のチェック
    492473  def set_kernelCelltype( rhs )
    493474    @kernelCelltype = rhs.to_sym
     
    499480  end
    500481
    501   #=== プラグイン引数 tSyslog のチェック
     482  #=== プラグイン引数 tSyslog のチェック
    502483  def set_syslogCelltype( rhs )
    503484    @syslogCelltype = rhs.to_sym
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/lib/GenHRP2Marshaler.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 #プラグインオプション用変数
     40#プラグインオプション用変数
    5641#@task_priority:: Integer
    5742#@channelCelltype:: String
     
    6045module GenTransparentMarshaler
    6146
    62   # プラグイン引数名と Proc
     47  # プラグイン引数名と Proc
    6348  RPCPluginArgProc = {
    6449    "taskPriority"    => Proc.new { |obj,rhs| obj.set_taskPriority rhs },
     
    6954  }
    7055
    71   #=== プラグイン引数 taskPriority のチェック
     56  #=== プラグイン引数 taskPriority のチェック
    7257  def set_taskPriority( rhs )
    7358    @task_priority = rhs
    7459  end
    7560
    76   #=== プラグイン引数 channelCelltype のチェック
     61  #=== プラグイン引数 channelCelltype のチェック
    7762  def set_channelCelltype( rhs )
    7863    @channelCelltype = rhs.to_sym
     
    8671  end
    8772
    88   #=== プラグイン引数 TDRCelltype のチェック
     73  #=== プラグイン引数 TDRCelltype のチェック
    8974  def set_TDRCelltype( rhs )
    9075    @TDRCelltype = rhs.to_sym
     
    9883  end
    9984
    100   #=== プラグイン引数 channelCellName のチェック
     85  #=== プラグイン引数 channelCellName のチェック
    10186  def set_channelCellName( rhs )
    10287    @channelCellName = rhs
     
    10893  end
    10994
    110   #=== プラグイン引数 PPAllocatorSize のチェック
     95  #=== プラグイン引数 PPAllocatorSize のチェック
    11196  def set_PPAllocatorSize( rhs )
    11297    @PPAllocatorSize = rhs
    11398  end
    11499
    115   #=== marshaler のセルタイプ名を設定する
     100  #=== marshaler のセルタイプ名を設定する
    116101  def initialize_transparent_marshaler cell_name
    117102    @task_priority = 8
     
    135120
    136121    f = CFile.open( @marshaler_celltype_file_name, "w" )
    137     # 同じå†
    138 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     122    # 同じ内容を二度書く可能性あり (AppFile は不可)
    139123
    140124    # modified by ishikawa
     
    164148  end
    165149
    166   #===  受け口関数の本体コードを生成(頭部と末尾は別途出力)
    167   #ct_name:: Symbol    (through プラグインで生成された) セルタイプ名 .Symbol として送られてくる(らしい)
     150  #===  受け口関数の本体コードを生成(頭部と末尾は別途出力)
     151  #ct_name:: Symbol    (through プラグインで生成された) セルタイプ名 .Symbol として送られてくる(らしい)
    168152  def gen_ep_func_body( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
    169153
    170     # unmarshaler クラスか?
     154    # unmarshaler クラスか?
    171155    if ct_name == @unmarshaler_celltype_name.to_sym then
    172156      gen_ep_func_body_unmarshal( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
     
    176160  end
    177161
    178   #===  marshal コードの生成
     162  #===  marshal コードの生成
    179163  def gen_ep_func_body_marshal( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
    180164
     
    182166    b_ret_er = false
    183167
    184     # 関数の戻り値のå
    185 ƒã®åž‹ã‚’å¾—ã‚‹(typedef されている場合)
     168    # 関数の戻り値の元の型を得る(typedef されている場合)
    186169    type = func_type.get_type.get_original_type
    187170
    188     # 戻り値記憶用の変数を出力(void 型の関数では出力しない)
     171    # 戻り値記憶用の変数を出力(void 型の関数では出力しない)
    189172    if ! type.kind_of?( VoidType ) then
    190173      if func_type.get_type.kind_of?( DefinedType ) && ( func_type.get_type.get_type_str == "ER" || func_type.get_type.get_type_str == "ER_INT" ) then
     
    201184    file.print( "    FLGPTN  flgptn;\n" )
    202185
    203     # 呼びå
    204 ˆã® signature を取り出す
     186    # 呼び先の signature を取り出す
    205187    signature = @signature
    206188
    207     # 関数 ID (整数値)
     189    # 関数 ID (整数値)
    208190    func_id = signature.get_id_from_func_name( func_name )
    209191    file.print( "    int16_t  func_id_ = #{func_id};    /* id of #{func_name}: #{func_id} */\n" )
     
    211193    file.print( "    uint8_t  msg[256];\n" )
    212194
    213     # シングルトンでないか?
     195    # シングルトンでないか?
    214196    if ! b_singleton then
    215197
    216       # singleton でなければ p_cellcb 取得コードを出力
     198      # singleton でなければ p_cellcb 取得コードを出力
    217199      file.print <<EOT
    218200    #{ct_name}_CB *p_cellcb;
     
    222204EOT
    223205
    224       # エラーを返すか?
     206      # エラーを返すか?
    225207      if b_ret_er then
    226208        file.print <<EOT
     
    232214        file.print <<EOT
    233215    }else{
    234         /* エラー処理コードをここに記述 */
    235     }
    236 EOT
    237       end
    238     end
    239 
    240     # channel lock コード
     216        /* エラー処理コードをここに記述 */
     217    }
     218EOT
     219      end
     220    end
     221
     222    # channel lock コード
    241223    file.print <<EOT
    242224    ///* Channel Lock */
     
    247229
    248230=begin
    249     # SOP を送信
    250     file.print "    /* SOPの送出 */\n"
     231    # SOP を送信
     232    file.print "    /* SOPの送出 */\n"
    251233    file.print "    if( ( ercd_ = cTDR_sendSOP( true ) ) != E_OK )\n"
    252234    file.print "      goto error_reset;\n"
    253235=end
    254236
    255     # func_id を送信
    256     file.print "    /* 関数 id の送出 */\n"
     237    # func_id を送信
     238    file.print "    /* 関数 id の送出 */\n"
    257239=begin
    258240    file.print "    if( ( ercd_ = cTDR_putInt16( func_id_ ) ) != E_OK )\n"
     
    264246    # p "#{ct_name}, #{sig_name}, #{func_name}, #{func_global_name}"
    265247
    266     b_get = false    # marshal なら put
     248    b_get = false    # marshal なら put
    267249    b_marshal = true  # marshal
    268250
    269     # in 方向のå
    270 ¥å‡ºåŠ›ã‚’出力
     251    # in 方向の入出力を出力
    271252    @index = 2
    272     file.print "    /* å
    273 ¥åŠ›å¼•æ•°é€å‡º */\n"
     253    file.print "    /* 入力引数送出 */\n"
    274254    print_params( params, file, 1, b_marshal, b_get, true, func_type.is_oneway? )
    275255    print_params( params, file, 1, b_marshal, b_get, false, func_type.is_oneway? )
     
    281261=end
    282262
    283     file.print "    /* EOPの送出(パケットの掃きだし) */\n"
     263    file.print "    /* EOPの送出(パケットの掃きだし) */\n"
    284264    if ! func_type.is_oneway? then
    285265      b_continue = "true"
     
    316296
    317297    if( b_void == false )then
    318       # 呼びå
    319 ƒã«æˆ»ã‚Šå€¤ã‚’リターン
     298      # 呼び元に戻り値をリターン
    320299      file.print( "    cMessageBuffer_receive(&retval_);\n" )
    321300      file.print( "    return retval_;\n" )
     
    333312EOT
    334313
    335     # channel lock コード
     314    # channel lock コード
    336315    file.print <<EOT
    337316    ///* Channel Lock */
     
    342321
    343322    if( b_ret_er != false )then
    344       # 呼びå
    345 ƒã«æˆ»ã‚Šå€¤ã‚’リターン
     323      # 呼び元に戻り値をリターン
    346324      file.print( "    return ercd_;\n" )
    347325    else
     
    351329  end
    352330
    353   #===  unmarshal コードの生成
     331  #===  unmarshal コードの生成
    354332  def gen_ep_func_body_unmarshal( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
    355333
     
    357335    b_ret_er = false
    358336
    359     # func_id を得るコードを生成
     337    # func_id を得るコードを生成
    360338    file.print <<EOT
    361339
     
    378356        file.print <<EOT
    379357    }else{
    380         /* エラー処理コードをここに記述 */
     358        /* エラー処理コードをここに記述 */
    381359    }
    382360EOT
     
    388366
    389367#if 0
    390     /* SOPのチェック */
     368    /* SOPのチェック */
    391369    if( (ercd_=cTDR_receiveSOP( false )) != E_OK )
    392370        goto error_reset;
    393     /* func_id の取得 */
     371    /* func_id の取得 */
    394372    if( (ercd_=cTDR_getInt16( &func_id_ )) != E_OK )
    395373        goto error_reset;
     
    406384EOT
    407385
    408     # 呼びå
    409 ˆã® signature を取り出す
     386    # 呼び先の signature を取り出す
    410387    # port = @celltype.find( @next_cell_port_name )
    411388    # signature = port.get_signature
    412389    signature = @signature
    413390
    414     # through の signature に含まれる すべての関数について
     391    # through の signature に含まれる すべての関数について
    415392    signature.get_function_head_array.each { |f|
    416393      f_name = f.get_name
     
    418395      id = signature.get_id_from_func_name( f_name )
    419396
    420       # 関数は返り値を持つか?
     397      # 関数は返り値を持つか?
    421398      if f_type.get_type.kind_of?( VoidType ) then
    422399        b_void = true
     
    425402      end
    426403
    427       # パケットの終わりをチェック(未受け取りのデータが残っていないかチェック)
     404      # パケットの終わりをチェック(未受け取りのデータが残っていないかチェック)
    428405      file.print "    case #{id}:       /*** #{f_name} ***/ \n"
    429406      file.print "        if( tTransparentUnmarshaler_#{@signature.get_name}_#{f_name}() != E_OK )\n"
     
    434411
    435412    if @PPAllocatorSize then
    436       ppallocator_dealloc_str = "    /* PPAllocator のすべてを解放 */\n    cPPAllocator_dealloc_all();"
     413      ppallocator_dealloc_str = "    /* PPAllocator のすべてを解放 */\n    cPPAllocator_dealloc_all();"
    437414    else
    438415      ppallocator_dealloc_str = ""
     
    442419    file.print <<EOT
    443420    default:
    444 #if 0 // deleted by ishikawa: tSysLogが未実è£
    445 
     421#if 0 // deleted by ishikawa: tSysLogが未実装
    446422        syslog(LOG_INFO, "unmarshaler task: ERROR: unknown func_id: %d", func_id_ );
    447423#endif /* 0 */
     
    464440
    465441  # IN b_marshal, b_get
    466   #  b_marshal = true  && b_get == false   :  マーシャラでå
    467 ¥åŠ›å¼•æ•°é€å‡º
    468   #  b_marshal = true  && b_get == true    :  マーシャラで出力引数受取
    469   #  b_marshal = false && b_get == true    :  アンマーシャラでå
    470 ¥åŠ›å¼•æ•°å—取
    471   #  b_marshal = false && b_get == get     :  アンマーシャラで出力引数送出
     442  #  b_marshal = true  && b_get == false   :  マーシャラで入力引数送出
     443  #  b_marshal = true  && b_get == true    :  マーシャラで出力引数受取
     444  #  b_marshal = false && b_get == true    :  アンマーシャラで入力引数受取
     445  #  b_marshal = false && b_get == get     :  アンマーシャラで出力引数送出
    472446  def print_params( params, file, nest, b_marshal, b_get, b_referenced, b_oneway = false )
    473447    params.each{ |param|
     
    480454      type = param.get_type
    481455      if b_oneway && dir == :IN && type.get_original_type.kind_of?( PtrType ) || type.get_original_type.kind_of?( ArrayType ) then
    482         # oneway, in, PtrType の場合コピー
     456        # oneway, in, PtrType の場合コピー
    483457        alloc_cp = "cPPAllocator_alloc"
    484458        alloc_cp_extra = nil
     
    502476  end
    503477
    504   #=== コピーしない引数渡しコードの出力
     478  #=== コピーしない引数渡しコードの出力
    505479  def print_param_nc( name, type, file, nest, b_marshal, outer, outer2, b_get )
    506480    indent = "    " * ( nest + 1 )
     
    522496        when :SIGNED
    523497          if bit_size == -1 || bit_size == -11 then
    524             # signed char の場合、signed を指定する
     498            # signed char の場合、signed を指定する
    525499            signC = "S"
    526500            sign  = "s"
     
    641615
    642616
    643   #=== PREAMBLE 部のコード生成
    644   # アンマーシャラセルタイプの場合、アンマーシャラ関数のプロトタイプ宣言を生成
     617  #=== PREAMBLE 部のコード生成
     618  # アンマーシャラセルタイプの場合、アンマーシャラ関数のプロトタイプ宣言を生成
    645619  def gen_preamble file, b_singleton, ct_name, global_name
    646620    if ct_name != @unmarshaler_celltype_name.to_sym then
     
    648622    end
    649623
    650     file.print "/* アンマーシャラ関数のプロトタイプ宣言 */\n"
    651     # signature に含まれる すべての関数について
     624    file.print "/* アンマーシャラ関数のプロトタイプ宣言 */\n"
     625    # signature に含まれる すべての関数について
    652626    @signature.get_function_head_array.each { |f|
    653627      f_name = f.get_name
     
    661635  end
    662636
    663   #=== POSTAMBLE 部のコード生成
    664   # アンマーシャラセルタイプの場合、アンマーシャラ関数の生成
     637  #=== POSTAMBLE 部のコード生成
     638  # アンマーシャラセルタイプの場合、アンマーシャラ関数の生成
    665639  def gen_postamble file, b_singleton, ct_name, global_name
    666640    if ct_name != @unmarshaler_celltype_name.to_sym then
     
    668642    end
    669643
    670     file.print "\n/*** アンマーシャラ関数 ***/\n\n"
     644    file.print "\n/*** アンマーシャラ関数 ***/\n\n"
    671645    @signature.get_function_head_array.each { |f|
    672646      f_name = f.get_name
     
    674648      id = @signature.get_id_from_func_name( f_name )
    675649
    676       # 関数は返り値を持つか?
     650      # 関数は返り値を持つか?
    677651      if f_type.get_type.kind_of?( VoidType ) then
    678652        b_void = true
     
    692666      file.print "      ER  ercd_;\n"
    693667
    694       # 引数を受取る変数の定義
     668      # 引数を受取る変数の定義
    695669      param_list = f.get_declarator.get_type.get_paramlist.get_items
    696670           # FuncHead->  Decl->    FuncType->ParamList
     
    707681        end
    708682
    709         type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" を外す
     683        type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" を外す
    710684
    711685        file.printf( "    %-12s %s%s%s%s;\n", type_str, aster, name, aster2, type.get_type_str_post )
    712686      }
    713687
    714       # 戻り値を受け取る変数の定義
     688      # 戻り値を受け取る変数の定義
    715689      if ! b_void then
    716690        if f.is_oneway? then
    717           retval_ptr = ""   # oneway の場合、受け取るが捨てられる
     691          retval_ptr = ""   # oneway の場合、受け取るが捨てられる
    718692        else
    719693          # =begin ishikawa modified
     
    725699      end
    726700
    727       # in 方向のå
    728 ¥å‡ºåŠ›ã‚’å
    729 ¥åŠ›
    730       file.print "\n        /* å
    731 ¥åŠ›å¼•æ•°å—取 */\n"
    732       b_get = true    # unmarshal では get
     701      # in 方向の入出力を入力
     702      file.print "\n        /* 入力引数受取 */\n"
     703      b_get = true    # unmarshal では get
    733704      b_marshal  = false
    734705      @index = 2
     
    741712      end
    742713=end
    743       # パケットの受信完了
    744       # mikan 本当は、対象関数を呼出す後に実施したい.呼出しパケットの使用終わりを宣言する目的として
    745       file.print "        /* パケット終わりをチェック */\n"
     714      # パケットの受信完了
     715      # mikan 本当は、対象関数を呼出す後に実施したい.呼出しパケットの使用終わりを宣言する目的として
     716      file.print "        /* パケット終わりをチェック */\n"
    746717      if ! f.is_oneway? then
    747718        b_continue = "true"
     
    753724      file.print "        goto error_reset;\n\n"
    754725=end
    755       # 対象関数を呼出す
    756       file.print "    /* 対象関数の呼出し */\n"
     726      # 対象関数を呼出す
     727      file.print "    /* 対象関数の呼出し */\n"
    757728      if b_void then
    758729        file.print( "    cServerCall_#{f_name}(" )
     
    769740      file.print( " );\n" )
    770741
    771       # 戻り値、出力引数の受取コードの生成
     742      # 戻り値、出力引数の受取コードの生成
    772743
    773744      if ! b_void && ! f.is_oneway? then
     
    776747
    777748      end
    778       # oneway の場合出力、戻り値が無く、受取をå¾
    779 ãŸãªã„(非同期な呼出し)
     749      # oneway の場合出力、戻り値が無く、受取を待たない(非同期な呼出し)
    780750      if ! f.is_oneway? then
    781751        file.print <<EOT
    782     /* 関数処理の終了を通知 */
     752    /* 関数処理の終了を通知 */
    783753    if( ( ercd_ = cEventflag_set( 0x01 ) ) != E_OK ){
    784754      goto error_reset;
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/lib/GenOpaqueMarshaler.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2018 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$
     
    5439
    5540#== GenOpaqueMarshaler
    56 # OpaqueRPCPlugin, sharedOpaqueRPCPlugin å
    57 ±é€šã®è¦ç´ ã‚’集めたモジュール
     41# OpaqueRPCPlugin, sharedOpaqueRPCPlugin 共通の要素を集めたモジュール
    5842module GenOpaqueMarshaler
    5943
    60   # プラグイン引数名と Proc
     44  # プラグイン引数名と Proc
    6145  RPCPluginArgProc = {
    6246    "clientChannelCelltype" => Proc.new { |obj,rhs| obj.set_clientChannelCelltype rhs },
     
    7963  }
    8064
    81   ##### プラグイン引数チェック関数
    82 
    83   #=== プラグイン引数 taskPriority のチェック
     65  ##### プラグイン引数チェック関数
     66
     67  #=== プラグイン引数 taskPriority のチェック
    8468  def set_taskPriority( rhs )
    8569    @taskPriority = rhs
    8670  end
    8771
    88   #=== プラグイン引数 serverChannelCelltype のチェック
     72  #=== プラグイン引数 serverChannelCelltype のチェック
    8973  def set_serverChannelCelltype( rhs )
    9074    @serverChannelCelltype = rhs.to_sym
     
    9882  end
    9983
    100   #=== プラグイン引数 clientChannelCelltype のチェック
     84  #=== プラグイン引数 clientChannelCelltype のチェック
    10185  def set_clientChannelCelltype( rhs )
    10286    @clientChannelCelltype = rhs.to_sym
     
    11094  end
    11195
    112   #=== プラグイン引数 serverChannelCell のチェック
     96  #=== プラグイン引数 serverChannelCell のチェック
    11397  def set_serverChannelCell( rhs )
    11498    @serverChannelCell = rhs.to_sym
    115     # ChannelCell はプラグインで生成されるため、ここではチェックできない
     99    # ChannelCell はプラグインで生成されるため、ここではチェックできない
    116100    # path = [ "::", @serverChannelCell ]
    117101    # obj = Namespace.find( path )
     
    121105  end
    122106
    123   #=== プラグイン引数 clientChannelCell のチェック
     107  #=== プラグイン引数 clientChannelCell のチェック
    124108  def set_clientChannelCell( rhs )
    125109    @clientChannelCell = rhs.to_sym
    126     # ChannelCell はプラグインで生成されるため、ここではチェックできない
     110    # ChannelCell はプラグインで生成されるため、ここではチェックできない
    127111    # path = [ "::", @clientChannelCell ]
    128112    # obj = Namespace.find( path )
     
    132116  end
    133117
    134   #=== プラグイン引数 serverChannelInitializer のチェック
     118  #=== プラグイン引数 serverChannelInitializer のチェック
    135119  def set_serverChannelInitializer( rhs )
    136120    @serverChannelInitializer = rhs.to_sym
    137121  end
    138122
    139   #=== プラグイン引数 clientChannelInitializer のチェック
     123  #=== プラグイン引数 clientChannelInitializer のチェック
    140124  def set_clientChannelInitializer( rhs )
    141125    @clientChannelInitializer = rhs.to_sym
    142126  end
    143127
    144   #=== タスクタイプ taskCellype のチェック
     128  #=== タスクタイプ taskCellype のチェック
    145129  def set_taskCelltype( rhs )
    146130    @taskCelltype = rhs.to_sym
     
    154138  end
    155139
    156   #=== タスクタイプ stack\size のチェック
     140  #=== タスクタイプ stack\size のチェック
    157141  def set_stackSize( rhs )
    158142    @stackSize = rhs
    159143  end
    160144
    161   #=== プラグイン引数 PPAllocatorSize のチェック
     145  #=== プラグイン引数 PPAllocatorSize のチェック
    162146  def set_PPAllocatorSize( rhs )
    163147    @PPAllocatorSize = rhs
    164148  end
    165149
    166   #=== プラグイン引数 TDRCelltype のチェック
     150  #=== プラグイン引数 TDRCelltype のチェック
    167151  def set_TDRCelltype( rhs )
    168152    @TDRCelltype = rhs.to_sym
     
    176160  end
    177161
    178   #=== プラグイン引数 substituteAllocator のチェック
    179   # オプション引数が、以下の形式であることをチェック
     162  #=== プラグイン引数 substituteAllocator のチェック
     163  # オプション引数が、以下の形式であることをチェック
    180164  #     substituteAllocator(Alloc.eAlloc=>Subst.eAlloc,Alloc2.eAlloc=>Subst2.eAlloc)
    181165  def set_substituteAllocator( rhs )
    182     #str::String : 破壊される(マッチした残りになる)。str.empty? で空になったことをチェックできる
    183     #regexp::Regexp : 期å¾
    184 ã™ã‚‹ãƒˆãƒ¼ã‚¯ãƒ³ã«ãƒžãƒƒãƒã™ã‚‹æ­£è¦è¡¨ç¾ã€‚ "\A" 出始める
    185     #expected::String: 期å¾
    186 ã™ã‚‹ãƒˆãƒ¼ã‚¯ãƒ³ã€regexp が出現しなかった場合にエラーメッセージとして表示
     166    #str::String : 破壊される(マッチした残りになる)。str.empty? で空になったことをチェックできる
     167    #regexp::Regexp : 期待するトークンにマッチする正規表現。 "\A" 出始める
     168    #expected::String: 期待するトークン、regexp が出現しなかった場合にエラーメッセージとして表示
    187169    def optparse (str,regexp,expected)
    188170      str.strip!
     
    198180    ident_rexpr = /\A(\w[\w\d]*)/
    199181
    200     # "Alloc.eAlloc=>CAlloc.eAlloc" の形式になっていることをチェック
     182    # "Alloc.eAlloc=>CAlloc.eAlloc" の形式になっていることをチェック
    201183    while true
    202184      lhs_alloc_cell = optparse( opt, ident_rexpr, "allocator cell name" )
     
    221203      break if ! rhs_alloc_ent
    222204
    223 #  ここでは、右辺のチェックはできない。右辺のセルは前方参ç
    224 §ã¨ãªã‚‹
     205#  ここでは、右辺のチェックはできない。右辺のセルは前方参照となる
    225206#      path = [ "::", rhs_alloc_cell.to_sym ]   # mikan namespace
    226207#      obj = Namespace.find( path )
     
    229210#      else
    230211#        ct = obj.get_celltype
    231 #        if ct #  nil なら既にエラー
     212#        if ct #  nil なら既にエラー
    232213#          ent = ct.find rhs_alloc_ent
    233214#          if ! ent.instance_of? Port || ent.get_port_type != :ENTRY || ent.get_signature == nil || ! ent.get_signature.is_allocator?
     
    250231  end
    251232
    252   #=== プラグイン引数 noServerChannelOpenerCode のチェック
     233  #=== プラグイン引数 noServerChannelOpenerCode のチェック
    253234  def set_noServerChannelOpenerCode( rhs )
    254235    rhs = rhs.to_sym
     
    262243  end
    263244
    264   #=== プラグイン引数 clientSemaphoreCelltype のチェック
     245  #=== プラグイン引数 clientSemaphoreCelltype のチェック
    265246  def set_clientSemaphoreCelltype rhs
    266247    @semaphoreCelltype = rhs.to_sym
     
    272253  end
    273254
    274   #=== プラグイン引数 clientSemaphoreInitializer のチェック
     255  #=== プラグイン引数 clientSemaphoreInitializer のチェック
    275256  def set_clientSemaphoreInitializer rhs
    276257    @semaphoreInitializer = rhs.to_sym
    277258  end
    278259
    279   #=== プラグイン引数 clientErrorHandler のチェック
     260  #=== プラグイン引数 clientErrorHandler のチェック
    280261  def set_clientErrorHandler rhs
    281262    @clientErrorHandler = rhs.to_sym
    282263  end
    283264
    284   #=== プラグイン引数 serverErrorHandler のチェック
     265  #=== プラグイン引数 serverErrorHandler のチェック
    285266  def set_serverErrorHandler rhs
    286267    @serverErrorHandler = rhs.to_sym
     
    288269
    289270
    290   #===  セルの名前を得る
    291   # ThroughPlugin::get_cell_name plugin.rb をオーバーライド
     271  #===  セルの名前を得る
     272  # ThroughPlugin::get_cell_name plugin.rb をオーバーライド
    292273  def get_cell_name
    293274    @cell_name
     
    295276  end
    296277
    297   #=== marshaler のセルタイプ名を設定する
     278  #=== marshaler のセルタイプ名を設定する
    298279  def initialize_opaque_marshaler
    299280
    300     # オプション設定される変数のデフォルトを設定
     281    # オプション設定される変数のデフォルトを設定
    301282    @taskPriority = 11
    302283    @stackSize  = 4096
     
    309290    @taskCelltype = :"tTask"
    310291    @PPAllocatorSize = nil
    311     # @TDRCelltype  = :"tTDR"   # "tNBOTDR" に変更の予定
     292    # @TDRCelltype  = :"tTDR"   # "tNBOTDR" に変更の予定
    312293    @TDRCelltype  = :"tNBOTDR"
    313294    @substituteAllocator = {}
     
    324305    @marshaler_celltype_file_name = "#{$gen}/#{@marshaler_celltype_name}.cdl"
    325306
    326     # signature で対応できないものをチェック
     307    # signature で対応できないものをチェック
    327308    @signature.each_param{ |func_decl, param_decl|
    328309      if param_decl.get_direction == :OUT then
     
    337318  end
    338319
    339   #=== GenOpaqueMarshaler# Opener Code の生成時のチェック
     320  #=== GenOpaqueMarshaler# Opener Code の生成時のチェック
    340321  def check_opener_code
    341     # サーバーチャンネルセルタイプが entry sServerChannelOpener eOpener を持つかどうかをチェック
    342     # mikan entry か (call でないか) をチェックしていない
     322    # サーバーチャンネルセルタイプが entry sServerChannelOpener eOpener を持つかどうかをチェック
     323    # mikan entry か (call でないか) をチェックしていない
    343324    # scct = Namespace.find ["::", @serverChannelCelltype] # mikan namespace
    344325    nsp = NamespacePath.analyze( @serverChannelCelltype.to_s )
     
    360341  end
    361342
    362   #=== GenOpaqueMarshaler# PPAllocator のå¿
    363 è¦æ€§ã‚’チェックする
     343  #=== GenOpaqueMarshaler# PPAllocator の必要性をチェックする
    364344  def check_PPAllocator
    365345    if @signature.need_PPAllocator?(true) then
     
    374354  def gen_marshaler_celltype
    375355    f = CFile.open( @marshaler_celltype_file_name, "w" )
    376     # 同じå†
    377 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     356    # 同じ内容を二度書く可能性あり (AppFile は不可)
    378357
    379358    if @PPAllocatorSize then
     
    404383  end
    405384
    406   #===  受け口関数の本体コードを生成(頭部と末尾は別途出力)
    407   #ct_name:: Symbol    (through プラグインで生成された) セルタイプ名 .Symbol として送られてくる(らしい)
     385  #===  受け口関数の本体コードを生成(頭部と末尾は別途出力)
     386  #ct_name:: Symbol    (through プラグインで生成された) セルタイプ名 .Symbol として送られてくる(らしい)
    408387  def gen_ep_func_body( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
    409388
    410     # unmarshaler クラスか?
     389    # unmarshaler クラスか?
    411390    if ct_name == @unmarshaler_celltype_name.to_sym then
    412391      gen_ep_func_body_unmarshal( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
     
    416395  end
    417396
    418   #===  marshal コードの生成
     397  #===  marshal コードの生成
    419398  def gen_ep_func_body_marshal( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
    420399
     
    422401    b_ret_er = false
    423402
    424     # 関数の戻り値のå
    425 ƒã®åž‹ã‚’å¾—ã‚‹(typedef されている場合)
     403    # 関数の戻り値の元の型を得る(typedef されている場合)
    426404    type = func_type.get_type.get_original_type
    427405
    428     # 戻り値記憶用の変数を出力(void 型の関数では出力しない)
     406    # 戻り値記憶用の変数を出力(void 型の関数では出力しない)
    429407    if ! type.is_void? then
    430408      file.print( "\t#{func_type.get_type.get_type_str}\t\tretval_;\n" )
     
    439417    file.print( "\tint16_t\tstate_;\n" )
    440418
    441     # 関数 ID (整数値)
     419    # 関数 ID (整数値)
    442420    func_id = "FUNCID_#{@signature.get_global_name}_#{func_name}".upcase
    443421    fid = @signature.get_id_from_func_name( func_name )
    444422    file.print( "\tint16_t\tfunc_id_ = #{func_id};      /* (id of '#{func_name}') = #{fid}*/\n" )
    445423
    446     # シングルトンでないか?
     424    # シングルトンでないか?
    447425    if ! b_singleton then
    448426
    449       # singleton でなければ p_cellcb 取得コードを出力
     427      # singleton でなければ p_cellcb 取得コードを出力
    450428      file.print <<EOT
    451429        #{ct_name}_CB *p_cellcb;
     
    455433EOT
    456434
    457       # エラーを返すか?
     435      # エラーを返すか?
    458436      if b_ret_er then
    459437        file.print <<EOT
     
    465443        file.print <<EOT
    466444        }else{
    467                 /* エラー処理コードをここに記述 */
     445                /* エラー処理コードをここに記述 */
    468446        }
    469447
     
    481459    end
    482460
    483     # channel lock コード
     461    # channel lock コード
    484462    file.print <<EOT
    485463
     
    492470EOT
    493471
    494     # SOP を送信
    495     file.print "        /* SOPの送出 */\n"
     472    # SOP を送信
     473    file.print "        /* SOPの送出 */\n"
    496474    file.print "        SET_RPC_STATE( state_, RPCSTATE_CLIENT_SEND_SOP );\n"
    497475    file.print "        if( ( ercd_ = cTDR_sendSOP( true ) ) != E_OK )\n"
    498476    file.print "                goto error_reset;\n"
    499477
    500     # func_id を送信
    501     file.print "        /* 関数 id の送出 */\n"
     478    # func_id を送信
     479    file.print "        /* 関数 id の送出 */\n"
    502480    file.print "        if( ( ercd_ = cTDR_putInt16( func_id_ ) ) != E_OK )\n"
    503481    file.print "                goto error_reset;\n"
     
    506484    # p "#{ct_name}, #{sig_name}, #{func_name}, #{func_global_name}"
    507485
    508     b_get = false    # marshal なら put
     486    b_get = false    # marshal なら put
    509487    b_marshal = true  # marshal
    510488
    511     # in 方向のå
    512 ¥å‡ºåŠ›ã‚’出力
     489    # in 方向の入出力を出力
    513490    if func_type.has_inward? then
    514       file.print "      /* å
    515 ¥åŠ›å¼•æ•°é€å‡º */\n"
     491      file.print "      /* 入力引数送出 */\n"
    516492      file.print "      SET_RPC_STATE( state_, RPCSTATE_CLIENT_SEND_BODY );\n"
    517493      print_params( params, file, 1, b_marshal, b_get, true, "eClientEntry", func_name )
     
    525501      b_continue = "false"
    526502    end
    527     file.print "        /* EOPの送出(パケットの掃きだし) */\n"
     503    file.print "        /* EOPの送出(パケットの掃きだし) */\n"
    528504    file.print "        SET_RPC_STATE( state_, RPCSTATE_CLIENT_SEND_EOP );\n"
    529505    file.print "        if( (ercd_=cTDR_sendEOP(#{b_continue})) != E_OK )\n"
    530506    file.print "                goto error_reset;\n\n"
    531507
    532     # send のメモリをデアロケート
     508    # send のメモリをデアロケート
    533509    if func_type.has_send? then
    534510      file.print "      /* dealloc send parameter while executing */\n"
     
    541517    if ! func_type.is_oneway? then
    542518
    543       file.print "      /* パケットの始まりをチェック */\n"
     519      file.print "      /* パケットの始まりをチェック */\n"
    544520      file.print "      SET_RPC_STATE( state_, RPCSTATE_CLIENT_RECV_SOP );\n"
    545521      file.print "      if( (ercd_=cTDR_receiveSOP( true )) != E_OK )\n"
    546522      file.print "              goto error_reset;\n"
    547523
    548       b_get = true     # marshaler は get
    549       file.print "      /* 戻り値の受け取り */\n"
     524      b_get = true     # marshaler get
     525      file.print "      /* 戻り値の受け取り */\n"
    550526      print_param( "retval_", func_type.get_type, file, 1, :RETURN, nil, nil, b_marshal, b_get )
    551527
     
    559535        indent = "      " * indent_level
    560536
    561         file.print "#{indent}/* 出力値の受け取り */\n"
     537        file.print "#{indent}/* 出力値の受け取り */\n"
    562538        file.print "#{indent}SET_RPC_STATE( state_, RPCSTATE_CLIENT_RECV_BODY );\n"
    563539        print_params( params, file, indent_level, b_marshal, b_get, true, "eClientEntry", func_name )
     
    569545      end
    570546
    571       file.print "\n    /* パケットの終わりをチェック */\n"
     547      file.print "\n    /* パケットの終わりをチェック */\n"
    572548      file.print "      SET_RPC_STATE( state_, RPCSTATE_CLIENT_RECV_EOP );\n"
    573549      file.print "      if( (ercd_=cTDR_receiveEOP(false)) != E_OK )\n"  # b_continue = false
     
    576552    end # ! func_type.is_oneway?
    577553
    578     # channel lock コード
     554    # channel lock コード
    579555    file.print <<EOT
    580556        /* Channel Unlock */
     
    593569
    594570    if( b_void == false )then
    595       # 呼びå
    596 ƒã«æˆ»ã‚Šå€¤ã‚’リターン
     571      # 呼び元に戻り値をリターン
    597572      file.print( "     return retval_;\n" )
    598573    else
     
    604579error_reset:
    605580EOT
    606     # send のメモリをデアロケート
     581    # send のメモリをデアロケート
    607582    if func_type.has_send? then
    608583      file.print "      /* dealloc send parameter */\n"
     
    613588    end
    614589
    615     # receive のメモリをデアロケート
     590    # receive のメモリをデアロケート
    616591    if func_type.has_receive? then
    617592      file.print( "     /* receive parameter */\n" )
     
    625600EOT
    626601
    627     # channel lock コード
     602    # channel lock コード
    628603    file.print <<EOT
    629604        /* Channel Unlock */
     
    636611
    637612    if( b_ret_er != false )then
    638       # 呼びå
    639 ƒã«æˆ»ã‚Šå€¤ã‚’リターン
     613      # 呼び元に戻り値をリターン
    640614      file.print( "     return ERCD( E_RPC, MERCD( ercd_ ) );\n" )
    641615    else
     
    645619  end
    646620
    647   #===  unmarshal コードの生成
     621  #===  unmarshal コードの生成
    648622  def gen_ep_func_body_unmarshal( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
    649623
    650624    b_ret_er = true
    651625
    652     # func_id を得るコードを生成
     626    # func_id を得るコードを生成
    653627    file.print <<EOT
    654628
     
    672646        file.print <<EOT
    673647        }else{
    674                 /* エラー処理コードをここに記述 */
     648                /* エラー処理コードをここに記述 */
    675649        }
    676650EOT
     
    683657#endif
    684658
    685         /* SOPのチェック */
     659        /* SOPのチェック */
    686660        SET_RPC_STATE( state_, RPCSTATE_SERVER_RECV_SOP );
    687661        if( (ercd_=cTDR_receiveSOP( false )) != E_OK )
    688662                goto error_reset;
    689         /* func_id の取得 */
     663        /* func_id の取得 */
    690664        if( (ercd_=cTDR_getInt16( &func_id_ )) != E_OK )
    691665                goto error_reset;
     
    697671EOT
    698672
    699     # signature に含まれる すべての関数について
     673    # signature に含まれる すべての関数について
    700674    @signature.get_function_head_array.each { |f|
    701675      f_name = f.get_name
     
    711685
    712686    if @PPAllocatorSize then
    713       ppallocator_dealloc_str = "       /* PPAllocator のすべてを解放 */\n       cPPAllocator_dealloc_all();"
     687      ppallocator_dealloc_str = "       /* PPAllocator のすべてを解放 */\n     cPPAllocator_dealloc_all();"
    714688    else
    715689      ppallocator_dealloc_str = ""
     
    734708  end
    735709
    736   #=== PREAMBLE 部のコード生成
    737   # アンマーシャラセルタイプの場合、アンマーシャラ関数のプロトタイプ宣言を生成
     710  #=== PREAMBLE 部のコード生成
     711  # アンマーシャラセルタイプの場合、アンマーシャラ関数のプロトタイプ宣言を生成
    738712  def gen_preamble file, b_singleton, ct_name, global_name
    739713    if ct_name != @unmarshaler_celltype_name.to_sym then
     
    741715    end
    742716
    743     # string.h の include (memset, strlen のため)
     717    # string.h の include (memset, strlen のため)
    744718    file.print "/* header file (strlen, memset) */\n"
    745719    file.print "#include\t<string.h>\n\n"
    746720
    747     file.print "/* アンマーシャラ関数のプロトタイプ宣言 */\n"
    748     # signature に含まれる すべての関数について
     721    file.print "/* アンマーシャラ関数のプロトタイプ宣言 */\n"
     722    # signature に含まれる すべての関数について
    749723    @signature.get_function_head_array.each { |f|
    750724      f_name = f.get_name
     
    756730  end
    757731
    758   #=== POSTAMBLE 部のコード生成
    759   # アンマーシャラセルタイプの場合、個ã€
    760 ã®ã‚¢ãƒ³ãƒžãƒ¼ã‚·ãƒ£ãƒ©é–¢æ•°ã®ç”Ÿæˆ
     732  #=== POSTAMBLE 部のコード生成
     733  # アンマーシャラセルタイプの場合、個々のアンマーシャラ関数の生成
    761734  def gen_postamble file, b_singleton, ct_name, global_name
    762735    if ct_name != @unmarshaler_celltype_name.to_sym then
     
    764737    end
    765738
    766     file.print "\n/*** アンマーシャラ関数 ***/\n\n"
     739    file.print "\n/*** アンマーシャラ関数 ***/\n\n"
    767740    @signature.get_function_head_array.each { |f|
    768741      f_name = f.get_name
     
    770743      id = @signature.get_id_from_func_name( f_name )
    771744
    772       # 関数は返り値を持つか?
     745      # 関数は返り値を持つか?
    773746      b_ret_er = false
    774747      init_retval = ""
     
    794767      file.print "      ER      ercd_;\n"
    795768
    796       # 引数を受取る変数の定義
     769      # 引数を受取る変数の定義
    797770      params = f.get_declarator.get_type.get_paramlist.get_items
    798771           # FuncHead->  Decl->    FuncType->ParamList
     
    803776        dir = par.get_direction
    804777        if( dir == :RECEIVE )then
    805           # type は PtrType で、それを取り除いた型
     778          # type は PtrType で、それを取り除いた型
    806779          type = type.get_type
    807780        end
     
    821794        end
    822795
    823         type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" を外す
     796        type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" を外す
    824797        file.printf( "  %-12s %s%s%s%s%s;\n", type_str, aster, name, aster2, type.get_type_str_post, init )
    825798
     
    833806      end
    834807
    835       # in 方向のå
    836 ¥å‡ºåŠ›ã‚’å
    837 ¥åŠ›
    838       file.print "\n    /* å
    839 ¥åŠ›å¼•æ•°å—取 */\n"
     808      # in 方向の入出力を入力
     809      file.print "\n    /* 入力引数受取 */\n"
    840810      file.print "      SET_RPC_STATE( *state_, RPCSTATE_SERVER_RECV_BODY );\n"
    841       b_get = true    # unmarshal では get
     811      b_get = true    # unmarshal では get
    842812      b_marshal  = false
    843813      print_params( params, file, 1, b_marshal, b_get, true, "cServerCall", f_name )
     
    846816
    847817
    848       # パケットの受信完了
    849       file.print "      /* パケット終わりをチェック */\n"
     818      # パケットの受信完了
     819      file.print "      /* パケット終わりをチェック */\n"
    850820      file.print "      SET_RPC_STATE( *state_, RPCSTATE_SERVER_RECV_EOP );\n"
    851821      if ! f_type.is_oneway? then
     
    857827      file.print "              goto error_reset;\n\n"
    858828
    859       # out のメモリをアロケート
     829      # out のメモリをアロケート
    860830      dir = :OUT; alloc_cp = "cPPAllocator_alloc"; alloc_cp_extra = nil; nest = 1
    861831      alloc_for_out_params( params, file, nest, dir, alloc_cp, alloc_cp_extra )
    862832
    863       # 対象関数を呼出す
    864       file.print "      /* 対象関数の呼出し */\n"
     833      # 対象関数を呼出す
     834      file.print "      /* 対象関数の呼出し */\n"
    865835      file.print "      SET_RPC_STATE( *state_, RPCSTATE_SERVER_EXEC );\n"
    866836      if b_void then
     
    881851      file.print( " );\n" )
    882852
    883       # 戻り値、出力引数の受取コードの生成
    884 
    885       # oneway の場合出力、戻り値が無く、受取をå¾
    886 ãŸãªã„(非同期な呼出し)
     853      # 戻り値、出力引数の受取コードの生成
     854
     855      # oneway の場合出力、戻り値が無く、受取を待たない(非同期な呼出し)
    887856      if ! f.is_oneway? then
    888857
    889         file.print "\n  /* SOPの送出 */\n"
     858        file.print "\n  /* SOPの送出 */\n"
    890859        file.print "    SET_RPC_STATE( *state_, RPCSTATE_SERVER_SEND_SOP );\n"
    891860
     
    893862        file.print "            goto error_reset;\n"
    894863
    895         b_get = false     # unmarshaler は put
     864        b_get = false     # unmarshaler put
    896865        if( ! b_void )then
    897           file.print "  /* 戻り値の送出 */\n"
     866          file.print "  /* 戻り値の送出 */\n"
    898867          print_param( "retval_", f_type.get_type, file, 1, :RETURN, nil, nil, b_marshal, b_get )
    899868        end
     
    908877          indent = "    " * indent_level
    909878
    910           file.print "#{indent}/* 出力値の送出 */\n"
     879          file.print "#{indent}/* 出力値の送出 */\n"
    911880          file.print "#{indent}SET_RPC_STATE( *state_, RPCSTATE_SERVER_SEND_BODY );\n"
    912881          print_params( params, file, indent_level, b_marshal, b_get, true, "cServerCall", f_name )
    913882          print_params( params, file, indent_level, b_marshal, b_get, false, "cServerCall", f_name )
    914883
    915           # receive のメモリをデアロケート
     884          # receive のメモリをデアロケート
    916885          if f_type.has_receive? then
    917886            file.print "#{indent}/* dealloc receive parameter */\n"
     
    925894        end
    926895
    927         file.print "    /* パケットの終わり(掃きだし) */\n"
     896        file.print "    /* パケットの終わり(掃きだし) */\n"
    928897        file.print "    SET_RPC_STATE( *state_, RPCSTATE_SERVER_SEND_EOP );\n"
    929898        file.print "    if( (ercd_=cTDR_sendEOP(false)) != E_OK )\n"  # b_continue = false
     
    936905error_reset:
    937906EOT
    938       # send のリセット用デアロケート
     907      # send のリセット用デアロケート
    939908      if f_type.has_send? then
    940909        file.print "    /* dealloc send parameter */\n"
     
    945914      end
    946915
    947       # receive のメモリをデアロケート
     916      # receive のメモリをデアロケート
    948917      if f_type.has_receive? && b_ret_er then
    949918        file.print "    /* dealloc receive parameter */\n"
     
    957926      file.print "}\n\n"
    958927
    959       # ここ(個ã€
    960 ã®é–¢æ•°ï¼‰ã§ã¯ã‚¨ãƒ©ãƒ¼ãƒãƒ³ãƒ‰ãƒ©ãƒ¼ã¯å‘¼ã³å‡ºã•ãªã„。呼びå
    961 ƒï¼ˆã‚µãƒ¼ãƒãƒ¼ã®ãƒ¡ã‚¤ãƒ³é–¢æ•°ï¼‰ã§å‘¼ã³å‡ºã™ã€‚
     928      # ここ(個々の関数)ではエラーハンドラーは呼び出さない。呼び元(サーバーのメイン関数)で呼び出す。
    962929    }
    963930  end
     
    966933  #b_marshal:: bool
    967934  #b_get:: bool
    968   #  b_marshal = true  && b_get == false   :  マーシャラでå
    969 ¥åŠ›å¼•æ•°é€å‡º
    970   #  b_marshal = true  && b_get == true    :  マーシャラで出力引数受取
    971   #  b_marshal = false && b_get == false   :  アンマーシャラでå
    972 ¥åŠ›å¼•æ•°å—取
    973   #  b_marshal = false && b_get == true    :  アンマーシャラで出力引数送出
    974   #b_referenced:: size_is, count_is, string で参ç
    975 §ã•ã‚Œã¦ã„るものを出力
     935  #  b_marshal = true  && b_get == false   :  マーシャラで入力引数送出
     936  #  b_marshal = true  && b_get == true    :  マーシャラで出力引数受取
     937  #  b_marshal = false && b_get == false   :  アンマーシャラで入力引数受取
     938  #  b_marshal = false && b_get == true    :  アンマーシャラで出力引数送出
     939  #b_referenced:: size_is, count_is, string で参照されているものを出力
    976940  def print_params( params, file, nest, b_marshal, b_get, b_referenced, port_name, func_name )
    977941    params.each{ |param|
     
    996960        case dir
    997961        when :OUT, :INOUT
    998           alloc_cp = nil        # inout の b_get==true&&b_marsha==true のときアロケータコードは不用
     962          alloc_cp = nil        # inout の b_get==true&&b_marsha==true のときアロケータコードは不用
    999963          alloc_cp_extra = nil
    1000964          print_param( param.get_name, param.get_type, file, nest, dir, nil, nil, b_marshal, b_get, alloc_cp, alloc_cp_extra )
     
    1003967          alloc_cp_extra = nil
    1004968          if b_get then
    1005             outer = "(*"         # マーシャラ側では、ポインタが (send と比べ) 一つ多い
     969            outer = "(*"         # マーシャラ側では、ポインタが (send と比べ) 一つ多い
    1006970            outer2 = ")"
    1007971          else
    1008             outer = nil          # アンマーシャラ側では、ポインタが一つ外されている
     972            outer = nil          # アンマーシャラ側では、ポインタが一つ外されている
    1009973            outer2 = nil
    1010974          end
     
    1016980  end
    1017981
    1018   #=== アロケータコードを生成 (out のアンマーシャラ用)
     982  #=== アロケータコードを生成 (out のアンマーシャラ用)
    1019983  def alloc_for_out_params( params, file, nest, dir, alloc_cp, alloc_cp_extra )
    1020984    params.each{ |param|
     
    1026990  end
    1027991
    1028   #=== アロケータコードを生成 (out のアンマーシャラ用個別パラメータの生成)
     992  #=== アロケータコードを生成 (out のアンマーシャラ用個別パラメータの生成)
    1029993  def alloc_for_out_param( name, type, file, nest, outer, outer2, alloc_cp, alloc_cp_extra )
    1030994    org_type = type.get_original_type
     
    10391003      count = type.get_count; size = type.get_size; string = type.get_string
    10401004      if count || size || string then
    1041         loop_counter_type = IntType.new(16)   # mikan 方を size_is, count_is の引数の型とする
     1005        loop_counter_type = IntType.new(16)   # mikan 方を size_is, count_is の引数の型とする
    10421006        if count then
    10431007          len = type.get_count.to_s
     
    10521016        end
    10531017
    1054         # size_is に max 指定がある場合、length が max をè¶
    1055 ãˆã¦ã„るかチェックするコードを生成
     1018        # size_is に max 指定がある場合、length が max を超えているかチェックするコードを生成
    10561019        if org_type.get_max != nil && string == nil then
    10571020          file.print "#{indent}if( #{len} > #{type.get_max} ){\t/* GenOpaqueMarshaler max check 2 */\n"
     
    10921055  end
    10931056
    1094   #=== 引数の一括デアロケートコードの生成
    1095   # send:マーシャラの最後、receive:アンマーシャラの最後で一括して引数をデアロケートする
     1057  #=== 引数の一括デアロケートコードの生成
     1058  # send:マーシャラの最後、receive:アンマーシャラの最後で一括して引数をデアロケートする
    10961059  def dealloc_for_params( params, file, nest, dir, dealloc_cp, b_reset = false )
    10971060    if b_reset then
     
    11071070        aster = ""
    11081071        if dir == :RECEIVE then
    1109           type = type.get_type.get_original_type   # ポインタを一つ外す
     1072          type = type.get_type.get_original_type   # ポインタを一つ外す
    11101073          if b_reset then
    11111074            aster = "*"
     
    11281091  end
    11291092
    1130   #== out で nullable な引数のæƒ
    1131 å ±ã‚’渡す
    1132   # out nullable の場合、in, send, receive のように、値を渡す直前ではなく、呼出し時に渡す
     1093  #== out で nullable な引数の情報を渡す
     1094  # out nullable の場合、in, send, receive のように、値を渡す直前ではなく、呼出し時に渡す
    11331095  def  print_out_nullable( params, file, nest, b_marshal );
    11341096    indent = "\t" * nest
     
    11401102        file.print "#{indent}\tgoto error_reset;\n"
    11411103      else
    1142         # 呼びå
    1143 ˆã¯ alloc_for_out_param で nullable の対応する
     1104        # 呼び先は alloc_for_out_param で nullable の対応する
    11441105        file.print "#{indent}if( (ercd_=cTDR_getInt8( &b_#{param.get_name}_null_)) != E_OK )\n"
    11451106        file.print "#{indent}\tgoto error_reset;\n"
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/lib/GenParamCopy.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$
     
    5540#= ParamCopy
    5641#
    57 # パラメータコピーするマーシャラ/アンマーシャラコードを生成するメソッド print_param を提供する.
    58 # RPCPlugin, OpaqueRPCPlugin に include される.
    59 # RPCPlugin (トランスペアレント) では、oneway 関数で in のポインタ引数の場合に限って print_param が用いられる.
     42# パラメータコピーするマーシャラ/アンマーシャラコードを生成するメソッド print_param を提供する.
     43# RPCPlugin, OpaqueRPCPlugin に include される.
     44# RPCPlugin (トランスペアレント) では、oneway 関数で in のポインタ引数の場合に限って print_param が用いられる.
    6045#
    6146module  GenParamCopy
    6247
    63   #=== 引数の転送コードを生成
     48  #=== 引数の転送コードを生成
    6449
    6550  def print_param( name, type, file, nest, dir, outer, outer2, b_marshal, b_get, alloc_cp = nil, alloc_cp_extra = nil, name_list = nil )
     
    7661EOT
    7762        if ( dir == :SEND || dir == :RECEIVE ) && type.get_type.has_pointer? then
    78           # send, receive の場合は、エラーリセットに備え NULL にする
     63          # send, receive の場合は、エラーリセットに備え NULL にする
    7964          file.print <<EOT
    8065#{indent}memset( (void *)#{outer}#{name}#{outer2}#{alloc_cp_extra}, 0, sizeof(#{type.get_type.get_type_str}#{type.get_type.get_type_str_post})*(#{size_str});   /* GenParamCopy Alloc1 */
     
    10388        when :SIGNED
    10489          if bit_size == -1 || bit_size == -11 then
    105             sign = "S"   # signed char の場合のみ S がつく
     90            sign = "S"   # signed char の場合のみ S がつく
    10691          else
    10792            sign = ""
     
    156141        nest = print_nullable_pre( name, type, file, nest, dir, outer, outer2, b_marshal, b_get )
    157142        indent = "\t" * nest
    158         loop_counter_type = IntType.new(32)   # mikan 型を size_is, count_is の引数の型とする
     143        loop_counter_type = IntType.new(32)   # mikan 型を size_is, count_is の引数の型とする
    159144        file.print "#{indent}{\t/* GenParamCopy 4 */\n"
    160145        file.print "#{indent}   #{loop_counter_type.get_type_str}  i__#{nest}, length__#{nest};\n"
     
    168153            count_str = count.to_str( name_list, outer, outer2 )
    169154          else
    170             # size_is はå¿
    171 é ˆ. count_is はオプション
     155            # size_is は必須. count_is はオプション
    172156            count_str = size_str
    173157          end
    174158          file.print "#{indent} length__#{nest} = #{count_str};\t/* GenParamCopy 5 */\n"
    175159
    176           # size_is に max 指定がある場合、length が max をè¶
    177 ãˆã¦ã„るかチェックするコードを生成
    178               # alloc_cp == nil のとき dir は INOUT, OUT のはず (条件が冗長)。試験が終わっているので、次回見直し時に外す
     160          # size_is に max 指定がある場合、length が max を超えているかチェックするコードを生成
     161              # alloc_cp == nil のとき dir は INOUT, OUT のはず (条件が冗長)。試験が終わっているので、次回見直し時に外す
    179162          if b_get && type.get_max != nil && ! ( ( dir == :INOUT || dir == :OUT ) && alloc_cp == nil ) then
    180163            file.print "#{indent}       if( length__#{nest} > #{type.get_max.to_s} ){\t/* GenParamCopy max check 1 */\n"
     
    202185              file.print "#{indent}     length__#{nest} = STRLEN#{b_size}(#{outer}#{name}#{outer2})+1;\t/* GenParamCopy 7 */\n"
    203186            end
    204             size_str = "length__#{nest}"     # string の場合、strnlen 以上の領域を確保しない
     187            size_str = "length__#{nest}"     # string の場合、strnlen 以上の領域を確保しない
    205188          else
    206189            if ( dir == :INOUT ) then
    207190              if ( string.instance_of? Expression ) then
    208191                len = string.to_str( name_list, outer, outer2 )
    209                 size_str = "#{len}"              # string(len) の場合 len を確保する
     192                size_str = "#{len}"              # string(len) の場合 len を確保する
    210193              else
    211194                raise "unsuscripted string used for inout parameter #{name}"
    212195              end
    213196            else
    214               size_str = "length__#{nest}"     # string の場合、strnlen 以上の領域を確保しない
     197              size_str = "length__#{nest}"     # string の場合、strnlen 以上の領域を確保しない
    215198            end
    216199          end
     
    224207EOT
    225208          if ( dir == :SEND || dir == :RECEIVE ) && type.get_type.has_pointer? then
    226             # send, receive の場合は、エラーリセットに備え NULL にする
     209            # send, receive の場合は、エラーリセットに備え NULL にする
    227210            file.print <<EOT
    228211#{indent}       memset( (void *)#{outer}#{name}#{outer2}#{alloc_cp_extra}, 0, sizeof(#{type.get_type.get_type_str}#{type.get_type.get_type_str_post})*(#{size_str}) );   /* GenParamCopy Alloc2 */
     
    251234EOT
    252235          if ( dir == :SEND || dir == :RECEIVE ) && type.get_type.has_pointer? then
    253             # send, receive の場合は、エラーリセットに備え NULL にする
     236            # send, receive の場合は、エラーリセットに備え NULL にする
    254237            file.print <<EOT
    255238#{indent}memset( (void *)#{outer}#{name}#{outer2}#{alloc_cp_extra}, 0, sizeof(#{type.get_type.get_type_str}#{type.get_type.get_type_str_post}) );   /* GenParamCopy Alloc3 */
     
    286269        size_str = subsc.to_str( name_list, outer, outer2 )
    287270
    288         loop_counter_type = IntType.new(32)   # mikan 型を size_is, count_is の引数の型とする
     271        loop_counter_type = IntType.new(32)   # mikan 型を size_is, count_is の引数の型とする
    289272        file.print "#{indent}{\t/* GenParamCopy 11 */\n"
    290273        file.print "#{indent}   #{loop_counter_type.get_type_str}  i__#{nest}, length__#{nest} = #{size_str};\n"
     
    302285    if type.is_nullable? then
    303286      indent = "        " * nest
    304       if dir == :OUT then  # OUT の場合 print_out_nullable で NULL かどうかのæƒ
    305 å ±ã‚’渡す
     287      if dir == :OUT then  # OUT の場合 print_out_nullable で NULL かどうかの情報を渡す
    306288        # 'null or not' is sent in the function 'print_out_nullable'
    307289        if b_get then
     
    321303#{indent}       if( ! b_null_ ){
    322304EOT
    323           else # dir = :INOUT, b_marshal = true, b_get = true の場合、NULL かどうかのæƒ
    324 å ±ã‚’渡さない
     305          else # dir = :INOUT, b_marshal = true, b_get = true の場合、NULL かどうかの情報を渡さない
    325306            file.print <<EOT
    326307#{indent}       int8_t  b_null_ = (#{outer}#{name}#{outer2} == NULL);\t/* GenParamCopy Null 21 */
     
    335316
    336317          if ! ( dir == :INOUT && b_marshal == false ) then
    337             # dir = :INOUT, b_marshal = false, b_get = false の場合
     318            # dir = :INOUT, b_marshal = false, b_get = false の場合
    338319            file.print <<EOT
    339320#{indent}       if((ercd_=cTDR_putInt8( b_null_ )) != E_OK )\t/* GenParamCopy Null 32 */
     
    355336  def print_nullable_post( name, type, file, nest, dir, outer, outer2, b_marshal, b_get )
    356337    if type.is_nullable? then
    357       if dir == :OUT then  # OUT の場合 print_out_nullable で NULL かどうかのæƒ
    358 å ±ã‚’渡す
     338      if dir == :OUT then  # OUT の場合 print_out_nullable で NULL かどうかの情報を渡す
    359339        nest -= 1
    360340        indent = "      " * nest
     
    371351#{indent}       }  /* ! b_null_ */
    372352EOT
    373           else # dir = :INOUT, b_marshal = true   # inout の out 方向
     353          else # dir = :INOUT, b_marshal = true   # inout の out 方向
    374354            file.print "#{indent}       }  /* ! b_null_  GenParamCopy Null 52 */\n"
    375355          end
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/lib/GenTransparentMarshaler.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 #プラグインオプション用変数
     40#プラグインオプション用変数
    5641#@task_priority:: Integer
    5742#@channelCelltype:: String
     
    6045module GenTransparentMarshaler
    6146
    62   # プラグイン引数名と Proc
     47  # プラグイン引数名と Proc
    6348  RPCPluginArgProc = {
    6449    "taskPriority"    => Proc.new { |obj,rhs| obj.set_taskPriority rhs },
     
    6954  }
    7055
    71   #=== プラグイン引数 taskPriority のチェック
     56  #=== プラグイン引数 taskPriority のチェック
    7257  def set_taskPriority( rhs )
    7358    @task_priority = rhs
    7459  end
    7560
    76   #=== プラグイン引数 channelCelltype のチェック
     61  #=== プラグイン引数 channelCelltype のチェック
    7762  def set_channelCelltype( rhs )
    7863    @channelCelltype = rhs.to_sym
     
    8671  end
    8772
    88   #=== プラグイン引数 TDRCelltype のチェック
     73  #=== プラグイン引数 TDRCelltype のチェック
    8974  def set_TDRCelltype( rhs )
    9075    @TDRCelltype = rhs.to_sym
     
    9883  end
    9984
    100   #=== プラグイン引数 channelCellName のチェック
     85  #=== プラグイン引数 channelCellName のチェック
    10186  def set_channelCellName( rhs )
    10287    @channelCellName = rhs
     
    10893  end
    10994
    110   #=== プラグイン引数 PPAllocatorSize のチェック
     95  #=== プラグイン引数 PPAllocatorSize のチェック
    11196  def set_PPAllocatorSize( rhs )
    11297    @PPAllocatorSize = rhs
    11398  end
    11499
    115   #=== marshaler のセルタイプ名を設定する
     100  #=== marshaler のセルタイプ名を設定する
    116101  def initialize_transparent_marshaler cell_name
    117102    @task_priority = 8
     
    135120
    136121    f = CFile.open( @marshaler_celltype_file_name, "w" )
    137     # 同じå†
    138 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     122    # 同じ内容を二度書く可能性あり (AppFile は不可)
    139123
    140124    f.print <<EOT
     
    157141  end
    158142
    159   #===  受け口関数の本体コードを生成(頭部と末尾は別途出力)
    160   #ct_name:: Symbol    (through プラグインで生成された) セルタイプ名 .Symbol として送られてくる(らしい)
     143  #===  受け口関数の本体コードを生成(頭部と末尾は別途出力)
     144  #ct_name:: Symbol    (through プラグインで生成された) セルタイプ名 .Symbol として送られてくる(らしい)
    161145  def gen_ep_func_body( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
    162146
    163     # unmarshaler クラスか?
     147    # unmarshaler クラスか?
    164148    if ct_name == @unmarshaler_celltype_name.to_sym then
    165149      gen_ep_func_body_unmarshal( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
     
    169153  end
    170154
    171   #===  marshal コードの生成
     155  #===  marshal コードの生成
    172156  def gen_ep_func_body_marshal( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
    173157
     
    175159    b_ret_er = false
    176160
    177     # 関数の戻り値のå
    178 ƒã®åž‹ã‚’å¾—ã‚‹(typedef されている場合)
     161    # 関数の戻り値の元の型を得る(typedef されている場合)
    179162    type = func_type.get_type.get_original_type
    180163
    181     # 戻り値記憶用の変数を出力(void 型の関数では出力しない)
     164    # 戻り値記憶用の変数を出力(void 型の関数では出力しない)
    182165    if ! type.is_void? then
    183166      if func_type.get_type.kind_of?( DefinedType ) && ( func_type.get_type.get_type_str == "ER" || func_type.get_type.get_type_str == "ER_INT" ) then
     
    194177    file.print( "    FLGPTN  flgptn;\n" )
    195178
    196     # 呼びå
    197 ˆã® signature を取り出す
     179    # 呼び先の signature を取り出す
    198180    signature = @signature
    199181
    200     # 関数 ID (整数値)
     182    # 関数 ID (整数値)
    201183    func_id = signature.get_id_from_func_name( func_name )
    202184    file.print( "    int16_t  func_id_ = #{func_id};    /* id of #{func_name}: #{func_id} */\n" )
    203185
    204     # シングルトンでないか?
     186    # シングルトンでないか?
    205187    if ! b_singleton then
    206188
    207       # singleton でなければ p_cellcb 取得コードを出力
     189      # singleton でなければ p_cellcb 取得コードを出力
    208190      file.print <<EOT
    209191    #{ct_name}_CB *p_cellcb;
     
    213195EOT
    214196
    215       # エラーを返すか?
     197      # エラーを返すか?
    216198      if b_ret_er then
    217199        file.print <<EOT
     
    223205        file.print <<EOT
    224206    }else{
    225         /* エラー処理コードをここに記述 */
    226     }
    227 EOT
    228       end
    229     end
    230 
    231     # channel lock コード
     207        /* エラー処理コードをここに記述 */
     208    }
     209EOT
     210      end
     211    end
     212
     213    # channel lock コード
    232214    file.print <<EOT
    233215    /* Channel Lock */
     
    237219EOT
    238220
    239     # SOP を送信
    240     file.print "    /* SOPの送出 */\n"
     221    # SOP を送信
     222    file.print "    /* SOPの送出 */\n"
    241223    file.print "    if( ( ercd_ = cTDR_sendSOP( true ) ) != E_OK )\n"
    242224    file.print "      goto error_reset;\n"
    243225
    244     # func_id を送信
    245     file.print "    /* 関数 id の送出 */\n"
     226    # func_id を送信
     227    file.print "    /* 関数 id の送出 */\n"
    246228    file.print "    if( ( ercd_ = cTDR_putInt16( func_id_ ) ) != E_OK )\n"
    247229    file.print "        goto error_reset;\n"
     
    250232    # p "#{ct_name}, #{sig_name}, #{func_name}, #{func_global_name}"
    251233
    252     b_get = false    # marshal なら put
     234    b_get = false    # marshal なら put
    253235    b_marshal = true  # marshal
    254236
    255     # in 方向のå
    256 ¥å‡ºåŠ›ã‚’出力
    257     file.print "    /* å
    258 ¥åŠ›å¼•æ•°é€å‡º */\n"
     237    # in 方向の入出力を出力
     238    file.print "    /* 入力引数送出 */\n"
    259239    print_params( params, file, 1, b_marshal, b_get, true, func_type.is_oneway? )
    260240    print_params( params, file, 1, b_marshal, b_get, false, func_type.is_oneway? )
     
    264244    end
    265245
    266     file.print "    /* EOPの送出(パケットの掃きだし) */\n"
     246    file.print "    /* EOPの送出(パケットの掃きだし) */\n"
    267247    if ! func_type.is_oneway? then
    268248      b_continue = "true"
     
    293273
    294274    if( b_void == false )then
    295       # 呼びå
    296 ƒã«æˆ»ã‚Šå€¤ã‚’リターン
     275      # 呼び元に戻り値をリターン
    297276      file.print( "    return retval_;\n" )
    298277    else
     
    307286EOT
    308287
    309     # channel lock コード
     288    # channel lock コード
    310289    file.print <<EOT
    311290    /* Channel Lock */
     
    316295
    317296    if( b_ret_er != false )then
    318       # 呼びå
    319 ƒã«æˆ»ã‚Šå€¤ã‚’リターン
     297      # 呼び元に戻り値をリターン
    320298      file.print( "    return ercd_;\n" )
    321299    else
     
    325303  end
    326304
    327   #===  unmarshal コードの生成
     305  #===  unmarshal コードの生成
    328306  def gen_ep_func_body_unmarshal( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
    329307
     
    331309    b_ret_er = false
    332310
    333     # func_id を得るコードを生成
     311    # func_id を得るコードを生成
    334312    file.print <<EOT
    335313
     
    352330        file.print <<EOT
    353331    }else{
    354         /* エラー処理コードをここに記述 */
     332        /* エラー処理コードをここに記述 */
    355333    }
    356334EOT
     
    359337    file.print <<EOT
    360338
    361     /* SOPのチェック */
     339    /* SOPのチェック */
    362340    if( (ercd_=cTDR_receiveSOP( false )) != E_OK )
    363341        goto error_reset;
    364     /* func_id の取得 */
     342    /* func_id の取得 */
    365343    if( (ercd_=cTDR_getInt16( &func_id_ )) != E_OK )
    366344        goto error_reset;
     
    372350EOT
    373351
    374     # 呼びå
    375 ˆã® signature を取り出す
     352    # 呼び先の signature を取り出す
    376353    # port = @celltype.find( @next_cell_port_name )
    377354    # signature = port.get_signature
    378355    signature = @signature
    379356
    380     # through の signature に含まれる すべての関数について
     357    # through の signature に含まれる すべての関数について
    381358    signature.get_function_head_array.each { |f|
    382359      f_name = f.get_name
     
    384361      id = signature.get_id_from_func_name( f_name )
    385362
    386       # 関数は返り値を持つか?
     363      # 関数は返り値を持つか?
    387364      if f_type.get_type.is_void? then
    388365        b_void = true
     
    391368      end
    392369
    393       # パケットの終わりをチェック(未受け取りのデータが残っていないかチェック)
     370      # パケットの終わりをチェック(未受け取りのデータが残っていないかチェック)
    394371      file.print "    case #{id}:       /*** #{f_name} ***/ \n"
    395372      file.print "        if( tTransparentUnmarshaler_#{@signature.get_global_name}_#{f_name}() != E_OK )\n"
     
    400377
    401378    if @PPAllocatorSize then
    402       ppallocator_dealloc_str = "    /* PPAllocator のすべてを解放 */\n    cPPAllocator_dealloc_all();"
     379      ppallocator_dealloc_str = "    /* PPAllocator のすべてを解放 */\n    cPPAllocator_dealloc_all();"
    403380    else
    404381      ppallocator_dealloc_str = ""
     
    423400
    424401  # IN b_marshal, b_get
    425   #  b_marshal = true  && b_get == false   :  マーシャラでå
    426 ¥åŠ›å¼•æ•°é€å‡º
    427   #  b_marshal = true  && b_get == true    :  マーシャラで出力引数受取
    428   #  b_marshal = false && b_get == true    :  アンマーシャラでå
    429 ¥åŠ›å¼•æ•°å—取
    430   #  b_marshal = false && b_get == get     :  アンマーシャラで出力引数送出
     402  #  b_marshal = true  && b_get == false   :  マーシャラで入力引数送出
     403  #  b_marshal = true  && b_get == true    :  マーシャラで出力引数受取
     404  #  b_marshal = false && b_get == true    :  アンマーシャラで入力引数受取
     405  #  b_marshal = false && b_get == get     :  アンマーシャラで出力引数送出
    431406  def print_params( params, file, nest, b_marshal, b_get, b_referenced, b_oneway = false )
    432407    params.each{ |param|
     
    439414      type = param.get_type
    440415      if b_oneway && dir == :IN && type.get_original_type.kind_of?( PtrType ) || type.get_original_type.kind_of?( ArrayType ) then
    441         # oneway, in, PtrType の場合コピー
     416        # oneway, in, PtrType の場合コピー
    442417        alloc_cp = "cPPAllocator_alloc"
    443418        alloc_cp_extra = nil
     
    461436  end
    462437
    463   #=== コピーしない引数渡しコードの出力
     438  #=== コピーしない引数渡しコードの出力
    464439  def print_param_nc( name, type, file, nest, b_marshal, outer, outer2, b_get )
    465440    indent = "    " * ( nest + 1 )
     
    481456        when :SIGNED
    482457          if bit_size == -1 || bit_size == -11 then
    483             # signed char の場合、signed を指定する
     458            # signed char の場合、signed を指定する
    484459            signC = "S"
    485460            sign  = "s"
     
    574549
    575550
    576   #=== PREAMBLE 部のコード生成
    577   # アンマーシャラセルタイプの場合、アンマーシャラ関数のプロトタイプ宣言を生成
     551  #=== PREAMBLE 部のコード生成
     552  # アンマーシャラセルタイプの場合、アンマーシャラ関数のプロトタイプ宣言を生成
    578553  def gen_preamble file, b_singleton, ct_name, global_name
    579554    if ct_name != @unmarshaler_celltype_name.to_sym then
     
    581556    end
    582557
    583     file.print "/* アンマーシャラ関数のプロトタイプ宣言 */\n"
    584     # signature に含まれる すべての関数について
     558    file.print "/* アンマーシャラ関数のプロトタイプ宣言 */\n"
     559    # signature に含まれる すべての関数について
    585560    @signature.get_function_head_array.each { |f|
    586561      f_name = f.get_name
     
    592567  end
    593568
    594   #=== POSTAMBLE 部のコード生成
    595   # アンマーシャラセルタイプの場合、アンマーシャラ関数の生成
     569  #=== POSTAMBLE 部のコード生成
     570  # アンマーシャラセルタイプの場合、アンマーシャラ関数の生成
    596571  def gen_postamble file, b_singleton, ct_name, global_name
    597572    if ct_name != @unmarshaler_celltype_name.to_sym then
     
    599574    end
    600575
    601     file.print "\n/*** アンマーシャラ関数 ***/\n\n"
     576    file.print "\n/*** アンマーシャラ関数 ***/\n\n"
    602577    @signature.get_function_head_array.each { |f|
    603578      f_name = f.get_name
     
    605580      id = @signature.get_id_from_func_name( f_name )
    606581
    607       # 関数は返り値を持つか?
     582      # 関数は返り値を持つか?
    608583      if f_type.get_type.is_void? then
    609584        b_void = true
     
    624599      file.print "      CELLCB  *p_cellcb;\n"
    625600
    626       # 引数を受取る変数の定義
     601      # 引数を受取る変数の定義
    627602      param_list = f.get_declarator.get_type.get_paramlist.get_items
    628603           # FuncHead->  Decl->    FuncType->ParamList
     
    639614        end
    640615
    641         type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" を外す
     616        type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" を外す
    642617
    643618        file.printf( "    %-12s %s%s%s%s;\n", type_str, aster, name, aster2, type.get_type_str_post )
    644619      }
    645620
    646       # 戻り値を受け取る変数の定義
     621      # 戻り値を受け取る変数の定義
    647622      if ! b_void then
    648623        if f.is_oneway? then
    649           retval_ptr = ""   # oneway の場合、受け取るが捨てられる
     624          retval_ptr = ""   # oneway の場合、受け取るが捨てられる
    650625        else
    651626          retval_ptr = "*"
     
    654629      end
    655630
    656       # in 方向のå
    657 ¥å‡ºåŠ›ã‚’å
    658 ¥åŠ›
    659       file.print "\n        /* å
    660 ¥åŠ›å¼•æ•°å—取 */\n"
    661       b_get = true    # unmarshal では get
     631      # in 方向の入出力を入力
     632      file.print "\n        /* 入力引数受取 */\n"
     633      b_get = true    # unmarshal では get
    662634      b_marshal  = false
    663635      print_params( param_list, file, 1, b_marshal, b_get, true, f.is_oneway? )
     
    668640      end
    669641
    670       # パケットの受信完了
    671       # mikan 本当は、対象関数を呼出す後に実施したい.呼出しパケットの使用終わりを宣言する目的として
    672       file.print "        /* パケット終わりをチェック */\n"
     642      # パケットの受信完了
     643      # mikan 本当は、対象関数を呼出す後に実施したい.呼出しパケットの使用終わりを宣言する目的として
     644      file.print "        /* パケット終わりをチェック */\n"
    673645      if ! f.is_oneway? then
    674646        b_continue = "true"
     
    679651      file.print "        goto error_reset;\n\n"
    680652
    681       # 対象関数を呼出す
    682       file.print "    /* 対象関数の呼出し */\n"
     653      # 対象関数を呼出す
     654      file.print "    /* 対象関数の呼出し */\n"
    683655      if b_void then
    684656        file.print( "    cServerCall_#{f_name}(" )
     
    695667      file.print( " );\n" )
    696668
    697       # 戻り値、出力引数の受取コードの生成
    698 
    699       # oneway の場合出力、戻り値が無く、受取をå¾
    700 ãŸãªã„(非同期な呼出し)
     669      # 戻り値、出力引数の受取コードの生成
     670
     671      # oneway の場合出力、戻り値が無く、受取を待たない(非同期な呼出し)
    701672      if ! f.is_oneway? then
    702673        file.print <<EOT
    703     /* 関数処理の終了を通知 */
     674    /* 関数処理の終了を通知 */
    704675    if( ( ercd_ = cEventflag_set( 0x01 ) ) != E_OK ){
    705676      goto error_reset;
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/lib/MrubyBridgeCelltypePluginModule.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2011 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 #== celltype プラグインのå
    56 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     40#== celltype プラグインの共通の親クラス
    5741module MrubyBridgeCelltypePluginModule
    5842
    59   # プラグイン引数名 => Proc
     43  # プラグイン引数名 => Proc
    6044  MrubyBridgePluginArgProc = {
    6145      "ignoreUnsigned" => Proc.new { |obj,rhs| obj.set_ignoreUnsigned rhs },
     
    7155  @@count = 1
    7256
    73   #celltype::     Celltype        セルタイプ(インスタンス)
     57  #celltype::     Celltype        セルタイプ(インスタンス)
    7458  def initialize( celltype, option )
    7559    dbgPrint "#{self.class.name}: initialzie: #{celltype.get_name}\n"
     
    9377  end
    9478
    95   #=== 新しいセル
    96   #cell::        Cell            セル
     79  #=== 新しいセル
     80  #cell::        Cell            セル
    9781  #
    98   # celltype プラグインを指定されたセルタイプのセルが生成された
    99   # セルタイププラグインに対する新しいセルの報告
    100   # generate 文により呼び出された場合、それまでに定義された cell については、initialize のタイミングで呼び出される
     82  # celltype プラグインを指定されたセルタイプのセルが生成された
     83  # セルタイププラグインに対する新しいセルの報告
     84  # generate 文により呼び出された場合、それまでに定義された cell については、initialize のタイミングで呼び出される
    10185  def new_cell( cell )
    10286    dbgPrint "MrubyBridgeCelltypePluginModule: new_cell: #{cell.get_name}\n"
    10387
    104     return if @cell_list.include? cell   # この行は、本来不要のはず
    105     if TECSGEN.post_coded?               # post_code 以降のセルは対象から外す
     88    return if @cell_list.include? cell   # この行は、本来不要のはず
     89    if TECSGEN.post_coded?               # post_code 以降のセルは対象から外す
    10690      cdl_info( "I9999 MrubyBridgeCelltypePlugin: $1 is excluded because cell generated after post_coded", cell.get_name )
    10791      return
     
    146130  end
    147131
    148 ### 意味解析段階で呼び出されるメソッド ###
    149   #===  CDL ファイルの生成
    150   #      typedef, signature, celltype, cell のコードを生成
    151   #      重複して生成してはならない
    152   #      すでに生成されている場合は出力しないこと。
    153   #      もしくは同名の import により、重複を避けること。
    154   #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     132### 意味解析段階で呼び出されるメソッド ###
     133  #===  CDL ファイルの生成
     134  #      typedef, signature, celltype, cell のコードを生成
     135  #      重複して生成してはならない
     136  #      すでに生成されている場合は出力しないこと。
     137  #      もしくは同名の import により、重複を避けること。
     138  #file::        FILE       生成するファイル
    155139  def gen_cdl_file file
    156 #   ã“の段階で呼びだすと generate 文が呼び出される前のセルのみの出力となる
     140#   この段階で呼びだすと generate 文が呼び出される前のセルのみの出力となる
    157141   
    158142#    dbgPrint "MrubyBridgeCelltypePlugin: gen_cdl_file: #{@celltype.get_name}\n"
     
    175159  end
    176160
    177   #=== tCelltype_factory.h に挿å
    178 ¥ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’生成する
    179   # file 以外の他のファイルにファクトリコードを生成してもよい
    180   # セルタイププラグインが指定されたセルタイプのみ呼び出される
     161  #=== tCelltype_factory.h に挿入するコードを生成する
     162  # file 以外の他のファイルにファクトリコードを生成してもよい
     163  # セルタイププラグインが指定されたセルタイプのみ呼び出される
    181164  def gen_factory file
    182165  end
     
    187170
    188171  @@b_gen_post_code_called = false
    189   #=== 後ろの CDL コードを生成
    190   #プラグインの後ろの CDL コードを生成
     172  #=== 後ろの CDL コードを生成
     173  #プラグインの後ろの CDL コードを生成
    191174  #file:: File:
    192175  def self.gen_post_code( file )
     
    198181    end
    199182
    200 #    この段階で生成すると、同じポストコードで出力される mruby の初期化コードに反映されない
     183#    この段階で生成すると、同じポストコードで出力される mruby の初期化コードに反映されない
    201184   
    202 #    # MrubyBridgeCelltypePlugin の生成する generate 文は、
     185#    # MrubyBridgeCelltypePlugin の生成する generate 文は、
    203186#    fn2 = "#{$gen}/tmp_MrubyBridgeCelltypePlugin_post.cdl"
    204187#    f2 = File.open( fn2, "w" )
    205 #    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
     188#    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
    206189#    dbgPrint "MrubyBridgeCelltypePlugin: gen_post_code\n"
    207190#    f2.print "/* '#{self.name}' post code */\n"
     
    219202  end
    220203
    221   #=== プラグイン引数
    222 
    223   #=== プラグイン引数 ignoreUnsigned
     204  #=== プラグイン引数
     205
     206  #=== プラグイン引数 ignoreUnsigned
    224207  def set_ignoreUnsigned rhs
    225208    if rhs == "true" || rhs == nil then
     
    256239  end
    257240
    258   #=== プラグイン引数 exclude_port_func
     241  #=== プラグイン引数 exclude_port_func
    259242  def set_exclude_port_func rhs
    260243    port_funcs = rhs.split ','
     
    287270  end
    288271
    289   #=== プラグイン引数 auto_exclude
     272  #=== プラグイン引数 auto_exclude
    290273  def set_auto_exclude rhs
    291274    # print "MrubyBridgeCellPlugin: auto_exclude=#{rhs}\n"
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/version.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
Note: See TracChangeset for help on using the changeset viewer.