Ignore:
Timestamp:
Aug 23, 2017, 9:27:43 AM (7 years ago)
Author:
coas-nagasima
Message:

文字コードを設定

Location:
EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin
Files:
43 edited

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/ATK1AlarmPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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"
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/ATK1DelayTaskPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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"
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/ATK1EventPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/ATK1ISRPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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}
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/ATK1KernelPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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"
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/ATK1ResourcePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/ATK1TaskPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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"
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/C2TECSBridgePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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
    52 #   $Id: C2TECSBridgePlugin.rb 1011 2016-07-11 02:20:01Z coas-nagasima $
     37#   $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
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/CellPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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
    52 #   $Id: CellPlugin.rb 1011 2016-07-11 02:20:01Z coas-nagasima $
     37#   $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
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/CelltypePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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
    52 #   $Id: CelltypePlugin.rb 1011 2016-07-11 02:20:01Z coas-nagasima $
     37#   $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
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/DomainPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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
    52 #   $Id: DomainPlugin.rb 1011 2016-07-11 02:20:01Z coas-nagasima $
     37#   $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  end
    6449
    65   #== 結合 join にプラグインを挿å
    66 ¥ã™ã‚‹
    67   #join::Join : 結合に関するæƒ
    68 å ±
    69   #return::[ plugin_name::String, option::String ]: 挿å
    70 ¥ã™ã‚‹ãƒ—ラグイン。 挿å
    71 ¥ã™ã‚‹ã‚‚のがなければ nil を返す
     50  #== 結合 join にプラグインを挿入する
     51  #join::Join : 結合に関する情報
     52  #return::[ plugin_name::String, option::String ]: 挿入するプラグイン。 挿入するものがなければ nil を返す
    7253  #return::(1) [ plugin_name, option ] or (2) [[ plugin_name, option ], ...], or [] or nil:  (2): not supported now
    73   #   nil: region 間の結合禁止, []: region 間の結合可(プラグイン挿å
    74 ¥ç„¡ã—)
    75   #   [ plugin_name, option ]: *_through( plugin_name, option ) 指定したのと同等
     54  #   nil: region 間の結合禁止, []: region 間の結合可(プラグイン挿入無し)
     55  #   [ plugin_name, option ]: *_through( plugin_name, option ) 指定したのと同等
    7656  #
    77   # region 間の through が指定されている場合、out_through, to_through
    78   # では、それらによって指定されたプラグインの後ろに、in_through の場合
    79   # in_through プラグインの前に挿å
    80 ¥ã•ã‚Œã‚‹
     57  # region 間の through が指定されている場合、out_through, to_through
     58  # では、それらによって指定されたプラグインの後ろに、in_through の場合
     59  # in_through プラグインの前に挿入される
    8160  #
    82   # このメソッドが呼出された時点では Join#get_rhs_cell など意味解析後
    83   # にしか呼び出せないメソッドを呼出しても、有効な値は得られない
     61  # このメソッドが呼出された時点では Join#get_rhs_cell など意味解析後
     62  # にしか呼び出せないメソッドを呼出しても、有効な値は得られない
    8463  #
    8564  def add_through_plugin( join, current_region, next_region, through_type )
    86     # join.get_owner:Cell  左辺のセル
    87     # join.get_definition:Port 呼び口
    88     # join.get_subscript:Integer or nil 呼び口é
    89 åˆ—の添数 (Join::@subscript の説明参ç
    90 §)
    91     # join.get_cell:Cell 右辺のセル
    92     # join.get_port_name:Symbol 受け口
    93     # get_rhs_subscript:Integer or nil 受け口é
    94 åˆ—の添数 (Join::@rhs_subscript の説明参ç
    95 §)
     65    # join.get_owner:Cell  左辺のセル
     66    # join.get_definition:Port 呼び口
     67    # join.get_subscript:Integer or nil 呼び口配列の添数 (Join::@subscript の説明参照)
     68    # join.get_cell:Cell 右辺のセル
     69    # join.get_port_name:Symbol 受け口
     70    # get_rhs_subscript:Integer or nil 受け口配列の添数 (Join::@rhs_subscript の説明参照)
    9671    # return []
    9772    return nil
    9873  end
    9974
    100   #== require が結合可能か?
     75  #== require が結合可能か?
    10176  def joinable?(current_region, next_region, through_type )
    10277    return false
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2AlarmHandlerPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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#++
     
    5439#require "HRP2KernelObjectPlugin"
    5540require_tecsgen_lib "HRP2KernelObjectPlugin.rb"
    56 #== celltype プラグインのå
    57 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     41#== celltype プラグインの共通の親クラス
    5842class HRP2AlarmHandlerPlugin < HRP2KernelObjectPlugin
    5943    @@ep = [:eStartAlarm, :eStopAlarm, :eManageAlarm, :eReferAlarm ]
     
    6650    def print_cfg_cre(file, cell, val, tab)
    6751        val[:id] = val[:id].gsub( /(^|[^\$])\$id\$/, "\\1#{@celltype.get_name.to_s}_#{cell.get_name.to_s}" )
    68         # $cbp$の代わり
     52        # $cbp$の代わり
    6953        index = cell.get_id - @celltype.get_id_base
    7054        cell_CB_name = "#{@celltype.get_global_name}_CB_tab[#{index}]"
    71         # CRE_XXXの生成
     55        # CRE_XXXの生成
    7256        if (cell.get_region.get_region_type != :DOMAIN) || (cell.get_region.get_param != :KERNEL_DOMAIN)
    73             # 無所属 or ユーザドメインに属する場合
     57            # 無所属 or ユーザドメインに属する場合
    7458                raise "alarm handler #{val[:id]} must belong to kernel domain."
    7559        else
     
    8468    end
    8569
    86     #tAlarmの受け口リスト
     70    #tAlarmの受け口リスト
    8771    def get_entry_ports_name_list()
    8872        @@ep
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2Cache.rb

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

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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#++
     
    5540require_tecsgen_lib "HRP2KernelObjectPlugin.rb"
    5641
    57 #== celltype プラグインのå
    58 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     42#== celltype プラグインの共通の親クラス
    5943class HRP2CyclicHandlerPlugin < HRP2KernelObjectPlugin
    6044    @@ep = [:eStartCyclic, :eStopCyclic, :eManageCyclic, :eReferCyclic ]
     
    6751    def print_cfg_cre(file, cell, val, tab)
    6852        val[:id] = val[:id].gsub( /(^|[^\$])\$id\$/, "\\1#{@celltype.get_name.to_s}_#{cell.get_name.to_s}" )
    69         # $cbp$の代わり
     53        # $cbp$の代わり
    7054        index = cell.get_id - @celltype.get_id_base
    7155        cell_CB_name = "#{@celltype.get_global_name}_CB_tab[#{index}]"
    72         # CRE_XXXの生成
     56        # CRE_XXXの生成
    7357        if (cell.get_region.get_region_type != :DOMAIN) || (cell.get_region.get_param != :KERNEL_DOMAIN)
    74             # 無所属 or ユーザドメインに属する場合
     58            # 無所属 or ユーザドメインに属する場合
    7559                raise "cyclic handler #{val[:id]} must belong to kernel domain."
    7660        else
     
    8569    end
    8670
    87     #tCyclicHandlerの受け口リスト
     71    #tCyclicHandlerの受け口リスト
    8872    def get_entry_ports_name_list()
    8973        @@ep
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2DataqueuePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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#++
     
    5944    @@ep = [:eSendDataqueue, :eReceiveDataqueue, :eManageDataqueue, :eReferDataqueue ]
    6045    #=== HRP2DataqueuePlugin#print_cfg_cre
    61     # CRE_DTQの出力
    62     # file:: FILE:     å‡ºåŠ›å
    63 ˆãƒ•ã‚¡ã‚¤ãƒ«
    64     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    65     # tab :: string:   ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆç”¨ã®tab
     46    # CRE_DTQの出力
     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    #=== HRP2DataqueuePlugin#print_cfg_sac
    71     # SAC_DTQの出力
    72     # file:: FILE:     å‡ºåŠ›å
    73 ˆãƒ•ã‚¡ã‚¤ãƒ«
    74     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    75     # acv :: string:   ã‚¢ã‚¯ã‚»ã‚¹ãƒ™ã‚¯ã‚¿   
     55    # SAC_DTQの出力
     56    # file:: FILE:     出力先ファイル
     57    # val :: string:   カーネルオブジェクトの属性の解析結果
     58    # acv :: string:   アクセスベクタ   
    7659    def print_cfg_sac(file, val, acv)
    7760        file.puts "SAC_DTQ(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});"
    7861    end
    79     #tDataqueueの受け口リスト
     62    #tDataqueueの受け口リスト
    8063    def get_entry_ports_name_list()
    8164        @@ep
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2EventflagPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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#++
     
    5944    @@ep = [:eSetEventflag, :eWaitEventflag, :eManageEventflag, :eReferEventflag ]
    6045    #=== HRP2EventflagPlugin#print_cfg_cre
    61     # CRE_FLGの出力
    62     # file:: FILE:     å‡ºåŠ›å
    63 ˆãƒ•ã‚¡ã‚¤ãƒ«
    64     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    65     # tab :: string:   ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆç”¨ã®tab
     46    # CRE_FLGの出力
     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    #=== HRP2EventflagPlugin#print_cfg_sac
    71     # SAC_FLGの出力
    72     # file:: FILE:     å‡ºåŠ›å
    73 ˆãƒ•ã‚¡ã‚¤ãƒ«
    74     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    75     # acv :: string:   ã‚¢ã‚¯ã‚»ã‚¹ãƒ™ã‚¯ã‚¿   
     55    # SAC_FLGの出力
     56    # file:: FILE:     出力先ファイル
     57    # val :: string:   カーネルオブジェクトの属性の解析結果
     58    # acv :: string:   アクセスベクタ   
    7659    def print_cfg_sac(file, val, acv)
    7760        file.puts "SAC_FLG(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});"
    7861    end
    79     #tEventflagの受け口リスト
     62    #tEventflagの受け口リスト
    8063    def get_entry_ports_name_list()
    8164        @@ep
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2FixedSizeMemoryPoolPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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#++
     
    5944    @@ep = [:eSendFixedSizeMemoryPool, :eReceiveFixedSizeMemoryPool, :eManageFixedSizeMemoryPool, :eReferFixedSizeMemoryPool ]
    6045    #=== HRP2FixedSizeMemoryPoolPlugin#print_cfg_cre
    61     # CRE_MPFの出力
    62     # file:: FILE:     å‡ºåŠ›å
    63 ˆãƒ•ã‚¡ã‚¤ãƒ«
    64     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    65     # tab :: string:   ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆç”¨ã®tab
     46    # CRE_MPFの出力
     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    #=== HRP2FixedSizeMemoryPoolPlugin#print_cfg_sac
    71     # SAC_MPFの出力
    72     # file:: FILE:     å‡ºåŠ›å
    73 ˆãƒ•ã‚¡ã‚¤ãƒ«
    74     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    75     # acv :: string:   ã‚¢ã‚¯ã‚»ã‚¹ãƒ™ã‚¯ã‚¿   
     55    # SAC_MPFの出力
     56    # file:: FILE:     出力先ファイル
     57    # val :: string:   カーネルオブジェクトの属性の解析結果
     58    # acv :: string:   アクセスベクタ   
    7659    def print_cfg_sac(file, val, acv)
    7760        file.puts "SAC_MPF(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});"
    7861    end
    79     #tFixedSizeMemoryPoolの受け口リスト
     62    #tFixedSizeMemoryPoolの受け口リスト
    8063    def get_entry_ports_name_list()
    8164        @@ep
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2HandlerPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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#++
     
    5641
    5742
    58 #== celltype プラグインのå
    59 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     43#== celltype プラグインの共通の親クラス
    6044class HRP2HandlerPlugin < HRP2KernelObjectPlugin
    6145    @@ep = [:eStartAlarm, :eStopAlarm, :eManageAlarm, :eReferAlarm ]
     
    6852    def print_cfg_cre(file, cell, val, tab)
    6953        val[:id] = val[:id].gsub( /(^|[^\$])\$id\$/, "\\1#{@celltype.get_name.to_s}_#{cell.get_name.to_s}" )
    70         # $cbp$の代わり
     54        # $cbp$の代わり
    7155        index = cell.get_id - @celltype.get_id_base
    7256        cell_CB_name = "#{@celltype.get_global_name}_CB_tab[#{index}]"
    73         # CRE_XXXの生成
     57        # CRE_XXXの生成
    7458        domainOption = cell.get_region.get_domain_root.get_domain_type.get_option
    7559        # if (cell.get_region.get_region_type != :DOMAIN) || (cell.get_region.get_param != :KERNEL_DOMAIN)
    7660        if (domainOption == "OutOfDomain") || (domainOption != "trusted")
    77             # 無所属 or ユーザドメインに属する場合
     61            # 無所属 or ユーザドメインに属する場合
    7862                raise "#{@plugin_arg_str.to_s.downcase} handler #{val[:id]} must belong to kernel domain."
    7963        elsif @plugin_arg_str == "ALARM"
     
    10185
    10286=begin
    103     #tAlarmの受け口リスト
     87    #tAlarmの受け口リスト
    10488    def get_entry_ports_name_list()
    10589        @@ep
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2KernelObjectPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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#++
    5338
    54 # Regionクラスにメソッドを追加
     39# Regionクラスにメソッドを追加
    5540=begin
    5641class Region
     
    6954=end
    7055
    71 # Cellクラスにインスタンス変数とメソッドを追加
     56# Cellクラスにインスタンス変数とメソッドを追加
    7257=begin
    7358class Cell
     
    8570    end
    8671
    87     # set_referenced_cellにしたほうがよい
     72    # set_referenced_cellにしたほうがよい
    8873    # def set_referenced_region( region, port_name )
    8974    def set_referenced_cell( cell, port_name )
     
    139124=end
    140125
    141 #== celltype プラグインのå
    142 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     126#== celltype プラグインの共通の親クラス
    143127class HRP2KernelObjectPlugin < CelltypePlugin
    144128    # @@obj_hash = {}
    145129
    146130    #@celltype:: Celltype
    147     #@option:: String     :オプション文字列
     131    #@option:: String     :オプション文字列
    148132    def initialize( celltype, option )
    149133        super
    150         # それぞれのカーネルオブジェクトを解析対象セルタイプに追加
     134        # それぞれのカーネルオブジェクトを解析対象セルタイプに追加
    151135        HRP2KernelObjectPlugin.set_celltype(celltype)
    152136    end
    153137 
    154138    #=== HRP2KernelObjectPlugin#print_cfg_cre
    155     # 各種カーネルオブジェクトのCRE_*の出力
    156     # file:: FILE:     å‡ºåŠ›å
    157 ˆãƒ•ã‚¡ã‚¤ãƒ«
    158     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    159     # tab :: string:   ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆç”¨ã®tab
     139    # 各種カーネルオブジェクトのCRE_*の出力
     140    # file:: FILE:     出力先ファイル
     141    # val :: string:   カーネルオブジェクトの属性の解析結果
     142    # tab :: string:   インデント用のtab
    160143    def print_cfg_cre(file, cell, val, tab)
    161144        raise "called virtual method print_cfg_cre in #{@celltype.get_name} plugin"
     
    163146 
    164147    #=== HRP2KernelObjectPlugin#print_cfg_sac
    165     # 各種カーネルオブジェクトのSAC_*の出力
    166     # file:: FILE:     å‡ºåŠ›å
    167 ˆãƒ•ã‚¡ã‚¤ãƒ«
    168     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    169     # acv :: string:   ã‚¢ã‚¯ã‚»ã‚¹ãƒ™ã‚¯ã‚¿
     148    # 各種カーネルオブジェクトのSAC_*の出力
     149    # file:: FILE:     出力先ファイル
     150    # val :: string:   カーネルオブジェクトの属性の解析結果
     151    # acv :: string:   アクセスベクタ
    170152    def print_cfg_sac(file, val, acv)
    171153        raise "called virtual method print_cfg_sac in #{@celltype.get_name} plugin"
     
    173155 
    174156    #=== HRP2KernelObjectPlugin#get_entry_ports_name_list
    175     # カーネルオブジェクトの各種アクセスの種別の受け口名を取得
     157    # カーネルオブジェクトの各種アクセスの種別の受け口名を取得
    176158    def get_entry_ports_name_list()
    177159        raise "called virtual method get_entry_ports_name_list in #{@celltype.get_name} plugin"
     
    185167        puts "===== begin #{@celltype.get_name.to_s} plugin ====="
    186168
    187         # 対象となるすべてのセルについて、受け口に結合されている
    188         # セルの所属ドメインを解析
     169        # 対象となるすべてのセルについて、受け口に結合されている
     170        # セルの所属ドメインを解析
    189171        if !HRP2KernelObjectPlugin.isChecked()
    190172            HRP2KernelObjectPlugin.check_referenced_cells()
     
    193175        end
    194176
    195         # 追記するために AppFile を使う(文字コード変換されない)
     177        # 追記するために AppFile を使う(文字コード変換されない)
    196178        file2 = AppFile.open( "#{$gen}/tecsgen.cfg" )
    197179        file2.print "\n/* Generated by #{self.class.name} */\n\n"
     
    200182            if cell.is_generate?
    201183                puts "===== begin check my domain #{cell.get_name} ====="
    202                 # attrの値をハッシュにå
    203 ¥ã‚Œã‚‹
     184                # attrの値をハッシュに入れる
    204185                val = {}
    205186                @celltype.get_attribute_list.each{ |a|
     
    208189                        val[a.get_name] = []
    209190                        if j = cell.get_join_list.get_item(a.get_name)
    210                             # セル生成時に初期化する場合
     191                            # セル生成時に初期化する場合
    211192                            j.get_rhs.each { |elem|
    212193                                val[a.get_name] << elem.to_s
    213194                            }
    214195                        elsif i = a.get_initializer
    215                             # セルタイプの初期化値を使う場合
     196                            # セルタイプの初期化値を使う場合
    216197                            i.each { |elem|
    217198                                val[a.get_name] << elem.to_s
     
    222203                    else
    223204                        if j = cell.get_join_list.get_item(a.get_name)
    224                             # セル生成時に初期化する場合
     205                            # セル生成時に初期化する場合
    225206                            val[a.get_name] = j.get_rhs.to_s
    226207                        elsif i = a.get_initializer
    227                             # セルタイプの初期化値を使う場合
     208                            # セルタイプの初期化値を使う場合
    228209                            val[a.get_name] = i.to_s
    229210                        else
     
    232213                    end
    233214                }
    234                 # generate.rbを参考に
    235                 # $id$を置換
     215                # generate.rbを参考に
     216                # $id$を置換
    236217                if val[:id].nil? != true
    237218                    puts val[:id]
    238219                    val[:id] = val[:id].gsub( /(^|[^\$])\$id\$/, "\\1#{@celltype.get_name.to_s}_#{cell.get_name.to_s}" )
    239220                end
    240                 # $cbp$の代わり
     221                # $cbp$の代わり
    241222                index = cell.get_id - @celltype.get_id_base
    242223                cell_CB_name = "#{@celltype.get_global_name}_CB_tab[#{index}]"
     
    244225                cell_domain_type = cell.get_region.get_domain_root.get_domain_type
    245226
    246                 # CRE_XXX/DEF_XXXの生成
     227                # CRE_XXX/DEF_XXXの生成
    247228                if cell_domain_type.get_option.to_s != "OutOfDomain"
    248                     # 保護ドメインに属する場合
     229                    # 保護ドメインに属する場合
    249230                    if !HRP2KernelObjectPlugin.include_region(cell_domain_root.get_name.to_s)
    250                         # その保護ドメインの.cfgが生成されていない場合
     231                        # その保護ドメインの.cfgが生成されていない場合
    251232                        HRP2KernelObjectPlugin.set_region_list(cell_domain_root.get_name.to_s)
    252233                        puts "~~~~~ #{cell_domain_root.get_name.to_s} is registered!"
     
    269250                    file3.close
    270251                else
    271                     # 無所属の場合
     252                    # 無所属の場合
    272253                    puts "~~~~~ #{cell_domain_root.get_name.to_s} is OutOfDomain"
    273254                    print_cfg_cre(file2, cell, val, "")
     
    275256
    276257                puts "===== end check my domain #{cell.get_name} ====="
    277                 # SAC_XXXの生成
     258                # SAC_XXXの生成
    278259                puts "===== begin check regions #{cell.get_name} ====="
    279260                p val[:accessPattern]
     
    281262
    282263                #ep = [ :eTaskActivate, :eTaskControl, :eTaskManage, :eTaskRefer ]
    283                 #各カーネルオブジェクトの受け口名を取得
     264                #各カーネルオブジェクトの受け口名を取得
    284265                # ep = get_entry_ports_name_list()
    285266                i = 0
    286267                acv = []
    287                 # アクセス許可ベクタの生成
     268                # アクセス許可ベクタの生成
    288269                val[:accessPattern].each { |acptnx|
    289                     # アクセス許可パターンの生成
     270                    # アクセス許可パターンの生成
    290271                    if acptnx != "OMIT"
    291272                        acv << acptnx
     
    306287                p acv
    307288
    308                 #各種SACの生成
     289                #各種SACの生成
    309290                domainOption = cell_domain_type.get_option
    310291                # if cell.get_region.get_region_type == :DOMAIN
    311292                if domainOption != "OutOfDomain"
    312                     # 保護ドメインに属する場合
     293                    # 保護ドメインに属する場合
    313294                    file3 = AppFile.open( "#{$gen}/tecsgen_#{cell.get_region.get_name.to_s}.cfg" )
    314295                    print_cfg_sac(file3, val, acv)
    315296                    file3.close
    316297                else
    317                     # 無所属の場合
     298                    # 無所属の場合
    318299                    print_cfg_sac(file2, val, acv)
    319300                end
     
    327308    end
    328309
    329     # カーネルオブジェクトセルタイプの管理
    330     # HRP2KernelObjectPluginクラスに対してメソッド呼出しを行うことを想定
     310    # カーネルオブジェクトセルタイプの管理
     311    # HRP2KernelObjectPluginクラスに対してメソッド呼出しを行うことを想定
    331312    @@checked = false
    332313    @@celltype_list = []
     
    351332                printf "===== check call port : "
    352333                p p.get_name.to_s
    353                 next if j.nil? # 未結合の場合
     334                next if j.nil? # 未結合の場合
    354335                if @@celltype_list.include?(j.get_celltype)
    355336                    # j.get_cell.set_referenced_region(cell.get_region)
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2ObjectPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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#++
     
    6954
    7055    #=== HRP2SemaphorePlugin#print_cfg_cre
    71     # CRE_SEMの出力
    72     # file:: FILE:     å‡ºåŠ›å
    73 ˆãƒ•ã‚¡ã‚¤ãƒ«
    74     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    75     # tab :: string:   ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆç”¨ã®tab
     56    # CRE_SEMの出力
     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
     
    8771    end
    8872    #=== HRP2SemaphorePlugin#print_cfg_sac
    89     # SAC_SEMの出力
    90     # file:: FILE:     å‡ºåŠ›å
    91 ˆãƒ•ã‚¡ã‚¤ãƒ«
    92     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    93     # acv :: string:   ã‚¢ã‚¯ã‚»ã‚¹ãƒ™ã‚¯ã‚¿   
     73    # SAC_SEMの出力
     74    # file:: FILE:     出力先ファイル
     75    # val :: string:   カーネルオブジェクトの属性の解析結果
     76    # acv :: string:   アクセスベクタ   
    9477    def print_cfg_sac(file, val, acv)
    9578        if @@api.has_key?(@plugin_arg_str) == false
     
    10386
    10487=begin
    105     #tSemaphoreの受け口リスト
     88    #tSemaphoreの受け口リスト
    10689    def get_entry_ports_name_list()
    10790        @@ep
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2Plugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    66#   Copyright (C) 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#++
    5338
    5439#
    55 # 各メソッドの役割りは、DomainPlugin.rb を参ç
    56 §ã®ã“と
    57 # HRP2カーネル用ドメインプラグイン
     40# 各メソッドの役割りは、DomainPlugin.rb を参照のこと
     41# HRP2カーネル用ドメインプラグイン
    5842class HRP2Plugin < DomainPlugin
    5943
     
    6347
    6448  def add_through_plugin( join, current_region, next_region, through_type )
    65     # join.get_owner:Cell  左辺のセル
    66     # join.get_definition:Port 呼び口
    67     # join.get_subscript:Integer or nil 呼び口é
    68 åˆ—の添数 (Join::@subscript の説明参ç
    69 §)
    70     # join.get_cell:Cell 右辺のセル
    71     # join.get_port_name:Symbol 受け口
    72     # get_rhs_subscript:Integer or nil 受け口é
    73 åˆ—の添数 (Join::@rhs_subscript の説明参ç
    74 §)
     49    # join.get_owner:Cell  左辺のセル
     50    # join.get_definition:Port 呼び口
     51    # join.get_subscript:Integer or nil 呼び口配列の添数 (Join::@subscript の説明参照)
     52    # join.get_cell:Cell 右辺のセル
     53    # join.get_port_name:Symbol 受け口
     54    # get_rhs_subscript:Integer or nil 受け口配列の添数 (Join::@rhs_subscript の説明参照)
    7555    # return []
    7656    print "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"
     
    8969
    9070    if HRP2KernelObjectPlugin.include_celltype?(join.get_cell.get_celltype)
    91         # 結合å
    92 ˆãŒã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトセル
     71        # 結合先がカーネルオブジェクトセル
    9372        # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
    94         # 何もしないthrough
     73        # 何もしないthrough
    9574        puts "***** #{join.get_cell.get_celltype.get_name} is kernel object"
    9675        return []
     
    10079    # elsif next_domain.nil?
    10180    elsif next_domain.get_option.to_s == "OutOfDomain"
    102     #     # 結合å
    103 ˆãŒç„¡æ‰€å±ž
    104     #     # 何もしないthrough
     81    #     # 結合先が無所属
     82    #     # 何もしないthrough
    10583    #     # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
    10684        puts "***** nil"
     
    10987    #elsif @start_region.get_param != :KERNEL_DOMAIN && @end_region.get_param == :KERNEL_DOMAIN
    11088    elsif current_domain.get_option.to_s != "trusted" && next_domain.get_option.to_s == "trusted"
    111         # ユーザドメインからカーネルドメインへの結合
     89        # ユーザドメインからカーネルドメインへの結合
    11290        # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
    11391        puts "***** svc"
    11492        return [ :HRP2SVCPlugin, "" ]
    11593    elsif current_domain != next_domain
    116         # ユーザドメインから別のユーザドメインへの結合
     94        # ユーザドメインから別のユーザドメインへの結合
    11795        # @plugin_body = HRP2RPCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
    11896        puts "***** rpc"
    11997        return [ :HRP2RPCPlugin, "channelCelltype=tMessagebufferChannel,noClientSemaphore=true" ]
    12098    else
    121         # その他
    122         # 何もしないthrough
     99        # その他
     100        # 何もしないthrough
    123101        # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
    124102        print "warning: at HRP2 Join Check"
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2PostHook.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    66#   Copyright (C) 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#++
     
    6348
    6449    def generate
    65         # カーネルオブジェクトのセルタイプはメモリ保護しない
     50        # カーネルオブジェクトのセルタイプはメモリ保護しない
    6651#=begin
    67         # TODO: テストのために無効化
     52        # TODO: テストのために無効化
    6853        if HRP2KernelObjectPlugin.include_celltype?( @celltype )
    6954            puts "nothing is generated for kernel object component"
     
    7459        rlist = @celltype.get_region_list
    7560        if @celltype.is_singleton?
    76             # singletonの場合
     61            # singletonの場合
    7762            puts "<singleton>"
    7863
     
    8267                file = AppFile.open( "#{$gen}/tecsgen_#{rlist[0].get_param.to_s}.cfg" )
    8368            end
    84             # セル管理ブロックとスケルトンのメモリ保護
     69            # セル管理ブロックとスケルトンのメモリ保護
    8570            file.print "ATT_MOD(\"#{@celltype.get_global_name}_tecsgen.o\");\n"
    8671            if !@celltype.is_all_entry_inline?
    87                 # セルタイプコードのメモリ保護
     72                # セルタイプコードのメモリ保護
    8873                file.print "ATT_MOD(\"#{@celltype.get_global_name}.o\");\n"
    8974            end
     
    9277
    9378        else
    94             # singletonでない場合
     79            # singletonでない場合
    9580            puts "<non-singleton>"
    9681
    97             # スケルトンとセルタイプコードの保護
     82            # スケルトンとセルタイプコードの保護
    9883            if (rlist.length == 1) &&
    9984                (@celltype.get_n_cell_gen == @celltype.get_n_cell_gen_r( rlist[0] ))
    100                 # 所属する保護ドメインが1つの場合
     85                # 所属する保護ドメインが1つの場合
    10186                puts "<private celltype>"
    10287                file = AppFile.open( "#{$gen}/tecsgen_#{rlist[0].get_param.to_s}.cfg" )
    10388            else
    104                 # 無所属 or 所属する保護ドメインが複数の場合
     89                # 無所属 or 所属する保護ドメインが複数の場合
    10590                puts "<shared celltype>"
    10691                file = AppFile.open( "#{$gen}/tecsgen.cfg" )
    10792            end
    10893
    109             # スケルトンのメモリ保護
     94            # スケルトンのメモリ保護
    11095            file.print "ATT_MOD(\"#{@celltype.get_global_name}_tecsgen.o\");\n"
    11196            if !@celltype.is_all_entry_inline?
    112                 # セルタイプコードのメモリ保護
     97                # セルタイプコードのメモリ保護
    11398                file.print "ATT_MOD(\"#{@celltype.get_global_name}.o\");\n"
    11499            end
    115100            file.close
    116101
    117             # セル管理ブロックの保護
     102            # セル管理ブロックの保護
    118103            rlist.each { |reg|
    119104                file = AppFile.open( "#{$gen}/tecsgen_#{reg.get_param.to_s}.cfg" )
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2PriorityDataqueuePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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#++
     
    5742    @@ep = [:eSendPriorityDataqueue, :eReceivePriorityDataqueue, :eManagePriorityDataqueue, :eReferPriorityDataqueue ]
    5843    #=== HRP2PriorityDataqueuePlugin#print_cfg_cre
    59     # CRE_PDQの出力
    60     # file:: FILE:     å‡ºåŠ›å
    61 ˆãƒ•ã‚¡ã‚¤ãƒ«
    62     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    63     # tab :: string:   ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆç”¨ã®tab
     44    # CRE_PDQの出力
     45    # file:: FILE:     出力先ファイル
     46    # val :: string:   カーネルオブジェクトの属性の解析結果
     47    # tab :: string:   インデント用のtab
    6448    def print_cfg_cre(file, cell, val, tab)
    6549        file.print tab
     
    6751    end
    6852    #=== HRP2PriorityDataqueuePlugin#print_cfg_sac
    69     # SAC_PDQの出力
    70     # file:: FILE:     å‡ºåŠ›å
    71 ˆãƒ•ã‚¡ã‚¤ãƒ«
    72     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    73     # acv :: string:   ã‚¢ã‚¯ã‚»ã‚¹ãƒ™ã‚¯ã‚¿   
     53    # SAC_PDQの出力
     54    # file:: FILE:     出力先ファイル
     55    # val :: string:   カーネルオブジェクトの属性の解析結果
     56    # acv :: string:   アクセスベクタ   
    7457    def print_cfg_sac(file, val, acv)
    7558        file.puts "SAC_PDQ(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});"
    7659    end
    77     #tPriorityDataqueueの受け口リスト
     60    #tPriorityDataqueueの受け口リスト
    7861    def get_entry_ports_name_list()
    7962        @@ep
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2RPCPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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#++
     
    5641# require_tecsgen_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
    7655#
    77 # RPCを用いたドメイン間通信の
    78 # throughプラグイン
    79 # HRP2ドメインプラグインによって挿å
    80 ¥ã•ã‚Œã‚‹
     56# RPCを用いたドメイン間通信の
     57# throughプラグイン
     58# HRP2ドメインプラグインによって挿入される
    8159#
    8260class HRP2RPCPlugin < ThroughPlugin
     
    8563  # include GenParamCopy
    8664
    87   # RPCPlugin 専用のオプション
    88   TransparentRPCPluginArgProc = RPCPluginArgProc.dup  # 複製を作ってå
    89 ƒã‚’変更しないようにする
     65  # RPCPlugin 専用のオプション
     66  TransparentRPCPluginArgProc = RPCPluginArgProc.dup  # 複製を作って元を変更しないようにする
    9067  TransparentRPCPluginArgProc[ "noClientSemaphore"  ] = Proc.new { |obj,rhs| obj.set_noClientSemaphore rhs }
    9168  TransparentRPCPluginArgProc[ "semaphoreCelltype"  ] = Proc.new { |obj,rhs| obj.set_semaphoreCelltype rhs }
    9269
    93   #=== RPCPlugin の initialize
    94   #  説明は ThroughPlugin (plugin.rb) を参ç
    95 §
     70  #=== RPCPlugin の initialize
     71  #  説明は ThroughPlugin (plugin.rb) を参照
    9672  def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell )
    9773    super
     
    10076    initialize_transparent_marshaler cell_name
    10177
    102     # オプション:GenTransparentMarshaler 参ç
    103 §
     78    # オプション:GenTransparentMarshaler 参照
    10479    @plugin_arg_check_proc_tab = TransparentRPCPluginArgProc
    10580    parse_plugin_arg
     
    11186      if @PPAllocatorSize == nil then
    11287        cdl_error( "PPAllocatorSize must be speicified for oneway [in] array" )
    113         # @PPAllocatorSize = 0   # 仮に 0 としておく (cdl の構文エラーを避けるため)
     88        # @PPAllocatorSize = 0   # 仮に 0 としておく (cdl の構文エラーを避けるため)
    11489      end
    11590    end
     
    11893#      if func_decl.get_type.is_oneway? then
    11994#        if ( param_decl.get_size || param_decl.get_count ) && param_decl.get_string then
    120 #          cdl_error( "array of string not supported for oneway function in Transparent RPC" )  # mikan 文字列のé
    121 åˆ—
     95#          cdl_error( "array of string not supported for oneway function in Transparent RPC" )  # mikan 文字列の配列
    12296#        elsif param_decl.get_string == -1 then
    123 #          cdl_error( "length unspecified string is not permited for oneway function in Transparent RPC" )  # mikan 長さ未指定文字列
     97#          cdl_error( "length unspecified string is not permited for oneway function in Transparent RPC" )  # mikan 長さ未指定文字列
    12498#        end
    12599#      end
     
    127101  end
    128102
    129   #=== plugin の宣言コード (celltype の定義) 生成
     103  #=== plugin の宣言コード (celltype の定義) 生成
    130104  def gen_plugin_decl_code( file )
    131105
    132106    ct_name = "#{@ct_name}_#{@channelCelltype}"
    133107
    134     # このセルタイプ(同じシグニチャ)は既に生成されているか?
     108    # このセルタイプ(同じシグニチャ)は既に生成されているか?
    135109    if @@generated_celltype[ ct_name ] == nil then
    136110      @@generated_celltype[ ct_name ] = [ self ]
     
    165139
    166140    f = CFile.open( @rpc_channel_celltype_file_name, "w" )
    167     # 同じå†
    168 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     141    # 同じ内容を二度書く可能性あり (AppFile は不可)
    169142
    170143    f.print <<EOT
     
    222195};
    223196EOT
    224     # mikan stackSize option & 最新 tecs_package 対応
     197    # mikan stackSize option & 最新 tecs_package 対応
    225198
    226199    f.close
    227200  end
    228201
    229   #===  through cell コードを生成
     202  #===  through cell コードを生成
    230203  #
    231204  #
     
    234207    gen_plugin_decl_code( file )
    235208
    236     # セルを探す
     209    # セルを探す
    237210    # path =["::",@next_cell.get_name]
    238211    # cell = Namespace.find( path )
     
    257230    indent_str = "  " * nest
    258231
    259     # #473 が解決された場合、composite リレーアロケータに変更すべき
    260     # アロケータの指定があるか?
     232    # #473 が解決された場合、composite リレーアロケータに変更すべき
     233    # アロケータの指定があるか?
    261234    if cell.get_allocator_list.length > 0 then
    262235
     
    268241
    269242        file.print delim
    270         delim = ",\n#{indent_str}           "        # 最終行には出さない
    271 
    272         if subsc then        # é
    273 åˆ—添数
     243        delim = ",\n#{indent_str}           "        # 最終行には出さない
     244
     245        if subsc then        # 配列添数
    274246          subsc_str = '[#{subsc}]'
    275247        else
     
    277249        end
    278250
    279         eport = "eThroughEntry" #RPCの受け口名に変更
     251        eport = "eThroughEntry" #RPCの受け口名に変更
    280252        file.print  "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc}"
    281253      end
     
    314286
    315287
    316   #=== プラグイン引数 noClientSemaphore のチェック
     288  #=== プラグイン引数 noClientSemaphore のチェック
    317289  def set_noClientSemaphore rhs
    318290    rhs = rhs.to_sym
     
    326298  end
    327299
    328   #=== プラグイン引数 semaphoreCelltype のチェック
     300  #=== プラグイン引数 semaphoreCelltype のチェック
    329301  def set_semaphoreCelltype rhs
    330302    @semaphoreCelltype = rhs.to_sym
     
    336308  end
    337309
    338   #=== NamespacePath を得る
    339   # 生成するセルの namespace path を生成する
     310  #=== NamespacePath を得る
     311  # 生成するセルの namespace path を生成する
    340312  def get_cell_namespace_path
    341313#    nsp = @region.get_namespace.get_namespace_path
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2SVCPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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#++
    5338
    54 # mikan through plugin: namespace が考æ
    55 ®ã•ã‚Œã¦ã„ない
    56 # これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定するå¿
    57 è¦ãŒã‚ã‚‹
     39# mikan through plugin: namespace が考慮されていない
     40# これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定する必要がある
    5841# tecsgen toppers_jsp.cdl sChannel.cdl your_description.cdl
    5942
    60 # 以下を仮定(制限事é 
    61 ï¼‰
    62 #  呼びå
    63 ƒã€å‘¼ã³å
    64 ˆã®ã‚¨ãƒ³ãƒ‡ã‚£ã‚¢ãƒ³ã€char, short, int_t, long_t, intptr_t のサイズが同じ
    65 #  有符号、無符号でサイズが同じ
     43# 以下を仮定(制限事項)
     44#  呼び元、呼び先のエンディアン、char, short, int_t, long_t, intptr_t のサイズが同じ
     45#  有符号、無符号でサイズが同じ
    6646
    6747class SVCManage
    68     # TODO: デフォルトの拡張サービスコール分を予約しておく
    69     # デフォルトの拡張サービスコール(syslogなど)もコンポーネント化するまで
     48    # TODO: デフォルトの拡張サービスコール分を予約しておく
     49    # デフォルトの拡張サービスコール(syslogなど)もコンポーネント化するまで
    7050    @@id = 20
    7151    @@func_ids = {}
     
    9373
    9474#
    95 # 拡張サービスコールを用いたドメイン間通信の
    96 # throughプラグイン
    97 # HRP2ドメインプラグインによって挿å
    98 ¥ã•ã‚Œã‚‹
     75# 拡張サービスコールを用いたドメイン間通信の
     76# throughプラグイン
     77# HRP2ドメインプラグインによって挿入される
    9978#
    10079class HRP2SVCPlugin < ThroughPlugin
    10180
    102   #=== RPCPlugin の initialize
    103   #  説明は ThroughPlugin (plugin.rb) を参ç
    104 §
     81  #=== RPCPlugin の initialize
     82  #  説明は ThroughPlugin (plugin.rb) を参照
    10583  @@generated_celltype_header = {}
    10684
     
    11694  end
    11795
    118   #=== NamespacePath を得る
    119   # 生成するセルの namespace path を生成する
     96  #=== NamespacePath を得る
     97  # 生成するセルの namespace path を生成する
    12098  def get_cell_namespace_path
    12199#    nsp = @region.get_namespace.get_namespace_path
     
    126104  def gen_plugin_decl_code( file )
    127105
    128     # このセルタイプ(同じシグニチャ)は既に生成されているか?
     106    # このセルタイプ(同じシグニチャ)は既に生成されているか?
    129107    if !HRP2KernelObjectPlugin.include_celltype?(@next_cell.get_celltype)
    130108    if @@generated_celltype[ @ct_name_body ] == nil then
     
    144122    end
    145123
    146     # このセルタイプ(同じシグニチャ)は既に生成されているか?
     124    # このセルタイプ(同じシグニチャ)は既に生成されているか?
    147125    if @@generated_celltype[ @ct_name ] == nil then
    148126        @@generated_celltype[ @ct_name ] = [ self ]
     
    155133EOT
    156134        else
    157             # TODO inlineにした方が効率がよいが,tecsgenの生成したヘッダファイルの
    158             # 読込順のためにエラーとなる
     135            # TODO inlineにした方が効率がよいが,tecsgenの生成したヘッダファイルの
     136            # 読込順のためにエラーとなる
    159137        file2.print <<EOT
    160138celltype #{@ct_name} {
     
    173151
    174152=begin
    175     # TODO: send. receive 対応
     153    # TODO: send. receive 対応
    176154    send_receive = []
    177155    if @signature != nil then
     
    205183  end
    206184
    207   #===  through cell コードを生成
     185  #===  through cell コードを生成
    208186  #
    209187  #
     
    214192
    215193    if !HRP2KernelObjectPlugin.include_celltype?(@next_cell.get_celltype)
    216     # セルを探す
     194    # セルを探す
    217195    # path =["::",@next_cell.get_name]  # mikan namespace
    218196    # cell = Namespace.find( path )
    219197    # cell = Namespace.find( @next_cell.get_namespace_path )
    220198
    221     ##### クライアント側のセルの生成 #####
     199    ##### クライアント側のセルの生成 #####
    222200    # file.print "[domain(HRP2, \"trusted\")]"
    223201    nest = @start_region.gen_region_str_pre file
    224202    nest_str = "  " * nest
    225203
    226     # クライアント側チャンネルの生成
    227     # 拡張サービスコール呼出し
     204    # クライアント側チャンネルの生成
     205    # 拡張サービスコール呼出し
    228206    file.print <<EOT
    229207#{nest_str}  //  Client Side Channel
     
    236214    file.print "\n\n"
    237215
    238     ##### サーバー側のセルの生成 #####
     216    ##### サーバー側のセルの生成 #####
    239217    nest = @end_region.gen_region_str_pre file
    240218    nest_str = "  " * nest
    241219
    242     # サーバー側チャンネルの生成
    243     # 拡張サービスコール本体
     220    # サーバー側チャンネルの生成
     221    # 拡張サービスコール本体
    244222    file.print <<EOT
    245223
     
    260238    else
    261239
    262     ##### クライアント側のセルの生成 #####
     240    ##### クライアント側のセルの生成 #####
    263241    nest = @start_region.gen_region_str_pre file
    264242    nest_str = "  " * nest
    265243
    266     # クライアント側チャンネルの生成
    267     # 拡張サービスコール呼出し
     244    # クライアント側チャンネルの生成
     245    # 拡張サービスコール呼出し
    268246    file.print <<EOT
    269247#{nest_str}  //  Client Side Channel
     
    280258   end
    281259
    282   #===  受け口関数の本体(C言語)を生成する
    283   #     é€šå¸¸ã§ã‚れば、ジェネレータは受け口関数のテンプレートを生成する
    284   #     ãƒ—ラグインの場合、変更するå¿
    285 è¦ã®ãªã„セルタイプコードを生成する
    286   #file::           FILE        出力å
    287 ˆãƒ•ã‚¡ã‚¤ãƒ«
     260  #===  受け口関数の本体(C言語)を生成する
     261  #     通常であれば、ジェネレータは受け口関数のテンプレートを生成する
     262  #     プラグインの場合、変更する必要のないセルタイプコードを生成する
     263  #file::           FILE        出力先ファイル
    288264  #b_singleton::    bool        true if singleton
    289265  #ct_name::        Symbol
     
    298274
    299275    if !HRP2KernelObjectPlugin.include_celltype?(@next_cell.get_celltype)
    300         # 拡張サービスコール呼出し
     276        # 拡張サービスコール呼出し
    301277        if ! func_type.get_type.kind_of?( VoidType ) then
    302278            file.print( "  #{func_type.get_type_str}  retval;\n" )
     
    310286    p_cellcb = #{global_ct_name}_GET_CELLCB(idx);
    311287  }else{
    312      /* エラー処理コードをここに記述 */
     288     /* エラー処理コードをここに記述 */
    313289  }
    314290
     
    361337        end
    362338
    363         # 拡張サービスコール本体
     339        # 拡張サービスコール本体
    364340        if new_func
    365341            file2 = AppFile.open( "#{$gen}/#{@ct_name_body}.c" )
     
    370346#                 file2.print <<EOT
    371347# /*
    372 #  * このファイルは tecsgen により自動生成されました
    373 #  * このファイルを編集して使用することは、意図されていません
     348#  * このファイルは tecsgen により自動生成されました
     349#  * このファイルを編集して使用することは、意図されていません
    374350#  */
    375351# /* #[<PREAMBLE>]#
    376 #  * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
    377 #  * tecsmerge によるマージに使用されます
     352#  * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
     353#  * tecsmerge によるマージに使用されます
    378354#  *
    379355#  * #[</PREAMBLE>]# */
    380356#
    381 # /* プロトタイプ宣言や変数の定義をここに書きます #_PAC_# */
     357# /* プロトタイプ宣言や変数の定義をここに書きます #_PAC_# */
    382358# #include "#{@ct_name_body}_tecsgen.h"
    383359#
     
    407383      p_cellcb = #{@ct_name_body}_GET_CELLCB(idx);
    408384    }else{
    409        /* エラー処理コードをここに記述 */
     385       /* エラー処理コードをここに記述 */
    410386    }
    411387#else
     
    463439            file2 = AppFile.open( "#{$gen}/tecsgen.cfg" )
    464440            file2.print "\n/* Generated by HRP2SVCPlugin */\n\n"
    465             # TODO: スタックサイズは適当
     441            # TODO: スタックサイズは適当
    466442            file2.print <<EOT
    467443KERNEL_DOMAIN{
     
    479455        end
    480456    else
    481         # カーネルドメインのセルは特別なことは何もせず,普通に呼び出す
     457        # カーネルドメインのセルは特別なことは何もせず,普通に呼び出す
    482458        super
    483459    end
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2SemaphorePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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#++
     
    5843    @@ep = [:eSignalSemaphore, :eWaitSemaphore, :eManageSemaphore, :eReferSemaphore ]
    5944    #=== HRP2SemaphorePlugin#print_cfg_cre
    60     # CRE_SEMの出力
    61     # file:: FILE:     å‡ºåŠ›å
    62 ˆãƒ•ã‚¡ã‚¤ãƒ«
    63     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    64     # tab :: string:   ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆç”¨ã®tab
     45    # CRE_SEMの出力
     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    #=== HRP2SemaphorePlugin#print_cfg_sac
    70     # SAC_SEMの出力
    71     # file:: FILE:     å‡ºåŠ›å
    72 ˆãƒ•ã‚¡ã‚¤ãƒ«
    73     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    74     # acv :: string:   ã‚¢ã‚¯ã‚»ã‚¹ãƒ™ã‚¯ã‚¿   
     54    # SAC_SEMの出力
     55    # file:: FILE:     出力先ファイル
     56    # val :: string:   カーネルオブジェクトの属性の解析結果
     57    # acv :: string:   アクセスベクタ   
    7558    def print_cfg_sac(file, val, acv)
    7659        file.puts "SAC_SEM(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});"
    7760    end
    78     #tSemaphoreの受け口リスト
     61    #tSemaphoreの受け口リスト
    7962    def get_entry_ports_name_list()
    8063        @@ep
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2TaskPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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#++
     
    5439#require "HRP2KernelObjectPlugin"
    5540require_tecsgen_lib "HRP2KernelObjectPlugin.rb"
    56 #== celltype プラグインのå
    57 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     41#== celltype プラグインの共通の親クラス
    5842class HRP2TaskPlugin < HRP2KernelObjectPlugin
    5943    # @@ep = [:eActivateTask, :eControlTask, :eManageTask, :eReferTask ]
    60     # ATT_MODを生成済みかどうか
     44    # ATT_MODを生成済みかどうか
    6145    @@generate_memory_module = false
    6246
     
    6953    def print_cfg_cre(file, cell, val, tab)
    7054        val[:id] = val[:id].gsub( /(^|[^\$])\$id\$/, "\\1#{@celltype.get_name.to_s}_#{cell.get_name.to_s}" )
    71         # $cbp$の代わり
     55        # $cbp$の代わり
    7256        index = cell.get_id - @celltype.get_id_base
    7357        #cell_CB_name = "#{@celltype.get_global_name}_pCB_tab[#{index}]"
    7458        cell_CB_name = "#{index}"
    75         # CRE_XXX/DEF_XXXの生成
     59        # CRE_XXX/DEF_XXXの生成
    7660        print "assign task plugin\n"
    7761        domainOption = cell.get_region.get_domain_root.get_domain_type.get_option
    7862        # if cell.get_region.get_region_type == :DOMAIN
    7963        if domainOption != "OutOfDomain"
    80             # 保護ドメインに属する場合
     64            # 保護ドメインに属する場合
    8165            if domainOption == "trusted"
    82                 # カーネルドメイン
     66                # カーネルドメイン
    8367                if val[:userStackSize] != "OMIT"
    8468                    raise "system task cannot have user stack."
     
    8872EOT
    8973            else
    90                 # ユーザドメイン
     74                # ユーザドメイン
    9175                if val[:userStackSize] == "OMIT"
    9276                    raise "user task must have user stack."
     
    10387            end
    10488        else
    105             # 無所属の場合
     89            # 無所属の場合
    10690            raise "task #{val[:id]} must belong to a domain."
    10791        end
    10892   
    109         # 例外用のを生成
     93        # 例外用のを生成
    11094        file.print <<EOT
    11195#{tab}DEF_TEX(#{val[:id]}, { #{val[:exceptionAttribute]}, tTask_start_exception });
     
    118102
    119103=begin
    120     #tTaskの受け口リスト
     104    #tTaskの受け口リスト
    121105    def get_entry_ports_name_list()
    122106        @@ep
     
    124108=end
    125109    #
    126     #  ATT_MODの生成
    127     #  gen_factory実行時には,すべてのセルタイププラグインを生成済みのはずなので,
    128     #  カーネルAPIコードのメモリ保護を省略できる.
     110    #  ATT_MODの生成
     111    #  gen_factory実行時には,すべてのセルタイププラグインを生成済みのはずなので,
     112    #  カーネルAPIコードのメモリ保護を省略できる.
    129113    #
    130114    def gen_factory file
     
    134118
    135119            Cell.get_cell_list2.each { |cell|
    136                 # すべてのセルを走査してセルタイプをチェック
     120                # すべてのセルを走査してセルタイプをチェック
    137121                ct = cell.get_celltype
    138122                if ct.class == Celltype && check_celltype_list.include?( ct ) == false
    139                     # 未チェックのセルタイプだった場合
     123                    # 未チェックのセルタイプだった場合
    140124                    # puts "check for ATT_MOD : #{ct.classget_global_name}"
    141125                    puts "check for ATT_MOD : #{ct.get_global_name}"
    142126                       
    143                     # カーネルAPIのコード,データはメモリ保護しない
     127                    # カーネルAPIのコード,データはメモリ保護しない
    144128                    next if HRP2KernelObjectPlugin.include_celltype?( ct )
    145129
    146                     # å¿
    147 è¦ã®ãªã„セルタイプのコード,データはメモリ保護しない
     130                    # 必要のないセルタイプのコード,データはメモリ保護しない
    148131                    next if ! ct.need_generate?
    149132
    150                     # HRP2のドメインリージョンを取得
     133                    # HRP2のドメインリージョンを取得
    151134                    regions = ct.get_domain_roots
    152135                    regions_hrp2 = regions[ :HRP2 ]
     
    157140                    puts ""
    158141
    159                     # セル管理ブロックとスケルトンのメモリ保護
    160                     # gen_celltype_names_domain 相当の処理
     142                    # セル管理ブロックとスケルトンのメモリ保護
     143                    # gen_celltype_names_domain 相当の処理
    161144                    if regions_hrp2.include?( Region.get_root ) == false && regions_hrp2.length > 1
    162                         # ドメインが複数で,OutOfDomainにセルが存在しないセルタイプの場合
    163                         # å
    164 ±æœ‰ã®ã‚»ãƒ«ç®¡ç†ãƒ–ロックとスケルトンコードを登録する
     145                        # ドメインが複数で,OutOfDomainにセルが存在しないセルタイプの場合
     146                        # 共有のセル管理ブロックとスケルトンコードを登録する
    165147                        file = AppFile.open( "#{$gen}/tecsgen.cfg" )
    166148                        file.print "ATT_MOD(\"#{ct.get_global_name}_tecsgen.o\");\n"
     
    179161                    }
    180162
    181                     # セルタイプコードがない場合はスキップ
     163                    # セルタイプコードがない場合はスキップ
    182164                    next if ct.is_all_entry_inline? && ! ct.is_active?
    183165
    184                     # セルタイプコードのメモリ保護
    185                     # gen_celltype_names_domain2 相当の処理
     166                    # セルタイプコードのメモリ保護
     167                    # gen_celltype_names_domain2 相当の処理
    186168                    if regions_hrp2.include?( Region.get_root ) == true || regions_hrp2.length > 1
    187                         # OutOfDomainにセルが存在するセルタイプの場合
    188                         # または,複数のドメインにセルが存在するセルタイプの場合
    189                         # セルタイプコードをå
    190 ±æœ‰ã™ã‚‹ã‚ˆã†ã«ç™»éŒ²ã™ã‚‹
     169                        # OutOfDomainにセルが存在するセルタイプの場合
     170                        # または,複数のドメインにセルが存在するセルタイプの場合
     171                        # セルタイプコードを共有するように登録する
    191172                        file = AppFile.open( "#{$gen}/tecsgen.cfg" )
    192173                    else
    193                         # OutOfDomainでない単一のドメインにセルが存在するセルタイプの場合
    194                         # セルタイプコードを専有するように登録する
     174                        # OutOfDomainでない単一のドメインにセルが存在するセルタイプの場合
     175                        # セルタイプコードを専有するように登録する
    195176                        file = AppFile.open( "#{$gen}/tecsgen_#{regions_hrp2[0].get_namespace_path.get_global_name}.cfg" )
    196177                    end
     
    201182                    check_celltype_list << ct
    202183                else
    203                     # 何もしない
     184                    # 何もしない
    204185                end
    205186            }
     
    207188            @@generate_memory_module = true
    208189        else
    209             # 何もしない
     190            # 何もしない
    210191        end
    211192    end
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/Mruby2CBridgePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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
    51 #   $Id: Mruby2CBridgePlugin.rb 1011 2016-07-11 02:20:01Z coas-nagasima $
     36#   $Id$
    5237#
    5338
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/MrubyBridgePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    55#   Copyright (C) 2008-2015 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
    51 #   $Id: MrubyBridgePlugin.rb 1011 2016-07-11 02:20:01Z coas-nagasima $
     36#   $Id$
    5237#
    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 MrubyBridgePlugin < SignaturePlugin
    8368
    84   # プラグイン引数名 => Proc
     69  # プラグイン引数名 => Proc
    8570  MrubyBridgePluginArgProc = {
    8671      "ignoreUnsigned" => Proc.new { |obj,rhs| obj.set_ignoreUnsigned rhs },
     
    8974  }
    9075
    91   @@celltypes = { }             # {celltype_name => [ BridgePlugin のインスタンスのé
    92 åˆ— }
    93   @@init_celltypes = { }        # {celltype_name => [ BridgePlugin のインスタンスのé
    94 åˆ— }
     76  @@celltypes = { }             # {celltype_name => [ BridgePlugin のインスタンスの配列 }
     77  @@init_celltypes = { }        # {celltype_name => [ BridgePlugin のインスタンスの配列 }
    9578  @@struct_list = { }           # {struct_name=>StructType}
    96   @@ptr_list = { }              # {ptr_celltype_name=> @@TYPE_MAP の対応するもの}
     79  @@ptr_list = { }              # {ptr_celltype_name=> @@TYPE_MAP の対応するもの}
    9780  @@VM_list = { }               # VM_name => true
    98   @@VM_celltypes = {  }             # VM_name => { @celltype_name => セルのé
    99 åˆ— }
     81  @@VM_celltypes = {  }             # VM_name => { @celltype_name => セルの配列 }
    10082  @@VM_struct_list = { }           # {name=>StructType}
    101   @@VM_ptr_list = { }              # { VM_name => {name=> @@TYPE_MAP の対応するもの} }
     83  @@VM_ptr_list = { }              # { VM_name => {name=> @@TYPE_MAP の対応するもの} }
    10284  @@TYPE_MAP = {           # type_str   class             GET_SET
    10385    :char_t            => [:char_t,    "Char",     :Char,  :INT   ],
     
    11698
    11799    :int               => [:int,       "Int",      :Int,  :INT   ],
    118     :char              => [:char,      "Char",     :Char, :INT   ],    # char は char_t として扱う
     100    :char              => [:char,      "Char",     :Char, :INT   ],    # char は char_t として扱う
    119101    :short             => [:short,     "Short",    :Int,  :INT   ],
    120102    :long              => [:long,      "Long",     :Int,  :INT   ],
     
    138120  # included  or excluded functions
    139121
    140   ### ロードされた時点で実行される ###
    141 
    142   # -I に $(TECSPATH)/mruby を追加
     122  ### ロードされた時点で実行される ###
     123
     124  # -I に $(TECSPATH)/mruby を追加
    143125  # TECSGEN::Makefile.add_obj "$(MRUBY_MAIN_OBJ)"
    144126  TECSGEN::Makefile.add_ldflag "-lmruby -L$(MRUBYPATH)/lib -lm"
     
    148130
    149131
    150   #=== プラグインインスタンスの初期化
    151   # 戻り値、引数の型が使用可能なものかチェックする
     132  #=== プラグインインスタンスの初期化
     133  # 戻り値、引数の型が使用可能なものかチェックする
    152134  #
    153135  def initialize( signature, option )
     
    178160
    179161    if signature.get_function_head_array == nil then
    180       return   # 以前に文法エラー発生
     162      return   # 以前に文法エラー発生
    181163    end
    182164
     
    257239        when FloatType
    258240        when PtrType
    259           ttype_org = type_org.get_type       # ポインタの指しているå
    260 ˆã®åž‹
    261           ttype = ttype_org.get_original_type # 上記の typedef されている場合、å
    262 ƒã®åž‹
     241          ttype_org = type_org.get_type       # ポインタの指している先の型
     242          ttype = ttype_org.get_original_type # 上記の typedef されている場合、元の型
    263243          register_ptr_type ttype_org
    264244
     
    298278  end
    299279
    300   #=== 構造体のメンバーの型のチェック
     280  #=== 構造体のメンバーの型のチェック
    301281  def check_struct_member struct_type
    302282    #p "tag name:#{struct_type.get_name}"
     
    345325      return
    346326    end
    347     tstr = ttype.get_type_str.sub( /const /, "" )    # const は無視
    348     tstr = tstr.sub( /volatile /, "" )               # volatile も無視
     327    tstr = ttype.get_type_str.sub( /const /, "" )    # const は無視
     328    tstr = tstr.sub( /volatile /, "" )               # volatile も無視
    349329    if @b_ignoreUnsigned then
    350       tstr = tstr.sub( /unsigned /, "" )             # volatile も無視
    351       tstr = tstr.sub( /uint/, "int" )               # volatile も無視
    352       tstr = tstr.sub( /[cs]char/, "char" )          # volatile も無視
     330      tstr = tstr.sub( /unsigned /, "" )             # volatile も無視
     331      tstr = tstr.sub( /uint/, "int" )               # volatile も無視
     332      tstr = tstr.sub( /[cs]char/, "char" )          # volatile も無視
    353333    end
    354334    return @@TYPE_MAP[ tstr.to_sym ]
    355335  end
    356336
    357   #===  CDL ファイルの生成
    358   #      typedef, signature, celltype, cell コードを生成
    359   #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     337  #===  CDL ファイルの生成
     338  #      typedef, signature, celltype, cell コードを生成
     339  #file::        FILE       生成するファイル
    360340  def gen_cdl_file(file)
    361341
    362     # ブリッジセルタイプの生成
     342    # ブリッジセルタイプの生成
    363343    if @@celltypes[ @celltype_name ] == nil then
    364344      @@celltypes[ @celltype_name ] = [ self ]
     
    389369EOT
    390370
    391       # 構造体セルタイプの生成
     371      # 構造体セルタイプの生成
    392372      @struct_list.each{ |name, sttype|
    393373        if @@struct_list[ name ] == nil then
     
    410390  end
    411391
    412   #=== gen_cdl_file で定義したセルタイプに 新しいセルが定義された
    413   # cell のセルタイプの名前は @celltype_name
     392  #=== gen_cdl_file で定義したセルタイプに 新しいセルが定義された
     393  # cell のセルタイプの名前は @celltype_name
    414394  def new_cell cell
    415395    if cell.get_celltype.get_name != @celltype_name then
     
    430410      file = CFile.open( initializer_celltype_cdl, "w" )
    431411
    432       # TECS 初期化セル(プロトタイプ宣言)
     412      # TECS 初期化セル(プロトタイプ宣言)
    433413      print_msg "  MrubyBridgePlugin: join your VM's cInitialize to #{vm_name}_TECSInitializer.eInitialize\n"
    434414
     
    475455  end
    476456
    477   #=== プラグインが CDL の POST コードを生成
    478   # tmp_plugin_post_code.cdl への出力
     457  #=== プラグインが CDL の POST コードを生成
     458  # tmp_plugin_post_code.cdl への出力
    479459  def self.gen_post_code file
    480460
     
    498478# EOT
    499479
    500 # gen_post_code で生成した celltype は gen_ep_func が呼び出されない #847
     480# gen_post_code で生成した celltype は gen_ep_func が呼び出されない #847
    501481#    @@struct_list.each{ |name,sttype|
    502482#      file.print <<EOT
     
    566546  end
    567547
    568   ####### 以下コード生成段階 ######
    569 
    570   #===  受け口関数の本体コードを生成(頭部と末尾は別途出力)
    571   #ct_name:: Symbol    (プラグインで生成された) セルタイプ名 .Symbol として送られてくる
     548  ####### 以下コード生成段階 ######
     549
     550  #===  受け口関数の本体コードを生成(頭部と末尾は別途出力)
     551  #ct_name:: Symbol    (プラグインで生成された) セルタイプ名 .Symbol として送られてくる
    572552  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 )
    573553    if @@celltypes[ ct_name ] then
     
    673653  end
    674654
    675   #===  受け口関数の preamble (C言語)を生成する
    676   #     å¿
    677 è¦ãªã‚‰ preamble 部に出力する
    678   #file::           FILE        出力å
    679 ˆãƒ•ã‚¡ã‚¤ãƒ«
     655  #===  受け口関数の preamble (C言語)を生成する
     656  #     必要なら preamble 部に出力する
     657  #file::           FILE        出力先ファイル
    680658  #b_singleton::    bool        true if singleton
    681659  #ct_name::        Symbol
     
    11351113    if( param.get_size ) then
    11361114      sz_str = param.get_size.to_s
    1137     elsif param.get_string then      # mikan とりあえず size_is と string の同時指定 (二重ポインタ) はなし
     1115    elsif param.get_string then      # mikan とりあえず size_is と string の同時指定 (二重ポインタ) はなし
    11381116      sz_str = param.get_string.to_s
    11391117    else
    11401118      sz_str = "1"
    11411119    end
    1142     # unsigned 型の場合には cast がå¿
    1143 è¦
     1120    # unsigned 型の場合には cast が必要
    11441121    if ttype.get_original_type.get_type_str != param.get_type.get_type.get_type_str then
    11451122      cast_str = "(#{param.get_type.get_type_str})"
     
    11711148  end
    11721149
    1173   #=== プラグイン引数 ignoreUnsigned
     1150  #=== プラグイン引数 ignoreUnsigned
    11741151  def set_ignoreUnsigned rhs
    11751152    if rhs == "true" || rhs == nil then
     
    11771154    end
    11781155  end
    1179   #=== プラグイン引数 include
     1156  #=== プラグイン引数 include
    11801157  def set_include rhs
    11811158    funcs = rhs.split ','
     
    11951172    }
    11961173  end
    1197   #=== プラグイン引数 exclude
     1174  #=== プラグイン引数 exclude
    11981175  def set_exclude rhs
    11991176    funcs = rhs.split ','
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/NotifierPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    1414class NotifierPlugin < CelltypePlugin
    1515
    16         # ---------- アダプタ関数の生成 -------------
     16        # ---------- アダプタ関数の生成 -------------
    1717        #
    18         # siHandlerBodyの受け口関数は,タイムイベント通知の通知å
    19 ˆã¨ã—て直接指定する
    20         # ことはできない.シグネチャが一致していないことが理由である.このため,アダ
    21         # プタとして動作する関数を生成し,カーネルからの呼出しをTECSの呼出しに変換で
    22         # きるようにするå¿
    23 è¦ãŒã‚る.
     18        # siHandlerBodyの受け口関数は,タイムイベント通知の通知先として直接指定する
     19        # ことはできない.シグネチャが一致していないことが理由である.このため,アダ
     20        # プタとして動作する関数を生成し,カーネルからの呼出しをTECSの呼出しに変換で
     21        # きるようにする必要がある.
    2422        #
    25         # 基本的には,受け口毎にアダプタ関数を生成すれば十分である.しかし,これでは
    26         # メモリ消費量が不å¿
    27 è¦ã«å¢—加してしまう.そこで,通知å
    28 ˆé–¢æ•°ã«intptr_t型の引数
    29         # を渡せることに着目し,関数の"一般化"を図る.すなわち受け口のある属性(ここ
    30         # では,結合å
    31 ˆã®ã‚»ãƒ«ï¼Œæ·»å­—などを指す)を,アダプタ関数の引数として受け取れる
    32         # ようにし,1個のアダプタ関数を2個以上の結合に対し用いることができるように
    33         # する.
     23        # 基本的には,受け口毎にアダプタ関数を生成すれば十分である.しかし,これでは
     24        # メモリ消費量が不必要に増加してしまう.そこで,通知先関数にintptr_t型の引数
     25        # を渡せることに着目し,関数の"一般化"を図る.すなわち受け口のある属性(ここ
     26        # では,結合先のセル,添字などを指す)を,アダプタ関数の引数として受け取れる
     27        # ようにし,1個のアダプタ関数を2個以上の結合に対し用いることができるように
     28        # する.
    3429        #
    35         # アダプタ関数の属性について整理すると,
    36         #  - 受け口関数 - 一般化を行うと,実行時コストが大きく増大してしまうことが
    37         #    確認されている.このため,一般化は行わない.EntryPropertyにも含めない.
    38         #  - セルインデックス - CELLIDX型で,型の規定はないが,"ポインタ値であったり
    39         #    整数値であったりする。" (TECS 5.3.6) より,インデックスかポインタある
    40         #    ことが分かる.インデックスだとすると,この値はセルCBのアドレッシングに
    41         #    使用されるので,intptr_tに収まる筈である.ポインタの場合,当然intptr_t
    42         #    に収まる.
    43         #  - 受け口é
    44 åˆ—の添字 - int_t.同様にintptr_tに収まる筈である.
    45         # これらのうち,セルインデックスと受け口é
    46 åˆ—の添字はパラメータに含めることが
    47         # できそうであるが,両方は無理である.
    48         # 両方を格納したé
    49 åˆ—を生成し,そのé
    50 åˆ—の要素へのポインタを渡すようにするとい
    51         # う選択肢も可能であるが,実行速度を優å
    52 ˆã™ã‚‹ãŸã‚ã«ï¼Œã“の方法はとらなかった.
     30        # アダプタ関数の属性について整理すると,
     31        #  - 受け口関数 - 一般化を行うと,実行時コストが大きく増大してしまうことが
     32        #    確認されている.このため,一般化は行わない.EntryPropertyにも含めない.
     33        #  - セルインデックス - CELLIDX型で,型の規定はないが,"ポインタ値であったり
     34        #    整数値であったりする。" (TECS 5.3.6) より,インデックスかポインタある
     35        #    ことが分かる.インデックスだとすると,この値はセルCBのアドレッシングに
     36        #    使用されるので,intptr_tに収まる筈である.ポインタの場合,当然intptr_t
     37        #    に収まる.
     38        #  - 受け口配列の添字 - int_t.同様にintptr_tに収まる筈である.
     39        # これらのうち,セルインデックスと受け口配列の添字はパラメータに含めることが
     40        # できそうであるが,両方は無理である.
     41        # 両方を格納した配列を生成し,その配列の要素へのポインタを渡すようにするとい
     42        # う選択肢も可能であるが,実行速度を優先するために,この方法はとらなかった.
    5343        #
    54         # このため,一般化は以下のパターンに分類して行う.
     44        # このため,一般化は以下のパターンに分類して行う.
    5545        #
    56         # 1. セルインデックスのみ一般化.セルインデックスのパターン数が受け口é
    57 åˆ—の
    58         #    添字のパターン数より多いか,あるいは受け口がé
    59 åˆ—でない場合に行われる.
    60         # 2. 受け口é
    61 åˆ—の添字のみ一般化.この場合,セルごとに異なる関数を用いる.
     46        # 1. セルインデックスのみ一般化.セルインデックスのパターン数が受け口配列の
     47        #    添字のパターン数より多いか,あるいは受け口が配列でない場合に行われる.
     48        # 2. 受け口配列の添字のみ一般化.この場合,セルごとに異なる関数を用いる.
    6249        #
    63         # これより,各受け口関数について,アダプタ関数の生成個数は,
    64         #         O(min{セルインデックスのパターン数, 添字のパターン数})
    65         # となる.
     50        # これより,各受け口関数について,アダプタ関数の生成個数は,
     51        #         O(min{セルインデックスのパターン数, 添字のパターン数})
     52        # となる.
    6653        #
    67         # プラグインでの処理をワンパスで行うために,tecsgen.cfgではアダプタ関数を直
    68         # 接指定するのではなく,代わりにアダプタ関数を表すマクロを使用する.この
    69         # マクロはアダプタ関数ハンドルと呼ぶことにする.
    70         # アダプタ関数ハンドルは,次の2個の要素から成る.
    71         #  - アダプタ関数へののポインタ
    72         #  - アダプタ関数の引数
     54        # プラグインでの処理をワンパスで行うために,tecsgen.cfgではアダプタ関数を直
     55        # 接指定するのではなく,代わりにアダプタ関数を表すマクロを使用する.この
     56        # マクロはアダプタ関数ハンドルと呼ぶことにする.
     57        # アダプタ関数ハンドルは,次の2個の要素から成る.
     58        #  - アダプタ関数へののポインタ
     59        #  - アダプタ関数の引数
    7360
    7461        # @private
    7562        class AdapterGenerator
    7663
    77                 # 結合å
    78 ˆã«é–¢ã™ã‚‹å±žæ€§ã‚’含む.セル,受け口é
    79 åˆ—の添字から成る.
    80                 # 同一のEntryPropertyとなる結合は,å
    81 ¨ãåŒã˜æ–¹æ³•ã§ãã®å—け口関数を呼び
    82                 # 出せる.
     64                # 結合先に関する属性を含む.セル,受け口配列の添字から成る.
     65                # 同一のEntryPropertyとなる結合は,全く同じ方法でその受け口関数を呼び
     66                # 出せる.
    8367                # @private
    8468                class EntryProperty
    85                         # @return [Cell] 受け口側のセル.
     69                        # @return [Cell] 受け口側のセル.
    8670                        attr_reader :cell
    8771
    88                         # @return [Integer, nil] 受け口é
    89 åˆ—の添字.é
    90 åˆ—でない場合はnil.
     72                        # @return [Integer, nil] 受け口配列の添字.配列でない場合はnil.
    9173                        attr_reader :subscript
    9274
     
    10082                        end
    10183
    102                         # 同値性の定義.Hashのキーとして使用するのにå¿
    103 è¦ï¼Ž
     84                        # 同値性の定義.Hashのキーとして使用するのに必要.
    10485                        def eql?(o) @cell == o.cell && @subscript == o.subscript end
    10586                        def hash() @cell.hash ^ @subscript.hash end
     
    10889                # @private
    10990                class EntryPort
    110                         # @param [Port] port 結合å
    111 ˆã®ã‚»ãƒ«ã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—の受け口.
     91                        # @param [Port] port 結合先のセルのセルタイプの受け口.
    11292                        def initialize(port, prefix)
    11393                                @port = port
    11494                                @global_name = "#{prefix}_#{@port.get_celltype.get_global_name}_#{@port.get_name}"
    11595
    116                                 # 受け口関数名.siHandlerBodyを想定しているので,関数名はmainで固定である.
     96                                # 受け口関数名.siHandlerBodyを想定しているので,関数名はmainで固定である.
    11797                                @entry_fn_name = "#{@port.get_celltype.get_global_name}_#{@port.get_name}_main"
    11898
     
    121101                        end
    122102
    123                         # @return [String] グローバルに一意(なものとして扱えるよう)な識別子.
     103                        # @return [String] グローバルに一意(なものとして扱えるよう)な識別子.
    124104                        attr_reader :global_name
    125105
     
    127107                        attr_reader :port
    128108
    129                         # 指定したEntryPropertyに対応するアダプタ関数ハンドルを取得する.
     109                        # 指定したEntryPropertyに対応するアダプタ関数ハンドルを取得する.
    130110                        # @param [EntryProperty] ep
    131                         # @return [String] アダプタ関数ハンドル.
     111                        # @return [String] アダプタ関数ハンドル.
    132112                        # @private
    133113                        def adapter_handle_for_entry_property(ep)
     
    139119                        end
    140120
    141                         # 結合å
    142 ˆã®æƒ
    143 å ±ã«å¿œã˜ãŸã‚¢ãƒ€ãƒ—タ関数をソース・ヘッダーに出力する.
    144                         # 一般化指定は,`cell`または`subscript`の一方のみ行うことができる.
     121                        # 結合先の情報に応じたアダプタ関数をソース・ヘッダーに出力する.
     122                        # 一般化指定は,`cell`または`subscript`の一方のみ行うことができる.
    145123                        #
    146124                        # @param [AdapterGenerator] context
    147                         # @param [String] fn_name 関数名.
    148                         # @param [Cell, Symbol] cell セル.セルについて一般化する場合は `:generic`
    149                         # @param [Integer, Symbol, nil] subscript 添字.添字について一般化する場合は `:generic`
     125                        # @param [String] fn_name 関数名.
     126                        # @param [Cell, Symbol] cell セル.セルについて一般化する場合は `:generic`
     127                        # @param [Integer, Symbol, nil] subscript 添字.添字について一般化する場合は `:generic`
    150128                        # @private
    151129                        def generate_inner(context, fn_name, cell, subscript)
     
    158136                                ct = @port.get_celltype
    159137
    160                                 # シングルトンセルタイプ以外では,CELLIDXの指定がå¿
    161 è¦ï¼Ž
     138                                # シングルトンセルタイプ以外では,CELLIDXの指定が必要.
    162139                                unless ct.is_singleton?
    163140                                        if cell == :generic
    164141                                                params << "(CELLIDX)extinf"
    165142                                        else
    166                                                 # セルのCELLIDXを得る
     143                                                # セルのCELLIDXを得る
    167144                                                if ct.has_INIB? || ct.has_CB?
    168145                                                        params << ct.get_name_array(cell)[7]
     
    173150                                end
    174151
    175                                 # 受け口é
    176 åˆ—の添字.
     152                                # 受け口配列の添字.
    177153                                if @port.get_array_size
    178154                                        if subscript == :generic
     
    192168                        end
    193169
    194                         # 指定したJoinに対応するアダプタ関数ハンドルを取得する.
    195                         # @return [Array] アダプタ関数ハンドル.
     170                        # 指定したJoinに対応するアダプタ関数ハンドルを取得する.
     171                        # @return [Array] アダプタ関数ハンドル.
    196172                        def make_adapter_handle(join)
    197173                                prop = EntryProperty.from_join(join)
     
    203179                        end
    204180
    205                         # ソース・ヘッダーの記述を生成する.
     181                        # ソース・ヘッダーの記述を生成する.
    206182                        # @param [AdapterGenerator] context
    207183                        def generate(context)
     
    217193                                no_cellidx = false
    218194                                if !(ct.has_INIB? || ct.has_CB?)
    219                                         # CB, INIB最適化により,CB, INIBが両方不要になったケース.
    220                                         # CELLIDXが不要であるので,セルについて一般化しても意味
    221                                         # はないので,添字による一般化を選択する.
     195                                        # CB, INIB最適化により,CB, INIBが両方不要になったケース.
     196                                        # CELLIDXが不要であるので,セルについて一般化しても意味
     197                                        # はないので,添字による一般化を選択する.
    222198                                        generalize_by_cell_idx = false
    223199                                        no_cellidx = true
    224200
    225                                         # å
    226 ¨ã¦ã®ã‚»ãƒ«ã‚’同一視する.
     201                                        # 全てのセルを同一視する.
    227202                                        cells = { @props[0].cell => @props }
    228203
    229204                                        header_file.print " * No INIB & CB: generalized by subscript\n"
    230205                                elsif @port.get_array_size
    231                                         # 一般化パターンの分類を行うために,受け口側セルや添字の
    232                                         # パターン数を分析して,最適な方を選択する.
     206                                        # 一般化パターンの分類を行うために,受け口側セルや添字の
     207                                        # パターン数を分析して,最適な方を選択する.
    233208                                        generalize_by_cell_idx = cells.length >= subscripts.length
    234209                                        if generalize_by_cell_idx
     
    238213                                        end
    239214                                else
    240                                         # 常にCELLIDXで一般化
     215                                        # 常にCELLIDXで一般化
    241216                                        generalize_by_cell_idx = true
    242217                                        header_file.print " * non-array entry port: generalized by cell\n"
     
    246221
    247222                                if generalize_by_cell_idx
    248                                         # CELLIDXについて一般化
     223                                        # CELLIDXについて一般化
    249224                                        subscripts.each { |subscript, props|
    250225                                                if subscript
    251226                                                        fn_name = "#{@global_name}_adap_#{subscript}"
    252227                                                else
    253                                                         # 受け口é
    254 åˆ—でない場合
     228                                                        # 受け口配列でない場合
    255229                                                        fn_name = "#{@global_name}_adap"
    256230                                                end
     
    262236                                                        handle = adapter_handle_for_entry_property(prop)
    263237
    264                                                         # セルのCELLIDXを得る
     238                                                        # セルのCELLIDXを得る
    265239                                                        if ct.has_INIB? || ct.has_CB?
    266240                                                                idx = ct.get_name_array(prop.cell)[7]
     
    273247                                        }
    274248                                else
    275                                         # 添字について一般化
     249                                        # 添字について一般化
    276250                                        cells.each { |cell, props|
    277251                                                if no_cellidx
    278                                                         # CB/INIB なし
     252                                                        # CB/INIB なし
    279253                                                        fn_name = "#{@global_name}_adap"
    280254                                                else
     
    302276                attr :header_file
    303277
    304                 # @param [String] celltype_name ハンドラ関数のセルタイプ.
    305                 # @param [String] prefix 名前衝突を防ぐためのプレフィックス.
     278                # @param [String] celltype_name ハンドラ関数のセルタイプ.
     279                # @param [String] prefix 名前衝突を防ぐためのプレフィックス.
    306280                def initialize(celltype_name, prefix)
    307281                        @celltype_name = celltype_name
     
    313287
    314288                # ===AdapterGenerator#make_adapter_handle===
    315                 # 指定した結合の呼出しを行うためのアダプタ関数ハンドルを生成する.
    316                 # @return [Array] アダプタ関数ハンドル.
     289                # 指定した結合の呼出しを行うためのアダプタ関数ハンドルを生成する.
     290                # @return [Array] アダプタ関数ハンドル.
    317291                def make_adapter_handle(join)
    318292                        entry_port = @entry_ports[join.get_rhs_port]
     
    326300
    327301                # ===AdapterGenerator#finish===
    328                 # 各受け口に対し,アダプタ関数を生成する.
     302                # 各受け口に対し,アダプタ関数を生成する.
    329303                def finish
    330304                        @source_file = AppFile.open( "#{$gen}/#{@celltype_name}.c" )
     
    336310                @header_file.print "\n/* Generated by #{self.class.name} */\n\n"
    337311
    338                         # NotifierPluginを使用するセルタイプが複数ある場合,それぞれに
    339                         # 対しAdapterGenerator#finishが呼び出される.tTimeEventHandler.hに
    340                         # 続けて書き込んでしまうと,ヘッダーガードの関係で2回目以降の記述
    341                         # が読み込まれなくなってしまう.このため,ファイル名 + セルタイプ名
    342                         # という少し特殊なヘッダーガードを用いる.
     312                        # NotifierPluginを使用するセルタイプが複数ある場合,それぞれに
     313                        # 対しAdapterGenerator#finishが呼び出される.tTimeEventHandler.hに
     314                        # 続けて書き込んでしまうと,ヘッダーガードの関係で2回目以降の記述
     315                        # が読み込まれなくなってしまう.このため,ファイル名 + セルタイプ名
     316                        # という少し特殊なヘッダーガードを用いる.
    343317                        header_guard = "#{@celltype_name}_H_#{@prefix}"
    344318
     
    346320                @header_file.print "\#define #{header_guard}\n\n"
    347321
    348                 # カーネルコンフィギュレータを実行する際,ハンドラ受け口のセルタイプ
    349                 # のセルCBの定義がå¿
    350 è¦ãªå ´åˆãŒã‚る.
     322                # カーネルコンフィギュレータを実行する際,ハンドラ受け口のセルタイプ
     323                # のセルCBの定義が必要な場合がある.
    351324                @header_file.print "\#include \"#{@celltype_name}_aux.h\"\n\n"
    352325
    353                         # 結合å
    354 ˆã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—の定義は,自分のセルのtecsgen.hよりもå
    355 ˆã«
    356                         # 読み込まなければならないが,このプラグインが複数実行されると,
    357                         # 順序が崩れてしまう.そこで,結合å
    358 ˆã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—の定義はもう一つの
    359                         # ヘッダーファイル(tCelltypeName_aux.h)から読み込むようにする.
     326                        # 結合先のセルタイプの定義は,自分のセルのtecsgen.hよりも先に
     327                        # 読み込まなければならないが,このプラグインが複数実行されると,
     328                        # 順序が崩れてしまう.そこで,結合先のセルタイプの定義はもう一つの
     329                        # ヘッダーファイル(tCelltypeName_aux.h)から読み込むようにする.
    360330                        aux_header_file = AppFile.open( "#{$gen}/#{@celltype_name}_aux.h" )
    361331                aux_header_file.print "\n/* Generated by #{self.class.name} */\n\n"
     
    368338                        cb_type_only_guard = "#{@celltype_name}_AUX_H_#{@prefix}_CB_TYPE_ONLY"
    369339
    370                         # 結合å
    371 ˆã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—の定義を読み込む
     340                        # 結合先のセルタイプの定義を読み込む
    372341                        aux_header_file.print "#ifndef TOPPERS_CB_TYPE_ONLY\n"
    373342                    aux_header_file.print "#define TOPPERS_CB_TYPE_ONLY\n"
     
    400369        end
    401370
    402         # ------ 通知のハンドラの種類の定義 -------
     371        # ------ 通知のハンドラの種類の定義 -------
    403372
    404373        class Handler
     
    410379        end
    411380
    412         # 通常のハンドラ
     381        # 通常のハンドラ
    413382        EVENT_HANDLER = Handler::new("ciNotificationHandler")
    414383
    415         # エラーハンドラ (通常のハンドラが失敗した場合に呼び出される)
     384        # エラーハンドラ (通常のハンドラが失敗した場合に呼び出される)
    416385        ERROR_HANDLER = Handler::new("ciErrorNotificationHandler")
    417386
     
    436405        end
    437406
    438         # ------ 通知の属性の定義 -------
     407        # ------ 通知の属性の定義 -------
    439408        #
    440         # ハンドラタイプに合致しない属性が指定された場合に
    441         # エラーを出力できるよう、å
    442 ¨ã¦ã®å±žæ€§ã‚’ここで列挙する。
     409        # ハンドラタイプに合致しない属性が指定された場合に
     410        # エラーを出力できるよう、全ての属性をここで列挙する。
    443411
    444412        SETVAR_ADDR_ATTR =   HandlerAttribute::new("setVariableAddress")
     
    456424        ]
    457425
    458         # ------ ハンドラタイプの定義 -------
     426        # ------ ハンドラタイプの定義 -------
    459427
    460428        class BaseHandlerType
     
    470438
    471439            #=== NotifierPlugin#BaseHandlerType#validate_join
    472             # 指定したセルの結合å
    473 ˆãŒã€ã“のハンドラタイプに該当するかを検証
    474             # handler:: Handler : ハンドラ
    475             # cell:: Cell : セル
    476             # join:: Join : 結合 (declarationがPortであるもの)
     440            # 指定したセルの結合先が、このハンドラタイプに該当するかを検証
     441            # handler:: Handler : ハンドラ
     442            # cell:: Cell : セル
     443            # join:: Join : 結合 (declarationがPortであるもの)
    477444                def validate_join(handler, cell, join)
    478445                return !generate_attr_map(handler, cell).nil?
     
    480447
    481448            #=== NotifierPlugin#BaseHandlerType#generate_attr_map
    482             # 指定したセルの属性と、既知のHandlerAttributeのマッピングを
    483             # 生成し、Hash<HandlerAttribute, Join> (各属性とそれに対応する
    484             # Join(declarationがDeclのもの)を表すHash)、あるいは、
    485                 # マッピングが行えない場合(属性の不足、過剰)はnilを返す。
     449            # 指定したセルの属性と、既知のHandlerAttributeのマッピングを
     450            # 生成し、Hash<HandlerAttribute, Join> (各属性とそれに対応する
     451            # Join(declarationがDeclのもの)を表すHash)、あるいは、
     452                # マッピングが行えない場合(属性の不足、過剰)はnilを返す。
    486453            #
    487             # handler:: Handler : ハンドラ
    488             # cell:: Cell : セル
     454            # handler:: Handler : ハンドラ
     455            # cell:: Cell : セル
    489456                def generate_attr_map(handler, cell)
    490457                        map = {}
     
    496463                                join = join_list.get_item(attr_name.to_sym)
    497464
    498                                 # このセルタイプにおいてå¿
    499 é ˆã®å±žæ€§ã‹?
     465                                # このセルタイプにおいて必須の属性か?
    500466                                is_required = @required_attributes.include?(known_attr)
    501467
    502                                 # 属性の指定が不足している? or 過剰?
    503                                 # 注: ハンドラタイプの判別には、セルで値が指定されているか
    504                                 #     ãŒè€ƒæ
    505 ®ã•ã‚Œã‚‹ã€‚セルタイプで初期値が指定されていても、
    506                                 #     ãã‚Œã¯ãƒãƒ³ãƒ‰ãƒ©ã‚¿ã‚¤ãƒ—の決定に影響しない。
     468                                # 属性の指定が不足している? or 過剰?
     469                                # 注: ハンドラタイプの判別には、セルで値が指定されているか
     470                                #     が考慮される。セルタイプで初期値が指定されていても、
     471                                #     それはハンドラタイプの決定に影響しない。
    507472                                return nil if join.nil? != !is_required
    508473
    509                                 # å¿
    510 è¦ã®ãªã„属性であり、指定もされていないので飛ばす
     474                                # 必要のない属性であり、指定もされていないので飛ばす
    511475                                next if join.nil?
    512476
    513                                 # TODO: attrの結合であることを検証
     477                                # TODO: attrの結合であることを検証
    514478
    515479                                map[known_attr] = join
     
    520484
    521485            #=== NotifierPlugin#BaseHandlerType#gen_cfg_handler_type
    522             # タイムイベントの通知の種類を表すコンフィギュレータの記述を生成し、Stringまたはnilを返す
    523             # handler:: Handler : ハンドラ
     486            # タイムイベントの通知の種類を表すコンフィギュレータの記述を生成し、Stringまたはnilを返す
     487            # handler:: Handler : ハンドラ
    524488                def gen_cfg_handler_type(handler)
    525489                raise "called abstract method gen_cfg_handler_type"
     
    527491
    528492            #=== NotifierPlugin#BaseHandlerType#gen_cfg_handler_parameters
    529             # タイムイベントの通知の引数を表すコンフィギュレータの記述を生成し、String[]を返す
    530             # handler:: Handler : ハンドラ
    531             # join:: Join : 結合 (declarationがPortであるもの)
     493            # タイムイベントの通知の引数を表すコンフィギュレータの記述を生成し、String[]を返す
     494            # handler:: Handler : ハンドラ
     495            # join:: Join : 結合 (declarationがPortであるもの)
    532496            # attrMap:: Hash<HandlerAttribute, Join> :
    533             #     å„属性とそれに対応するJoin (declarationがDeclのもの)
    534             # cell:: Cell : セル
    535                 # adpt_gen:: AdapterGenerator : アダプタ関数を生成するオブジェクト
     497            #     各属性とそれに対応するJoin (declarationがDeclのもの)
     498            # cell:: Cell : セル
     499                # adpt_gen:: AdapterGenerator : アダプタ関数を生成するオブジェクト
    536500                def gen_cfg_handler_parameters(handler, join, attrMap, cell, adpt_gen)
    537501                return nil
     
    539503
    540504            #=== NotifierPlugin#BaseHandlerType#might_fail
    541             # 通知の際、エラーが発生し、その結果エラー通知を呼ぶå¿
    542 è¦ãŒç”Ÿã˜ã‚‹
    543             # かどうかを返す。
     505            # 通知の際、エラーが発生し、その結果エラー通知を呼ぶ必要が生じる
     506            # かどうかを返す。
    544507                def might_fail
    545508                        return false
     
    557520                        id_attr = join.get_rhs_cell.get_celltype.find(:id)
    558521                        if id_attr_join
    559                                 # セル生成時に初期化する場合
     522                                # セル生成時に初期化する場合
    560523                                id = id_attr_join.get_rhs.to_s
    561524                        else
    562                                 # セルタイプの初期化値を使う場合
     525                                # セルタイプの初期化値を使う場合
    563526                                id = id_attr.get_initializer.to_s
    564527                        end
    565528
    566                         # $id$等の置換
     529                        # $id$等の置換
    567530                        name_array = taskCell.get_celltype.get_name_array(taskCell)
    568531                        id = taskCell.get_celltype.subst_name(id, name_array)
     
    617580                        var_value = attrMap[SETVAR_VALUE_ATTR].get_rhs.to_s
    618581
    619                         # $id$等の置換
     582                        # $id$等の置換
    620583                        name_array = cell.get_celltype.get_name_array(cell)
    621584                        var_addr = cell.get_celltype.subst_name(var_addr, name_array)
     
    646609                        var_addr = attrMap[SETVAR_ADDR_ATTR].get_rhs.to_s
    647610
    648                         # $id$等の置換
     611                        # $id$等の置換
    649612                        name_array = cell.get_celltype.get_name_array(cell)
    650613                        var_addr = cell.get_celltype.subst_name(var_addr, name_array)
     
    673636                        var_addr = attrMap[INCVAR_ADDR_ATTR].get_rhs.to_s
    674637
    675                         # $id$等の置換
     638                        # $id$等の置換
    676639                        name_array = cell.get_celltype.get_name_array(cell)
    677640                        var_addr = cell.get_celltype.subst_name(var_addr, name_array)
     
    697660                        id_attr = join.get_rhs_cell.get_celltype.find(:id)
    698661                        if id_attr_join
    699                                 # セル生成時に初期化する場合
     662                                # セル生成時に初期化する場合
    700663                                id = id_attr_join.get_rhs.to_s
    701664                        else
    702                                 # セルタイプの初期化値を使う場合
     665                                # セルタイプの初期化値を使う場合
    703666                                id = id_attr.get_initializer.to_s
    704667                        end
    705668
    706                         # $id$等の置換
     669                        # $id$等の置換
    707670                        name_array = semaphoreCell.get_celltype.get_name_array(semaphoreCell)
    708671                        id = semaphoreCell.get_celltype.subst_name(id, name_array)
     
    737700                        id_attr = join.get_rhs_cell.get_celltype.find(:id)
    738701                        if id_attr_join
    739                                 # セル生成時に初期化する場合
     702                                # セル生成時に初期化する場合
    740703                                id = id_attr_join.get_rhs.to_s
    741704                        else
    742                                 # セルタイプの初期化値を使う場合
     705                                # セルタイプの初期化値を使う場合
    743706                                id = id_attr.get_initializer.to_s
    744707                        end
    745708                        flg_pattern = attrMap[SETFLG_FLAG_ATTR].get_rhs.to_s
    746709
    747                         # $id$等の置換
     710                        # $id$等の置換
    748711                        name_array = eventflagCell.get_celltype.get_name_array(eventflagCell)
    749712                        id = eventflagCell.get_celltype.subst_name(id, name_array)
     
    778741                        id_attr = join.get_rhs_cell.get_celltype.find(:id)
    779742                        if id_attr_join
    780                                 # セル生成時に初期化する場合
     743                                # セル生成時に初期化する場合
    781744                                id = id_attr_join.get_rhs.to_s
    782745                        else
    783                                 # セルタイプの初期化値を使う場合
     746                                # セルタイプの初期化値を使う場合
    784747                                id = id_attr.get_initializer.to_s
    785748                        end
    786749
    787                         # $id$等の置換
     750                        # $id$等の置換
    788751                        name_array = dataqueueCell.get_celltype.get_name_array(dataqueueCell)
    789752                        id = dataqueueCell.get_celltype.subst_name(id, name_array)
     
    812775                        sent_value = attrMap[SNDDTQ_VALUE_ATTR].get_rhs.to_s
    813776
    814                         # $id$等の置換
     777                        # $id$等の置換
    815778                        name_array = cell.get_celltype.get_name_array(cell)
    816779                        sent_value = cell.get_celltype.subst_name(sent_value, name_array)
     
    854817                end
    855818                def gen_cfg_handler_parameters(handler, join, attrMap, cell, adpt_gen)
    856                         # tTimeEventHandlerの結合å
    857 ˆã‚’取得
     819                        # tTimeEventHandlerの結合先を取得
    858820                        handler_cell = join.get_rhs_cell
    859821                call_join = handler_cell.get_join_list.get_item(:ciHandlerBody)
    860822
    861                         # 結合されていない場合はtecsgenがエラーを出すはずなのでここでは
    862                         # エラーにせず無視する.
     823                        # 結合されていない場合はtecsgenがエラーを出すはずなのでここでは
     824                        # エラーにせず無視する.
    863825                        return [] unless call_join
    864826
    865                         # アダプタ関数ハンドルを取得
     827                        # アダプタ関数ハンドルを取得
    866828                        adapter_handle = adpt_gen.make_adapter_handle(call_join)
    867829                return [adapter_handle[1], adapter_handle[0]]
     
    897859
    898860    #@celltype:: Celltype
    899     #@option:: String     :オプション文字列
     861    #@option:: String     :オプション文字列
    900862    def initialize( celltype, option )
    901863        super
    902864        @plugin_arg_check_proc_tab = NotifierPluginArgProc
    903865        @plugin_arg_str = option
    904         @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' )    # 前後の "" を取り除く
     866        @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' )    # 前後の "" を取り除く
    905867        @plugin_arg_str.sub!( /(.*)"\z/, '\1' )
    906868        @factory = nil
     
    940902        kernelCfg.print "\#include \"tTimeEventHandler.h\"\n"
    941903
    942                 # アダプタ関数を生成する準備
     904                # アダプタ関数を生成する準備
    943905                @adpt_gen = AdapterGenerator.new("tTimeEventHandler", @celltype.get_global_name)
    944906
    945         # 属性置換が行えることを検証する。
    946         # ここで行うのは、factoryで指定された属性名が
    947         # 存在することを確認し、しなければエラーを出力することのみである。
    948         # セルごとの処理の最中にエラーを出力することも可能ではあるが、
    949         # そうするとセルタイプ側の問題であるのにもかかわらず、セルごとに
    950         # エラーが表示されてしまう。
     907        # 属性置換が行えることを検証する。
     908        # ここで行うのは、factoryで指定された属性名が
     909        # 存在することを確認し、しなければエラーを出力することのみである。
     910        # セルごとの処理の最中にエラーを出力することも可能ではあるが、
     911        # そうするとセルタイプ側の問題であるのにもかかわらず、セルごとに
     912        # エラーが表示されてしまう。
    951913        # {{attribute_name}} -> attribute_value
    952914        @factory.scan(/\{\{([a-zA-Z0-9_]*?)\}\}/) { |match|
    953915                name = $1.to_sym
    954916
    955                 # {{_handler_params_}} はハンドラに関する指定。プラグインå†
    956 ã§å€¤ãŒç”Ÿæˆã•ã‚Œã‚‹
     917                # {{_handler_params_}} はハンドラに関する指定。プラグイン内で値が生成される
    957918                next if name == :_handler_params_
    958919
     
    968929        }
    969930
    970                 # アダプタ関数の生成を完了させる
     931                # アダプタ関数の生成を完了させる
    971932                @adpt_gen.finish
    972933
     
    982943        handler_flag = nil
    983944
    984                 # ignoreErrorsを取得
     945                # ignoreErrorsを取得
    985946                ignoreErrors_attr_join = cell.get_join_list.get_item(:ignoreErrors)
    986947                ignoreErrors_attr = cell.get_celltype.find(:ignoreErrors)
    987948                if ignoreErrors_attr_join
    988                         # セル生成時に初期化する場合
     949                        # セル生成時に初期化する場合
    989950                        ignoreErrors = ignoreErrors_attr_join.get_rhs.to_s
    990951                else
    991                         # セルタイプの初期化値を使う場合
     952                        # セルタイプの初期化値を使う場合
    992953                        ignoreErrors = ignoreErrors_attr.get_initializer.to_s
    993954                end
     
    1002963
    1003964        [EVENT_HANDLER, ERROR_HANDLER].each { |handler|
    1004                 # 呼び口の結合を取得
     965                # 呼び口の結合を取得
    1005966                call_join = cell.get_join_list.get_item(handler.call_port_name.to_sym)
    1006967
    1007                 # ハンドラタイプを判別する
     968                # ハンドラタイプを判別する
    1008969                matches = HANDLER_TYPES.select { |handler_type|
    1009970                        handler_type.validate_join(handler, cell, call_join)
     
    1015976                end
    1016977
    1017                         # 最初に見つかった有効なハンドラタイプを使用
     978                        # 最初に見つかった有効なハンドラタイプを使用
    1018979                ht = matches[0]
    1019980
    1020                         # 通知ハンドラで「エラーが発生するはずがない」のに「エラーハンドラが指定されている」
    1021                         # もしくはその逆のパターンを検出する。
    1022                         # (handler_flagがnilである場合、ハンドラタイプが不明であり、エラーが発生するか不明
    1023                         #  なため、検出は行わない。)
     981                        # 通知ハンドラで「エラーが発生するはずがない」のに「エラーハンドラが指定されている」
     982                        # もしくはその逆のパターンを検出する。
     983                        # (handler_flagがnilである場合、ハンドラタイプが不明であり、エラーが発生するか不明
     984                        #  なため、検出は行わない。)
    1024985                if handler == ERROR_HANDLER && !ht.is_a?(NullHandlerType) && !event_handler_might_fail
    1025986                        cdl_error( "ASP1004 cell $1: handler type $2 which never raises an error was inferred for the normal notification handler, but an error notification handler was specified.",
     
    1036997                end
    1037998
    1038                         # 通知方法の静的API記述を生成する
     999                        # 通知方法の静的API記述を生成する
    10391000                handler_flag = ht.gen_cfg_handler_type(handler)
    10401001                handler_flags << handler_flag if handler_flag
     
    10501011        }
    10511012
    1052                 # $id$等の置換
     1013                # $id$等の置換
    10531014                name_array = cell.get_celltype.get_name_array(cell)
    10541015                handler_args.collect! { |e|
     
    10601021                }
    10611022
    1062         # tecsgen.cfgの記述を生成する。
    1063         # factoryに対し、パラメータ置換を行う。
     1023        # tecsgen.cfgの記述を生成する。
     1024        # factoryに対し、パラメータ置換を行う。
    10641025        # {{attribute_name}} -> attribute_value
    10651026        text = @factory.gsub(/\{\{([a-zA-Z0-9_]*?)\}\}/) { |match|
     
    10671028                        subst_attr = cell.get_celltype.find(name)
    10681029
    1069                         # {{_handler_params_}} はハンドラの指定に置換する。
     1030                        # {{_handler_params_}} はハンドラの指定に置換する。
    10701031                        if name == :_handler_params_
    10711032                        args_joined = handler_flags.join(' | ')
     
    10781039
    10791040                        unless subst_attr
    1080                                 # 属性が見つからないというエラーはすでに報告されているので
    1081                                 # ここではダミー値を返しておくだけである。
     1041                                # 属性が見つからないというエラーはすでに報告されているので
     1042                                # ここではダミー値を返しておくだけである。
    10821043                                next ""
    10831044                        end
     
    10851046                        subst_attr_join = cell.get_join_list.get_item(name)
    10861047                        if subst_attr_join
    1087                                 # セル生成時に初期化する場合
     1048                                # セル生成時に初期化する場合
    10881049                                subst = subst_attr_join.get_rhs.to_s
    10891050                        else
    1090                                 # セルタイプの初期化値を使う場合
     1051                                # セルタイプの初期化値を使う場合
    10911052                                subst = subst_attr.get_initializer.to_s
    10921053                        end
    10931054
    1094                         # $id$等の置換
     1055                        # $id$等の置換
    10951056                        cell.get_celltype.subst_name(subst, name_array)
    10961057        }
    10971058
    1098         # 出力
     1059        # 出力
    10991060        kernelCfg.puts text
    11001061
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/OpaqueMarshalerPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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
    52 #   $Id: OpaqueMarshalerPlugin.rb 1011 2016-07-11 02:20:01Z coas-nagasima $
     37#   $Id$
    5338#++
    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
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/OpaqueRPCPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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
    52 #   $Id: OpaqueRPCPlugin.rb 1011 2016-07-11 02:20:01Z coas-nagasima $
     37#   $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, 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
     
    290267    end
    291268
    292     # サーバー側チャンネル (TINET, Socket など)
     269    # サーバー側チャンネル (TINET, Socket など)
    293270    file.print <<EOT
    294271
     
    299276EOT
    300277
    301     # サーバー側チャンネル (アンマーシャラ+TDR)
     278    # サーバー側チャンネル (アンマーシャラ+TDR)
    302279    file.print <<EOT
    303280
     
    309286EOT
    310287
    311     # サーバー側タスクメイン
     288    # サーバー側タスクメイン
    312289    file.print <<EOT
    313290
     
    318295EOT
    319296
    320     # サーバー側タスク
     297    # サーバー側タスク
    321298    file.print <<EOT
    322299
     
    332309  end
    333310
    334   #=== プラグイン引数 noClientSemaphore のチェック
     311  #=== プラグイン引数 noClientSemaphore のチェック
    335312  def set_noClientSemaphore rhs
    336313    rhs = rhs.to_sym
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/RPCPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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
    52 #   $Id: RPCPlugin.rb 1011 2016-07-11 02:20:01Z coas-nagasima $
     37#   $Id$
    5338#++
    5439
     
    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, 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 )
     
    225199
    226200    file.print <<EOT
    227 #{indent_str}// 一方向チャンネルセル
     201#{indent_str}// 一方向チャンネルセル
    228202#{indent_str}cell #{@channelCelltype} #{@channelCellName} {
    229203#{indent_str}};
    230204
    231 #{indent_str}// RPC チャンネルセル
    232 EOT
    233 
    234     # #473 が解決された場合、composite リレーアロケータに変更すべき
    235     # アロケータの指定があるか?
     205#{indent_str}// RPC チャンネルセル
     206EOT
     207
     208    # #473 が解決された場合、composite リレーアロケータに変更すべき
     209    # アロケータの指定があるか?
    236210    if cell.get_allocator_list.length > 0 then
    237211
     
    242216
    243217        file.print delim
    244         delim = ",\n#{indent_str}           "        # 最終行には出さない
    245 
    246         if subsc then        # é
    247 åˆ—添数
     218        delim = ",\n#{indent_str}           "        # 最終行には出さない
     219
     220        if subsc then        # 配列添数
    248221          subsc_str = '[#{subsc}]'
    249222        else
     
    251224        end
    252225
    253         eport = "eThroughEntry" #RPCの受け口名に変更
     226        eport = "eThroughEntry" #RPCの受け口名に変更
    254227        file.print  "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc}"
    255228      end
     
    270243
    271244
    272   #=== プラグイン引数 noClientSemaphore のチェック
     245  #=== プラグイン引数 noClientSemaphore のチェック
    273246  def set_noClientSemaphore rhs
    274247    rhs = rhs.to_sym
     
    282255  end
    283256
    284   #=== プラグイン引数 semaphoreCelltype のチェック
     257  #=== プラグイン引数 semaphoreCelltype のチェック
    285258  def set_semaphoreCelltype rhs
    286259    @semaphoreCelltype = rhs.to_sym
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/SharedOpaqueRPCPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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
    52 #   $Id: SharedOpaqueRPCPlugin.rb 1011 2016-07-11 02:20:01Z coas-nagasima $
     37#   $Id$
    5338#++
    5439
     
    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, 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  #
     
    250222    indent_str = "  " * nest
    251223
    252     # セルを探す
     224    # セルを探す
    253225    # path =["::",@next_cell.get_name]
    254226    # cell = Namespace.find( path )
    255227    cell = Namespace.find( @next_cell.get_namespace_path )
    256228
    257     # å
    258 ±æœ‰ã•ã‚Œã‚‹é€šä¿¡ãƒãƒ£ãƒ³ãƒãƒ«ã®ç”Ÿæˆã®ãƒ—ロトタイプ宣言
     229    # 共有される通信チャンネルの生成のプロトタイプ宣言
    259230    file.print <<EOT
    260231#{indent_str}cell #{@shared_channel_client_ct_name} #{@shared_channel_cell};
    261232EOT
    262233
    263     # マーシャラセルの生成(アロケータコードの生成から)
    264     # アロケータの指定があるか?
     234    # マーシャラセルの生成(アロケータコードの生成から)
     235    # アロケータの指定があるか?
    265236    if cell.get_allocator_list.length > 0 then
    266237
     
    278249
    279250        file.print delim
    280         delim = ",\n#{indent_str}           "        # 最終行には出さない
    281 
    282         if subsc then        # é
    283 åˆ—添数
     251        delim = ",\n#{indent_str}           "        # 最終行には出さない
     252
     253        if subsc then        # 配列添数
    284254          subsc_str = '[#{subsc}]'
    285255        else
     
    287257        end
    288258
    289         eport = @entry_port_name #RPCの受け口名に変更
     259        eport = @entry_port_name #RPCの受け口名に変更
    290260        file.print  "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc_str}"
    291261      end
     
    294264    end
    295265
    296     # マーシャラセル本体生成
     266    # マーシャラセル本体生成
    297267    file.print <<EOT
    298268/* OpaqueRPC Marshaler Cell */
     
    305275    @start_region.gen_region_str_post file
    306276
    307     # アンマーシャラセルの出力
    308     # セル本体の生成
     277    # アンマーシャラセルの出力
     278    # セル本体の生成
    309279    nest = @end_region.gen_region_str_pre file
    310280
     
    315285EOT
    316286
    317     # PPAllocator がå¿
    318 è¦ã‹?
     287    # PPAllocator が必要か?
    319288    if @PPAllocatorSize then
    320289      if @sub_channel_no == 0 then
     
    341310  end
    342311
    343   #=== post コード(CDL) を生成
    344   # プラグインの後のコードを生成
     312  #=== post コード(CDL) を生成
     313  # プラグインの後のコードを生成
    345314  #file:: File:
    346315  def self.gen_post_code( file )
     
    355324  end
    356325
    357   #=== post コード(CDL) を生成
    358   # å
    359 ±æœ‰ãƒãƒ£ãƒ³ãƒãƒ«ã‚’生成する
    360   # このメソッドは、チャンネルをå
    361 ±æœ‰ã™ã‚‹æœ€åˆã®ãƒ—ラグインオブジェクトのみ呼び出される
     326  #=== post コード(CDL) を生成
     327  # 共有チャンネルを生成する
     328  # このメソッドは、チャンネルを共有する最初のプラグインオブジェクトのみ呼び出される
    362329  def gen_post_code( file, plugin_obj_array )
    363330
    364     # å
    365 ±æœ‰ã•ã‚Œã¦ã„る通信チャンネルの生成
    366     # 各プラグインインスタンスでは @shared_channel_ct_name として記憶している
     331    # 共有されている通信チャンネルの生成
     332    # 各プラグインインスタンスでは @shared_channel_ct_name として記憶している
    367333    # region = @caller_cell.get_region
    368334    nest = @start_region.gen_region_str_pre file
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/SharedRPCPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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
    52 #   $Id: SharedRPCPlugin.rb 1011 2016-07-11 02:20:01Z coas-nagasima $
     37#   $Id$
    5338#++
    5439
     
    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, 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  #
     
    263237    indent_str = "  " * nest
    264238
    265     # セルを探す
     239    # セルを探す
    266240    # path =["::",@next_cell.get_name]
    267241    # cell = Namespace.find( path )
    268242    cell = Namespace.find( @next_cell.get_namespace_path )
    269243
    270     # PPAllocator がå¿
    271 è¦ã‹?
     244    # PPAllocator が必要か?
    272245    if @signature.need_PPAllocator? then
    273246      if @sub_channel_no == 0 then
     
    284257    end
    285258
    286     # å
    287 ±æœ‰ã•ã‚Œã‚‹é€šä¿¡ãƒãƒ£ãƒ³ãƒãƒ«ã®ç”Ÿæˆã®ãƒ—ロトタイプ宣言
     259    # 共有される通信チャンネルの生成のプロトタイプ宣言
    288260    file.print <<EOT
    289261#{indent_str}cell #{@shared_channel_ct_name} #{@shared_channel_cell};
    290262EOT
    291263
    292     # ここから各結合ごとのセルを生成
    293 
    294     # アロケータの指定があるか?
     264    # ここから各結合ごとのセルを生成
     265
     266    # アロケータの指定があるか?
    295267    if cell.get_allocator_list.length > 0 then
    296268
     
    301273
    302274        file.print delim
    303         delim = ",\n#{indent_str}           "        # 最終行には出さない
    304 
    305         if subsc then        # é
    306 åˆ—添数
     275        delim = ",\n#{indent_str}           "        # 最終行には出さない
     276
     277        if subsc then        # 配列添数
    307278          subsc_str = '[#{subsc}]'
    308279        else
     
    310281        end
    311282
    312         eport = "eThroughEntry" #RPCの受け口名に変更
     283        eport = "eThroughEntry" #RPCの受け口名に変更
    313284        file.print  "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc}"
    314285      end
     
    317288    end
    318289
    319     # セル本体の生成
     290    # セル本体の生成
    320291    file.print <<EOT
    321292#{indent_str}cell #{@rpc_channel_celltype_name} #{@cell_name} {
     
    329300  end
    330301
    331   #=== 後ろのコードを生成
    332   #プラグインの後ろのコードを生成
     302  #=== 後ろのコードを生成
     303  #プラグインの後ろのコードを生成
    333304  #file:: File:
    334305  def self.gen_post_code( file )
     
    339310  end
    340311
    341   #=== 後ろのコードを生成
    342   # plugin_obj[0] が代表して出力する(インスタンス変数にアクセスしたいため)
     312  #=== 後ろのコードを生成
     313  # plugin_obj[0] が代表して出力する(インスタンス変数にアクセスしたいため)
    343314  def gen_post_code( file, plugin_obj )
    344315
     
    348319    indent_str = "  " * nest
    349320
    350     # å
    351 ±æœ‰ã•ã‚Œã¦ã„る通信チャンネルの生成
    352     # 各プラグインインスタンスでは @shared_channel_ct_name として記憶している
     321    # 共有されている通信チャンネルの生成
     322    # 各プラグインインスタンスでは @shared_channel_ct_name として記憶している
    353323    file.print "#{indent_str}cell tSharedRPCPlugin_#{@channelCelltype} #{chan_name} {\n"
    354324    plugin_obj.each{ |po|
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/SignaturePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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
    52 #   $Id: SignaturePlugin.rb 1011 2016-07-11 02:20:01Z coas-nagasima $
     37#   $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
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/TECS2CBridgePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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
    52 #   $Id: TECS2CBridgePlugin.rb 1011 2016-07-11 02:20:01Z coas-nagasima $
     37#   $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
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/ThroughPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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
    52 #   $Id: ThroughPlugin.rb 1011 2016-07-11 02:20:01Z coas-nagasima $
     37#   $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 #@signature::      Signature          シグニチャ
    68 #@celltype::       Celltype           å‘¼ã³å
    69 ˆã®ã‚»ãƒ«ã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—. through が連接する場合、最終的な呼びå
    70 ˆã®ã‚»ãƒ«ã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—
    71 #@entry_port_name::Symbol             ç”Ÿæˆã™ã‚‹ã‚»ãƒ«ã®å—け口名  "eThroughEntry"
    72 #@call_port_name:: Symbol             ç”Ÿæˆã™ã‚‹ã‚»ãƒ«ã®å‘¼ã³å£å  "cCall"
    73 #@ct_name::        Symbol             ç”Ÿæˆã™ã‚‹ã‚»ãƒ«ã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—名   "t#{self.class.name}_#{@signature.get_global_name}"
    74 #@plugin_arg_list:: Hash              プラグイン引数をパースした結果のハッシュ変数
    75 #@caller_cell::    Cell               å‘¼ã³å
    76 ƒã®ã‚»ãƒ«ï¼Žthrough プラグインが連接する場合では、最も呼びå
    77 ƒã®ã‚»ãƒ«ï¼Ž($source$)
    78 #                                     through プラグインが合流するケースでは、1つ目の呼びå
    79 ƒã‚»ãƒ«ã®ã¿å¼•æ•°ã¨ã—て与えられる
    80 #                                     å¾“って TracePlugin の呼びå
    81 ƒã®åˆ¤åˆ¥ã«åˆ©ç”¨ã™ã‚‹å ´åˆã¯ã€ç•°ãªã‚‹å‘¼ã³å
    82 ƒã‹ã‚‰å‘¼ã°ã‚Œã‚‹å¯èƒ½æ€§ãŒã‚ることに注意しなくてはならない
    83 #@callee_cell:: Cell                  呼びå
    84 ˆã®ã‚»ãƒ«($destination$)
    85 #@plugin_arg_check_proc_tab:: [string => Proc]  プラグイン引数名⇒チェック関数
    86 # 以下の変数は、initialize ではなく、後から設定される
    87 #@start_@region::  Region             å§‹ã¾ã‚Šã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼š caller_cell のリージョンとは異なる可能性がある ($start_region$)
    88 #@end_region::  Region                終わりのリージョン: next_cell のリージョンとは異なる可能性がある ($end_region$)
    89 #@region:: Region                     @start_region と @end_region のいずれかで、cell を置くのが好ましいリージョン ($preferred_region$)
    90 #@through_type:: Symbol              :THROUGH, :TO_THROUGH, :IN_THROUGH, :OUT_THROUGH のいずれか
    91 
    92   # この Plugin が生成したセルタイプのリスト
     45#@cell_name::      Symbol             生成するセル名(複数セルを生成する場合、受け口側のセル)
     46#@plugin_arg_str:: string             through で指定された引数
     47#@next_cell:: Cell                    呼び口を結合するセル
     48#@next_cell_port_name:: Symbol       呼び口を結合する受口の名前
     49#@signature::      Signature          シグニチャ
     50#@celltype::       Celltype           呼び先のセルのセルタイプ. through が連接する場合、最終的な呼び先のセルのセルタイプ
     51#@entry_port_name::Symbol             生成するセルの受け口名  "eThroughEntry"
     52#@call_port_name:: Symbol             生成するセルの呼び口名  "cCall"
     53#@ct_name::        Symbol             生成するセルのセルタイプ名   "t#{self.class.name}_#{@signature.get_global_name}"
     54#@plugin_arg_list:: Hash              プラグイン引数をパースした結果のハッシュ変数
     55#@caller_cell::    Cell               呼び元のセル.through プラグインが連接する場合では、最も呼び元のセル.($source$)
     56#                                     through プラグインが合流するケースでは、1つ目の呼び元セルのみ引数として与えられる
     57#                                     従って TracePlugin の呼び元の判別に利用する場合は、異なる呼び元から呼ばれる可能性があることに注意しなくてはならない
     58#@callee_cell:: Cell                  呼び先のセル($destination$)
     59#@plugin_arg_check_proc_tab:: [string => Proc]  プラグイン引数名⇒チェック関数
     60# 以下の変数は、initialize ではなく、後から設定される
     61#@start_@region::  Region             始まりのリージョン: caller_cell のリージョンとは異なる可能性がある ($start_region$)
     62#@end_region::  Region                終わりのリージョン: next_cell のリージョンとは異なる可能性がある ($end_region$)
     63#@region:: Region                     @start_region と @end_region のいずれかで、cell を置くのが好ましいリージョン ($preferred_region$)
     64#@through_type:: Symbol              :THROUGH, :TO_THROUGH, :IN_THROUGH, :OUT_THROUGH のいずれか
     65
     66  # この Plugin が生成したセルタイプのリスト
    9367  @@generated_celltype = {}
    9468
    95   #=== ThroughPlugin の初期化
    96   #     through が指定された時点で生成が行われる
    97   #         åˆæœŸåŒ–では、指定された引数を記録するに留める
    98   #cell_name::      Symbol             ç”Ÿæˆã™ã¹ãã‚»ãƒ«åï¼ˆå—口側)
    99   #plugin_arg::     string             through で指定された引数
    100   #next_cell::      Cell               å‘¼ã³å£ã‚’接続するセル
    101   #next_cell_port_name:: Symbol        呼び口を接続する受口の名前
    102   #signature::      Signature          シグニチャ
    103   #celltype::       Celltype           ã‚»ãƒ«ã‚¿ã‚¤ãƒ— (呼びå
    104 ˆã®ã‚»ãƒ«ã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—)
    105   #caller_cell::    Cell               å‘¼ã³å
    106 ƒã®ã‚»ãƒ«ï¼Ž@caller_cell のé 
    107 ã‚’参ç
    108 §
     69  #=== ThroughPlugin の初期化
     70  #     through が指定された時点で生成が行われる
     71  #         初期化では、指定された引数を記録するに留める
     72  #cell_name::      Symbol             生成すべきセル名(受口側)
     73  #plugin_arg::     string             through で指定された引数
     74  #next_cell::      Cell               呼び口を接続するセル
     75  #next_cell_port_name:: Symbol        呼び口を接続する受口の名前
     76  #signature::      Signature          シグニチャ
     77  #celltype::       Celltype           セルタイプ (呼び先のセルのセルタイプ)
     78  #caller_cell::    Cell               呼び元のセル.@caller_cell の項を参照
    10979  def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell )
    11080    super()
    111     @cell_name = cell_name                      # 生成すべきセル名(受け口側のセル名)
    112                                                 # この呼びå
    113 ˆã«åˆ¥ã‚»ãƒ«ã‚’生成する場合、この名前を接頭辞とすべき
    114     @next_cell = next_cell                      # 呼びå
    115 ˆã®ã‚»ãƒ«
     81    @cell_name = cell_name                      # 生成すべきセル名(受け口側のセル名)
     82                                                # この呼び先に別セルを生成する場合、この名前を接頭辞とすべき
     83    @next_cell = next_cell                      # 呼び先のセル
    11684    @next_cell_port_name = next_cell_port_name
    11785    @signature = signature
     
    12189    @celltype = celltype
    12290    @plugin_arg_str = plugin_arg
    123     @plugin_arg_list = {}                       # プラグイン引数をパースした結果のハッシュ変数
     91    @plugin_arg_list = {}                       # プラグイン引数をパースした結果のハッシュ変数
    12492    @caller_cell     = caller_cell
    125     Join.set_through_info self                  # 引数で渡らない(後から追加された)ものは set_through_info で設定される
     93    Join.set_through_info self                  # 引数で渡らない(後から追加された)ものは set_through_info で設定される
    12694    print( "#{self.class.name}.new( '#{cell_name}', '#{plugin_arg}', '#{next_cell.get_name}', '#{next_cell_port_name}', #{celltype.get_name} )\n" )
    12795  end
    12896
    129   #=== æƒ
    130 å ±ã‚’設定する
    131   # å
    132 ±æœ‰ãƒãƒ£ãƒ³ãƒãƒ«ã®å ´åˆ caller_cell, next_cell のいずれの region でもないケースがある
    133   # 後から追加したので initialize の引数ではなく、別メソッドで設定
    134   # このメソッドは、オーバーライドしないでください
    135   # Join と ThrougPlugin の間の連絡用で、今後とも引数が追加される可能性があるため
    136   # このメソッドは V1.C.0.34 で位置が移動され、ThroughPlugin#initialize で呼び出される
     97  #=== 情報を設定する
     98  # 共有チャンネルの場合 caller_cell, next_cell のいずれの region でもないケースがある
     99  # 後から追加したので initialize の引数ではなく、別メソッドで設定
     100  # このメソッドは、オーバーライドしないでください
     101  # Join と ThrougPlugin の間の連絡用で、今後とも引数が追加される可能性があるため
     102  # このメソッドは V1.C.0.34 で位置が移動され、ThroughPlugin#initialize で呼び出される
    137103  def set_through_info( start_region, end_region, through_type, join, callee_cell, count )
    138104    @start_region = start_region
     
    143109    @count = count
    144110
    145     # preferred_region の設定
     111    # preferred_region の設定
    146112    case through_type
    147113    when :IN_THROUGH, :THROUGH
     
    154120  end
    155121
    156   #===  セルの名前を得る
     122  #===  セルの名前を得る
    157123  def get_cell_name
    158124    @cell_name
    159125  end
    160126
    161   #=== NamespacePath を得る
    162   # 生成するセルの namespace path を生成する
     127  #=== NamespacePath を得る
     128  # 生成するセルの namespace path を生成する
    163129  def get_cell_namespace_path
    164130#    nsp = @region.get_namespace.get_namespace_path
     
    167133  end
    168134
    169   #===  生成されたセルの受け口の名前を得る
     135  #===  生成されたセルの受け口の名前を得る
    170136  def get_through_entry_port_name
    171137    @entry_port_name
    172138  end
    173139
    174   #===  宣言コードの生成
    175   #      typedef, signature, celltype など(cell 以外)のコードを生成
    176   #          重複して生成してはならない(すでに生成されている場合は出力しないこと)
    177   #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     140  #===  宣言コードの生成
     141  #      typedef, signature, celltype など(cell 以外)のコードを生成
     142  #          重複して生成してはならない(すでに生成されている場合は出力しないこと)
     143  #file::        FILE       生成するファイル
    178144  def gen_plugin_decl_code( file )
    179145
    180     # このセルタイプ(同じシグニチャ)は既に生成されているか?
     146    # このセルタイプ(同じシグニチャ)は既に生成されているか?
    181147    if @@generated_celltype[ @ct_name ] == nil then
    182148      @@generated_celltype[ @ct_name ] = [ self ]
     
    223189  end
    224190
    225   #=== CDL ファイルの生成
    226   #file::     FILE    生成するファイル
     191  #=== CDL ファイルの生成
     192  #file::     FILE    生成するファイル
    227193  def gen_cdl_file( file )
    228194    gen_plugin_decl_code( file )
     
    230196  end
    231197
    232   #===  セルコードの生成
    233   #     through 指定により生じるセルコード(CDL)を生成する
    234   #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     198  #===  セルコードの生成
     199  #     through 指定により生じるセルコード(CDL)を生成する
     200  #file::        FILE       生成するファイル
    235201  def gen_through_cell_code( file )
    236202
     
    247213  end
    248214
    249   #=== 後ろのコードを生成
    250   #プラグインの後ろのコード (CDL) を生成
     215  #=== 後ろのコードを生成
     216  #プラグインの後ろのコード (CDL) を生成
    251217  #file:: File:
    252218  def self.gen_post_code( file )
    253     # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
     219    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
    254220    # file.print "/* '#{self.class.name}' post code */\n"
    255221  end
    256222
    257   #===  受け口関数の本体(C言語)を生成する
    258   #     é€šå¸¸ã§ã‚れば、ジェネレータは受け口関数のテンプレートを生成する
    259   #     ãƒ—ラグインの場合、変更するå¿
    260 è¦ã®ãªã„セルタイプコードを生成する
    261   #file::           FILE        出力å
    262 ˆãƒ•ã‚¡ã‚¤ãƒ«
     223  #===  受け口関数の本体(C言語)を生成する
     224  #     通常であれば、ジェネレータは受け口関数のテンプレートを生成する
     225  #     プラグインの場合、変更する必要のないセルタイプコードを生成する
     226  #file::           FILE        出力先ファイル
    263227  #b_singleton::    bool        true if singleton
    264228  #ct_name::        Symbol
     
    285249    p_cellcb = #{global_ct_name}_GET_CELLCB(idx);
    286250  }else{
    287      /* エラー処理コードをここに記述 */
     251     /* エラー処理コードをここに記述 */
    288252  }
    289253
     
    318282  end
    319283
    320   #=== Through プラグインの引数の名前を置換する
     284  #=== Through プラグインの引数の名前を置換する
    321285  def check_plugin_arg( ident, rhs )
    322286    rhs = subst_name rhs
     
    324288  end
    325289
    326   #=== ThroughPlugin#名前の置換
    327   # プラグインオプション引数å†
    328 ã®æ–‡å­—列を置換する
    329   #   $source$       â€¦ 呼びå
    330 ƒã®ã‚»ãƒ«å
    331   #   $destination$  … 呼びå
    332 ˆã®ã‚»ãƒ«å
    333   #   $SOURCE$       â€¦ 呼びå
    334 ƒã®ã‚»ãƒ«å (リージョン名を '_' で連結した global_name)
    335   #   $DESTINATION$  … 呼びå
    336 ˆã®ã‚»ãƒ«å (リージョン名を '_' で連結した global_name)
    337   #   $next$         â€¦ 次のセル名
    338   #                     è¤‡æ•°ã® through がつながっている場合、すぐ後ろに来るもの
    339   #   $NEXT$         â€¦ 次のセル名 (リージョン名を '_' で連結した global_name)
    340   #                     è¤‡æ•°ã® through がつながっている場合、すぐ後ろに来るもの
    341   #   $start_region$ … $source$ のセルの存在する region (global_name)
    342   #   $end_region$   â€¦ $destination$ のセルの存在する region (global_name)
    343   #   $preferred_region$  … 適切な region (global_name), start_region または end_region
    344   #   $count$        … region 間の through の適用数
    345   #   $$             â€¦ $ に置換
     290  #=== ThroughPlugin#名前の置換
     291  # プラグインオプション引数内の文字列を置換する
     292  #   $source$       … 呼び元のセル名
     293  #   $destination$  … 呼び先のセル名
     294  #   $SOURCE$       … 呼び元のセル名 (リージョン名を '_' で連結した global_name)
     295  #   $DESTINATION$  … 呼び先のセル名 (リージョン名を '_' で連結した global_name)
     296  #   $next$         … 次のセル名
     297  #                     複数の through がつながっている場合、すぐ後ろに来るもの
     298  #   $NEXT$         … 次のセル名 (リージョン名を '_' で連結した global_name)
     299  #                     複数の through がつながっている場合、すぐ後ろに来るもの
     300  #   $start_region$ … $source$ のセルの存在する region (global_name)
     301  #   $end_region$   … $destination$ のセルの存在する region (global_name)
     302  #   $preferred_region$  … 適切な region (global_name), start_region または end_region
     303  #   $count$        … region 間の through の適用数
     304  #   $$             … $ に置換
    346305  def subst_name( str )
    347     # セル名の置換
     306    # セル名の置換
    348307    str = str.gsub( /(^|[^\$])\$source\$/, "\\1#{@caller_cell.get_name}" )
    349308    str = str.gsub( /(^|[^\$])\$destination\$/, "\\1#{@callee_cell.get_name}" )
     
    352311    str = str.gsub( /(^|[^\$])\$next\$/, "\\1#{@next_cell.get_name}" )
    353312    str = str.gsub( /(^|[^\$])\$NEXT\$/, "\\1#{@next_cell.get_global_name}" )
    354     # region 名の置換
     313    # region 名の置換
    355314    str = str.gsub( /(^|[^\$])\$start_region\$/, "\\1#{@start_region.get_global_name}" )
    356315    str = str.gsub( /(^|[^\$])\$end_region\$/, "\\1#{@end_region.get_global_name}" )
     
    358317    str = str.gsub( /(^|[^\$])\$count\$/, "\\1#{@count}" )
    359318
    360     str = str.gsub( /\$\$/, "\$" )                       # $$ を $ に置換
     319    str = str.gsub( /\$\$/, "\$" )                       # $$ を $ に置換
    361320
    362321    return str
  • EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/TracePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    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
    52 #   $Id: TracePlugin.rb 1011 2016-07-11 02:20:01Z coas-nagasima $
     37#   $Id$
    5338#++
    5439
    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, 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 ]
     
    439420  end
    440421
    441   # プラグイン引数名と Proc
     422  # プラグイン引数名と Proc
    442423  TracePluginArgProc = {
    443424    "maxArrayDisplay"    => Proc.new { |obj,rhs| obj.set_maxArrayDisplay rhs },
     
    479460  end
    480461
    481   #=== プラグイン引数 tKernel のチェック
     462  #=== プラグイン引数 tKernel のチェック
    482463  def set_kernelCelltype( rhs )
    483464    @kernelCelltype = rhs.to_sym
     
    489470  end
    490471
    491   #=== プラグイン引数 tSyslog のチェック
     472  #=== プラグイン引数 tSyslog のチェック
    492473  def set_syslogCelltype( rhs )
    493474    @syslogCelltype = rhs.to_sym
  • EcnlProtoTool/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
    r270 r321  
    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#++
    5338
    54 #プラグインオプション用変数
     39#プラグインオプション用変数
    5540#@task_priority:: Integer
    5641#@channelCelltype:: String
     
    5944module GenTransparentMarshaler
    6045
    61   # プラグイン引数名と Proc
     46  # プラグイン引数名と Proc
    6247  RPCPluginArgProc = {
    6348    "taskPriority"    => Proc.new { |obj,rhs| obj.set_taskPriority rhs },
     
    6853  }
    6954
    70   #=== プラグイン引数 taskPriority のチェック
     55  #=== プラグイン引数 taskPriority のチェック
    7156  def set_taskPriority( rhs )
    7257    @task_priority = rhs
    7358  end
    7459
    75   #=== プラグイン引数 channelCelltype のチェック
     60  #=== プラグイン引数 channelCelltype のチェック
    7661  def set_channelCelltype( rhs )
    7762    @channelCelltype = rhs.to_sym
     
    8570  end
    8671
    87   #=== プラグイン引数 TDRCelltype のチェック
     72  #=== プラグイン引数 TDRCelltype のチェック
    8873  def set_TDRCelltype( rhs )
    8974    @TDRCelltype = rhs.to_sym
     
    9782  end
    9883
    99   #=== プラグイン引数 channelCellName のチェック
     84  #=== プラグイン引数 channelCellName のチェック
    10085  def set_channelCellName( rhs )
    10186    @channelCellName = rhs
     
    10792  end
    10893
    109   #=== プラグイン引数 PPAllocatorSize のチェック
     94  #=== プラグイン引数 PPAllocatorSize のチェック
    11095  def set_PPAllocatorSize( rhs )
    11196    @PPAllocatorSize = rhs
    11297  end
    11398
    114   #=== marshaler のセルタイプ名を設定する
     99  #=== marshaler のセルタイプ名を設定する
    115100  def initialize_transparent_marshaler cell_name
    116101    @task_priority = 8
     
    134119
    135120    f = CFile.open( @marshaler_celltype_file_name, "w" )
    136     # 同じå†
    137 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     121    # 同じ内容を二度書く可能性あり (AppFile は不可)
    138122
    139123    # modified by ishikawa
     
    163147  end
    164148
    165   #===  受け口関数の本体コードを生成(頭部と末尾は別途出力)
    166   #ct_name:: Symbol    (through プラグインで生成された) セルタイプ名 .Symbol として送られてくる(らしい)
     149  #===  受け口関数の本体コードを生成(頭部と末尾は別途出力)
     150  #ct_name:: Symbol    (through プラグインで生成された) セルタイプ名 .Symbol として送られてくる(らしい)
    167151  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 )
    168152
    169     # unmarshaler クラスか?
     153    # unmarshaler クラスか?
    170154    if ct_name == @unmarshaler_celltype_name.to_sym then
    171155      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 )
     
    175159  end
    176160
    177   #===  marshal コードの生成
     161  #===  marshal コードの生成
    178162  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 )
    179163
     
    181165    b_ret_er = false
    182166
    183     # 関数の戻り値のå
    184 ƒã®åž‹ã‚’å¾—ã‚‹(typedef されている場合)
     167    # 関数の戻り値の元の型を得る(typedef されている場合)
    185168    type = func_type.get_type.get_original_type
    186169
    187     # 戻り値記憶用の変数を出力(void 型の関数では出力しない)
     170    # 戻り値記憶用の変数を出力(void 型の関数では出力しない)
    188171    if ! type.kind_of?( VoidType ) then
    189172      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
     
    200183    file.print( "    FLGPTN  flgptn;\n" )
    201184
    202     # 呼びå
    203 ˆã® signature を取り出す
     185    # 呼び先の signature を取り出す
    204186    signature = @signature
    205187
    206     # 関数 ID (整数値)
     188    # 関数 ID (整数値)
    207189    func_id = signature.get_id_from_func_name( func_name )
    208190    file.print( "    int16_t  func_id_ = #{func_id};    /* id of #{func_name}: #{func_id} */\n" )
     
    210192    file.print( "    uint8_t  msg[256];\n" )
    211193
    212     # シングルトンでないか?
     194    # シングルトンでないか?
    213195    if ! b_singleton then
    214196
    215       # singleton でなければ p_cellcb 取得コードを出力
     197      # singleton でなければ p_cellcb 取得コードを出力
    216198      file.print <<EOT
    217199    #{ct_name}_CB *p_cellcb;
     
    221203EOT
    222204
    223       # エラーを返すか?
     205      # エラーを返すか?
    224206      if b_ret_er then
    225207        file.print <<EOT
     
    231213        file.print <<EOT
    232214    }else{
    233         /* エラー処理コードをここに記述 */
    234     }
    235 EOT
    236       end
    237     end
    238 
    239     # channel lock コード
     215        /* エラー処理コードをここに記述 */
     216    }
     217EOT
     218      end
     219    end
     220
     221    # channel lock コード
    240222    file.print <<EOT
    241223    ///* Channel Lock */
     
    246228
    247229=begin
    248     # SOP を送信
    249     file.print "    /* SOPの送出 */\n"
     230    # SOP を送信
     231    file.print "    /* SOPの送出 */\n"
    250232    file.print "    if( ( ercd_ = cTDR_sendSOP( true ) ) != E_OK )\n"
    251233    file.print "      goto error_reset;\n"
    252234=end
    253235
    254     # func_id を送信
    255     file.print "    /* 関数 id の送出 */\n"
     236    # func_id を送信
     237    file.print "    /* 関数 id の送出 */\n"
    256238=begin
    257239    file.print "    if( ( ercd_ = cTDR_putInt16( func_id_ ) ) != E_OK )\n"
     
    263245    # p "#{ct_name}, #{sig_name}, #{func_name}, #{func_global_name}"
    264246
    265     b_get = false    # marshal なら put
     247    b_get = false    # marshal なら put
    266248    b_marshal = true  # marshal
    267249
    268     # in 方向のå
    269 ¥å‡ºåŠ›ã‚’出力
     250    # in 方向の入出力を出力
    270251    @index = 2
    271     file.print "    /* å
    272 ¥åŠ›å¼•æ•°é€å‡º */\n"
     252    file.print "    /* 入力引数送出 */\n"
    273253    print_params( params, file, 1, b_marshal, b_get, true, func_type.is_oneway? )
    274254    print_params( params, file, 1, b_marshal, b_get, false, func_type.is_oneway? )
     
    280260=end
    281261
    282     file.print "    /* EOPの送出(パケットの掃きだし) */\n"
     262    file.print "    /* EOPの送出(パケットの掃きだし) */\n"
    283263    if ! func_type.is_oneway? then
    284264      b_continue = "true"
     
    315295
    316296    if( b_void == false )then
    317       # 呼びå
    318 ƒã«æˆ»ã‚Šå€¤ã‚’リターン
     297      # 呼び元に戻り値をリターン
    319298      file.print( "    cMessageBuffer_receive(&retval_);\n" )
    320299      file.print( "    return retval_;\n" )
     
    332311EOT
    333312
    334     # channel lock コード
     313    # channel lock コード
    335314    file.print <<EOT
    336315    ///* Channel Lock */
     
    341320
    342321    if( b_ret_er != false )then
    343       # 呼びå
    344 ƒã«æˆ»ã‚Šå€¤ã‚’リターン
     322      # 呼び元に戻り値をリターン
    345323      file.print( "    return ercd_;\n" )
    346324    else
     
    350328  end
    351329
    352   #===  unmarshal コードの生成
     330  #===  unmarshal コードの生成
    353331  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 )
    354332
     
    356334    b_ret_er = false
    357335
    358     # func_id を得るコードを生成
     336    # func_id を得るコードを生成
    359337    file.print <<EOT
    360338
     
    377355        file.print <<EOT
    378356    }else{
    379         /* エラー処理コードをここに記述 */
     357        /* エラー処理コードをここに記述 */
    380358    }
    381359EOT
     
    387365
    388366#if 0
    389     /* SOPのチェック */
     367    /* SOPのチェック */
    390368    if( (ercd_=cTDR_receiveSOP( false )) != E_OK )
    391369        goto error_reset;
    392     /* func_id の取得 */
     370    /* func_id の取得 */
    393371    if( (ercd_=cTDR_getInt16( &func_id_ )) != E_OK )
    394372        goto error_reset;
     
    405383EOT
    406384
    407     # 呼びå
    408 ˆã® signature を取り出す
     385    # 呼び先の signature を取り出す
    409386    # port = @celltype.find( @next_cell_port_name )
    410387    # signature = port.get_signature
    411388    signature = @signature
    412389
    413     # through の signature に含まれる すべての関数について
     390    # through の signature に含まれる すべての関数について
    414391    signature.get_function_head_array.each { |f|
    415392      f_name = f.get_name
     
    417394      id = signature.get_id_from_func_name( f_name )
    418395
    419       # 関数は返り値を持つか?
     396      # 関数は返り値を持つか?
    420397      if f_type.get_type.kind_of?( VoidType ) then
    421398        b_void = true
     
    424401      end
    425402
    426       # パケットの終わりをチェック(未受け取りのデータが残っていないかチェック)
     403      # パケットの終わりをチェック(未受け取りのデータが残っていないかチェック)
    427404      file.print "    case #{id}:       /*** #{f_name} ***/ \n"
    428405      file.print "        if( tTransparentUnmarshaler_#{@signature.get_name}_#{f_name}() != E_OK )\n"
     
    433410
    434411    if @PPAllocatorSize then
    435       ppallocator_dealloc_str = "    /* PPAllocator のすべてを解放 */\n    cPPAllocator_dealloc_all();"
     412      ppallocator_dealloc_str = "    /* PPAllocator のすべてを解放 */\n    cPPAllocator_dealloc_all();"
    436413    else
    437414      ppallocator_dealloc_str = ""
     
    441418    file.print <<EOT
    442419    default:
    443 #if 0 // deleted by ishikawa: tSysLogが未実è£
    444 
     420#if 0 // deleted by ishikawa: tSysLogが未実装
    445421        syslog(LOG_INFO, "unmarshaler task: ERROR: unknown func_id: %d", func_id_ );
    446422#endif /* 0 */
     
    463439
    464440  # IN b_marshal, b_get
    465   #  b_marshal = true  && b_get == false   :  マーシャラでå
    466 ¥åŠ›å¼•æ•°é€å‡º
    467   #  b_marshal = true  && b_get == true    :  マーシャラで出力引数受取
    468   #  b_marshal = false && b_get == true    :  アンマーシャラでå
    469 ¥åŠ›å¼•æ•°å—取
    470   #  b_marshal = false && b_get == get     :  アンマーシャラで出力引数送出
     441  #  b_marshal = true  && b_get == false   :  マーシャラで入力引数送出
     442  #  b_marshal = true  && b_get == true    :  マーシャラで出力引数受取
     443  #  b_marshal = false && b_get == true    :  アンマーシャラで入力引数受取
     444  #  b_marshal = false && b_get == get     :  アンマーシャラで出力引数送出
    471445  def print_params( params, file, nest, b_marshal, b_get, b_referenced, b_oneway = false )
    472446    params.each{ |param|
     
    479453      type = param.get_type
    480454      if b_oneway && dir == :IN && type.get_original_type.kind_of?( PtrType ) || type.get_original_type.kind_of?( ArrayType ) then
    481         # oneway, in, PtrType の場合コピー
     455        # oneway, in, PtrType の場合コピー
    482456        alloc_cp = "cPPAllocator_alloc"
    483457        alloc_cp_extra = nil
     
    501475  end
    502476
    503   #=== コピーしない引数渡しコードの出力
     477  #=== コピーしない引数渡しコードの出力
    504478  def print_param_nc( name, type, file, nest, b_marshal, outer, outer2, b_get )
    505479    indent = "    " * ( nest + 1 )
     
    521495        when :SIGNED
    522496          if bit_size == -1 || bit_size == -11 then
    523             # signed char の場合、signed を指定する
     497            # signed char の場合、signed を指定する
    524498            signC = "S"
    525499            sign  = "s"
     
    640614
    641615
    642   #=== PREAMBLE 部のコード生成
    643   # アンマーシャラセルタイプの場合、アンマーシャラ関数のプロトタイプ宣言を生成
     616  #=== PREAMBLE 部のコード生成
     617  # アンマーシャラセルタイプの場合、アンマーシャラ関数のプロトタイプ宣言を生成
    644618  def gen_preamble file, b_singleton, ct_name, global_name
    645619    if ct_name != @unmarshaler_celltype_name.to_sym then
     
    647621    end
    648622
    649     file.print "/* アンマーシャラ関数のプロトタイプ宣言 */\n"
    650     # signature に含まれる すべての関数について
     623    file.print "/* アンマーシャラ関数のプロトタイプ宣言 */\n"
     624    # signature に含まれる すべての関数について
    651625    @signature.get_function_head_array.each { |f|
    652626      f_name = f.get_name
     
    660634  end
    661635
    662   #=== POSTAMBLE 部のコード生成
    663   # アンマーシャラセルタイプの場合、アンマーシャラ関数の生成
     636  #=== POSTAMBLE 部のコード生成
     637  # アンマーシャラセルタイプの場合、アンマーシャラ関数の生成
    664638  def gen_postamble file, b_singleton, ct_name, global_name
    665639    if ct_name != @unmarshaler_celltype_name.to_sym then
     
    667641    end
    668642
    669     file.print "\n/*** アンマーシャラ関数 ***/\n\n"
     643    file.print "\n/*** アンマーシャラ関数 ***/\n\n"
    670644    @signature.get_function_head_array.each { |f|
    671645      f_name = f.get_name
     
    673647      id = @signature.get_id_from_func_name( f_name )
    674648
    675       # 関数は返り値を持つか?
     649      # 関数は返り値を持つか?
    676650      if f_type.get_type.kind_of?( VoidType ) then
    677651        b_void = true
     
    691665      file.print "      ER  ercd_;\n"
    692666
    693       # 引数を受取る変数の定義
     667      # 引数を受取る変数の定義
    694668      param_list = f.get_declarator.get_type.get_paramlist.get_items
    695669           # FuncHead->  Decl->    FuncType->ParamList
     
    706680        end
    707681
    708         type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" を外す
     682        type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" を外す
    709683
    710684        file.printf( "    %-12s %s%s%s%s;\n", type_str, aster, name, aster2, type.get_type_str_post )
    711685      }
    712686
    713       # 戻り値を受け取る変数の定義
     687      # 戻り値を受け取る変数の定義
    714688      if ! b_void then
    715689        if f.is_oneway? then
    716           retval_ptr = ""   # oneway の場合、受け取るが捨てられる
     690          retval_ptr = ""   # oneway の場合、受け取るが捨てられる
    717691        else
    718692          # =begin ishikawa modified
     
    724698      end
    725699
    726       # in 方向のå
    727 ¥å‡ºåŠ›ã‚’å
    728 ¥åŠ›
    729       file.print "\n        /* å
    730 ¥åŠ›å¼•æ•°å—取 */\n"
    731       b_get = true    # unmarshal では get
     700      # in 方向の入出力を入力
     701      file.print "\n        /* 入力引数受取 */\n"
     702      b_get = true    # unmarshal では get
    732703      b_marshal  = false
    733704      @index = 2
     
    740711      end
    741712=end
    742       # パケットの受信完了
    743       # mikan 本当は、対象関数を呼出す後に実施したい.呼出しパケットの使用終わりを宣言する目的として
    744       file.print "        /* パケット終わりをチェック */\n"
     713      # パケットの受信完了
     714      # mikan 本当は、対象関数を呼出す後に実施したい.呼出しパケットの使用終わりを宣言する目的として
     715      file.print "        /* パケット終わりをチェック */\n"
    745716      if ! f.is_oneway? then
    746717        b_continue = "true"
     
    752723      file.print "        goto error_reset;\n\n"
    753724=end
    754       # 対象関数を呼出す
    755       file.print "    /* 対象関数の呼出し */\n"
     725      # 対象関数を呼出す
     726      file.print "    /* 対象関数の呼出し */\n"
    756727      if b_void then
    757728        file.print( "    cServerCall_#{f_name}(" )
     
    768739      file.print( " );\n" )
    769740
    770       # 戻り値、出力引数の受取コードの生成
     741      # 戻り値、出力引数の受取コードの生成
    771742
    772743      if ! b_void && ! f.is_oneway? then
     
    775746
    776747      end
    777       # oneway の場合出力、戻り値が無く、受取をå¾
    778 ãŸãªã„(非同期な呼出し)
     748      # oneway の場合出力、戻り値が無く、受取を待たない(非同期な呼出し)
    779749      if ! f.is_oneway? then
    780750        file.print <<EOT
    781     /* 関数処理の終了を通知 */
     751    /* 関数処理の終了を通知 */
    782752    if( ( ercd_ = cEventflag_set( 0x01 ) ) != E_OK ){
    783753      goto error_reset;
  • EcnlProtoTool/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
    r270 r321  
    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
    52 #   $Id: GenOpaqueMarshaler.rb 1011 2016-07-11 02:20:01Z coas-nagasima $
     37#   $Id$
    5338#++
    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
     
    490468EOT
    491469
    492     # SOP を送信
    493     file.print "        /* SOPの送出 */\n"
     470    # SOP を送信
     471    file.print "        /* SOPの送出 */\n"
    494472    file.print "        SET_RPC_STATE( state_, RPCSTATE_CLIENT_SEND_SOP );\n"
    495473    file.print "        if( ( ercd_ = cTDR_sendSOP( true ) ) != E_OK )\n"
    496474    file.print "                goto error_reset;\n"
    497475
    498     # func_id を送信
    499     file.print "        /* 関数 id の送出 */\n"
     476    # func_id を送信
     477    file.print "        /* 関数 id の送出 */\n"
    500478    file.print "        if( ( ercd_ = cTDR_putInt16( func_id_ ) ) != E_OK )\n"
    501479    file.print "                goto error_reset;\n"
     
    504482    # p "#{ct_name}, #{sig_name}, #{func_name}, #{func_global_name}"
    505483
    506     b_get = false    # marshal なら put
     484    b_get = false    # marshal なら put
    507485    b_marshal = true  # marshal
    508486
    509     # in 方向のå
    510 ¥å‡ºåŠ›ã‚’出力
     487    # in 方向の入出力を出力
    511488    if func_type.has_inward? then
    512       file.print "      /* å
    513 ¥åŠ›å¼•æ•°é€å‡º */\n"
     489      file.print "      /* 入力引数送出 */\n"
    514490      file.print "      SET_RPC_STATE( state_, RPCSTATE_CLIENT_SEND_BODY );\n"
    515491      print_params( params, file, 1, b_marshal, b_get, true, "eClientEntry", func_name )
     
    523499      b_continue = "false"
    524500    end
    525     file.print "        /* EOPの送出(パケットの掃きだし) */\n"
     501    file.print "        /* EOPの送出(パケットの掃きだし) */\n"
    526502    file.print "        SET_RPC_STATE( state_, RPCSTATE_CLIENT_SEND_EOP );\n"
    527503    file.print "        if( (ercd_=cTDR_sendEOP(#{b_continue})) != E_OK )\n"
    528504    file.print "                goto error_reset;\n\n"
    529505
    530     # send のメモリをデアロケート
     506    # send のメモリをデアロケート
    531507    if func_type.has_send? then
    532508      file.print "      /* dealloc send parameter while executing */\n"
     
    539515    if ! func_type.is_oneway? then
    540516
    541       file.print "      /* パケットの始まりをチェック */\n"
     517      file.print "      /* パケットの始まりをチェック */\n"
    542518      file.print "      SET_RPC_STATE( state_, RPCSTATE_CLIENT_RECV_SOP );\n"
    543519      file.print "      if( (ercd_=cTDR_receiveSOP( true )) != E_OK )\n"
    544520      file.print "              goto error_reset;\n"
    545521
    546       b_get = true     # marshaler は get
    547       file.print "      /* 戻り値の受け取り */\n"
     522      b_get = true     # marshaler get
     523      file.print "      /* 戻り値の受け取り */\n"
    548524      print_param( "retval_", func_type.get_type, file, 1, :RETURN, nil, nil, b_marshal, b_get )
    549525
     
    557533        indent = "      " * indent_level
    558534
    559         file.print "#{indent}/* 出力値の受け取り */\n"
     535        file.print "#{indent}/* 出力値の受け取り */\n"
    560536        file.print "#{indent}SET_RPC_STATE( state_, RPCSTATE_CLIENT_RECV_BODY );\n"
    561537        print_params( params, file, indent_level, b_marshal, b_get, true, "eClientEntry", func_name )
     
    567543      end
    568544
    569       file.print "\n    /* パケットの終わりをチェック */\n"
     545      file.print "\n    /* パケットの終わりをチェック */\n"
    570546      file.print "      SET_RPC_STATE( state_, RPCSTATE_CLIENT_RECV_EOP );\n"
    571547      file.print "      if( (ercd_=cTDR_receiveEOP(false)) != E_OK )\n"  # b_continue = false
     
    574550    end # ! func_type.is_oneway?
    575551
    576     # channel lock コード
     552    # channel lock コード
    577553    file.print <<EOT
    578554        /* Channel Unlock */
     
    583559
    584560    if( b_void == false )then
    585       # 呼びå
    586 ƒã«æˆ»ã‚Šå€¤ã‚’リターン
     561      # 呼び元に戻り値をリターン
    587562      file.print( "     return retval_;\n" )
    588563    else
     
    594569error_reset:
    595570EOT
    596     # send のメモリをデアロケート
     571    # send のメモリをデアロケート
    597572    if func_type.has_send? then
    598573      file.print "      /* dealloc send parameter */\n"
     
    603578    end
    604579
    605     # receive のメモリをデアロケート
     580    # receive のメモリをデアロケート
    606581    if func_type.has_receive? then
    607582      file.print( "     /* receive parameter */\n" )
     
    615590EOT
    616591
    617     # channel lock コード
     592    # channel lock コード
    618593    file.print <<EOT
    619594        /* Channel Unlock */
     
    626601
    627602    if( b_ret_er != false )then
    628       # 呼びå
    629 ƒã«æˆ»ã‚Šå€¤ã‚’リターン
     603      # 呼び元に戻り値をリターン
    630604      file.print( "     return ERCD( E_RPC, MERCD( ercd_ ) );\n" )
    631605    else
     
    635609  end
    636610
    637   #===  unmarshal コードの生成
     611  #===  unmarshal コードの生成
    638612  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 )
    639613
    640614    b_ret_er = true
    641615
    642     # func_id を得るコードを生成
     616    # func_id を得るコードを生成
    643617    file.print <<EOT
    644618
     
    662636        file.print <<EOT
    663637        }else{
    664                 /* エラー処理コードをここに記述 */
     638                /* エラー処理コードをここに記述 */
    665639        }
    666640EOT
     
    673647#endif
    674648
    675         /* SOPのチェック */
     649        /* SOPのチェック */
    676650        SET_RPC_STATE( state_, RPCSTATE_SERVER_RECV_SOP );
    677651        if( (ercd_=cTDR_receiveSOP( false )) != E_OK )
    678652                goto error_reset;
    679         /* func_id の取得 */
     653        /* func_id の取得 */
    680654        if( (ercd_=cTDR_getInt16( &func_id_ )) != E_OK )
    681655                goto error_reset;
     
    687661EOT
    688662
    689     # signature に含まれる すべての関数について
     663    # signature に含まれる すべての関数について
    690664    @signature.get_function_head_array.each { |f|
    691665      f_name = f.get_name
     
    701675
    702676    if @PPAllocatorSize then
    703       ppallocator_dealloc_str = "       /* PPAllocator のすべてを解放 */\n       cPPAllocator_dealloc_all();"
     677      ppallocator_dealloc_str = "       /* PPAllocator のすべてを解放 */\n     cPPAllocator_dealloc_all();"
    704678    else
    705679      ppallocator_dealloc_str = ""
     
    724698  end
    725699
    726   #=== PREAMBLE 部のコード生成
    727   # アンマーシャラセルタイプの場合、アンマーシャラ関数のプロトタイプ宣言を生成
     700  #=== PREAMBLE 部のコード生成
     701  # アンマーシャラセルタイプの場合、アンマーシャラ関数のプロトタイプ宣言を生成
    728702  def gen_preamble file, b_singleton, ct_name, global_name
    729703    if ct_name != @unmarshaler_celltype_name.to_sym then
     
    731705    end
    732706
    733     # string.h の include (memset, strlen のため)
     707    # string.h の include (memset, strlen のため)
    734708    file.print "/* header file (strlen, memset) */\n"
    735709    file.print "#include\t<string.h>\n\n"
    736710
    737     file.print "/* アンマーシャラ関数のプロトタイプ宣言 */\n"
    738     # signature に含まれる すべての関数について
     711    file.print "/* アンマーシャラ関数のプロトタイプ宣言 */\n"
     712    # signature に含まれる すべての関数について
    739713    @signature.get_function_head_array.each { |f|
    740714      f_name = f.get_name
     
    746720  end
    747721
    748   #=== POSTAMBLE 部のコード生成
    749   # アンマーシャラセルタイプの場合、個ã€
    750 ã®ã‚¢ãƒ³ãƒžãƒ¼ã‚·ãƒ£ãƒ©é–¢æ•°ã®ç”Ÿæˆ
     722  #=== POSTAMBLE 部のコード生成
     723  # アンマーシャラセルタイプの場合、個々のアンマーシャラ関数の生成
    751724  def gen_postamble file, b_singleton, ct_name, global_name
    752725    if ct_name != @unmarshaler_celltype_name.to_sym then
     
    754727    end
    755728
    756     file.print "\n/*** アンマーシャラ関数 ***/\n\n"
     729    file.print "\n/*** アンマーシャラ関数 ***/\n\n"
    757730    @signature.get_function_head_array.each { |f|
    758731      f_name = f.get_name
     
    760733      id = @signature.get_id_from_func_name( f_name )
    761734
    762       # 関数は返り値を持つか?
     735      # 関数は返り値を持つか?
    763736      b_ret_er = false
    764737      init_retval = ""
     
    784757      file.print "      ER      ercd_;\n"
    785758
    786       # 引数を受取る変数の定義
     759      # 引数を受取る変数の定義
    787760      params = f.get_declarator.get_type.get_paramlist.get_items
    788761           # FuncHead->  Decl->    FuncType->ParamList
     
    793766        dir = par.get_direction
    794767        if( dir == :RECEIVE )then
    795           # type は PtrType で、それを取り除いた型
     768          # type は PtrType で、それを取り除いた型
    796769          type = type.get_type
    797770        end
     
    811784        end
    812785
    813         type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" を外す
     786        type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" を外す
    814787        file.printf( "  %-12s %s%s%s%s%s;\n", type_str, aster, name, aster2, type.get_type_str_post, init )
    815788
     
    823796      end
    824797
    825       # in 方向のå
    826 ¥å‡ºåŠ›ã‚’å
    827 ¥åŠ›
    828       file.print "\n    /* å
    829 ¥åŠ›å¼•æ•°å—取 */\n"
     798      # in 方向の入出力を入力
     799      file.print "\n    /* 入力引数受取 */\n"
    830800      file.print "      SET_RPC_STATE( *state_, RPCSTATE_SERVER_RECV_BODY );\n"
    831       b_get = true    # unmarshal では get
     801      b_get = true    # unmarshal では get
    832802      b_marshal  = false
    833803      print_params( params, file, 1, b_marshal, b_get, true, "cServerCall", f_name )
     
    836806
    837807
    838       # パケットの受信完了
    839       file.print "      /* パケット終わりをチェック */\n"
     808      # パケットの受信完了
     809      file.print "      /* パケット終わりをチェック */\n"
    840810      file.print "      SET_RPC_STATE( *state_, RPCSTATE_SERVER_RECV_EOP );\n"
    841811      if ! f_type.is_oneway? then
     
    847817      file.print "              goto error_reset;\n\n"
    848818
    849       # out のメモリをアロケート
     819      # out のメモリをアロケート
    850820      dir = :OUT; alloc_cp = "cPPAllocator_alloc"; alloc_cp_extra = nil; nest = 1
    851821      alloc_for_out_params( params, file, nest, dir, alloc_cp, alloc_cp_extra )
    852822
    853       # 対象関数を呼出す
    854       file.print "      /* 対象関数の呼出し */\n"
     823      # 対象関数を呼出す
     824      file.print "      /* 対象関数の呼出し */\n"
    855825      file.print "      SET_RPC_STATE( *state_, RPCSTATE_SERVER_EXEC );\n"
    856826      if b_void then
     
    871841      file.print( " );\n" )
    872842
    873       # 戻り値、出力引数の受取コードの生成
    874 
    875       # oneway の場合出力、戻り値が無く、受取をå¾
    876 ãŸãªã„(非同期な呼出し)
     843      # 戻り値、出力引数の受取コードの生成
     844
     845      # oneway の場合出力、戻り値が無く、受取を待たない(非同期な呼出し)
    877846      if ! f.is_oneway? then
    878847
    879         file.print "\n  /* SOPの送出 */\n"
     848        file.print "\n  /* SOPの送出 */\n"
    880849        file.print "    SET_RPC_STATE( *state_, RPCSTATE_SERVER_SEND_SOP );\n"
    881850
     
    883852        file.print "            goto error_reset;\n"
    884853
    885         b_get = false     # unmarshaler は put
     854        b_get = false     # unmarshaler put
    886855        if( ! b_void )then
    887           file.print "  /* 戻り値の送出 */\n"
     856          file.print "  /* 戻り値の送出 */\n"
    888857          print_param( "retval_", f_type.get_type, file, 1, :RETURN, nil, nil, b_marshal, b_get )
    889858        end
     
    898867          indent = "    " * indent_level
    899868
    900           file.print "#{indent}/* 出力値の送出 */\n"
     869          file.print "#{indent}/* 出力値の送出 */\n"
    901870          file.print "#{indent}SET_RPC_STATE( *state_, RPCSTATE_SERVER_SEND_BODY );\n"
    902871          print_params( params, file, indent_level, b_marshal, b_get, true, "cServerCall", f_name )
    903872          print_params( params, file, indent_level, b_marshal, b_get, false, "cServerCall", f_name )
    904873
    905           # receive のメモリをデアロケート
     874          # receive のメモリをデアロケート
    906875          if f_type.has_receive? then
    907876            file.print "#{indent}/* dealloc receive parameter */\n"
     
    915884        end
    916885
    917         file.print "    /* パケットの終わり(掃きだし) */\n"
     886        file.print "    /* パケットの終わり(掃きだし) */\n"
    918887        file.print "    SET_RPC_STATE( *state_, RPCSTATE_SERVER_SEND_EOP );\n"
    919888        file.print "    if( (ercd_=cTDR_sendEOP(false)) != E_OK )\n"  # b_continue = false
     
    926895error_reset:
    927896EOT
    928       # send のリセット用デアロケート
     897      # send のリセット用デアロケート
    929898      if f_type.has_send? then
    930899        file.print "    /* dealloc send parameter */\n"
     
    935904      end
    936905
    937       # receive のメモリをデアロケート
     906      # receive のメモリをデアロケート
    938907      if f_type.has_receive? && b_ret_er then
    939908        file.print "    /* dealloc receive parameter */\n"
     
    947916      file.print "}\n\n"
    948917
    949       # ここ(個ã€
    950 ã®é–¢æ•°ï¼‰ã§ã¯ã‚¨ãƒ©ãƒ¼ãƒãƒ³ãƒ‰ãƒ©ãƒ¼ã¯å‘¼ã³å‡ºã•ãªã„。呼びå
    951 ƒï¼ˆã‚µãƒ¼ãƒãƒ¼ã®ãƒ¡ã‚¤ãƒ³é–¢æ•°ï¼‰ã§å‘¼ã³å‡ºã™ã€‚
     918      # ここ(個々の関数)ではエラーハンドラーは呼び出さない。呼び元(サーバーのメイン関数)で呼び出す。
    952919    }
    953920  end
     
    956923  #b_marshal:: bool
    957924  #b_get:: bool
    958   #  b_marshal = true  && b_get == false   :  マーシャラでå
    959 ¥åŠ›å¼•æ•°é€å‡º
    960   #  b_marshal = true  && b_get == true    :  マーシャラで出力引数受取
    961   #  b_marshal = false && b_get == false   :  アンマーシャラでå
    962 ¥åŠ›å¼•æ•°å—取
    963   #  b_marshal = false && b_get == true    :  アンマーシャラで出力引数送出
    964   #b_referenced:: size_is, count_is, string で参ç
    965 §ã•ã‚Œã¦ã„るものを出力
     925  #  b_marshal = true  && b_get == false   :  マーシャラで入力引数送出
     926  #  b_marshal = true  && b_get == true    :  マーシャラで出力引数受取
     927  #  b_marshal = false && b_get == false   :  アンマーシャラで入力引数受取
     928  #  b_marshal = false && b_get == true    :  アンマーシャラで出力引数送出
     929  #b_referenced:: size_is, count_is, string で参照されているものを出力
    966930  def print_params( params, file, nest, b_marshal, b_get, b_referenced, port_name, func_name )
    967931    params.each{ |param|
     
    986950        case dir
    987951        when :OUT, :INOUT
    988           alloc_cp = nil        # inout の b_get==true&&b_marsha==true のときアロケータコードは不用
     952          alloc_cp = nil        # inout の b_get==true&&b_marsha==true のときアロケータコードは不用
    989953          alloc_cp_extra = nil
    990954          print_param( param.get_name, param.get_type, file, nest, dir, nil, nil, b_marshal, b_get, alloc_cp, alloc_cp_extra )
     
    993957          alloc_cp_extra = nil
    994958          if b_get then
    995             outer = "(*"         # マーシャラ側では、ポインタが (send と比べ) 一つ多い
     959            outer = "(*"         # マーシャラ側では、ポインタが (send と比べ) 一つ多い
    996960            outer2 = ")"
    997961          else
    998             outer = nil          # アンマーシャラ側では、ポインタが一つ外されている
     962            outer = nil          # アンマーシャラ側では、ポインタが一つ外されている
    999963            outer2 = nil
    1000964          end
     
    1006970  end
    1007971
    1008   #=== アロケータコードを生成 (out のアンマーシャラ用)
     972  #=== アロケータコードを生成 (out のアンマーシャラ用)
    1009973  def alloc_for_out_params( params, file, nest, dir, alloc_cp, alloc_cp_extra )
    1010974    params.each{ |param|
     
    1016980  end
    1017981
    1018   #=== アロケータコードを生成 (out のアンマーシャラ用個別パラメータの生成)
     982  #=== アロケータコードを生成 (out のアンマーシャラ用個別パラメータの生成)
    1019983  def alloc_for_out_param( name, type, file, nest, outer, outer2, alloc_cp, alloc_cp_extra )
    1020984    org_type = type.get_original_type
     
    1029993      count = type.get_count; size = type.get_size; string = type.get_string
    1030994      if count || size || string then
    1031         loop_counter_type = IntType.new(16)   # mikan 方を size_is, count_is の引数の型とする
     995        loop_counter_type = IntType.new(16)   # mikan 方を size_is, count_is の引数の型とする
    1032996        if count then
    1033997          len = type.get_count.to_s
     
    10421006        end
    10431007
    1044         # size_is に max 指定がある場合、length が max をè¶
    1045 ãˆã¦ã„るかチェックするコードを生成
     1008        # size_is に max 指定がある場合、length が max を超えているかチェックするコードを生成
    10461009        if org_type.get_max != nil && string == nil then
    10471010          file.print "#{indent}if( #{len} > #{type.get_max} ){\t/* GenOpaqueMarshaler max check 2 */\n"
     
    10821045  end
    10831046
    1084   #=== 引数の一括デアロケートコードの生成
    1085   # send:マーシャラの最後、receive:アンマーシャラの最後で一括して引数をデアロケートする
     1047  #=== 引数の一括デアロケートコードの生成
     1048  # send:マーシャラの最後、receive:アンマーシャラの最後で一括して引数をデアロケートする
    10861049  def dealloc_for_params( params, file, nest, dir, dealloc_cp, b_reset = false )
    10871050    if b_reset then
     
    10971060        aster = ""
    10981061        if dir == :RECEIVE then
    1099           type = type.get_type.get_original_type   # ポインタを一つ外す
     1062          type = type.get_type.get_original_type   # ポインタを一つ外す
    11001063          if b_reset then
    11011064            aster = "*"
     
    11181081  end
    11191082
    1120   #== out で nullable な引数のæƒ
    1121 å ±ã‚’渡す
    1122   # out nullable の場合、in, send, receive のように、値を渡す直前ではなく、呼出し時に渡す
     1083  #== out で nullable な引数の情報を渡す
     1084  # out nullable の場合、in, send, receive のように、値を渡す直前ではなく、呼出し時に渡す
    11231085  def  print_out_nullable( params, file, nest, b_marshal );
    11241086    indent = "\t" * nest
     
    11301092        file.print "#{indent}\tgoto error_reset;\n"
    11311093      else
    1132         # 呼びå
    1133 ˆã¯ alloc_for_out_param で nullable の対応する
     1094        # 呼び先は alloc_for_out_param で nullable の対応する
    11341095        file.print "#{indent}if( (ercd_=cTDR_getInt8( &b_#{param.get_name}_null_)) != E_OK )\n"
    11351096        file.print "#{indent}\tgoto error_reset;\n"
  • EcnlProtoTool/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
    r270 r321  
    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
    52 #   $Id: GenParamCopy.rb 1011 2016-07-11 02:20:01Z coas-nagasima $
     37#   $Id$
    5338#++
    5439
    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
  • EcnlProtoTool/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
    r270 r321  
    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
    52 #   $Id: GenTransparentMarshaler.rb 1011 2016-07-11 02:20:01Z coas-nagasima $
     37#   $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 = ""
     
    422399
    423400  # IN b_marshal, b_get
    424   #  b_marshal = true  && b_get == false   :  マーシャラでå
    425 ¥åŠ›å¼•æ•°é€å‡º
    426   #  b_marshal = true  && b_get == true    :  マーシャラで出力引数受取
    427   #  b_marshal = false && b_get == true    :  アンマーシャラでå
    428 ¥åŠ›å¼•æ•°å—取
    429   #  b_marshal = false && b_get == get     :  アンマーシャラで出力引数送出
     401  #  b_marshal = true  && b_get == false   :  マーシャラで入力引数送出
     402  #  b_marshal = true  && b_get == true    :  マーシャラで出力引数受取
     403  #  b_marshal = false && b_get == true    :  アンマーシャラで入力引数受取
     404  #  b_marshal = false && b_get == get     :  アンマーシャラで出力引数送出
    430405  def print_params( params, file, nest, b_marshal, b_get, b_referenced, b_oneway = false )
    431406    params.each{ |param|
     
    438413      type = param.get_type
    439414      if b_oneway && dir == :IN && type.get_original_type.kind_of?( PtrType ) || type.get_original_type.kind_of?( ArrayType ) then
    440         # oneway, in, PtrType の場合コピー
     415        # oneway, in, PtrType の場合コピー
    441416        alloc_cp = "cPPAllocator_alloc"
    442417        alloc_cp_extra = nil
     
    460435  end
    461436
    462   #=== コピーしない引数渡しコードの出力
     437  #=== コピーしない引数渡しコードの出力
    463438  def print_param_nc( name, type, file, nest, b_marshal, outer, outer2, b_get )
    464439    indent = "    " * ( nest + 1 )
     
    480455        when :SIGNED
    481456          if bit_size == -1 || bit_size == -11 then
    482             # signed char の場合、signed を指定する
     457            # signed char の場合、signed を指定する
    483458            signC = "S"
    484459            sign  = "s"
     
    573548
    574549
    575   #=== PREAMBLE 部のコード生成
    576   # アンマーシャラセルタイプの場合、アンマーシャラ関数のプロトタイプ宣言を生成
     550  #=== PREAMBLE 部のコード生成
     551  # アンマーシャラセルタイプの場合、アンマーシャラ関数のプロトタイプ宣言を生成
    577552  def gen_preamble file, b_singleton, ct_name, global_name
    578553    if ct_name != @unmarshaler_celltype_name.to_sym then
     
    580555    end
    581556
    582     file.print "/* アンマーシャラ関数のプロトタイプ宣言 */\n"
    583     # signature に含まれる すべての関数について
     557    file.print "/* アンマーシャラ関数のプロトタイプ宣言 */\n"
     558    # signature に含まれる すべての関数について
    584559    @signature.get_function_head_array.each { |f|
    585560      f_name = f.get_name
     
    591566  end
    592567
    593   #=== POSTAMBLE 部のコード生成
    594   # アンマーシャラセルタイプの場合、アンマーシャラ関数の生成
     568  #=== POSTAMBLE 部のコード生成
     569  # アンマーシャラセルタイプの場合、アンマーシャラ関数の生成
    595570  def gen_postamble file, b_singleton, ct_name, global_name
    596571    if ct_name != @unmarshaler_celltype_name.to_sym then
     
    598573    end
    599574
    600     file.print "\n/*** アンマーシャラ関数 ***/\n\n"
     575    file.print "\n/*** アンマーシャラ関数 ***/\n\n"
    601576    @signature.get_function_head_array.each { |f|
    602577      f_name = f.get_name
     
    604579      id = @signature.get_id_from_func_name( f_name )
    605580
    606       # 関数は返り値を持つか?
     581      # 関数は返り値を持つか?
    607582      if f_type.get_type.is_void? then
    608583        b_void = true
     
    623598      file.print "      CELLCB  *p_cellcb;\n"
    624599
    625       # 引数を受取る変数の定義
     600      # 引数を受取る変数の定義
    626601      param_list = f.get_declarator.get_type.get_paramlist.get_items
    627602           # FuncHead->  Decl->    FuncType->ParamList
     
    638613        end
    639614
    640         type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" を外す
     615        type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" を外す
    641616
    642617        file.printf( "    %-12s %s%s%s%s;\n", type_str, aster, name, aster2, type.get_type_str_post )
    643618      }
    644619
    645       # 戻り値を受け取る変数の定義
     620      # 戻り値を受け取る変数の定義
    646621      if ! b_void then
    647622        if f.is_oneway? then
    648           retval_ptr = ""   # oneway の場合、受け取るが捨てられる
     623          retval_ptr = ""   # oneway の場合、受け取るが捨てられる
    649624        else
    650625          retval_ptr = "*"
     
    653628      end
    654629
    655       # in 方向のå
    656 ¥å‡ºåŠ›ã‚’å
    657 ¥åŠ›
    658       file.print "\n        /* å
    659 ¥åŠ›å¼•æ•°å—取 */\n"
    660       b_get = true    # unmarshal では get
     630      # in 方向の入出力を入力
     631      file.print "\n        /* 入力引数受取 */\n"
     632      b_get = true    # unmarshal では get
    661633      b_marshal  = false
    662634      print_params( param_list, file, 1, b_marshal, b_get, true, f.is_oneway? )
     
    667639      end
    668640
    669       # パケットの受信完了
    670       # mikan 本当は、対象関数を呼出す後に実施したい.呼出しパケットの使用終わりを宣言する目的として
    671       file.print "        /* パケット終わりをチェック */\n"
     641      # パケットの受信完了
     642      # mikan 本当は、対象関数を呼出す後に実施したい.呼出しパケットの使用終わりを宣言する目的として
     643      file.print "        /* パケット終わりをチェック */\n"
    672644      if ! f.is_oneway? then
    673645        b_continue = "true"
     
    678650      file.print "        goto error_reset;\n\n"
    679651
    680       # 対象関数を呼出す
    681       file.print "    /* 対象関数の呼出し */\n"
     652      # 対象関数を呼出す
     653      file.print "    /* 対象関数の呼出し */\n"
    682654      if b_void then
    683655        file.print( "    cServerCall_#{f_name}(" )
     
    694666      file.print( " );\n" )
    695667
    696       # 戻り値、出力引数の受取コードの生成
    697 
    698       # oneway の場合出力、戻り値が無く、受取をå¾
    699 ãŸãªã„(非同期な呼出し)
     668      # 戻り値、出力引数の受取コードの生成
     669
     670      # oneway の場合出力、戻り値が無く、受取を待たない(非同期な呼出し)
    700671      if ! f.is_oneway? then
    701672        file.print <<EOT
    702     /* 関数処理の終了を通知 */
     673    /* 関数処理の終了を通知 */
    703674    if( ( ercd_ = cEventflag_set( 0x01 ) ) != E_OK ){
    704675      goto error_reset;
Note: See TracChangeset for help on using the changeset viewer.