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

ビルドが通るよう更新

Location:
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin
Files:
61 edited

Legend:

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

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project TECS-WG
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
    5338#++
    5439
    55 #== celltype プラグインのå
    56 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     40#== celltype プラグインの共通の親クラス
    5741class ATK1AlarmPlugin < CelltypePlugin
    5842#@celltype:: Celltype
    59 #@option:: String     :オプション文字列
    60 
    61   #signature::     Celltype        シグニチャ(インスタンス)
     43#@option:: String     :オプション文字列
     44
     45  #signature::     Celltype        シグニチャ(インスタンス)
    6246  def initialize( celltype, option )
    6347    super
    6448  end
    6549
    66   #===  CDL ファイルの生成
    67   #      typedef, signature, celltype, cell のコードを生成
    68   #      重複して生成してはならない
    69   #      すでに生成されている場合は出力しないこと。
    70   #      もしくは同名の import により、重複を避けること。
    71   #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     50  #===  CDL ファイルの生成
     51  #      typedef, signature, celltype, cell のコードを生成
     52  #      重複して生成してはならない
     53  #      すでに生成されている場合は出力しないこと。
     54  #      もしくは同名の import により、重複を避けること。
     55  #file::        FILE       生成するファイル
    7256#  def gen_cdl_file file
    7357#  end
     
    7660  end
    7761
    78   #===  受け口関数の本体(C言語)を生成する
    79   #     ã“のメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する
    80   #     ã“のメソッドが定義済みの場合、(テンプレートではなく、変更するå¿
    81 è¦ã®ãªã„)セルタイプコードを生成する
    82   #file::           FILE        出力å
    83 ˆãƒ•ã‚¡ã‚¤ãƒ«
     62  #===  受け口関数の本体(C言語)を生成する
     63  #     このメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する
     64  #     このメソッドが定義済みの場合、(テンプレートではなく、変更する必要のない)セルタイプコードを生成する
     65  #file::           FILE        出力先ファイル
    8466  #b_singleton::    bool        true if singleton
    8567  #ct_name::        Symbol
     
    190172  file2.close
    191173
    192   # 追記するために AppFile を使う(文字コード変換されない)
     174  # 追記するために AppFile を使う(文字コード変換されない)
    193175  file = AppFile.open( "#{$gen}/tAlarm_tecsgen.#{$c_suffix}" )
    194176  file.print "\n/* Generated by ATK1AlarmPlugin */\n"
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/ATK1DelayTaskPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project TECS-WG
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
    5338#++
    5439
    55 #== celltype プラグインのå
    56 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     40#== celltype プラグインの共通の親クラス
    5741class ATK1DelayTaskPlugin < CelltypePlugin
    5842#@celltype:: Celltype
    59 #@option:: String     :オプション文字列
     43#@option:: String     :オプション文字列
    6044
    61   #signature::     Celltype        シグニチャ(インスタンス)
     45  #signature::     Celltype        シグニチャ(インスタンス)
    6246  def initialize( celltype, option )
    6347    super
    6448  end
    6549
    66   #===  CDL ファイルの生成
    67   #      typedef, signature, celltype, cell のコードを生成
    68   #      重複して生成してはならない
    69   #      すでに生成されている場合は出力しないこと。
    70   #      もしくは同名の import により、重複を避けること。
    71   #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     50  #===  CDL ファイルの生成
     51  #      typedef, signature, celltype, cell のコードを生成
     52  #      重複して生成してはならない
     53  #      すでに生成されている場合は出力しないこと。
     54  #      もしくは同名の import により、重複を避けること。
     55  #file::        FILE       生成するファイル
    7256#  def gen_cdl_file file
    7357#  end
     
    8367  end
    8468
    85   #===  受け口関数の本体(C言語)を生成する
    86   #     ã“のメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する
    87   #     ã“のメソッドが定義済みの場合、(テンプレートではなく、変更するå¿
    88 è¦ã®ãªã„)セルタイプコードを生成する
    89   #file::           FILE        出力å
    90 ˆãƒ•ã‚¡ã‚¤ãƒ«
     69  #===  受け口関数の本体(C言語)を生成する
     70  #     このメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する
     71  #     このメソッドが定義済みの場合、(テンプレートではなく、変更する必要のない)セルタイプコードを生成する
     72  #file::           FILE        出力先ファイル
    9173  #b_singleton::    bool        true if singleton
    9274  #ct_name::        Symbol
     
    10284  def gen_factory file
    10385
    104     # 追記するために AppFile を使う(文字コード変換されない)
     86    # 追記するために AppFile を使う(文字コード変換されない)
    10587    file2 = AppFile.open( "#{$gen}/tDelayTaskBody_factory.#{$h_suffix}" )
    10688    file2.print "\n/* Generated by ATK1DelayTaskPlugin */\n\n"
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/ATK1EventPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project TECS-WG
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id
    5338#++
    5439
    55 #== ATK1 Event celltype プラグインクラス
     40#== ATK1 Event celltype プラグインクラス
    5641class ATK1EventPlugin < CelltypePlugin
    57 #@@instancies:: []     :セル実体群
     42#@@instancies:: []     :セル実体群
    5843@@instancies = []
    5944
    60   #===  初期化
    61   #      å
    62 ¨ã¦ã®ã‚»ãƒ«ã®å®Ÿä½“を意味解析後に参ç
    63 §ã™ã‚‹å¿
    64 è¦ãŒã‚るために
    65   #      初期化時に singleton の instancies に格納する
    66   #signature::     Celltype        シグニチャ(インスタンス)
     45  #===  初期化
     46  #      全てのセルの実体を意味解析後に参照する必要があるために
     47  #      初期化時に singleton の instancies に格納する
     48  #signature::     Celltype        シグニチャ(インスタンス)
    6749  def initialize( celltype, option )
    6850    super
     
    7052  end
    7153
    72   #===  cellの生成
     54  #===  cellの生成
    7355  def new_cell cell
    7456  end
    7557
    76   #===  意味解析実行後のコード生成
     58  #===  意味解析実行後のコード生成
    7759  def self.gen_post_code file
    7860
     
    8365  end
    8466
    85   #===  OILファイル出力
     67  #===  OILファイル出力
    8668  def gen_oil_code file
    8769
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/ATK1ISRPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project TECS-WG
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
    5338#++
    5439
    55 #== celltype プラグインのå
    56 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     40#== celltype プラグインの共通の親クラス
    5741class ATK1ISRPlugin < CelltypePlugin
    5842#@celltype:: Celltype
    59 #@option:: String     :オプション文字列
     43#@option:: String     :オプション文字列
    6044
    61   #signature::     Celltype        シグニチャ(インスタンス)
     45  #signature::     Celltype        シグニチャ(インスタンス)
    6246  def initialize( celltype, option )
    6347    super
    6448  end
    6549
    66   #===  CDL ファイルの生成
    67   #      typedef, signature, celltype, cell のコードを生成
    68   #      重複して生成してはならない
    69   #      すでに生成されている場合は出力しないこと。
    70   #      もしくは同名の import により、重複を避けること。
    71   #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     50  #===  CDL ファイルの生成
     51  #      typedef, signature, celltype, cell のコードを生成
     52  #      重複して生成してはならない
     53  #      すでに生成されている場合は出力しないこと。
     54  #      もしくは同名の import により、重複を避けること。
     55  #file::        FILE       生成するファイル
    7256#  def gen_cdl_file file
    7357#  end
     
    7660  end
    7761
    78   #===  受け口関数の本体(C言語)を生成する
    79   #     ã“のメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する
    80   #     ã“のメソッドが定義済みの場合、(テンプレートではなく、変更するå¿
    81 è¦ã®ãªã„)セルタイプコードを生成する
    82   #file::           FILE        出力å
    83 ˆãƒ•ã‚¡ã‚¤ãƒ«
     62  #===  受け口関数の本体(C言語)を生成する
     63  #     このメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する
     64  #     このメソッドが定義済みの場合、(テンプレートではなく、変更する必要のない)セルタイプコードを生成する
     65  #file::           FILE        出力先ファイル
    8466  #b_singleton::    bool        true if singleton
    8567  #ct_name::        Symbol
     
    11698      end
    11799
    118       # ENTRY (entryはtecsgenの予約語のためNumberを付加)
     100      # ENTRY (entryはtecsgenの予約語のためNumberを付加)
    119101      join = cell.get_join_list.get_item( :entryNumber )
    120102      if join then
     
    152134  file2.close
    153135
    154   # 追記するために AppFile を使う(文字コード変換されない)
     136  # 追記するために AppFile を使う(文字コード変換されない)
    155137  file = AppFile.open( "#{$gen}/tISR_tecsgen.#{$c_suffix}" )
    156138  file.print "\n/* Generated by ATK1ISRPlugin */\n"
     
    165147#if defined( OMIT_ISR1_ENTRY )
    166148EOT
    167           file.print "/* ISR1å
    168 ¥ã‚Šå£æœªç”Ÿæˆæ™‚は本関数を割込み関数指定する  */\n"
     149          file.print "/* ISR1入り口未生成時は本関数を割込み関数指定する  */\n"
    169150          file.print <<EOT
    170151#pragma INTERRUPT  #{cell.get_name}
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/ATK1KernelPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project TECS-WG
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
    5338#++
    5439
    55 #== celltype プラグインのå
    56 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     40#== celltype プラグインの共通の親クラス
    5741class ATK1KernelPlugin < CelltypePlugin
    5842#@celltype:: Celltype
    59 #@option:: String     :オプション文字列
     43#@option:: String     :オプション文字列
    6044  @@cell_list = []
    6145
    62   #signature::     Celltype        シグニチャ(インスタンス)
     46  #signature::     Celltype        シグニチャ(インスタンス)
    6347  def initialize( celltype, option )
    6448    super
    6549  end
    6650
    67   #===  CDL ファイルの生成
    68   #      typedef, signature, celltype, cell のコードを生成
    69   #      重複して生成してはならない
    70   #      すでに生成されている場合は出力しないこと。
    71   #      もしくは同名の import により、重複を避けること。
    72   #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     51  #===  CDL ファイルの生成
     52  #      typedef, signature, celltype, cell のコードを生成
     53  #      重複して生成してはならない
     54  #      すでに生成されている場合は出力しないこと。
     55  #      もしくは同名の import により、重複を避けること。
     56  #file::        FILE       生成するファイル
    7357#  def gen_cdl_file file
    7458#  end
     
    8569  end
    8670
    87   #===  受け口関数の本体(C言語)を生成する
    88   #     ã“のメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する
    89   #     ã“のメソッドが定義済みの場合、(テンプレートではなく、変更するå¿
    90 è¦ã®ãªã„)セルタイプコードを生成する
    91   #file::           FILE        出力å
    92 ˆãƒ•ã‚¡ã‚¤ãƒ«
     71  #===  受け口関数の本体(C言語)を生成する
     72  #     このメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する
     73  #     このメソッドが定義済みの場合、(テンプレートではなく、変更する必要のない)セルタイプコードを生成する
     74  #file::           FILE        出力先ファイル
    9375  #b_singleton::    bool        true if singleton
    9476  #ct_name::        Symbol
     
    184166    file2.close
    185167
    186     # 追記するために AppFile を使う(文字コード変換されない)
     168    # 追記するために AppFile を使う(文字コード変換されない)
    187169    file2 = AppFile.open( "#{$gen}/tKernel_tecsgen.#{$c_suffix}" )
    188170    file2.print "\n/* Generated by ATK1KernelPlugin */\n\n"
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/ATK1ResourcePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project TECS-WG
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
    5338#++
    5439
    55 #== celltype プラグインのå
    56 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     40#== celltype プラグインの共通の親クラス
    5741class ATK1ResourcePlugin < CelltypePlugin
    5842#@celltype:: Celltype
    59 #@option:: String     :オプション文字列
     43#@option:: String     :オプション文字列
    6044
    61   #signature::     Celltype        シグニチャ(インスタンス)
     45  #signature::     Celltype        シグニチャ(インスタンス)
    6246  def initialize( celltype, option )
    6347    super
    6448  end
    6549
    66   #===  CDL ファイルの生成
    67   #      typedef, signature, celltype, cell のコードを生成
    68   #      重複して生成してはならない
    69   #      すでに生成されている場合は出力しないこと。
    70   #      もしくは同名の import により、重複を避けること。
    71   #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     50  #===  CDL ファイルの生成
     51  #      typedef, signature, celltype, cell のコードを生成
     52  #      重複して生成してはならない
     53  #      すでに生成されている場合は出力しないこと。
     54  #      もしくは同名の import により、重複を避けること。
     55  #file::        FILE       生成するファイル
    7256#  def gen_cdl_file file
    7357#  end
     
    7660  end
    7761
    78   #===  受け口関数の本体(C言語)を生成する
    79   #     ã“のメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する
    80   #     ã“のメソッドが定義済みの場合、(テンプレートではなく、変更するå¿
    81 è¦ã®ãªã„)セルタイプコードを生成する
    82   #file::           FILE        出力å
    83 ˆãƒ•ã‚¡ã‚¤ãƒ«
     62  #===  受け口関数の本体(C言語)を生成する
     63  #     このメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する
     64  #     このメソッドが定義済みの場合、(テンプレートではなく、変更する必要のない)セルタイプコードを生成する
     65  #file::           FILE        出力先ファイル
    8466  #b_singleton::    bool        true if singleton
    8567  #ct_name::        Symbol
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/ATK1TaskPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project TECS-WG
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
    5338#++
    5439
    55 #== celltype プラグインのå
    56 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     40#== celltype プラグインの共通の親クラス
    5741class ATK1TaskPlugin < CelltypePlugin
    5842#@celltype:: Celltype
    59 #@option:: String     :オプション文字列
    60 
    61   #signature::     Celltype        シグニチャ(インスタンス)
     43#@option:: String     :オプション文字列
     44
     45  #signature::     Celltype        シグニチャ(インスタンス)
    6246  def initialize( celltype, option )
    6347    super
    6448  end
    6549
    66   #===  CDL ファイルの生成
    67   #      typedef, signature, celltype, cell のコードを生成
    68   #      重複して生成してはならない
    69   #      すでに生成されている場合は出力しないこと。
    70   #      もしくは同名の import により、重複を避けること。
    71   #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     50  #===  CDL ファイルの生成
     51  #      typedef, signature, celltype, cell のコードを生成
     52  #      重複して生成してはならない
     53  #      すでに生成されている場合は出力しないこと。
     54  #      もしくは同名の import により、重複を避けること。
     55  #file::        FILE       生成するファイル
    7256#  def gen_cdl_file file
    7357#  end
     
    8367  end
    8468
    85   #===  受け口関数の本体(C言語)を生成する
    86   #     ã“のメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する
    87   #     ã“のメソッドが定義済みの場合、(テンプレートではなく、変更するå¿
    88 è¦ã®ãªã„)セルタイプコードを生成する
    89   #file::           FILE        出力å
    90 ˆãƒ•ã‚¡ã‚¤ãƒ«
     69  #===  受け口関数の本体(C言語)を生成する
     70  #     このメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する
     71  #     このメソッドが定義済みの場合、(テンプレートではなく、変更する必要のない)セルタイプコードを生成する
     72  #file::           FILE        出力先ファイル
    9173  #b_singleton::    bool        true if singleton
    9274  #ct_name::        Symbol
     
    218200  file2.close
    219201
    220   # 追記するために AppFile を使う(文字コード変換されない)
     202  # 追記するために AppFile を使う(文字コード変換されない)
    221203  file = AppFile.open( "#{$gen}/tTask_tecsgen.#{$c_suffix}" )
    222204  file.print "\n/* Generated by ATK1TaskPlugin */\n"
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/C2TECSBridgePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2015 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
    5338#++
    5439
    55 #== C => TECS 受け口呼び出しのプラグイン
     40#== C => TECS 受け口呼び出しのプラグイン
    5641class C2TECSBridgePlugin < SignaturePlugin
    57 #@signature:: Signature   ãƒ—ラグインの対象となるシグニチャ
    58 #@option:: String   '"', '"' で囲まれた文字列
    59 
    60   # プラグイン引数名と Proc
     42#@signature:: Signature   プラグインの対象となるシグニチャ
     43#@option:: String   '"', '"' で囲まれた文字列
     44
     45  # プラグイン引数名と Proc
    6146  C2TECSBridgePluginArgProc = {
    6247    "prefix" => Proc.new { |obj,rhs| obj.set_prefix rhs },
     
    6853  @@signature_list = { }
    6954
    70   #signature::     Signature        シグニチャ(インスタンス)
     55  #signature::     Signature        シグニチャ(インスタンス)
    7156  def initialize( signature, option )
    7257    super
     
    10085  end
    10186
    102   #=== 後ろのコードを生成
    103   #プラグインの後ろのコードを生成
     87  #=== 後ろのコードを生成
     88  #プラグインの後ろのコードを生成
    10489  #file:: File:
    10590  def self.gen_post_code( file )
    106     # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
     91    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
    10792    # file.print "/* '#{self.class.name}' post code */\n"
    10893  end
    10994
    110   #===  受け口関数の本体(C言語)を生成する
    111   #     é€šå¸¸ã§ã‚れば、ジェネレータは受け口関数のテンプレートを生成する
    112   #     ãƒ—ラグインの場合、変更するå¿
    113 è¦ã®ãªã„セルタイプコードを生成する
    114   #file::           FILE        出力å
    115 ˆãƒ•ã‚¡ã‚¤ãƒ«
     95  #===  受け口関数の本体(C言語)を生成する
     96  #     通常であれば、ジェネレータは受け口関数のテンプレートを生成する
     97  #     プラグインの場合、変更する必要のないセルタイプコードを生成する
     98  #file::           FILE        出力先ファイル
    11699  #b_singleton::    bool        true if singleton
    117100  #ct_name::        Symbol
     
    212195  end
    213196
    214   #===  set_prefix - prefix プラグインオプション
     197  #===  set_prefix - prefix プラグインオプション
    215198  def set_prefix rhs
    216199    @prefix = rhs.to_s
    217200  end
    218   #===  set_suffix - suffix プラグインオプション
     201  #===  set_suffix - suffix プラグインオプション
    219202  def set_suffix rhs
    220203    @suffix = rhs.to_s
    221204  end
    222   #===  set_header_name - header_name プラグインオプション
     205  #===  set_header_name - header_name プラグインオプション
    223206  def set_header_name rhs
    224207    @header_name = "#{$gen}/" + rhs.to_s
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/CellPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2011 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
    5338#++
    5439
    55 #== celltype プラグインのå
    56 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     40#== celltype プラグインの共通の親クラス
    5741class CellPlugin < Plugin
    5842
    5943  #=== CellPlugin# initialize
    60   #cell::     Cell        セル(インスタンス)
    61   # このメソッドは、セルの構文解析が終わったところで呼び出される
    62   # この段階では意味解析が終わっていない
     44  #cell::     Cell        セル(インスタンス)
     45  # このメソッドは、セルの構文解析が終わったところで呼び出される
     46  # この段階では意味解析が終わっていない
    6347  def initialize( cell, option )
    6448    super()
    6549    @cell = cell
    6650    @plugin_arg_str = CDLString.remove_dquote option
    67     # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' )    # 前後の "" を取り除く
     51    # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' )    # 前後の "" を取り除く
    6852    # @plugin_arg_str.sub!( /(.*)"\z/, '\1' )
    6953    @plugin_arg_list = {}
    7054  end
    7155
    72   #=== 後ろの CDL コードを生成
    73   #プラグインの後ろの CDL コードを生成
     56  #=== 後ろの CDL コードを生成
     57  #プラグインの後ろの CDL コードを生成
    7458  #file:: File:
    7559  def self.gen_post_code( file )
    76     # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
     60    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
    7761    # file.print "/* '#{self.class.name}' post code */\n"
    7862  end
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/CelltypePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
    5338#++
    5439
    55 #== celltype プラグインのå
    56 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     40#== celltype プラグインの共通の親クラス
    5741class CelltypePlugin < Plugin
    5842
    59   #celltype::     Celltype        セルタイプ(インスタンス)
     43  #celltype::     Celltype        セルタイプ(インスタンス)
    6044  def initialize( celltype, option )
    6145    super()
    6246    @celltype = celltype
    63     # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' )    # 前後の "" を取り除く
     47    # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' )    # 前後の "" を取り除く
    6448    # @plugin_arg_str.sub!( /(.*)"\z/, '\1' )
    6549    @plugin_arg_str = CDLString.remove_dquote option
     
    6751  end
    6852
    69   #=== 新しいセル
    70   #cell::        Cell            セル
     53  #=== 新しいセル
     54  #cell::        Cell            セル
    7155  #
    72   # celltype プラグインを指定されたセルタイプのセルが生成された
    73   # セルタイププラグインに対する新しいセルの報告
     56  # celltype プラグインを指定されたセルタイプのセルが生成された
     57  # セルタイププラグインに対する新しいセルの報告
    7458  def new_cell( cell )
    7559  end
    7660
    7761
    78   #=== tCelltype_factory.h に挿å
    79 ¥ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’生成する
    80   # file 以外の他のファイルにファクトリコードを生成してもよい
    81   # セルタイププラグインが指定されたセルタイプのみ呼び出される
     62  #=== tCelltype_factory.h に挿入するコードを生成する
     63  # file 以外の他のファイルにファクトリコードを生成してもよい
     64  # セルタイププラグインが指定されたセルタイプのみ呼び出される
    8265  def gen_factory file
    8366  end
    8467
    85   #=== 後ろの CDL コードを生成
    86   #プラグインの後ろの CDL コードを生成
     68  #=== 後ろの CDL コードを生成
     69  #プラグインの後ろの CDL コードを生成
    8770  #file:: File:
    8871  def self.gen_post_code( file )
    89     # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
     72    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
    9073    # file.print "/* '#{self.class.name}' post code */\n"
    9174  end
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/CompositePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
    5338#++
    5439
    55 #== CompositeCelltype プラグインのå
    56 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     40#== CompositeCelltype プラグインの共通の親クラス
    5741class CompositePlugin < Plugin
    5842
    59   #celltype::     CompositeCelltype        セルタイプ(インスタンス)
     43  #celltype::     CompositeCelltype        セルタイプ(インスタンス)
    6044  def initialize( celltype, option )
    6145    super()
    6246    @celltype = celltype
    63     # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' )    # 前後の "" を取り除く
     47    # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' )    # 前後の "" を取り除く
    6448    # @plugin_arg_str.sub!( /(.*)"\z/, '\1' )
    6549    @plugin_arg_str = CDLString.remove_dquote option
     
    6751  end
    6852
    69   #=== 新しいセル
    70   #cell::        Cell            セル
     53  #=== 新しいセル
     54  #cell::        Cell            セル
    7155  #
    72   # celltype プラグインを指定されたセルタイプのセルが生成された
    73   # セルタイププラグインに対する新しいセルの報告
     56  # celltype プラグインを指定されたセルタイプのセルが生成された
     57  # セルタイププラグインに対する新しいセルの報告
    7458  def new_cell( cell )
    7559  end
    7660
    77   #=== 後ろの CDL コードを生成
    78   #プラグインの後ろの CDL コードを生成
     61  #=== 後ろの CDL コードを生成
     62  #プラグインの後ろの CDL コードを生成
    7963  #file:: File:
    8064  def self.gen_post_code( file )
    81     # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
     65    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
    8266    # file.print "/* '#{self.class.name}' post code */\n"
    8367  end
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/DomainPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
    5338#++
    5439
    55 #== ドメインプラグインの親クラス
     40#== ドメインプラグインの親クラス
    5641class DomainPlugin < Plugin
    5742
    58   #== domain 指定されたリージョンが定義された
    59   # region で domain 指定があった
    60   #domain_type_name::Symbol : domain 指定子の第一引数
    61   #option::String : domain 指定子の第二引数
     43  #== domain 指定されたリージョンが定義された
     44  # region で domain 指定があった
     45  #domain_type_name::Symbol : domain 指定子の第一引数
     46  #option::String : domain 指定子の第二引数
    6247  def initialize( region, domain_type_name, option )
    6348    super()
    6449  end
    6550
    66   #== 結合 join にプラグインを挿å
    67 ¥ã™ã‚‹
    68   #join::Join : 結合に関するæƒ
    69 å ±
    70   #return::[ plugin_name::String, option::String ]: 挿å
    71 ¥ã™ã‚‹ãƒ—ラグイン。 挿å
    72 ¥ã™ã‚‹ã‚‚のがなければ nil を返す
     51  #== 結合 join にプラグインを挿入する
     52  #join::Join : 結合に関する情報
     53  #return::[ plugin_name::String, option::String ]: 挿入するプラグイン。 挿入するものがなければ nil を返す
    7354  #return::(1) [ plugin_name, option ] or (2) [[ plugin_name, option ], ...], or [] or nil:  (2): not supported now
    74   #   nil: region 間の結合禁止, []: region 間の結合可(プラグイン挿å
    75 ¥ç„¡ã—)
    76   #   [ plugin_name, option ]: *_through( plugin_name, option ) 指定したのと同等
     55  #   nil: region 間の結合禁止, []: region 間の結合可(プラグイン挿入無し)
     56  #   [ plugin_name, option ]: *_through( plugin_name, option ) 指定したのと同等
    7757  #
    78   # region 間の through が指定されている場合、out_through, to_through
    79   # では、それらによって指定されたプラグインの後ろに、in_through の場合
    80   # in_through プラグインの前に挿å
    81 ¥ã•ã‚Œã‚‹
     58  # region 間の through が指定されている場合、out_through, to_through
     59  # では、それらによって指定されたプラグインの後ろに、in_through の場合
     60  # in_through プラグインの前に挿入される
    8261  #
    83   # このメソッドが呼出された時点では Join#get_rhs_cell など意味解析後
    84   # にしか呼び出せないメソッドを呼出しても、有効な値は得られない
     62  # このメソッドが呼出された時点では Join#get_rhs_cell など意味解析後
     63  # にしか呼び出せないメソッドを呼出しても、有効な値は得られない
    8564  #
    8665  def add_through_plugin( join, current_region, next_region, through_type )
    87     # join.get_owner:Cell  左辺のセル
    88     # join.get_definition:Port 呼び口
    89     # join.get_subscript:Integer or nil 呼び口é
    90 åˆ—の添数 (Join::@subscript の説明参ç
    91 §)
    92     # join.get_cell:Cell 右辺のセル
    93     # join.get_port_name:Symbol 受け口
    94     # get_rhs_subscript:Integer or nil 受け口é
    95 åˆ—の添数 (Join::@rhs_subscript の説明参ç
    96 §)
     66    # join.get_owner:Cell  左辺のセル
     67    # join.get_definition:Port 呼び口
     68    # join.get_subscript:Integer or nil 呼び口配列の添数 (Join::@subscript の説明参照)
     69    # join.get_cell:Cell 右辺のセル
     70    # join.get_port_name:Symbol 受け口
     71    # get_rhs_subscript:Integer or nil 受け口配列の添数 (Join::@rhs_subscript の説明参照)
    9772    # return []
    9873    return nil
    9974  end
    10075
    101   #== require が結合可能か?
     76  #== require が結合可能か?
    10277  def joinable?(current_region, next_region, through_type )
    10378    return false
    10479  end
    10580
    106   #== ドメイン種別を返す
     81  #== ドメイン種別を返す
    10782  #return::Symbol :kernel, :user, :OutOfDomain
    10883  def get_kind
     
    11085  end
    11186
    112   #== factory 生成
    113   # DomainPlugin の factory は特定のファイルへの出力が想定されていない
     87  #== factory 生成
     88  # DomainPlugin の factory は特定のファイルへの出力が想定されていない
    11489  def gen_factory
    11590  end
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2AlarmHandlerPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2012 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136#
    5237#   $Id$
     
    5641#require "HRP2KernelObjectPlugin"
    5742require_tecsgen_lib "HRP2KernelObjectPlugin.rb"
    58 #== celltype プラグインのå
    59 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     43#== celltype プラグインの共通の親クラス
    6044class HRP2AlarmHandlerPlugin < HRP2KernelObjectPlugin
    6145    @@ep = [:eStartAlarm, :eStopAlarm, :eManageAlarm, :eReferAlarm ]
     
    7155        name_array = @celltype.get_name_array cell
    7256        cell_CBP = name_array[8]    # CBP
    73         # CRE_XXXの生成
     57        # CRE_XXXの生成
    7458        if (cell.get_region.get_region_type != :DOMAIN) || (cell.get_region.get_param != :KERNEL_DOMAIN)
    75             # 無所属 or ユーザドメインに属する場合
     59            # 無所属 or ユーザドメインに属する場合
    7660                raise "alarm handler #{val[:id]} must belong to kernel domain."
    7761        else
     
    8670    end
    8771
    88     #tAlarmの受け口リスト
     72    #tAlarmの受け口リスト
    8973    def get_entry_ports_name_list()
    9074        @@ep
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2Cache.rb

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

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
     
    5641require_tecsgen_lib "HRP2KernelObjectPlugin.rb"
    5742
    58 #== celltype プラグインのå
    59 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     43#== celltype プラグインの共通の親クラス
    6044class HRP2CyclicHandlerPlugin < HRP2KernelObjectPlugin
    6145    @@ep = [:eStartCyclic, :eStopCyclic, :eManageCyclic, :eReferCyclic ]
     
    7155        name_array = @celltype.get_name_array cell
    7256        cell_CBP = name_array[8]    # CBP
    73         # CRE_XXXの生成
     57        # CRE_XXXの生成
    7458        if (cell.get_region.get_region_type != :DOMAIN) || (cell.get_region.get_param != :KERNEL_DOMAIN)
    75             # 無所属 or ユーザドメインに属する場合
     59            # 無所属 or ユーザドメインに属する場合
    7660                raise "cyclic handler #{val[:id]} must belong to kernel domain."
    7761        else
     
    8670    end
    8771
    88     #tCyclicHandlerの受け口リスト
     72    #tCyclicHandlerの受け口リスト
    8973    def get_entry_ports_name_list()
    9074        @@ep
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2DataqueuePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
     
    6045    @@ep = [:eSendDataqueue, :eReceiveDataqueue, :eManageDataqueue, :eReferDataqueue ]
    6146    #=== HRP2DataqueuePlugin#print_cfg_cre
    62     # CRE_DTQの出力
    63     # file:: FILE:     å‡ºåŠ›å
    64 ˆãƒ•ã‚¡ã‚¤ãƒ«
    65     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    66     # tab :: string:   ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆç”¨ã®tab
     47    # CRE_DTQの出力
     48    # file:: FILE:     出力先ファイル
     49    # val :: string:   カーネルオブジェクトの属性の解析結果
     50    # tab :: string:   インデント用のtab
    6751    def print_cfg_cre(file, cell, val, tab)
    6852        file.print tab
     
    7054    end
    7155    #=== HRP2DataqueuePlugin#print_cfg_sac
    72     # SAC_DTQの出力
    73     # file:: FILE:     å‡ºåŠ›å
    74 ˆãƒ•ã‚¡ã‚¤ãƒ«
    75     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    76     # acv :: string:   ã‚¢ã‚¯ã‚»ã‚¹ãƒ™ã‚¯ã‚¿   
     56    # SAC_DTQの出力
     57    # file:: FILE:     出力先ファイル
     58    # val :: string:   カーネルオブジェクトの属性の解析結果
     59    # acv :: string:   アクセスベクタ   
    7760    def print_cfg_sac(file, val, acv)
    7861        file.puts "SAC_DTQ(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});"
    7962    end
    80     #tDataqueueの受け口リスト
     63    #tDataqueueの受け口リスト
    8164    def get_entry_ports_name_list()
    8265        @@ep
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2EventflagPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
     
    6045    @@ep = [:eSetEventflag, :eWaitEventflag, :eManageEventflag, :eReferEventflag ]
    6146    #=== HRP2EventflagPlugin#print_cfg_cre
    62     # CRE_FLGの出力
    63     # file:: FILE:     å‡ºåŠ›å
    64 ˆãƒ•ã‚¡ã‚¤ãƒ«
    65     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    66     # tab :: string:   ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆç”¨ã®tab
     47    # CRE_FLGの出力
     48    # file:: FILE:     出力先ファイル
     49    # val :: string:   カーネルオブジェクトの属性の解析結果
     50    # tab :: string:   インデント用のtab
    6751    def print_cfg_cre(file, cell, val, tab)
    6852        file.print tab
     
    7054    end
    7155    #=== HRP2EventflagPlugin#print_cfg_sac
    72     # SAC_FLGの出力
    73     # file:: FILE:     å‡ºåŠ›å
    74 ˆãƒ•ã‚¡ã‚¤ãƒ«
    75     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    76     # acv :: string:   ã‚¢ã‚¯ã‚»ã‚¹ãƒ™ã‚¯ã‚¿   
     56    # SAC_FLGの出力
     57    # file:: FILE:     出力先ファイル
     58    # val :: string:   カーネルオブジェクトの属性の解析結果
     59    # acv :: string:   アクセスベクタ   
    7760    def print_cfg_sac(file, val, acv)
    7861        file.puts "SAC_FLG(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});"
    7962    end
    80     #tEventflagの受け口リスト
     63    #tEventflagの受け口リスト
    8164    def get_entry_ports_name_list()
    8265        @@ep
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2FixedSizeMemoryPoolPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
     
    6045    @@ep = [:eSendFixedSizeMemoryPool, :eReceiveFixedSizeMemoryPool, :eManageFixedSizeMemoryPool, :eReferFixedSizeMemoryPool ]
    6146    #=== HRP2FixedSizeMemoryPoolPlugin#print_cfg_cre
    62     # CRE_MPFの出力
    63     # file:: FILE:     å‡ºåŠ›å
    64 ˆãƒ•ã‚¡ã‚¤ãƒ«
    65     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    66     # tab :: string:   ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆç”¨ã®tab
     47    # CRE_MPFの出力
     48    # file:: FILE:     出力先ファイル
     49    # val :: string:   カーネルオブジェクトの属性の解析結果
     50    # tab :: string:   インデント用のtab
    6751    def print_cfg_cre(file, cell, val, tab)
    6852        file.print tab
     
    7054    end
    7155    #=== HRP2FixedSizeMemoryPoolPlugin#print_cfg_sac
    72     # SAC_MPFの出力
    73     # file:: FILE:     å‡ºåŠ›å
    74 ˆãƒ•ã‚¡ã‚¤ãƒ«
    75     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    76     # acv :: string:   ã‚¢ã‚¯ã‚»ã‚¹ãƒ™ã‚¯ã‚¿   
     56    # SAC_MPFの出力
     57    # file:: FILE:     出力先ファイル
     58    # val :: string:   カーネルオブジェクトの属性の解析結果
     59    # acv :: string:   アクセスベクタ   
    7760    def print_cfg_sac(file, val, acv)
    7861        file.puts "SAC_MPF(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});"
    7962    end
    80     #tFixedSizeMemoryPoolの受け口リスト
     63    #tFixedSizeMemoryPoolの受け口リスト
    8164    def get_entry_ports_name_list()
    8265        @@ep
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2HandlerPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2018 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
     
    5641require_tecsgen_lib "HRP2KernelObjectPlugin.rb"
    5742
    58 #== celltype プラグインのå
    59 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     43#== celltype プラグインの共通の親クラス
    6044class HRP2HandlerPlugin < HRP2KernelObjectPlugin
    6145    @@ep = [:eStartAlarm, :eStopAlarm, :eManageAlarm, :eReferAlarm ]
     
    7357        name_array = @celltype.get_name_array cell
    7458        cell_CBP = name_array[8]    # CBP
    75         # CRE_XXXの生成
     59        # CRE_XXXの生成
    7660        domainOption = cell.get_region.get_domain_root.get_domain_type.get_option
    7761        # if (cell.get_region.get_region_type != :DOMAIN) || (cell.get_region.get_param != :KERNEL_DOMAIN)
    7862        if (domainOption == "OutOfDomain") || (domainOption != "trusted")
    79             # 無所属 or ユーザドメインに属する場合
     63            # 無所属 or ユーザドメインに属する場合
    8064                raise "#{@plugin_arg_str.to_s.downcase} handler #{val[:id]} must belong to kernel domain."
    8165        elsif @plugin_arg_str == "ALARM"
     
    127111
    128112=begin
    129     #tAlarmの受け口リスト
     113    #tAlarmの受け口リスト
    130114    def get_entry_ports_name_list()
    131115        @@ep
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2KernelObjectPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
    5338#++
    5439
    55 # Regionクラスにメソッドを追加
     40# Regionクラスにメソッドを追加
    5641=begin
    5742class Region
     
    7055=end
    7156
    72 # Cellクラスにインスタンス変数とメソッドを追加
     57# Cellクラスにインスタンス変数とメソッドを追加
    7358=begin
    7459class Cell
     
    8671    end
    8772
    88     # set_referenced_cellにしたほうがよい
     73    # set_referenced_cellにしたほうがよい
    8974    # def set_referenced_region( region, port_name )
    9075    def set_referenced_cell( cell, port_name )
     
    140125=end
    141126
    142 #== celltype プラグインのå
    143 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     127#== celltype プラグインの共通の親クラス
    144128class HRP2KernelObjectPlugin < CelltypePlugin
    145129    # @@obj_hash = {}
    146130
    147131    #@celltype:: Celltype
    148     #@option:: String     :オプション文字列
     132    #@option:: String     :オプション文字列
    149133    def initialize( celltype, option )
    150134        super
    151         # それぞれのカーネルオブジェクトを解析対象セルタイプに追加
     135        # それぞれのカーネルオブジェクトを解析対象セルタイプに追加
    152136        HRP2KernelObjectPlugin.set_celltype(celltype)
    153137    end
    154138 
    155139    #=== HRP2KernelObjectPlugin#print_cfg_cre
    156     # 各種カーネルオブジェクトのCRE_*の出力
    157     # file:: FILE:     å‡ºåŠ›å
    158 ˆãƒ•ã‚¡ã‚¤ãƒ«
    159     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    160     # tab :: string:   ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆç”¨ã®tab
     140    # 各種カーネルオブジェクトのCRE_*の出力
     141    # file:: FILE:     出力先ファイル
     142    # val :: string:   カーネルオブジェクトの属性の解析結果
     143    # tab :: string:   インデント用のtab
    161144    def print_cfg_cre(file, cell, val, tab)
    162145        raise "called virtual method print_cfg_cre in #{@celltype.get_name} plugin"
     
    164147 
    165148    #=== HRP2KernelObjectPlugin#print_cfg_sac
    166     # 各種カーネルオブジェクトのSAC_*の出力
    167     # file:: FILE:     å‡ºåŠ›å
    168 ˆãƒ•ã‚¡ã‚¤ãƒ«
    169     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    170     # acv :: string:   ã‚¢ã‚¯ã‚»ã‚¹ãƒ™ã‚¯ã‚¿
     149    # 各種カーネルオブジェクトのSAC_*の出力
     150    # file:: FILE:     出力先ファイル
     151    # val :: string:   カーネルオブジェクトの属性の解析結果
     152    # acv :: string:   アクセスベクタ
    171153    def print_cfg_sac(file, val, acv)
    172154        raise "called virtual method print_cfg_sac in #{@celltype.get_name} plugin"
     
    174156 
    175157    #=== HRP2KernelObjectPlugin#get_entry_ports_name_list
    176     # カーネルオブジェクトの各種アクセスの種別の受け口名を取得
     158    # カーネルオブジェクトの各種アクセスの種別の受け口名を取得
    177159    def get_entry_ports_name_list()
    178160        raise "called virtual method get_entry_ports_name_list in #{@celltype.get_name} plugin"
     
    186168        puts "===== begin #{@celltype.get_name.to_s} plugin ====="
    187169
    188         # 対象となるすべてのセルについて、受け口に結合されている
    189         # セルの所属ドメインを解析
     170        # 対象となるすべてのセルについて、受け口に結合されている
     171        # セルの所属ドメインを解析
    190172        if !HRP2KernelObjectPlugin.isChecked()
    191173            HRP2KernelObjectPlugin.check_referenced_cells()
     
    194176        end
    195177
    196         # 追記するために AppFile を使う(文字コード変換されない)
     178        # 追記するために AppFile を使う(文字コード変換されない)
    197179        file2 = AppFile.open( "#{$gen}/tecsgen.cfg" )
    198180        file2.print "\n/* Generated by #{self.class.name} */\n\n"
     
    201183            if cell.is_generate?
    202184                puts "===== begin check my domain #{cell.get_name} ====="
    203                 # attrの値をハッシュにå
    204 ¥ã‚Œã‚‹
     185                # attrの値をハッシュに入れる
    205186                val = {}
    206187                @celltype.get_attribute_list.each{ |a|
     
    209190                        val[a.get_name] = []
    210191                        if j = cell.get_join_list.get_item(a.get_name)
    211                             # セル生成時に初期化する場合
     192                            # セル生成時に初期化する場合
    212193                            j.get_rhs.each { |elem|
    213194                                val[a.get_name] << elem.to_s
    214195                            }
    215196                        elsif i = a.get_initializer
    216                             # セルタイプの初期化値を使う場合
     197                            # セルタイプの初期化値を使う場合
    217198                            i.each { |elem|
    218199                                val[a.get_name] << elem.to_s
     
    223204                    else
    224205                        if j = cell.get_join_list.get_item(a.get_name)
    225                             # セル生成時に初期化する場合
     206                            # セル生成時に初期化する場合
    226207                            val[a.get_name] = j.get_rhs.to_s
    227208                        elsif i = a.get_initializer
    228                             # セルタイプの初期化値を使う場合
     209                            # セルタイプの初期化値を使う場合
    229210                            val[a.get_name] = i.to_s
    230211                        else
     
    233214                    end
    234215                }
    235                 # generate.rbを参考に
    236                 # $id$を置換
     216                # generate.rbを参考に
     217                # $id$を置換
    237218                if val[:id].nil? != true
    238219                    puts val[:id]
     
    240221                    val[:id] = @celltype.subst_name( val[:id], @celltype.get_name_array( cell ) )
    241222                end
    242                 # $cbp$の代わり
     223                # $cbp$の代わり
    243224                index = cell.get_id - @celltype.get_id_base
    244225                cell_CB_name = "#{@celltype.get_global_name}_CB_tab[#{index}]"
     
    246227                cell_domain_type = cell.get_region.get_domain_root.get_domain_type
    247228
    248                 # CRE_XXX/DEF_XXXの生成
     229                # CRE_XXX/DEF_XXXの生成
    249230                if cell_domain_type.get_option.to_s != "OutOfDomain"
    250                     # 保護ドメインに属する場合
     231                    # 保護ドメインに属する場合
    251232                    if !HRP2KernelObjectPlugin.include_region(cell_domain_root.get_name.to_s)
    252                         # その保護ドメインの.cfgが生成されていない場合
     233                        # その保護ドメインの.cfgが生成されていない場合
    253234                        HRP2KernelObjectPlugin.set_region_list(cell_domain_root.get_name.to_s)
    254235                        puts "~~~~~ #{cell_domain_root.get_name.to_s} is registered!"
     
    271252                    file3.close
    272253                else
    273                     # 無所属の場合
     254                    # 無所属の場合
    274255                    puts "~~~~~ #{cell_domain_root.get_name.to_s} is OutOfDomain"
    275256                    print_cfg_cre(file2, cell, val, "")
     
    277258
    278259                puts "===== end check my domain #{cell.get_name} ====="
    279                 # SAC_XXXの生成
     260                # SAC_XXXの生成
    280261                if !val[:accessPattern].nil?
    281262                    puts "===== begin check regions #{cell.get_name} ====="
     
    284265
    285266                    #ep = [ :eTaskActivate, :eTaskControl, :eTaskManage, :eTaskRefer ]
    286                     #各カーネルオブジェクトの受け口名を取得
     267                    #各カーネルオブジェクトの受け口名を取得
    287268                    # ep = get_entry_ports_name_list()
    288269                    i = 0
    289270                    acv = []
    290                     # アクセス許可ベクタの生成
     271                    # アクセス許可ベクタの生成
    291272                    val[:accessPattern].each { |acptnx|
    292                         # アクセス許可パターンの生成
     273                        # アクセス許可パターンの生成
    293274                        if acptnx != "OMIT"
    294275                            acv << acptnx
     
    309290                    p acv
    310291
    311                     #各種SACの生成
     292                    #各種SACの生成
    312293                    domainOption = cell_domain_type.get_option
    313294                    # if cell.get_region.get_region_type == :DOMAIN
    314295                    if domainOption != "OutOfDomain"
    315                         # 保護ドメインに属する場合
     296                        # 保護ドメインに属する場合
    316297                        file3 = AppFile.open( "#{$gen}/tecsgen_#{cell.get_region.get_name.to_s}.cfg" )
    317298                        print_cfg_sac(file3, val, acv)
    318299                        file3.close
    319300                    else
    320                         # 無所属の場合
     301                        # 無所属の場合
    321302                        print_cfg_sac(file2, val, acv)
    322303                    end
     
    331312    end
    332313
    333     # カーネルオブジェクトセルタイプの管理
    334     # HRP2KernelObjectPluginクラスに対してメソッド呼出しを行うことを想定
     314    # カーネルオブジェクトセルタイプの管理
     315    # HRP2KernelObjectPluginクラスに対してメソッド呼出しを行うことを想定
    335316    @@checked = false
    336317    @@celltype_list = []
     
    355336                printf "===== check call port : "
    356337                # p p.get_name.to_s
    357                 next if j.nil? # 未結合の場合
     338                next if j.nil? # 未結合の場合
    358339                if @@celltype_list.include?(j.get_celltype)
    359340                    # j.get_cell.set_referenced_region(cell.get_region)
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2ObjectPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
     
    7055
    7156    #=== HRP2SemaphorePlugin#print_cfg_cre
    72     # CRE_SEMの出力
    73     # file:: FILE:     å‡ºåŠ›å
    74 ˆãƒ•ã‚¡ã‚¤ãƒ«
    75     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    76     # tab :: string:   ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆç”¨ã®tab
     57    # CRE_SEMの出力
     58    # file:: FILE:     出力先ファイル
     59    # val :: string:   カーネルオブジェクトの属性の解析結果
     60    # tab :: string:   インデント用のtab
    7761    def print_cfg_cre(file, cell, val, tab)
    7862        if @@api.has_key?(@plugin_arg_str) == false
     
    8872    end
    8973    #=== HRP2SemaphorePlugin#print_cfg_sac
    90     # SAC_SEMの出力
    91     # file:: FILE:     å‡ºåŠ›å
    92 ˆãƒ•ã‚¡ã‚¤ãƒ«
    93     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    94     # acv :: string:   ã‚¢ã‚¯ã‚»ã‚¹ãƒ™ã‚¯ã‚¿   
     74    # SAC_SEMの出力
     75    # file:: FILE:     出力先ファイル
     76    # val :: string:   カーネルオブジェクトの属性の解析結果
     77    # acv :: string:   アクセスベクタ   
    9578    def print_cfg_sac(file, val, acv)
    9679        if @@api.has_key?(@plugin_arg_str) == false
     
    10487
    10588=begin
    106     #tSemaphoreの受け口リスト
     89    #tSemaphoreの受け口リスト
    10790    def get_entry_ports_name_list()
    10891        @@ep
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2Plugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2018 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
     
    5439
    5540#
    56 # 各メソッドの役割りは、DomainPlugin.rb を参ç
    57 §ã®ã“と
    58 # HRP2カーネル用ドメインプラグイン
     41# 各メソッドの役割りは、DomainPlugin.rb を参照のこと
     42# HRP2カーネル用ドメインプラグイン
    5943class HRP2Plugin < DomainPlugin
    6044
     
    7155    else
    7256      cdl_error( "HRPPlugin: '$1' is unacceptable domain kind, specify 'trusted' or 'nontrusted'", option )
    73       @option = "trusted"   # とりあえず trusted を設定しておく
     57      @option = "trusted"   # とりあえず trusted を設定しておく
    7458    end
    7559  end
    7660
    7761  def add_through_plugin( join, current_region, next_region, through_type )
    78     # join.get_owner:Cell  左辺のセル
    79     # join.get_definition:Port 呼び口
    80     # join.get_subscript:Integer or nil 呼び口é
    81 åˆ—の添数 (Join::@subscript の説明参ç
    82 §)
    83     # join.get_cell:Cell 右辺のセル
    84     # join.get_port_name:Symbol 受け口
    85     # get_rhs_subscript:Integer or nil 受け口é
    86 åˆ—の添数 (Join::@rhs_subscript の説明参ç
    87 §)
     62    # join.get_owner:Cell  左辺のセル
     63    # join.get_definition:Port 呼び口
     64    # join.get_subscript:Integer or nil 呼び口配列の添数 (Join::@subscript の説明参照)
     65    # join.get_cell:Cell 右辺のセル
     66    # join.get_port_name:Symbol 受け口
     67    # get_rhs_subscript:Integer or nil 受け口配列の添数 (Join::@rhs_subscript の説明参照)
    8868    # return []
    8969    print "HRP2Plugin: add_through_plugin: #{current_region.get_name}=>#{next_region.get_name}, #{join.get_owner.get_name}.#{join.get_definition.get_name}=>#{join.get_cell.get_name}.#{join.get_port_name}, #{through_type}\n"
     
    10282
    10383    if HRP2KernelObjectPlugin.include_celltype?(join.get_cell.get_celltype)
    104         # 結合å
    105 ˆãŒã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトセル
     84        # 結合先がカーネルオブジェクトセル
    10685        # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
    107         # 何もしないthrough
     86        # 何もしないthrough
    10887        puts "***** #{join.get_cell.get_celltype.get_name} is kernel object"
    10988        return []
     
    11392    # elsif next_domain.nil?
    11493    elsif next_domain.get_option.to_s == "OutOfDomain"
    115     #     # 結合å
    116 ˆãŒç„¡æ‰€å±ž
    117     #     # 何もしないthrough
     94    #     # 結合先が無所属
     95    #     # 何もしないthrough
    11896    #     # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
    11997        puts "***** nil"
     
    122100    #elsif @start_region.get_param != :KERNEL_DOMAIN && @end_region.get_param == :KERNEL_DOMAIN
    123101    elsif current_domain.get_option.to_s != "trusted" && next_domain.get_option.to_s == "trusted"
    124         # ユーザドメインからカーネルドメインへの結合
     102        # ユーザドメインからカーネルドメインへの結合
    125103        # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
    126104        puts "***** svc"
    127105        return [ :HRP2SVCPlugin, "" ]
    128106    elsif current_domain != next_domain
    129         # ユーザドメインから別のユーザドメインへの結合
     107        # ユーザドメインから別のユーザドメインへの結合
    130108        # @plugin_body = HRP2RPCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
    131109        puts "***** rpc"
    132110        return [ :HRP2RPCPlugin, "channelCelltype=tMessagebufferChannel,noClientSemaphore=true" ]
    133111    else
    134         # その他
    135         # 何もしないthrough
     112        # その他
     113        # 何もしないthrough
    136114        # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
    137115        print "warning: at HRP2 Join Check"
     
    142120  end
    143121
    144   #== ドメイン種別を返す
     122  #== ドメイン種別を返す
    145123  #return::Symbol :kernel, :user, :OutOfDomain
    146124  def get_kind
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2PostHook.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2017 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
     
    6449
    6550    def generate
    66         # カーネルオブジェクトのセルタイプはメモリ保護しない
     51        # カーネルオブジェクトのセルタイプはメモリ保護しない
    6752#=begin
    68         # TODO: テストのために無効化
     53        # TODO: テストのために無効化
    6954        if HRP2KernelObjectPlugin.include_celltype?( @celltype )
    7055            puts "nothing is generated for kernel object component"
     
    7560        rlist = @celltype.get_region_list
    7661        if @celltype.is_singleton?
    77             # singletonの場合
     62            # singletonの場合
    7863            puts "<singleton>"
    7964
     
    8368                file = AppFile.open( "#{$gen}/tecsgen_#{rlist[0].get_param.to_s}.cfg" )
    8469            end
    85             # セル管理ブロックとスケルトンのメモリ保護
     70            # セル管理ブロックとスケルトンのメモリ保護
    8671            file.print "ATT_MOD(\"#{@celltype.get_global_name}_tecsgen.o\");\n"
    8772            if !@celltype.is_all_entry_inline?
    88                 # セルタイプコードのメモリ保護
     73                # セルタイプコードのメモリ保護
    8974                file.print "ATT_MOD(\"#{@celltype.get_global_name}.o\");\n"
    9075            end
     
    9378
    9479        else
    95             # singletonでない場合
     80            # singletonでない場合
    9681            puts "<non-singleton>"
    9782
    98             # スケルトンとセルタイプコードの保護
     83            # スケルトンとセルタイプコードの保護
    9984            if (rlist.length == 1) &&
    10085                (@celltype.get_n_cell_gen == @celltype.get_n_cell_gen_r( rlist[0] ))
    101                 # 所属する保護ドメインが1つの場合
     86                # 所属する保護ドメインが1つの場合
    10287                puts "<private celltype>"
    10388                file = AppFile.open( "#{$gen}/tecsgen_#{rlist[0].get_param.to_s}.cfg" )
    10489            else
    105                 # 無所属 or 所属する保護ドメインが複数の場合
     90                # 無所属 or 所属する保護ドメインが複数の場合
    10691                puts "<shared celltype>"
    10792                file = AppFile.open( "#{$gen}/tecsgen.cfg" )
    10893            end
    10994
    110             # スケルトンのメモリ保護
     95            # スケルトンのメモリ保護
    11196            file.print "ATT_MOD(\"#{@celltype.get_global_name}_tecsgen.o\");\n"
    11297            if !@celltype.is_all_entry_inline?
    113                 # セルタイプコードのメモリ保護
     98                # セルタイプコードのメモリ保護
    11499                file.print "ATT_MOD(\"#{@celltype.get_global_name}.o\");\n"
    115100            end
    116101            file.close
    117102
    118             # セル管理ブロックの保護
     103            # セル管理ブロックの保護
    119104            rlist.each { |reg|
    120105                file = AppFile.open( "#{$gen}/tecsgen_#{reg.get_param.to_s}.cfg" )
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2PriorityDataqueuePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2012 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
     
    5843    @@ep = [:eSendPriorityDataqueue, :eReceivePriorityDataqueue, :eManagePriorityDataqueue, :eReferPriorityDataqueue ]
    5944    #=== HRP2PriorityDataqueuePlugin#print_cfg_cre
    60     # CRE_PDQの出力
    61     # file:: FILE:     å‡ºåŠ›å
    62 ˆãƒ•ã‚¡ã‚¤ãƒ«
    63     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    64     # tab :: string:   ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆç”¨ã®tab
     45    # CRE_PDQの出力
     46    # file:: FILE:     出力先ファイル
     47    # val :: string:   カーネルオブジェクトの属性の解析結果
     48    # tab :: string:   インデント用のtab
    6549    def print_cfg_cre(file, cell, val, tab)
    6650        file.print tab
     
    6852    end
    6953    #=== HRP2PriorityDataqueuePlugin#print_cfg_sac
    70     # SAC_PDQの出力
    71     # file:: FILE:     å‡ºåŠ›å
    72 ˆãƒ•ã‚¡ã‚¤ãƒ«
    73     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    74     # acv :: string:   ã‚¢ã‚¯ã‚»ã‚¹ãƒ™ã‚¯ã‚¿   
     54    # SAC_PDQの出力
     55    # file:: FILE:     出力先ファイル
     56    # val :: string:   カーネルオブジェクトの属性の解析結果
     57    # acv :: string:   アクセスベクタ   
    7558    def print_cfg_sac(file, val, acv)
    7659        file.puts "SAC_PDQ(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});"
    7760    end
    78     #tPriorityDataqueueの受け口リスト
     61    #tPriorityDataqueueの受け口リスト
    7962    def get_entry_ports_name_list()
    8063        @@ep
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2RPCPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
     
    5742# require_tecsgen_lib "GenParamCopy.rb"
    5843
    59 #= Transparent RPC プラグイン
    60 # Transparent RPC チャンネルを生成する
    61 # プラグイン引数は以下の RPCPluginArgProc を参ç
    62 §
    63 
    64 # mikan through plugin: namespace が考æ
    65 ®ã•ã‚Œã¦ã„ない
    66 # これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定するå¿
    67 è¦ãŒã‚ã‚‹
     44#= Transparent RPC プラグイン
     45# Transparent RPC チャンネルを生成する
     46# プラグイン引数は以下の RPCPluginArgProc を参照
     47
     48# mikan through plugin: namespace が考慮されていない
     49# これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定する必要がある
    6850# tecsgen toppers_jsp.cdl sChannel.cdl your_description.cdl
    6951
    70 # 以下を仮定(制限事é 
    71 ï¼‰
    72 #  呼びå
    73 ƒã€å‘¼ã³å
    74 ˆã®ã‚¨ãƒ³ãƒ‡ã‚£ã‚¢ãƒ³ã€char, short, int_t, long_t, intptr_t のサイズが同じ
    75 #  有符号、無符号でサイズが同じ
     52# 以下を仮定(制限事項)
     53#  呼び元、呼び先のエンディアン、char, short, int_t, long_t, intptr_t のサイズが同じ
     54#  有符号、無符号でサイズが同じ
    7655
    7756#
    78 # RPCを用いたドメイン間通信の
    79 # throughプラグイン
    80 # HRP2ドメインプラグインによって挿å
    81 ¥ã•ã‚Œã‚‹
     57# RPCを用いたドメイン間通信の
     58# throughプラグイン
     59# HRP2ドメインプラグインによって挿入される
    8260#
    8361class HRP2RPCPlugin < ThroughPlugin
     
    8664  # include GenParamCopy
    8765
    88   # RPCPlugin 専用のオプション
    89   TransparentRPCPluginArgProc = RPCPluginArgProc.dup  # 複製を作ってå
    90 ƒã‚’変更しないようにする
     66  # RPCPlugin 専用のオプション
     67  TransparentRPCPluginArgProc = RPCPluginArgProc.dup  # 複製を作って元を変更しないようにする
    9168  TransparentRPCPluginArgProc[ "noClientSemaphore"  ] = Proc.new { |obj,rhs| obj.set_noClientSemaphore rhs }
    9269  TransparentRPCPluginArgProc[ "semaphoreCelltype"  ] = Proc.new { |obj,rhs| obj.set_semaphoreCelltype rhs }
    9370
    94   #=== RPCPlugin の initialize
    95   #  説明は ThroughPlugin (plugin.rb) を参ç
    96 §
     71  #=== RPCPlugin の initialize
     72  #  説明は ThroughPlugin (plugin.rb) を参照
    9773  def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell )
    9874    super
     
    10177    initialize_transparent_marshaler cell_name
    10278
    103     # オプション:GenTransparentMarshaler 参ç
    104 §
     79    # オプション:GenTransparentMarshaler 参照
    10580    @plugin_arg_check_proc_tab = TransparentRPCPluginArgProc
    10681    parse_plugin_arg
     
    11287      if @PPAllocatorSize == nil then
    11388        cdl_error( "PPAllocatorSize must be speicified for oneway [in] array" )
    114         # @PPAllocatorSize = 0   # 仮に 0 としておく (cdl の構文エラーを避けるため)
     89        # @PPAllocatorSize = 0   # 仮に 0 としておく (cdl の構文エラーを避けるため)
    11590      end
    11691    end
     
    11994#      if func_decl.get_type.is_oneway? then
    12095#        if ( param_decl.get_size || param_decl.get_count ) && param_decl.get_string then
    121 #          cdl_error( "array of string not supported for oneway function in Transparent RPC" )  # mikan 文字列のé
    122 åˆ—
     96#          cdl_error( "array of string not supported for oneway function in Transparent RPC" )  # mikan 文字列の配列
    12397#        elsif param_decl.get_string == -1 then
    124 #          cdl_error( "length unspecified string is not permited for oneway function in Transparent RPC" )  # mikan 長さ未指定文字列
     98#          cdl_error( "length unspecified string is not permited for oneway function in Transparent RPC" )  # mikan 長さ未指定文字列
    12599#        end
    126100#      end
     
    128102  end
    129103
    130   #=== plugin の宣言コード (celltype の定義) 生成
     104  #=== plugin の宣言コード (celltype の定義) 生成
    131105  def gen_plugin_decl_code( file )
    132106
    133107    ct_name = "#{@ct_name}_#{@channelCelltype}"
    134108
    135     # このセルタイプ(同じシグニチャ)は既に生成されているか?
     109    # このセルタイプ(同じシグニチャ)は既に生成されているか?
    136110    if @@generated_celltype[ ct_name ] == nil then
    137111      @@generated_celltype[ ct_name ] = [ self ]
     
    166140
    167141    f = CFile.open( @rpc_channel_celltype_file_name, "w" )
    168     # 同じå†
    169 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     142    # 同じ内容を二度書く可能性あり (AppFile は不可)
    170143
    171144    f.print <<EOT
     
    223196};
    224197EOT
    225     # mikan stackSize option & 最新 tecs_package 対応
     198    # mikan stackSize option & 最新 tecs_package 対応
    226199
    227200    f.close
    228201  end
    229202
    230   #===  through cell コードを生成
     203  #===  through cell コードを生成
    231204  #
    232205  #
     
    235208    gen_plugin_decl_code( file )
    236209
    237     # セルを探す
     210    # セルを探す
    238211    # path =["::",@next_cell.get_name]
    239212    # cell = Namespace.find( path )
     
    258231    indent_str = "  " * nest
    259232
    260     # #473 が解決された場合、composite リレーアロケータに変更すべき
    261     # アロケータの指定があるか?
     233    # #473 が解決された場合、composite リレーアロケータに変更すべき
     234    # アロケータの指定があるか?
    262235    if cell.get_allocator_list.length > 0 then
    263236
     
    269242
    270243        file.print delim
    271         delim = ",\n#{indent_str}           "        # 最終行には出さない
    272 
    273         if subsc then        # é
    274 åˆ—添数
     244        delim = ",\n#{indent_str}           "        # 最終行には出さない
     245
     246        if subsc then        # 配列添数
    275247          subsc_str = '[#{subsc}]'
    276248        else
     
    278250        end
    279251
    280         eport = "eThroughEntry" #RPCの受け口名に変更
     252        eport = "eThroughEntry" #RPCの受け口名に変更
    281253        file.print  "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc}"
    282254      end
     
    321293
    322294
    323   #=== プラグイン引数 noClientSemaphore のチェック
     295  #=== プラグイン引数 noClientSemaphore のチェック
    324296  def set_noClientSemaphore rhs
    325297    rhs = rhs.to_sym
     
    333305  end
    334306
    335   #=== プラグイン引数 semaphoreCelltype のチェック
     307  #=== プラグイン引数 semaphoreCelltype のチェック
    336308  def set_semaphoreCelltype rhs
    337309    @semaphoreCelltype = rhs.to_sym
     
    343315  end
    344316
    345   #=== NamespacePath を得る
    346   # 生成するセルの namespace path を生成する
     317  #=== NamespacePath を得る
     318  # 生成するセルの namespace path を生成する
    347319  def get_cell_namespace_path
    348320#    nsp = @region.get_namespace.get_namespace_path
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2SVCPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
    5338#++
    5439
    55 # mikan through plugin: namespace が考æ
    56 ®ã•ã‚Œã¦ã„ない
    57 # これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定するå¿
    58 è¦ãŒã‚ã‚‹
     40# mikan through plugin: namespace が考慮されていない
     41# これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定する必要がある
    5942# tecsgen toppers_jsp.cdl sChannel.cdl your_description.cdl
    6043
    61 # 以下を仮定(制限事é 
    62 ï¼‰
    63 #  呼びå
    64 ƒã€å‘¼ã³å
    65 ˆã®ã‚¨ãƒ³ãƒ‡ã‚£ã‚¢ãƒ³ã€char, short, int_t, long_t, intptr_t のサイズが同じ
    66 #  有符号、無符号でサイズが同じ
     44# 以下を仮定(制限事項)
     45#  呼び元、呼び先のエンディアン、char, short, int_t, long_t, intptr_t のサイズが同じ
     46#  有符号、無符号でサイズが同じ
    6747
    6848class SVCManage
    69     # TODO: デフォルトの拡張サービスコール分を予約しておく
    70     # デフォルトの拡張サービスコール(syslogなど)もコンポーネント化するまで
     49    # TODO: デフォルトの拡張サービスコール分を予約しておく
     50    # デフォルトの拡張サービスコール(syslogなど)もコンポーネント化するまで
    7151    @@id = 20
    7252    @@func_ids = {}
     
    9474
    9575#
    96 # 拡張サービスコールを用いたドメイン間通信の
    97 # throughプラグイン
    98 # HRP2ドメインプラグインによって挿å
    99 ¥ã•ã‚Œã‚‹
     76# 拡張サービスコールを用いたドメイン間通信の
     77# throughプラグイン
     78# HRP2ドメインプラグインによって挿入される
    10079#
    10180class HRP2SVCPlugin < ThroughPlugin
    10281
    103   #=== RPCPlugin の initialize
    104   #  説明は ThroughPlugin (plugin.rb) を参ç
    105 §
     82  #=== RPCPlugin の initialize
     83  #  説明は ThroughPlugin (plugin.rb) を参照
    10684  @@generated_celltype_header = {}
    10785
     
    11795  end
    11896
    119   #=== NamespacePath を得る
    120   # 生成するセルの namespace path を生成する
     97  #=== NamespacePath を得る
     98  # 生成するセルの namespace path を生成する
    12199  def get_cell_namespace_path
    122100#    nsp = @region.get_namespace.get_namespace_path
     
    127105  def gen_plugin_decl_code( file )
    128106
    129     # このセルタイプ(同じシグニチャ)は既に生成されているか?
     107    # このセルタイプ(同じシグニチャ)は既に生成されているか?
    130108    if !HRP2KernelObjectPlugin.include_celltype?(@next_cell.get_celltype)
    131109    if @@generated_celltype[ @ct_name_body ] == nil then
     
    145123    end
    146124
    147     # このセルタイプ(同じシグニチャ)は既に生成されているか?
     125    # このセルタイプ(同じシグニチャ)は既に生成されているか?
    148126    if @@generated_celltype[ @ct_name ] == nil then
    149127        @@generated_celltype[ @ct_name ] = [ self ]
     
    156134EOT
    157135        else
    158             # TODO inlineにした方が効率がよいが,tecsgenの生成したヘッダファイルの
    159             # 読込順のためにエラーとなる
     136            # TODO inlineにした方が効率がよいが,tecsgenの生成したヘッダファイルの
     137            # 読込順のためにエラーとなる
    160138        file2.print <<EOT
    161139celltype #{@ct_name} {
     
    174152
    175153=begin
    176     # TODO: send. receive 対応
     154    # TODO: send. receive 対応
    177155    send_receive = []
    178156    if @signature != nil then
     
    206184  end
    207185
    208   #===  through cell コードを生成
     186  #===  through cell コードを生成
    209187  #
    210188  #
     
    215193
    216194    if !HRP2KernelObjectPlugin.include_celltype?(@next_cell.get_celltype)
    217     # セルを探す
     195    # セルを探す
    218196    # path =["::",@next_cell.get_name]  # mikan namespace
    219197    # cell = Namespace.find( path )
    220198    # cell = Namespace.find( @next_cell.get_namespace_path )
    221199
    222     ##### クライアント側のセルの生成 #####
     200    ##### クライアント側のセルの生成 #####
    223201    # file.print "[domain(HRP2, \"trusted\")]"
    224202    nest = @start_region.gen_region_str_pre file
    225203    nest_str = "  " * nest
    226204
    227     # クライアント側チャンネルの生成
    228     # 拡張サービスコール呼出し
     205    # クライアント側チャンネルの生成
     206    # 拡張サービスコール呼出し
    229207    file.print <<EOT
    230208#{nest_str}  //  Client Side Channel
     
    237215    file.print "\n\n"
    238216
    239     ##### サーバー側のセルの生成 #####
     217    ##### サーバー側のセルの生成 #####
    240218    nest = @end_region.gen_region_str_pre file
    241219    nest_str = "  " * nest
     
    246224    end
    247225
    248     # サーバー側チャンネルの生成
    249     # 拡張サービスコール本体
     226    # サーバー側チャンネルの生成
     227    # 拡張サービスコール本体
    250228    file.print <<EOT
    251229
     
    266244    else
    267245
    268     ##### クライアント側のセルの生成 #####
     246    ##### クライアント側のセルの生成 #####
    269247    nest = @start_region.gen_region_str_pre file
    270248    nest_str = "  " * nest
     
    275253    end
    276254
    277     # クライアント側チャンネルの生成
    278     # 拡張サービスコール呼出し
     255    # クライアント側チャンネルの生成
     256    # 拡張サービスコール呼出し
    279257    file.print <<EOT
    280258#{nest_str}  //  Client Side Channel
     
    291269   end
    292270
    293   #===  受け口関数の本体(C言語)を生成する
    294   #     é€šå¸¸ã§ã‚れば、ジェネレータは受け口関数のテンプレートを生成する
    295   #     ãƒ—ラグインの場合、変更するå¿
    296 è¦ã®ãªã„セルタイプコードを生成する
    297   #file::           FILE        出力å
    298 ˆãƒ•ã‚¡ã‚¤ãƒ«
     271  #===  受け口関数の本体(C言語)を生成する
     272  #     通常であれば、ジェネレータは受け口関数のテンプレートを生成する
     273  #     プラグインの場合、変更する必要のないセルタイプコードを生成する
     274  #file::           FILE        出力先ファイル
    299275  #b_singleton::    bool        true if singleton
    300276  #ct_name::        Symbol
     
    309285
    310286    if !HRP2KernelObjectPlugin.include_celltype?(@next_cell.get_celltype)
    311         # 拡張サービスコール呼出し
     287        # 拡張サービスコール呼出し
    312288        if ! func_type.get_type.kind_of?( VoidType ) then
    313289            file.print( "  #{func_type.get_type_str}  retval;\n" )
     
    321297    p_cellcb = #{global_ct_name}_GET_CELLCB(idx);
    322298  }else{
    323      /* エラー処理コードをここに記述 */
     299     /* エラー処理コードをここに記述 */
    324300  }
    325301
     
    372348        end
    373349
    374         # 拡張サービスコール本体
     350        # 拡張サービスコール本体
    375351        if new_func
    376352            file2 = AppFile.open( "#{$gen}/#{@ct_name_body}.c" )
     
    381357#                 file2.print <<EOT
    382358# /*
    383 #  * このファイルは tecsgen により自動生成されました
    384 #  * このファイルを編集して使用することは、意図されていません
     359#  * このファイルは tecsgen により自動生成されました
     360#  * このファイルを編集して使用することは、意図されていません
    385361#  */
    386362# /* #[<PREAMBLE>]#
    387 #  * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
    388 #  * tecsmerge によるマージに使用されます
     363#  * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
     364#  * tecsmerge によるマージに使用されます
    389365#  *
    390366#  * #[</PREAMBLE>]# */
    391367#
    392 # /* プロトタイプ宣言や変数の定義をここに書きます #_PAC_# */
     368# /* プロトタイプ宣言や変数の定義をここに書きます #_PAC_# */
    393369# #include "#{@ct_name_body}_tecsgen.h"
    394370#
     
    418394      p_cellcb = #{@ct_name_body}_GET_CELLCB(idx);
    419395    }else{
    420        /* エラー処理コードをここに記述 */
     396       /* エラー処理コードをここに記述 */
    421397    }
    422398#else
     
    474450            file2 = AppFile.open( "#{$gen}/tecsgen.cfg" )
    475451            file2.print "\n/* Generated by HRP2SVCPlugin */\n\n"
    476             # TODO: スタックサイズは適当
     452            # TODO: スタックサイズは適当
    477453            file2.print <<EOT
    478454KERNEL_DOMAIN{
     
    490466        end
    491467    else
    492         # カーネルドメインのセルは特別なことは何もせず,普通に呼び出す
     468        # カーネルドメインのセルは特別なことは何もせず,普通に呼び出す
    493469        super
    494470    end
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2SemaphorePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2011 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
     
    5944    @@ep = [:eSignalSemaphore, :eWaitSemaphore, :eManageSemaphore, :eReferSemaphore ]
    6045    #=== HRP2SemaphorePlugin#print_cfg_cre
    61     # CRE_SEMの出力
    62     # file:: FILE:     å‡ºåŠ›å
    63 ˆãƒ•ã‚¡ã‚¤ãƒ«
    64     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    65     # tab :: string:   ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆç”¨ã®tab
     46    # CRE_SEMの出力
     47    # file:: FILE:     出力先ファイル
     48    # val :: string:   カーネルオブジェクトの属性の解析結果
     49    # tab :: string:   インデント用のtab
    6650    def print_cfg_cre(file, cell, val, tab)
    6751        file.print tab
     
    6953    end
    7054    #=== HRP2SemaphorePlugin#print_cfg_sac
    71     # SAC_SEMの出力
    72     # file:: FILE:     å‡ºåŠ›å
    73 ˆãƒ•ã‚¡ã‚¤ãƒ«
    74     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    75     # acv :: string:   ã‚¢ã‚¯ã‚»ã‚¹ãƒ™ã‚¯ã‚¿   
     55    # SAC_SEMの出力
     56    # file:: FILE:     出力先ファイル
     57    # val :: string:   カーネルオブジェクトの属性の解析結果
     58    # acv :: string:   アクセスベクタ   
    7659    def print_cfg_sac(file, val, acv)
    7760        file.puts "SAC_SEM(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});"
    7861    end
    79     #tSemaphoreの受け口リスト
     62    #tSemaphoreの受け口リスト
    8063    def get_entry_ports_name_list()
    8164        @@ep
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2TaskPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
     
    5540#require "HRP2KernelObjectPlugin"
    5641require_tecsgen_lib "HRP2KernelObjectPlugin.rb"
    57 #== celltype プラグインのå
    58 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     42#== celltype プラグインの共通の親クラス
    5943class HRP2TaskPlugin < HRP2KernelObjectPlugin
    6044    # @@ep = [:eActivateTask, :eControlTask, :eManageTask, :eReferTask ]
    61     # ATT_MODを生成済みかどうか
     45    # ATT_MODを生成済みかどうか
    6246    @@generate_memory_module = false
    6347
     
    7155        #val[:id] = val[:id].gsub( /(^|[^\$])\$id\$/, "\\1#{@celltype.get_name.to_s}_#{cell.get_global_name.to_s}" )
    7256        #val[:id] = @celltype.subst_name( val[:id], @celltype.get_name_array( cell ) )
    73         # $cbp$の代わり
     57        # $cbp$の代わり
    7458        index = cell.get_id - @celltype.get_id_base
    7559        #cell_CB_name = "#{@celltype.get_global_name}_pCB_tab[#{index}]"
    7660        cell_CB_name = "#{index}"
    77         # CRE_XXX/DEF_XXXの生成
     61        # CRE_XXX/DEF_XXXの生成
    7862        dbgPrint "assign task plugin\n"
    7963        domainOption = cell.get_region.get_domain_root.get_domain_type.get_option
     
    8165# cell.show_tree 1
    8266        if domainOption != "OutOfDomain"
    83             # 保護ドメインに属する場合
     67            # 保護ドメインに属する場合
    8468            if domainOption == "trusted"
    85                 # カーネルドメイン
     69                # カーネルドメイン
    8670                if val[:userStackSize] != "OMIT"
    8771                    raise "system task cannot have user stack."
     
    9276EOT
    9377            else
    94                 # ユーザドメイン
     78                # ユーザドメイン
    9579                if val[:userStackSize] == "OMIT"
    9680                    raise "user task must have user stack."
     
    10993            end
    11094        else
    111             # 無所属の場合
     95            # 無所属の場合
    11296            raise "task #{val[:id]} must belong to a domain."
    11397        end
    11498   
    115         # 例外用のを生成
     99        # 例外用のを生成
    116100        file.print <<EOT
    117101#{tab}DEF_TEX(#{val[:id]}, { #{val[:exceptionAttribute]}, tTask_start_exception });
     
    124108
    125109=begin
    126     #tTaskの受け口リスト
     110    #tTaskの受け口リスト
    127111    def get_entry_ports_name_list()
    128112        @@ep
     
    130114=end
    131115    #
    132     #  ATT_MODの生成
    133     #  gen_factory実行時には,すべてのセルタイププラグインを生成済みのはずなので,
    134     #  カーネルAPIコードのメモリ保護を省略できる.
     116    #  ATT_MODの生成
     117    #  gen_factory実行時には,すべてのセルタイププラグインを生成済みのはずなので,
     118    #  カーネルAPIコードのメモリ保護を省略できる.
    135119    #
    136120    def gen_factory file
     
    140124
    141125            Cell.get_cell_list2.each { |cell|
    142                 # すべてのセルを走査してセルタイプをチェック
     126                # すべてのセルを走査してセルタイプをチェック
    143127                ct = cell.get_celltype
    144128                if ct.class == Celltype && check_celltype_list.include?( ct ) == false
    145                     # チェック済みセルタイプに登録
     129                    # チェック済みセルタイプに登録
    146130                    check_celltype_list << ct
    147131
    148                     # 未チェックのセルタイプだった場合
     132                    # 未チェックのセルタイプだった場合
    149133                    # puts "check for ATT_MOD : #{ct.classget_global_name}"
    150134                    puts "check for ATT_MOD : #{ct.get_global_name}"
    151135                       
    152                     # カーネルAPIのコード,データはメモリ保護しない
     136                    # カーネルAPIのコード,データはメモリ保護しない
    153137                    next if HRP2KernelObjectPlugin.include_celltype?( ct )
    154138
    155                     # å¿
    156 è¦ã®ãªã„セルタイプのコード,データはメモリ保護しない
     139                    # 必要のないセルタイプのコード,データはメモリ保護しない
    157140                    next if ! ct.need_generate?
    158141
    159                     # HRP2のドメインリージョンを取得
     142                    # HRP2のドメインリージョンを取得
    160143                    regions = ct.get_domain_roots
    161144                    regions_hrp2 = regions[ :HRP2 ]
     
    166149                    puts ""
    167150
    168                     # セル管理ブロックとスケルトンのメモリ保護
    169                     # gen_celltype_names_domain 相当の処理
     151                    # セル管理ブロックとスケルトンのメモリ保護
     152                    # gen_celltype_names_domain 相当の処理
    170153                    if regions_hrp2.include?( Region.get_root ) == false && regions_hrp2.length > 1
    171                         # ドメインが複数で,OutOfDomainにセルが存在しないセルタイプの場合
    172                         # å
    173 ±æœ‰ã®ã‚»ãƒ«ç®¡ç†ãƒ–ロックとスケルトンコードを登録する
     154                        # ドメインが複数で,OutOfDomainにセルが存在しないセルタイプの場合
     155                        # 共有のセル管理ブロックとスケルトンコードを登録する
    174156                        file = AppFile.open( "#{$gen}/tecsgen.cfg" )
    175157                        file.print "ATT_MOD(\"#{ct.get_global_name}_tecsgen.o\");\n"
     
    188170                    }
    189171
    190                     # セルタイプコードがない場合はスキップ
     172                    # セルタイプコードがない場合はスキップ
    191173                    next if ct.is_all_entry_inline? && ! ct.is_active?
    192174
    193                     # セルタイプコードのメモリ保護
    194                     # gen_celltype_names_domain2 相当の処理
     175                    # セルタイプコードのメモリ保護
     176                    # gen_celltype_names_domain2 相当の処理
    195177                    if regions_hrp2.include?( Region.get_root ) == true || regions_hrp2.length > 1
    196                         # OutOfDomainにセルが存在するセルタイプの場合
    197                         # または,複数のドメインにセルが存在するセルタイプの場合
    198                         # セルタイプコードをå
    199 ±æœ‰ã™ã‚‹ã‚ˆã†ã«ç™»éŒ²ã™ã‚‹
     178                        # OutOfDomainにセルが存在するセルタイプの場合
     179                        # または,複数のドメインにセルが存在するセルタイプの場合
     180                        # セルタイプコードを共有するように登録する
    200181                        file = AppFile.open( "#{$gen}/tecsgen.cfg" )
    201182                    else
    202                         # OutOfDomainでない単一のドメインにセルが存在するセルタイプの場合
    203                         # セルタイプコードを専有するように登録する
     183                        # OutOfDomainでない単一のドメインにセルが存在するセルタイプの場合
     184                        # セルタイプコードを専有するように登録する
    204185                        file = AppFile.open( "#{$gen}/tecsgen_#{regions_hrp2[0].get_namespace_path.get_global_name}.cfg" )
    205186                    end
     
    208189                    file.close
    209190                else
    210                     # 何もしない
     191                    # 何もしない
    211192                end
    212193            }
     
    214195            @@generate_memory_module = true
    215196        else
    216             # 何もしない
     197            # 何もしない
    217198        end
    218199    end
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRPHandlerPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2018 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#++
     
    5540
    5641
    57 #== celltype プラグインのå
    58 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     42#== celltype プラグインの共通の親クラス
    5943class HRPHandlerPlugin < HRPKernelObjectPlugin
    6044
     
    7862            val[:id] = val[:id].gsub( /(^|[^\$])\$id\$/, "\\1#{@celltype.get_name.to_s}_#{cell.get_name.to_s}" )
    7963        end
    80         # $cbp$の代わり
     64        # $cbp$の代わり
    8165        index = cell.get_id - @celltype.get_id_base
    8266        #cell_CB_name = "#{@celltype.get_global_name}_CB_tab[#{index}]"
    8367        name_array = cell.get_celltype.get_name_array cell
    8468        cell_CBP = name_array[8]
    85         # CRE_XXXの生成
     69        # CRE_XXXの生成
    8670        domainOption = cell.get_region.get_domain_root.get_domain_type.get_option
    8771        if (domainOption == "OutOfDomain") || (domainOption != "kernel")
    88             # 無所属 or ユーザドメインに属する場合
     72            # 無所属 or ユーザドメインに属する場合
    8973                raise "#{@plugin_arg_str.to_s.downcase} handler #{val[:id]} must belong to kernel domain."
    9074        elsif @plugin_arg_str == "CONFIG_INT"
     
    125109            # nothing to do
    126110        elsif @plugin_arg_str == "ISR"
    127             # kernel.cdl の tISR で accessPattern1 ~ accessPattern4 が定義されているときの名残。
    128             # accessPattern1 が定義されていない場合、こここへは来ない.復活したときに備えて残しておく.
     111            # kernel.cdl の tISR で accessPattern1 ~ accessPattern4 が定義されているときの名残。
     112            # accessPattern1 が定義されていない場合、こここへは来ない.復活したときに備えて残しておく.
    129113            # file.puts "SAC_#{@plugin_arg_str}(#{val[:id]}, { #{acv[:accessPattern1]}, #{acv[:accessPattern2]}, #{acv[:accessPattern3]}, #{acv[:accessPattern4]} });"
    130114            puts "*** Unsupported *** SAC_#{@plugin_arg_str}(#{val[:id]}, { #{acv[:accessPattern1]}, #{acv[:accessPattern2]}, #{acv[:accessPattern3]}, #{acv[:accessPattern4]} });\n"
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRPKernelObjectManager.rb

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

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

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2018 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#  $Id$
     
    6954
    7055    #=== HRPObjectPlugin#print_cfg_cre
    71     # CRE_XXXの出力
    72     # file:: FILE:     å‡ºåŠ›å
    73 ˆãƒ•ã‚¡ã‚¤ãƒ«
    74     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    75     # tab :: string:   ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆç”¨ã®tab
     56    # CRE_XXXの出力
     57    # file:: FILE:     出力先ファイル
     58    # val :: string:   カーネルオブジェクトの属性の解析結果
     59    # tab :: string:   インデント用のtab
    7660    def print_cfg_cre(file, cell, val, tab)
    7761        if @@api.has_key?(@plugin_arg_str) == false
     
    8165            params = @@api[@plugin_arg_str]
    8266            if @plugin_arg_str == "MUTEX" && ((val[:attribute] =~ /\bTA_CEILING\b/)==nil)
    83               slice_end = -2   # :ceilingPriority を外す
     67              slice_end = -2   # :ceilingPriority を外す
    8468            else
    8569              slice_end = -1
     
    9478    end
    9579    #=== HRPObjectPlugin#print_cfg_sac
    96     # SAC_XXXの出力
    97     # file:: FILE:     å‡ºåŠ›å
    98 ˆãƒ•ã‚¡ã‚¤ãƒ«
    99     # val :: string:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    100     # acv :: string:   ã‚¢ã‚¯ã‚»ã‚¹ãƒ™ã‚¯ã‚¿   
     80    # SAC_XXXの出力
     81    # file:: FILE:     出力先ファイル
     82    # val :: string:   カーネルオブジェクトの属性の解析結果
     83    # acv :: string:   アクセスベクタ   
    10184    def print_cfg_sac(file, val, acv)
    10285        if @@api.has_key?(@plugin_arg_str) == false
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRPPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2014-2018 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#  $Id$
     
    5641require_tecsgen_lib "HRPKernelObjectManager.rb"
    5742#
    58 # 各メソッドの役割りは、DomainPlugin.rb を参ç
    59 §ã®ã“と
    60 # HRPカーネル用ドメインプラグイン
     43# 各メソッドの役割りは、DomainPlugin.rb を参照のこと
     44# HRPカーネル用ドメインプラグイン
    6145class HRPPlugin < DomainPlugin
    6246 
     
    7256    else
    7357      cdl_error( "HRPPlugin: '$1' is unacceptable domain kind, specify 'kernel' or 'user'", option )
    74       @option = "kernel"   # とりあえず kernel を設定しておく
     58      @option = "kernel"   # とりあえず kernel を設定しておく
    7559    end
    7660  end
    7761
    7862  def add_through_plugin( join, current_region, next_region, through_type )
    79     # join.get_owner:Cell  左辺のセル
    80     # join.get_definition:Port 呼び口
    81     # join.get_subscript:Integer or nil 呼び口é
    82 åˆ—の添数 (Join::@subscript の説明参ç
    83 §)
    84     # join.get_cell:Cell 右辺のセル
    85     # join.get_port_name:Symbol 受け口
    86     # get_rhs_subscript:Integer or nil 受け口é
    87 åˆ—の添数 (Join::@rhs_subscript の説明参ç
    88 §)
     63    # join.get_owner:Cell  左辺のセル
     64    # join.get_definition:Port 呼び口
     65    # join.get_subscript:Integer or nil 呼び口配列の添数 (Join::@subscript の説明参照)
     66    # join.get_cell:Cell 右辺のセル
     67    # join.get_port_name:Symbol 受け口
     68    # get_rhs_subscript:Integer or nil 受け口配列の添数 (Join::@rhs_subscript の説明参照)
    8969    # return []
    9070    dbgPrint "MyDomainPlugin: add_through_plugin: #{current_region.get_name}=>#{next_region.get_name}, #{join.get_owner.get_name}.#{join.get_definition.get_name}=>#{join.get_cell.get_name}.#{join.get_port_name}, #{through_type}\n"
     
    11090                                                 get_real_celltype(join.get_rhs_port1).
    11191                                                 get_global_name)                #oyama: get_name => get_global_name
    112         # 結合å
    113 ˆãŒã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトセル
     92        # 結合先がカーネルオブジェクトセル
    11493        # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
    115         # 何もしないthrough
     94        # 何もしないthrough
    11695        # puts "***** #{join.get_cell.get_celltype.get_name} is kernel object"
    11796        return []
     
    121100    # elsif next_domain.nil?
    122101    elsif next_domain.get_option.to_s == "OutOfDomain"
    123     #     # 結合å
    124 ˆãŒç„¡æ‰€å±ž
    125     #     # 何もしないthrough
     102    #     # 結合先が無所属
     103    #     # 何もしないthrough
    126104    #     # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
    127105        # puts "***** nil"
     
    129107    #elsif @start_region.get_param != :KERNEL_DOMAIN && @end_region.get_param == :KERNEL_DOMAIN
    130108    elsif current_domain.get_option.to_s != "kernel" && next_domain.get_option.to_s == "kernel"
    131         # ユーザドメインからカーネルドメインへの結合
     109        # ユーザドメインからカーネルドメインへの結合
    132110        # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
    133111        # puts "***** svc"
    134112        return [ :HRPSVCPlugin, "" ]
    135113    elsif current_domain != next_domain
    136         # 別のユーザドメインへの結合
     114        # 別のユーザドメインへの結合
    137115        # @plugin_body = HRP2RPCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
    138116        # puts "***** rpc"
     
    141119        return [ :HRPRPCPlugin, "noClientSemaphore=false,PPAllocatorSize=256" ]
    142120    else
    143         # その他
    144         # 何もしないthrough
     121        # その他
     122        # 何もしないthrough
    145123        # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
    146124        dbgPrint "warning: at HRP Join Check"
     
    156134  end
    157135
    158   #== ドメイン種別を返す
     136  #== ドメイン種別を返す
    159137  #return::Symbol :kernel, :user, :OutOfDomain
    160138  def get_kind
     
    165143  end
    166144
    167   # ATT_MODを生成済みかどうか                   # 2017.8.27
     145  # ATT_MODを生成済みかどうか                   # 2017.8.27
    168146  @@generate_memory_module = false
    169147
    170   @@include_extsvc_fncd = false  # 17.07.26 暫定
     148  @@include_extsvc_fncd = false  # 17.07.26 暫定
    171149  #
    172   #  ATT_MODの生成
    173   #  gen_factory実行時には,すべてのセルタイププラグインを生成済みのはずなので,
    174   #  カーネルAPIコードのメモリ保護を省略できる.
     150  #  ATT_MODの生成
     151  #  gen_factory実行時には,すべてのセルタイププラグインを生成済みのはずなので,
     152  #  カーネルAPIコードのメモリ保護を省略できる.
    175153  #
    176154  def gen_factory
     
    187165    if @@generate_memory_module == false
    188166
    189       # INCLUDE を出力
    190       #  すべてのドメインに対する cfg をå
    191 ˆã«ç”Ÿæˆã—ておく
    192       #  もし、ドメインに属するカーネルオブジェクトも、モジュールもない場合でも、cfg が出力される
     167      # INCLUDE を出力
     168      #  すべてのドメインに対する cfg を先に生成しておく
     169      #  もし、ドメインに属するカーネルオブジェクトも、モジュールもない場合でも、cfg が出力される
    193170      regions = DomainType.get_domain_regions[ :HRP ]
    194171      file = AppFile.open( "#{$gen}/tecsgen.cfg" )
     
    219196
    220197      #
    221       #  ATT_MODの生成
     198      #  ATT_MODの生成
    222199      #
    223200      Cell.get_cell_list2.each { |cell|
    224         # すべてのセルを走査してセルタイプをチェック
     201        # すべてのセルを走査してセルタイプをチェック
    225202        ct = cell.get_celltype
    226203        if ct.class == Celltype && check_celltype_list.include?( ct ) == false
    227           # チェック済みセルタイプに登録
     204          # チェック済みセルタイプに登録
    228205          check_celltype_list << ct
    229206
    230           # 未チェックのセルタイプだった場合
     207          # 未チェックのセルタイプだった場合
    231208          # puts "check for ATT_MOD : #{ct.classget_global_name}"
    232209          # puts "check for ATT_MOD : #{ct.get_global_name}"
    233210
    234           # カーネルAPIのコード,データはメモリ保護しない # HRP3 oyama delete by Takada's request
     211          # カーネルAPIのコード,データはメモリ保護しない # HRP3 oyama delete by Takada's request
    235212          # next if HRPKernelObjectManager.include_celltype?( ct.get_name )
    236213
    237           # å¿
    238 è¦ã®ãªã„セルタイプのコード,データはメモリ保護しない
     214          # 必要のないセルタイプのコード,データはメモリ保護しない
    239215          next if ! ct.need_generate?
    240216
    241           # HRPのドメインリージョンを取得
     217          # HRPのドメインリージョンを取得
    242218          regions = ct.get_domain_roots
    243219          regions_hrp = regions[ :HRP ]
     
    248224          # puts ""
    249225
    250           # セル管理ブロックとスケルトンのメモリ保護
    251           # gen_celltype_names_domain 相当の処理
     226          # セル管理ブロックとスケルトンのメモリ保護
     227          # gen_celltype_names_domain 相当の処理
    252228          if regions_hrp.include?( Region.get_root ) == false && regions_hrp.length > 1
    253             # ドメインが複数で,OutOfDomainにセルが存在しないセルタイプの場合
    254             # å
    255 ±æœ‰ã®ã‚»ãƒ«ç®¡ç†ãƒ–ロックとスケルトンコードを登録する
     229            # ドメインが複数で,OutOfDomainにセルが存在しないセルタイプの場合
     230            # 共有のセル管理ブロックとスケルトンコードを登録する
    256231            file = AppFile.open( "#{$gen}/tecsgen.cfg" )
    257232            file.printf "%-60s/* HRPPlugin 003 */\n", "ATT_MOD(\"#{ct.get_global_name}_tecsgen.o\");"
     
    270245          }
    271246
    272           # セルタイプコードがない場合はスキップ
     247          # セルタイプコードがない場合はスキップ
    273248          next if ct.is_all_entry_inline? && ! ct.is_active?
    274249
    275           # セルタイプコードのメモリ保護
    276           # gen_celltype_names_domain2 相当の処理
     250          # セルタイプコードのメモリ保護
     251          # gen_celltype_names_domain2 相当の処理
    277252          if regions_hrp.include?( Region.get_root ) == true || regions_hrp.length > 1
    278             # OutOfDomainにセルが存在するセルタイプの場合
    279             # または,複数のドメインにセルが存在するセルタイプの場合
    280             # セルタイプコードをå
    281 ±æœ‰ã™ã‚‹ã‚ˆã†ã«ç™»éŒ²ã™ã‚‹
     253            # OutOfDomainにセルが存在するセルタイプの場合
     254            # または,複数のドメインにセルが存在するセルタイプの場合
     255            # セルタイプコードを共有するように登録する
    282256            file = AppFile.open( "#{$gen}/tecsgen.cfg" )
    283257          else
    284             # OutOfDomainでない単一のドメインにセルが存在するセルタイプの場合
    285             # セルタイプコードを専有するように登録する
     258            # OutOfDomainでない単一のドメインにセルが存在するセルタイプの場合
     259            # セルタイプコードを専有するように登録する
    286260            file = AppFile.open( "#{$gen}/tecsgen_#{regions_hrp[0].get_global_name}.cfg" )
    287261          end
     
    290264          file.close
    291265        else
    292           # 何もしない
     266          # 何もしない
    293267        end
    294268      }
     
    296270      @@generate_memory_module = true
    297271    else
    298       # 何もしない
     272      # 何もしない
    299273    end
    300274  end
     
    309283      @@inter_domain_join_set[ rhs_cell ] = []
    310284    end
    311     # 左辺のドメインルートを記録
     285    # 左辺のドメインルートを記録
    312286    @@inter_domain_join_set[ rhs_cell ] << join
    313287  end
     
    339313    cell_domain_root = cell.get_region.get_domain_root
    340314    if cell_domain_root.get_domain_type.get_kind != :OutOfDomain then
    341       domain_roots << cell.get_region.get_domain_root  # 結合å
    342 ˆã®ãƒ‰ãƒ¡ã‚¤ãƒ³ã‚‚含める
     315      domain_roots << cell.get_region.get_domain_root  # 結合先のドメインも含める
    343316    end
    344317    domain_roots.each{ |dr|
     
    364337    }
    365338    if acv == "" then
    366       # 呼びå
    367 ˆã‚»ãƒ«ãŒç„¡æ‰€å±žã‹ã¤ã€å‘¼ã³å
    368 ƒã‚‚無所属のみ、または結合無しの場合
     339      # 呼び先セルが無所属かつ、呼び元も無所属のみ、または結合無しの場合
    369340      acv = "TACP_SHARED"
    370341    end
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRPRPCPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2018 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#  $Id$
     
    5641require_tecsgen_lib "lib/GenParamCopy.rb"
    5742
    58 #= HRPRPCPlugin プラグイン
    59 # スループラグイン (through)
    60 # ・OpaqueMarshalerPlugin を使用してマーシャラセルタイプを生成する
    61 # ・マーシャラ、TDR、チャンネル、メッセージバッファを生成する
     43#= HRPRPCPlugin プラグイン
     44# スループラグイン (through)
     45# ・OpaqueMarshalerPlugin を使用してマーシャラセルタイプを生成する
     46# ・マーシャラ、TDR、チャンネル、メッセージバッファを生成する
    6247#
    6348class HRPRPCPlugin < ThroughPlugin
     
    6651  include GenParamCopy
    6752
    68   # RPCPlugin 専用のオプション
    69   HRPRPCPluginArgProc = RPCPluginArgProc.dup  # 複製を作ってå
    70 ƒã‚’変更しないようにする
     53  # RPCPlugin 専用のオプション
     54  HRPRPCPluginArgProc = RPCPluginArgProc.dup  # 複製を作って元を変更しないようにする
    7155  HRPRPCPluginArgProc[ "noClientSemaphore"  ] = Proc.new { |obj,rhs| obj.set_noClientSemaphore rhs }
    7256  HRPRPCPluginArgProc[ "semaphoreCelltype"  ] = Proc.new { |obj,rhs| obj.set_semaphoreCelltype rhs }
    7357  @@isFirstInstance = true
    7458
    75   #=== RPCPlugin の initialize
    76   #  説明は ThroughPlugin (plugin.rb) を参ç
    77 §
     59  #=== RPCPlugin の initialize
     60  #  説明は ThroughPlugin (plugin.rb) を参照
    7861  def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell )
    7962    super
     
    8265    initialize_opaque_marshaler
    8366
    84     # オプション:GenOpaqueMarshaler 参ç
    85 §
     67    # オプション:GenOpaqueMarshaler 参照
    8668    @plugin_arg_check_proc_tab = HRPRPCPluginArgProc
    8769    parse_plugin_arg
     
    9981      if @PPAllocatorSize == nil then
    10082        cdl_error( "HRP9999 PPAllocatorSize must be speicified for pointer argments" )
    101         # @PPAllocatorSize = 0   # 仮に 0 としておく (cdl の構文エラーを避けるため)
     83        # @PPAllocatorSize = 0   # 仮に 0 としておく (cdl の構文エラーを避けるため)
    10284      end
    10385    elsif @PPAllocatorSize then
     
    10991#      if func_decl.get_type.is_oneway? then
    11092#        if ( param_decl.get_size || param_decl.get_count ) && param_decl.get_string then
    111 #          cdl_error( "array of string not supported for oneway function in Transparent RPC" )  # mikan 文字列のé
    112 åˆ—
     93#          cdl_error( "array of string not supported for oneway function in Transparent RPC" )  # mikan 文字列の配列
    11394#        elsif param_decl.get_string == -1 then
    114 #          cdl_error( "length unspecified string is not permited for oneway function in Transparent RPC" )  # mikan 長さ未指定文字列
     95#          cdl_error( "length unspecified string is not permited for oneway function in Transparent RPC" )  # mikan 長さ未指定文字列
    11596#        end
    11697#      end
     
    11899
    119100    #
    120     #  tecsgen/tecs/rpcにincludeパスを通す
    121     #  #include "tecs_rpc.h" を実現するためにå¿
    122 è¦
    123     #    大山:削除 Makefile.tecsgen に vpath, INCLUDES をå
    124 ¥ã‚Œã‚‹ã®ã¯ã€ã‚ˆããªã„考え
    125     #             TECSGEN.add_search_path で Makefile_templ にå
    126 ¥ã‚Œã‚‹ã®ãŒã‚ˆã„
     101    #  tecsgen/tecs/rpcにincludeパスを通す
     102    #  #include "tecs_rpc.h" を実現するために必要
     103    #    大山:削除 Makefile.tecsgen に vpath, INCLUDES を入れるのは、よくない考え
     104    #             TECSGEN.add_search_path で Makefile_templ に入れるのがよい
    127105    # if @@isFirstInstance
    128106    #     f = AppFile.open( "#{$gen}/Makefile.tecsgen" )
     
    134112  end
    135113
    136   #=== plugin の宣言コード (celltype の定義) 生成
     114  #=== plugin の宣言コード (celltype の定義) 生成
    137115  def gen_plugin_decl_code( file )
    138116
    139117    ct_name = "#{@ct_name}_#{@channelCelltype}"
    140118
    141     # このセルタイプ(同じシグニチャ)は既に生成されているか?
     119    # このセルタイプ(同じシグニチャ)は既に生成されているか?
    142120    if @@generated_celltype[ ct_name ] == nil then
    143121      @@generated_celltype[ ct_name ] = [ self ]
     
    148126
    149127    f = CFile.open( @rpc_channel_celltype_file_name, "w" )
    150     # 同じå†
    151 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     128    # 同じ内容を二度書く可能性あり (AppFile は不可)
    152129
    153130    f.print <<EOT
     
    177154  end
    178155
    179   #===  through cell コードを生成
     156  #===  through cell コードを生成
    180157  #
    181158  #
     
    229206EOT
    230207
    231     ##### クライアント側のセルの生成 #####
     208    ##### クライアント側のセルの生成 #####
    232209    nest = @start_region.gen_region_str_pre file
    233210    nest_str = "  " * nest
    234211
    235     # セマフォの生成
     212    # セマフォの生成
    236213    if @b_noClientSemaphore == false then
    237214      file.print <<EOT
     
    243220    end
    244221
    245     # クライアント側チャンネル (tMessageBufferCEP)の生成
    246     # チャンネルはå¿
    247 ãšãƒªãƒ¼ã‚¸ãƒ§ãƒ³ä¸‹ã«ã‚るので、 '::' でつなぐ (でなければ、ルートリージョンにないかチェックがå¿
    248 è¦ï¼‰
     222    # クライアント側チャンネル (tMessageBufferCEP)の生成
     223    # チャンネルは必ずリージョン下にあるので、 '::' でつなぐ (でなければ、ルートリージョンにないかチェックが必要)
    249224
    250225    file.print <<EOT
     
    263238EOT
    264239
    265     # セマフォの結合文
     240    # セマフォの結合文
    266241    if @b_noClientSemaphore == false then
    267242      semaphore = "#{nest_str}    cLockChannel = #{@serverChannelCell}_Semaphore.eSemaphore;\n"
     
    270245    end
    271246
    272     ### クライアント側チャンネル (マーシャラ+TDR)の生成 ###
     247    ### クライアント側チャンネル (マーシャラ+TDR)の生成 ###
    273248    cell = @next_cell
    274     # アロケータの指定があるか?
     249    # アロケータの指定があるか?
    275250    if cell.get_allocator_list.length > 0 then
    276251
     
    288263
    289264        file.print delim
    290         delim = ",\n"        # 最終行には出さない
    291 
    292         if subsc then        # é
    293 åˆ—添数
     265        delim = ",\n"        # 最終行には出さない
     266
     267        if subsc then        # 配列添数
    294268          subsc_str = '[#{subsc}]'
    295269        else
     
    297271        end
    298272
    299         eport = "eThroughEntry" #RPCの受け口名に変更
     273        eport = "eThroughEntry" #RPCの受け口名に変更
    300274        file.print nest_str
    301275        file.print  "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc_str}"
     
    316290#{clientErrorHandler_str}#{semaphore}#{nest_str}  };
    317291EOT
    318     ### END: クライアント側チャンネル (マーシャラ+TDR)の生成 ###
     292    ### END: クライアント側チャンネル (マーシャラ+TDR)の生成 ###
    319293    @start_region.gen_region_str_post file
    320294    file.print "\n\n"
    321295
    322     ##### サーバー側のセルの生成 #####
     296    ##### サーバー側のセルの生成 #####
    323297    nest = @end_region.gen_region_str_pre file
    324298    nest_str = "  " * nest
     
    336310    end
    337311
    338     # サーバー側チャンネル (tMessageBufferCEP)
     312    # サーバー側チャンネル (tMessageBufferCEP)
    339313    if @PPAllocatorSize then
    340314      alloc_cell =<<EOT
     
    358332EOT
    359333
    360     # サーバー側TDR
     334    # サーバー側TDR
    361335    file.print <<EOT
    362336
     
    373347    end
    374348
    375     # サーバー側チャンネル (アンマーシャラ)
     349    # サーバー側チャンネル (アンマーシャラ)
    376350    file.print <<EOT
    377351#{alloc_cell}
     
    383357EOT
    384358
    385     # サーバー側タスクメイン
     359    # サーバー側タスクメイン
    386360    file.print <<EOT
    387361
     
    392366EOT
    393367
    394     # サーバー側タスク
     368    # サーバー側タスク
    395369    file.print <<EOT
    396370
     
    407381
    408382
    409   #=== プラグイン引数 noClientSemaphore のチェック
     383  #=== プラグイン引数 noClientSemaphore のチェック
    410384  def set_noClientSemaphore rhs
    411385    rhs = rhs.to_sym
     
    419393  end
    420394
    421   #=== プラグイン引数 semaphoreCelltype のチェック
     395  #=== プラグイン引数 semaphoreCelltype のチェック
    422396  def set_semaphoreCelltype rhs
    423397    @semaphoreCelltype = rhs.to_sym
     
    429403  end
    430404
    431   #=== NamespacePath を得る
    432   # 生成するセルの namespace path を生成する
     405  #=== NamespacePath を得る
     406  # 生成するセルの namespace path を生成する
    433407  def get_cell_namespace_path
    434408#    nsp = @region.get_namespace.get_namespace_path
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRPSVCPlugin.rb

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

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2018 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#  $Id$
     
    5540require_tecsgen_lib "HRPKernelObjectPlugin.rb"
    5641require_tecsgen_lib "HRPKernelObjectManager.rb"
    57 #== celltype プラグインのå
    58 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     42#== celltype プラグインの共通の親クラス
    5943class HRPTaskPlugin < HRPKernelObjectPlugin
    6044    ##
     
    6953    end
    7054
    71     # # ATT_MODを生成済みかどうか                   # 2017.8.27
     55    # # ATT_MODを生成済みかどうか                   # 2017.8.27
    7256    # @@generate_memory_module = false
    7357
    7458    #
    75     #  CRE_TSKの出力
    76     #  file:: FILE:     å‡ºåŠ›å
    77 ˆãƒ•ã‚¡ã‚¤ãƒ«
    78     #  cell :: Cell タスクセルインスタンス
    79     #  val :: Hash {attr => string}:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    80     #  tab :: string: タブ
     59    #  CRE_TSKの出力
     60    #  file:: FILE:     出力先ファイル
     61    #  cell :: Cell タスクセルインスタンス
     62    #  val :: Hash {attr => string}:   カーネルオブジェクトの属性の解析結果
     63    #  tab :: string: タブ
    8164    #
    8265    def print_cfg_cre(file, cell, val, tab)
    8366        val[:id] = val[:id].gsub( /(^|[^\$])\$id\$/, "\\1#{@celltype.get_name.to_s}_#{cell.get_name.to_s}" )
    84         # $cbp$の代わり
     67        # $cbp$の代わり
    8568        cell_IDX = @celltype.get_name_array(cell)[7]
    86         # CRE_TSKの生成
     69        # CRE_TSKの生成
    8770        dbgPrint "assign task plugin\n"
    8871        domainOption = cell.get_region.get_domain_root.get_domain_type.get_option
     
    9174            if val[:systemStackSize] == "0"
    9275                #
    93                 #  システムスタックの定義を省略
     76                #  システムスタックの定義を省略
    9477                #
    9578                file.print <<EOT
     
    9881            else
    9982                #
    100                 #  システムスタックの定義を追加
     83                #  システムスタックの定義を追加
    10184                #
    10285                file.print <<EOT
     
    10689        else
    10790            #
    108             #  無所属のタスクは存在してはならないため,エラーとする
     91            #  無所属のタスクは存在してはならないため,エラーとする
    10992            #
    11093            raise "task #{val[:id]} must belong to a domain."
     
    11396
    11497    #
    115     #  SAC_TSKの出力
    116     #  file:: FILE:     å‡ºåŠ›å
    117 ˆãƒ•ã‚¡ã‚¤ãƒ«
    118     #  val :: Hash {attr => string}:   ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトの属性の解析結果
    119     #  acv :: Hash {accessPatternx => string}:   ã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ãƒ™ã‚¯ã‚¿
     98    #  SAC_TSKの出力
     99    #  file:: FILE:     出力先ファイル
     100    #  val :: Hash {attr => string}:   カーネルオブジェクトの属性の解析結果
     101    #  acv :: Hash {accessPatternx => string}:   アクセス許可ベクタ
    120102    #
    121103    def print_cfg_sac(file, val, acv)
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/Mruby2CBridgePlugin.rb

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

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
    5338#++
    5439
    55 #== celltype プラグインのå
    56 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     40#== celltype プラグインの共通の親クラス
    5741class MrubyBridgeCellPlugin < CellPlugin
    5842
    59   # プラグイン引数名 => Proc
     43  # プラグイン引数名 => Proc
    6044  MrubyBridgePluginArgProc = {
    6145      "ignoreUnsigned" => Proc.new { |obj,rhs| obj.set_ignoreUnsigned rhs },
     
    7559
    7660  #=== CellPlugin# initialize
    77   #cell::     Cell        セル(インスタンス)
    78   # このメソッドは、セルの構文解析が終わったところで呼び出される
    79   # この段階では意味解析が終わっていない
     61  #cell::     Cell        セル(インスタンス)
     62  # このメソッドは、セルの構文解析が終わったところで呼び出される
     63  # この段階では意味解析が終わっていない
    8064  def initialize( cell, option )
    8165    dbgPrint "  #{self.class.name}: initialzie=#{cell.get_name} option=#{option}\n"
     
    9175
    9276    @plugin_arg_str = CDLString.remove_dquote option
    93     # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' )    # 前後の "" を取り除く
     77    # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' )    # 前後の "" を取り除く
    9478    # @plugin_arg_str.sub!( /(.*)"\z/, '\1' )
    9579    @plugin_arg_list = {}
     
    10488    port_list = ct.get_port_list
    10589    if @exclude_port.length > 0 then
    106       # この実è£
    107 ã§ã¯ã€å­˜åœ¨ã—ない port を指定されてもチェックできない
     90      # この実装では、存在しない port を指定されてもチェックできない
    10891      # print "MRBBridgeCellPlugin: exclude list\n"
    10992      port_list.each{ |port|
     
    193176  end
    194177
    195   #=== 後ろの CDL コードを生成
    196   #プラグインの後ろの CDL コードを生成
     178  #=== 後ろの CDL コードを生成
     179  #プラグインの後ろの CDL コードを生成
    197180  #file:: File:
    198181  def self.gen_post_code( file )
     
    210193
    211194  def self.gen_post_code_body file
    212     # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
     195    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
    213196    # file.print "/* '#{self.class.name}' post code */\n"
    214197    dbgPrint "#{self.name}: gen_post_code_body\n"
     
    216199  end
    217200
    218   #=== プラグイン引数 ignoreUnsigned
     201  #=== プラグイン引数 ignoreUnsigned
    219202  def set_ignoreUnsigned rhs
    220203    if rhs == "true" || rhs == nil then
     
    223206  end
    224207
    225   #=== プラグイン引数 exclude_port
     208  #=== プラグイン引数 exclude_port
    226209  def set_exclude_port rhs
    227210    ports = rhs.split ','
     
    239222  end
    240223
    241   #=== プラグイン引数 exclude_port_func
     224  #=== プラグイン引数 exclude_port_func
    242225  def set_exclude_port_func rhs
    243226    port_funcs = rhs.split ','
     
    269252    }
    270253  end
    271   #=== プラグイン引数 auto_exclude
     254  #=== プラグイン引数 auto_exclude
    272255  def set_auto_exclude rhs
    273256    # print "MrubyBridgeCellPlugin: auto_exclude=#{rhs}\n"
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/MrubyBridgeCelltypePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2017 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
     
    6752
    6853#
    69 ##== celltype プラグインのå
    70 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     54##== celltype プラグインの共通の親クラス
    7155#class MrubyBridgeCelltypePlugin < CelltypePlugin
    7256#
    73 #  # プラグイン引数名 => Proc
     57#  # プラグイン引数名 => Proc
    7458#  MrubyBridgePluginArgProc = {
    7559#      "ignoreUnsigned" => Proc.new { |obj,rhs| obj.set_ignoreUnsigned rhs },
     
    8569#  @@count = 1
    8670#
    87 #  #celltype::     Celltype        セルタイプ(インスタンス)
     71#  #celltype::     Celltype        セルタイプ(インスタンス)
    8872#  def initialize( celltype, option )
    8973#    dbgPrint "#{self.class.name}: initialzie: #{celltype.get_name}\n"
     
    10791#  end
    10892#
    109 #  #=== 新しいセル
    110 #  #cell::        Cell            セル
     93#  #=== 新しいセル
     94#  #cell::        Cell            セル
    11195#  #
    112 #  # celltype プラグインを指定されたセルタイプのセルが生成された
    113 #  # セルタイププラグインに対する新しいセルの報告
    114 #  # generate 文により呼び出された場合、それまでに定義された cell については、initialize のタイミングで呼び出される
     96#  # celltype プラグインを指定されたセルタイプのセルが生成された
     97#  # セルタイププラグインに対する新しいセルの報告
     98#  # generate 文により呼び出された場合、それまでに定義された cell については、initialize のタイミングで呼び出される
    11599#  def new_cell( cell )
    116100#    dbgPrint "MrubyBridgeCelltypePlugin: new_cell: #{cell.get_name}\n"
    117101#
    118 #    return if @cell_list.include? cell   # この行は、本来不要のはず
    119 #    if TECSGEN.post_coded?               # post_code 以降のセルは対象から外す
     102#    return if @cell_list.include? cell   # この行は、本来不要のはず
     103#    if TECSGEN.post_coded?               # post_code 以降のセルは対象から外す
    120104#      cdl_info( "I9999 MrubyBridgeCelltypePlugin: $1 is excluded because cell generated after post_coded", cell.get_name )
    121105#      return
     
    160144#  end
    161145#
    162 #### 意味解析段階で呼び出されるメソッド ###
    163 #  #===  CDL ファイルの生成
    164 #  #      typedef, signature, celltype, cell のコードを生成
    165 #  #      重複して生成してはならない
    166 #  #      すでに生成されている場合は出力しないこと。
    167 #  #      もしくは同名の import により、重複を避けること。
    168 #  #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     146#### 意味解析段階で呼び出されるメソッド ###
     147#  #===  CDL ファイルの生成
     148#  #      typedef, signature, celltype, cell のコードを生成
     149#  #      重複して生成してはならない
     150#  #      すでに生成されている場合は出力しないこと。
     151#  #      もしくは同名の import により、重複を避けること。
     152#  #file::        FILE       生成するファイル
    169153#  def gen_cdl_file file
    170 ##   ã“の段階で呼びだすと generate 文が呼び出される前のセルのみの出力となる
     154##   この段階で呼びだすと generate 文が呼び出される前のセルのみの出力となる
    171155#   
    172156##    dbgPrint "MrubyBridgeCelltypePlugin: gen_cdl_file: #{@celltype.get_name}\n"
     
    189173#  end
    190174#
    191 #  #=== tCelltype_factory.h に挿å
    192 ¥ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’生成する
    193 #  # file 以外の他のファイルにファクトリコードを生成してもよい
    194 #  # セルタイププラグインが指定されたセルタイプのみ呼び出される
     175#  #=== tCelltype_factory.h に挿入するコードを生成する
     176#  # file 以外の他のファイルにファクトリコードを生成してもよい
     177#  # セルタイププラグインが指定されたセルタイプのみ呼び出される
    195178#  def gen_factory file
    196179#  end
     
    200183#  end
    201184#
    202 #  #=== 後ろの CDL コードを生成
    203 #  #プラグインの後ろの CDL コードを生成
     185#  #=== 後ろの CDL コードを生成
     186#  #プラグインの後ろの CDL コードを生成
    204187#  #file:: File:
    205188#  def self.gen_post_code( file )
    206189#    dbgPrint "#{self.name}: gen_post_code_body\n"
    207190#    print "#{self.name}: gen_post_code_body\n"
    208 ##    この段階で生成すると、同じポストコードで出力される mruby の初期化コードに反映されない
     191##    この段階で生成すると、同じポストコードで出力される mruby の初期化コードに反映されない
    209192#   
    210 ##    # MrubyBridgeCelltypePlugin の生成する generate 文は、
     193##    # MrubyBridgeCelltypePlugin の生成する generate 文は、
    211194##    fn2 = "#{$gen}/tmp_MrubyBridgeCelltypePlugin_post.cdl"
    212195##    f2 = File.open( fn2, "w" )
    213 ##    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
     196##    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
    214197##    dbgPrint "MrubyBridgeCelltypePlugin: gen_post_code\n"
    215198##    f2.print "/* '#{self.name}' post code */\n"
     
    229212#  end
    230213#
    231 #  #=== プラグイン引数
    232 #
    233 #  #=== プラグイン引数 ignoreUnsigned
     214#  #=== プラグイン引数
     215#
     216#  #=== プラグイン引数 ignoreUnsigned
    234217#  def set_ignoreUnsigned rhs
    235218#    if rhs == "true" || rhs == nil then
     
    266249#  end
    267250#
    268 #  #=== プラグイン引数 exclude_port_func
     251#  #=== プラグイン引数 exclude_port_func
    269252#  def set_exclude_port_func rhs
    270253#    port_funcs = rhs.split ','
     
    297280#  end
    298281#
    299 #  #=== プラグイン引数 auto_exclude
     282#  #=== プラグイン引数 auto_exclude
    300283#  def set_auto_exclude rhs
    301284#    # print "MrubyBridgeCellPlugin: auto_exclude=#{rhs}\n"
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/MrubyBridgeCompositePlugin.rb

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

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

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

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

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    1111#
    1212#--
    13 #   ä¸Šè¨˜è‘—作権è€
    14 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    15 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    16 #   å¤‰ãƒ»å†é
    17 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    18 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    19 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    20 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    21 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    22 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    23 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    24 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    25 #       è€
    26 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    27 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    28 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    29 #       ç”¨ã§ããªã„形で再é
    30 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    31 #       ã¨ï¼Ž
    32 #     (a) 再é
    33 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    34 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    35 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    36 #     (b) 再é
    37 å¸ƒã®å½¢æ
    38 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    39 #         å ±å‘Šã™ã‚‹ã“と.
    40 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    41 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    42 ãŠã‚ˆã³TOPPERSプロジェクトをå
    43 è²¬ã™ã‚‹ã“と.
    44 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    45 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    46 ãŠã‚ˆã³TOPPERSプロジェクトを
    47 #       å
    48 è²¬ã™ã‚‹ã“と.
     13#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     14#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     15#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     16#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     17#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     18#       スコード中に含まれていること.
     19#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     20#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     21#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     22#       の無保証規定を掲載すること.
     23#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     24#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     25#       と.
     26#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     27#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     28#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     29#         報告すること.
     30#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     31#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     32#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     33#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     34#       免責すること.
    4935
    50 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    51 ãŠ
    52 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    53 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    54 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    55 #   ã®è²¬ä»»ã‚’負わない.
     36#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     37#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     38#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     39#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     40#   の責任を負わない.
    5641
    5742#  $Id$
     
    6550class NotifierPlugin < CelltypePlugin
    6651
    67         # ---------- アダプタ関数の生成 -------------
     52        # ---------- アダプタ関数の生成 -------------
    6853        #
    69         # siHandlerBodyの受け口関数は,タイムイベント通知の通知å
    70 ˆã¨ã—て直接指定する
    71         # ことはできない.シグネチャが一致していないことが理由である.このため,アダ
    72         # プタとして動作する関数を生成し,カーネルからの呼出しをTECSの呼出しに変換で
    73         # きるようにするå¿
    74 è¦ãŒã‚る.
     54        # siHandlerBodyの受け口関数は,タイムイベント通知の通知先として直接指定する
     55        # ことはできない.シグネチャが一致していないことが理由である.このため,アダ
     56        # プタとして動作する関数を生成し,カーネルからの呼出しをTECSの呼出しに変換で
     57        # きるようにする必要がある.
    7558        #
    76         # 基本的には,受け口毎にアダプタ関数を生成すれば十分である.しかし,これでは
    77         # メモリ消費量が不å¿
    78 è¦ã«å¢—加してしまう.そこで,通知å
    79 ˆé–¢æ•°ã«intptr_t型の引数
    80         # を渡せることに着目し,関数の"一般化"を図る.すなわち受け口のある属性(ここ
    81         # では,結合å
    82 ˆã®ã‚»ãƒ«ï¼Œæ·»å­—などを指す)を,アダプタ関数の引数として受け取れる
    83         # ようにし,1個のアダプタ関数を2個以上の結合に対し用いることができるように
    84         # する.
     59        # 基本的には,受け口毎にアダプタ関数を生成すれば十分である.しかし,これでは
     60        # メモリ消費量が不必要に増加してしまう.そこで,通知先関数にintptr_t型の引数
     61        # を渡せることに着目し,関数の"一般化"を図る.すなわち受け口のある属性(ここ
     62        # では,結合先のセル,添字などを指す)を,アダプタ関数の引数として受け取れる
     63        # ようにし,1個のアダプタ関数を2個以上の結合に対し用いることができるように
     64        # する.
    8565        #
    86         # アダプタ関数の属性について整理すると,
    87         #  - 受け口関数 - 一般化を行うと,実行時コストが大きく増大してしまうことが
    88         #    確認されている.このため,一般化は行わない.EntryPropertyにも含めない.
    89         #  - セルインデックス - CELLIDX型で,型の規定はないが,"ホ゜インタ値て゛あったり
    90         #    整数値て゛あったりする。" (TECS 5.3.6) より,インデックスかポインタある
    91         #    ことが分かる.インデックスだとすると,この値はセルCBのアドレッシングに
    92         #    使用されるので,intptr_tに収まる筈である.ポインタの場合,当然intptr_t
    93         #    に収まる.
    94         #  - 受け口é
    95 åˆ—の添字 - int_t.同様にintptr_tに収まる筈である.
    96         # これらのうち,セルインデックスと受け口é
    97 åˆ—の添字はパラメータに含めることが
    98         # できそうであるが,両方は無理である.
    99         # 両方を格納したé
    100 åˆ—を生成し,そのé
    101 åˆ—の要素へのポインタを渡すようにするとい
    102         # う選択肢も可能であるが,実行速度を優å
    103 ˆã™ã‚‹ãŸã‚ã«ï¼Œã“の方法はとらなかった.
     66        # アダプタ関数の属性について整理すると,
     67        #  - 受け口関数 - 一般化を行うと,実行時コストが大きく増大してしまうことが
     68        #    確認されている.このため,一般化は行わない.EntryPropertyにも含めない.
     69        #  - セルインデックス - CELLIDX型で,型の規定はないが,"ホ゜インタ値て゛あったり
     70        #    整数値て゛あったりする。" (TECS 5.3.6) より,インデックスかポインタある
     71        #    ことが分かる.インデックスだとすると,この値はセルCBのアドレッシングに
     72        #    使用されるので,intptr_tに収まる筈である.ポインタの場合,当然intptr_t
     73        #    に収まる.
     74        #  - 受け口配列の添字 - int_t.同様にintptr_tに収まる筈である.
     75        # これらのうち,セルインデックスと受け口配列の添字はパラメータに含めることが
     76        # できそうであるが,両方は無理である.
     77        # 両方を格納した配列を生成し,その配列の要素へのポインタを渡すようにするとい
     78        # う選択肢も可能であるが,実行速度を優先するために,この方法はとらなかった.
    10479        #
    105         # このため,一般化は以下のパターンに分類して行う.
     80        # このため,一般化は以下のパターンに分類して行う.
    10681        #
    107         # 1. セルインデックスのみ一般化.セルインデックスのパターン数が受け口é
    108 åˆ—の
    109         #    添字のパターン数より多いか,あるいは受け口がé
    110 åˆ—でない場合に行われる.
    111         # 2. 受け口é
    112 åˆ—の添字のみ一般化.この場合,セルごとに異なる関数を用いる.
     82        # 1. セルインデックスのみ一般化.セルインデックスのパターン数が受け口配列の
     83        #    添字のパターン数より多いか,あるいは受け口が配列でない場合に行われる.
     84        # 2. 受け口配列の添字のみ一般化.この場合,セルごとに異なる関数を用いる.
    11385        #
    114         # これより,各受け口関数について,アダプタ関数の生成個数は,
    115         #         O(min{セルインデックスのパターン数, 添字のパターン数})
    116         # となる.
     86        # これより,各受け口関数について,アダプタ関数の生成個数は,
     87        #         O(min{セルインデックスのパターン数, 添字のパターン数})
     88        # となる.
    11789        #
    118         # プラグインでの処理をワンパスで行うために,tecsgen.cfgではアダプタ関数を直
    119         # 接指定するのではなく,代わりにアダプタ関数を表すマクロを使用する.この
    120         # マクロはアダプタ関数ハンドルと呼ぶことにする.
    121         # アダプタ関数ハンドルは,次の2個の要素から成る.
    122         #  - アダプタ関数へののポインタ
    123         #  - アダプタ関数の引数
     90        # プラグインでの処理をワンパスで行うために,tecsgen.cfgではアダプタ関数を直
     91        # 接指定するのではなく,代わりにアダプタ関数を表すマクロを使用する.この
     92        # マクロはアダプタ関数ハンドルと呼ぶことにする.
     93        # アダプタ関数ハンドルは,次の2個の要素から成る.
     94        #  - アダプタ関数へののポインタ
     95        #  - アダプタ関数の引数
    12496        #
    12597        #   $Id$
     
    128100        class AdapterGenerator
    129101
    130                 # 結合å
    131 ˆã«é–¢ã™ã‚‹å±žæ€§ã‚’含む.セル,受け口é
    132 åˆ—の添字から成る.
    133                 # 同一のEntryPropertyとなる結合は,å
    134 ¨ãåŒã˜æ–¹æ³•ã§ãã®å—け口関数を呼び
    135                 # 出せる.
     102                # 結合先に関する属性を含む.セル,受け口配列の添字から成る.
     103                # 同一のEntryPropertyとなる結合は,全く同じ方法でその受け口関数を呼び
     104                # 出せる.
    136105                # @private
    137106                class EntryProperty
    138                         # @return [Cell] 受け口側のセル.
     107                        # @return [Cell] 受け口側のセル.
    139108                        attr_reader :cell
    140109
    141                         # @return [Integer, nil] 受け口é
    142 åˆ—の添字.é
    143 åˆ—でない場合はnil.
     110                        # @return [Integer, nil] 受け口配列の添字.配列でない場合はnil.
    144111                        attr_reader :subscript
    145112
     
    153120                        end
    154121
    155                         # 同値性の定義.Hashのキーとして使用するのにå¿
    156 è¦ï¼Ž
     122                        # 同値性の定義.Hashのキーとして使用するのに必要.
    157123                        def eql?(o) @cell == o.cell && @subscript == o.subscript end
    158124                        def hash() @cell.hash ^ @subscript.hash end
     
    161127                # @private
    162128                class EntryPort
    163                         # @param [Port] port 結合å
    164 ˆã®ã‚»ãƒ«ã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—の受け口.
     129                        # @param [Port] port 結合先のセルのセルタイプの受け口.
    165130                        def initialize(port, prefix)
    166131                                @port = port
    167132                                @global_name = "#{prefix}_#{@port.get_celltype.get_global_name}_#{@port.get_name}"
    168133
    169                                 # 受け口関数名.siHandlerBodyを想定しているので,関数名はmainで固定である.
     134                                # 受け口関数名.siHandlerBodyを想定しているので,関数名はmainで固定である.
    170135                                @entry_fn_name = "#{@port.get_celltype.get_global_name}_#{@port.get_name}_main"
    171136
     
    174139                        end
    175140
    176                         # @return [String] グローバルに一意(なものとして扱えるよう)な識別子.
     141                        # @return [String] グローバルに一意(なものとして扱えるよう)な識別子.
    177142                        attr_reader :global_name
    178143
     
    180145                        attr_reader :port
    181146
    182                         # 指定したEntryPropertyに対応するアダプタ関数ハンドルを取得する.
     147                        # 指定したEntryPropertyに対応するアダプタ関数ハンドルを取得する.
    183148                        # @param [EntryProperty] ep
    184                         # @return [String] アダプタ関数ハンドル.
     149                        # @return [String] アダプタ関数ハンドル.
    185150                        # @private
    186151                        def adapter_handle_for_entry_property(ep)
     
    192157                        end
    193158
    194                         # 結合å
    195 ˆã®æƒ
    196 å ±ã«å¿œã˜ãŸã‚¢ãƒ€ãƒ—タ関数をソース・ヘッダーに出力する.
    197                         # 一般化指定は,`cell`または`subscript`の一方のみ行うことができる.
     159                        # 結合先の情報に応じたアダプタ関数をソース・ヘッダーに出力する.
     160                        # 一般化指定は,`cell`または`subscript`の一方のみ行うことができる.
    198161                        #
    199162                        # @param [AdapterGenerator] context
    200                         # @param [String] fn_name 関数名.
    201                         # @param [Cell, Symbol] cell セル.セルについて一般化する場合は `:generic`
    202                         # @param [Integer, Symbol, nil] subscript 添字.添字について一般化する場合は `:generic`
    203                         # @param [Celltype] 呼びå
    204 ˆã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—、cell==:generic の場合のみ有効
     163                        # @param [String] fn_name 関数名.
     164                        # @param [Cell, Symbol] cell セル.セルについて一般化する場合は `:generic`
     165                        # @param [Integer, Symbol, nil] subscript 添字.添字について一般化する場合は `:generic`
     166                        # @param [Celltype] 呼び先のセルタイプ、cell==:generic の場合のみ有効
    205167                        # @private
    206168                        def generate_inner(context, fn_name, cell, subscript, callee_ct=nil)
     
    213175                                ct = @port.get_celltype
    214176
    215                                 # シングルトンセルタイプ以外では,CELLIDXの指定がå¿
    216 è¦ï¼Ž
     177                                # シングルトンセルタイプ以外では,CELLIDXの指定が必要.
    217178                                unless ct.is_singleton?
    218179                                        if cell == :generic
     
    220181                                                # params << "(CELLIDX)extinf"
    221182                                        else
    222                                                 # セルのCELLIDXを得る
     183                                                # セルのCELLIDXを得る
    223184                                                if ct.has_INIB? || ct.has_CB?
    224185                                                        params << ct.get_name_array(cell)[7]
     
    229190                                end
    230191
    231                                 # 受け口é
    232 åˆ—の添字.
     192                                # 受け口配列の添字.
    233193                                if @port.get_array_size
    234194                                        if subscript == :generic
     
    248208                        end
    249209
    250                         # 指定したJoinに対応するアダプタ関数ハンドルを取得する.
    251                         # @return [Array] アダプタ関数ハンドル.
     210                        # 指定したJoinに対応するアダプタ関数ハンドルを取得する.
     211                        # @return [Array] アダプタ関数ハンドル.
    252212                        def make_adapter_handle(join)
    253213                                prop = EntryProperty.from_join(join)
     
    259219                        end
    260220
    261                         # ソース・ヘッダーの記述を生成する.
     221                        # ソース・ヘッダーの記述を生成する.
    262222                        # @param [AdapterGenerator] context
    263223                        def generate(context)
     
    273233                                no_cellidx = false
    274234                                if !(ct.has_INIB? || ct.has_CB?)
    275                                         # CB, INIB最適化により,CB, INIBが両方不要になったケース.
    276                                         # CELLIDXが不要であるので,セルについて一般化しても意味
    277                                         # はないので,添字による一般化を選択する.
     235                                        # CB, INIB最適化により,CB, INIBが両方不要になったケース.
     236                                        # CELLIDXが不要であるので,セルについて一般化しても意味
     237                                        # はないので,添字による一般化を選択する.
    278238                                        generalize_by_cell_idx = false
    279239                                        no_cellidx = true
    280240
    281                                         # å
    282 ¨ã¦ã®ã‚»ãƒ«ã‚’同一視する.
     241                                        # 全てのセルを同一視する.
    283242                                        cells = { @props[0].cell => @props }
    284243
    285244                                        header_file.print " * No INIB & CB: generalized by subscript\n"
    286245                                elsif @port.get_array_size
    287                                         # 一般化パターンの分類を行うために,受け口側セルや添字の
    288                                         # パターン数を分析して,最適な方を選択する.
     246                                        # 一般化パターンの分類を行うために,受け口側セルや添字の
     247                                        # パターン数を分析して,最適な方を選択する.
    289248                                        generalize_by_cell_idx = cells.length >= subscripts.length
    290249                                        if generalize_by_cell_idx
     
    294253                                        end
    295254                                else
    296                                         # 常にCELLIDXで一般化
     255                                        # 常にCELLIDXで一般化
    297256                                        generalize_by_cell_idx = true
    298257                                        header_file.print " * non-array entry port: generalized by cell\n"
     
    302261
    303262                                if generalize_by_cell_idx
    304                                         # CELLIDXについて一般化
     263                                        # CELLIDXについて一般化
    305264                                        subscripts.each { |subscript, props|
    306265                                                if subscript
    307266                                                        fn_name = "#{@global_name}_adap_#{subscript}"
    308267                                                else
    309                                                         # 受け口é
    310 åˆ—でない場合
     268                                                        # 受け口配列でない場合
    311269                                                        fn_name = "#{@global_name}_adap"
    312270                                                end
     
    318276                                                        handle = adapter_handle_for_entry_property(prop)
    319277
    320                                                         # セルのCELLIDXを得る
     278                                                        # セルのCELLIDXを得る
    321279                                                        if ct.has_INIB? || ct.has_CB?
    322280                                                                idx = ct.get_name_array(prop.cell)[7]
     
    329287                                        }
    330288                                else
    331                                         # 添字について一般化
     289                                        # 添字について一般化
    332290                                        cells.each { |cell, props|
    333291                                                if no_cellidx
    334                                                         # CB/INIB なし
     292                                                        # CB/INIB なし
    335293                                                        fn_name = "#{@global_name}_adap"
    336294                                                else
     
    358316                attr :header_file
    359317
    360                 # @param [String] celltype_name ハンドラ関数のセルタイプ.
    361                 # @param [String] prefix 名前衝突を防ぐためのプレフィックス.
     318                # @param [String] celltype_name ハンドラ関数のセルタイプ.
     319                # @param [String] prefix 名前衝突を防ぐためのプレフィックス.
    362320                def initialize(celltype_name, prefix)
    363321                        @celltype_name = celltype_name
     
    369327
    370328                # ===AdapterGenerator#make_adapter_handle===
    371                 # 指定した結合の呼出しを行うためのアダプタ関数ハンドルを生成する.
    372                 # @return [Array] アダプタ関数ハンドル.
     329                # 指定した結合の呼出しを行うためのアダプタ関数ハンドルを生成する.
     330                # @return [Array] アダプタ関数ハンドル.
    373331                def make_adapter_handle(join)
    374332                        entry_port = @entry_ports[join.get_rhs_port]
     
    382340
    383341                # ===AdapterGenerator#finish===
    384                 # 各受け口に対し,アダプタ関数を生成する.
     342                # 各受け口に対し,アダプタ関数を生成する.
    385343                def finish
    386344                        @source_file = AppFile.open( "#{$gen}/#{@celltype_name}.c" )
     
    392350                @header_file.print "\n/* Generated by #{self.class.name} */\n\n"
    393351
    394                         # NotifierPluginを使用するセルタイプが複数ある場合,それぞれに
    395                         # 対しAdapterGenerator#finishが呼び出される.tTimeEventHandler.hに
    396                         # 続けて書き込んでしまうと,ヘッダーガードの関係で2回目以降の記述
    397                         # が読み込まれなくなってしまう.このため,ファイル名 + セルタイプ名
    398                         # という少し特殊なヘッダーガードを用いる.
     352                        # NotifierPluginを使用するセルタイプが複数ある場合,それぞれに
     353                        # 対しAdapterGenerator#finishが呼び出される.tTimeEventHandler.hに
     354                        # 続けて書き込んでしまうと,ヘッダーガードの関係で2回目以降の記述
     355                        # が読み込まれなくなってしまう.このため,ファイル名 + セルタイプ名
     356                        # という少し特殊なヘッダーガードを用いる.
    399357                        header_guard = "#{@celltype_name}_H_#{@prefix}"
    400358
     
    402360                @header_file.print "\#define #{header_guard}\n\n"
    403361
    404                 # カーネルコンフィギュレータを実行する際,ハンドラ受け口のセルタイプ
    405                 # のセルCBの定義がå¿
    406 è¦ãªå ´åˆãŒã‚る.
     362                # カーネルコンフィギュレータを実行する際,ハンドラ受け口のセルタイプ
     363                # のセルCBの定義が必要な場合がある.
    407364                @header_file.print "\#include \"#{@celltype_name}_aux.h\"\n\n"
    408365
    409                         # 結合å
    410 ˆã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—の定義は,自分のセルのtecsgen.hよりもå
    411 ˆã«
    412                         # 読み込まなければならないが,このプラグインが複数実行されると,
    413                         # 順序が崩れてしまう.そこで,結合å
    414 ˆã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—の定義はもう一つの
    415                         # ヘッダーファイル(tCelltypeName_aux.h)から読み込むようにする.
     366                        # 結合先のセルタイプの定義は,自分のセルのtecsgen.hよりも先に
     367                        # 読み込まなければならないが,このプラグインが複数実行されると,
     368                        # 順序が崩れてしまう.そこで,結合先のセルタイプの定義はもう一つの
     369                        # ヘッダーファイル(tCelltypeName_aux.h)から読み込むようにする.
    416370                        aux_header_file = AppFile.open( "#{$gen}/#{@celltype_name}_aux.h" )
    417371                aux_header_file.print "\n/* Generated by #{self.class.name} */\n\n"
     
    424378                        cb_type_only_guard = "#{@celltype_name}_AUX_H_#{@prefix}_CB_TYPE_ONLY"
    425379
    426                         # 結合å
    427 ˆã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—の定義を読み込む
     380                        # 結合先のセルタイプの定義を読み込む
    428381                        aux_header_file.print "#ifndef TOPPERS_CB_TYPE_ONLY\n"
    429382                    aux_header_file.print "#define TOPPERS_CB_TYPE_ONLY\n"
     
    456409        end
    457410
    458         # ------ 通知のハンドラの種類の定義 -------
     411        # ------ 通知のハンドラの種類の定義 -------
    459412
    460413        class Handler
     
    466419        end
    467420
    468         # 通常のハンドラ
     421        # 通常のハンドラ
    469422        EVENT_HANDLER = Handler::new("ciNotificationHandler")
    470423
    471         # エラーハンドラ (通常のハンドラが失敗した場合に呼び出される)
     424        # エラーハンドラ (通常のハンドラが失敗した場合に呼び出される)
    472425        ERROR_HANDLER = Handler::new("ciErrorNotificationHandler")
    473426
     
    492445        end
    493446
    494         # ------ 通知の属性の定義 -------
     447        # ------ 通知の属性の定義 -------
    495448        #
    496         # ハンドラタイプに合致しない属性が指定された場合に
    497         # エラーを出力できるよう、å
    498 ¨ã¦ã®å±žæ€§ã‚’ここで列挙する。
     449        # ハンドラタイプに合致しない属性が指定された場合に
     450        # エラーを出力できるよう、全ての属性をここで列挙する。
    499451
    500452        SETVAR_ADDR_ATTR =   HandlerAttribute::new("setVariableAddress")
     
    512464        ]
    513465
    514         # ------ ハンドラタイプの定義 -------
     466        # ------ ハンドラタイプの定義 -------
    515467
    516468        class BaseHandlerType
     
    526478
    527479            #=== NotifierPlugin#BaseHandlerType#validate_join
    528             # 指定したセルの結合å
    529 ˆãŒã€ã“のハンドラタイプに該当するかを検証
    530             # handler:: Handler : ハンドラ
    531             # cell:: Cell : セル
    532             # join:: Join : 結合 (declarationがPortであるもの)
     480            # 指定したセルの結合先が、このハンドラタイプに該当するかを検証
     481            # handler:: Handler : ハンドラ
     482            # cell:: Cell : セル
     483            # join:: Join : 結合 (declarationがPortであるもの)
    533484                def validate_join(handler, cell, join)
    534485        return !generate_attr_map(handler, cell).nil?
     
    536487
    537488            #=== NotifierPlugin#BaseHandlerType#generate_attr_map
    538             # 指定したセルの属性と、既知のHandlerAttributeのマッピングを
    539             # 生成し、Hash<HandlerAttribute, Join> (各属性とそれに対応する
    540             # Join(declarationがDeclのもの)を表すHash)、あるいは、
    541                 # マッピングが行えない場合(属性の不足、過剰)はnilを返す。
     489            # 指定したセルの属性と、既知のHandlerAttributeのマッピングを
     490            # 生成し、Hash<HandlerAttribute, Join> (各属性とそれに対応する
     491            # Join(declarationがDeclのもの)を表すHash)、あるいは、
     492                # マッピングが行えない場合(属性の不足、過剰)はnilを返す。
    542493            #
    543             # handler:: Handler : ハンドラ
    544             # cell:: Cell : セル
     494            # handler:: Handler : ハンドラ
     495            # cell:: Cell : セル
    545496                def generate_attr_map(handler, cell)
    546497                        map = {}
     
    552503                                join = join_list.get_item(attr_name.to_sym)
    553504
    554                                 # このセルタイプにおいてå¿
    555 é ˆã®å±žæ€§ã‹?
     505                                # このセルタイプにおいて必須の属性か?
    556506                                is_required = @required_attributes.include?(known_attr)
    557507
    558                                 # 属性の指定が不足している? or 過剰?
    559                                 # 注: ハンドラタイプの判別には、セルで値が指定されているか
    560                                 #     ãŒè€ƒæ
    561 ®ã•ã‚Œã‚‹ã€‚セルタイプで初期値が指定されていても、
    562                                 #     ãã‚Œã¯ãƒãƒ³ãƒ‰ãƒ©ã‚¿ã‚¤ãƒ—の決定に影響しない。
     508                                # 属性の指定が不足している? or 過剰?
     509                                # 注: ハンドラタイプの判別には、セルで値が指定されているか
     510                                #     が考慮される。セルタイプで初期値が指定されていても、
     511                                #     それはハンドラタイプの決定に影響しない。
    563512                                return nil if join.nil? != !is_required
    564513
    565                                 # å¿
    566 è¦ã®ãªã„属性であり、指定もされていないので飛ばす
     514                                # 必要のない属性であり、指定もされていないので飛ばす
    567515                                next if join.nil?
    568516
    569                                 # TODO: attrの結合であることを検証
     517                                # TODO: attrの結合であることを検証
    570518
    571519                                map[known_attr] = join
     
    576524
    577525            #=== NotifierPlugin#BaseHandlerType#gen_cfg_handler_type
    578             # タイムイベントの通知の種類を表すコンフィギュレータの記述を生成し、Stringまたはnilを返す
    579             # handler:: Handler : ハンドラ
     526            # タイムイベントの通知の種類を表すコンフィギュレータの記述を生成し、Stringまたはnilを返す
     527            # handler:: Handler : ハンドラ
    580528                def gen_cfg_handler_type(handler)
    581529                raise "called abstract method gen_cfg_handler_type"
     
    583531
    584532            #=== NotifierPlugin#BaseHandlerType#gen_cfg_handler_parameters
    585             # タイムイベントの通知の引数を表すコンフィギュレータの記述を生成し、String[]を返す
    586             # handler:: Handler : ハンドラ
    587             # join:: Join : 結合 (declarationがPortであるもの)
     533            # タイムイベントの通知の引数を表すコンフィギュレータの記述を生成し、String[]を返す
     534            # handler:: Handler : ハンドラ
     535            # join:: Join : 結合 (declarationがPortであるもの)
    588536            # attrMap:: Hash<HandlerAttribute, Join> :
    589             #     å„属性とそれに対応するJoin (declarationがDeclのもの)
    590             # cell:: Cell : セル
    591                 # adpt_gen:: AdapterGenerator : アダプタ関数を生成するオブジェクト
     537            #     各属性とそれに対応するJoin (declarationがDeclのもの)
     538            # cell:: Cell : セル
     539                # adpt_gen:: AdapterGenerator : アダプタ関数を生成するオブジェクト
    592540                def gen_cfg_handler_parameters(handler, join, attrMap, cell, adpt_gen)
    593541                return nil
     
    595543
    596544            #=== NotifierPlugin#BaseHandlerType#might_fail
    597             # 通知の際、エラーが発生し、その結果エラー通知を呼ぶå¿
    598 è¦ãŒç”Ÿã˜ã‚‹
    599             # かどうかを返す。
     545            # 通知の際、エラーが発生し、その結果エラー通知を呼ぶ必要が生じる
     546            # かどうかを返す。
    600547                def might_fail
    601548                        return false
     
    613560                        id_attr = join.get_rhs_cell.get_celltype.find(:id)
    614561                        if id_attr_join
    615                                 # セル生成時に初期化する場合
     562                                # セル生成時に初期化する場合
    616563                                id = id_attr_join.get_rhs.to_s
    617564                        else
    618                                 # セルタイプの初期化値を使う場合
     565                                # セルタイプの初期化値を使う場合
    619566                                id = id_attr.get_initializer.to_s
    620567                        end
    621568
    622                         # $id$等の置換
     569                        # $id$等の置換
    623570                        name_array = taskCell.get_celltype.get_name_array(taskCell)
    624571                        id = taskCell.get_celltype.subst_name(id, name_array)
     
    673620                        var_value = attrMap[SETVAR_VALUE_ATTR].get_rhs.to_s
    674621
    675                         # $id$等の置換
     622                        # $id$等の置換
    676623                        name_array = cell.get_celltype.get_name_array(cell)
    677624                        var_addr = cell.get_celltype.subst_name(var_addr, name_array)
     
    702649                        var_addr = attrMap[SETVAR_ADDR_ATTR].get_rhs.to_s
    703650
    704                         # $id$等の置換
     651                        # $id$等の置換
    705652                        name_array = cell.get_celltype.get_name_array(cell)
    706653                        var_addr = cell.get_celltype.subst_name(var_addr, name_array)
     
    729676                        var_addr = attrMap[INCVAR_ADDR_ATTR].get_rhs.to_s
    730677
    731                         # $id$等の置換
     678                        # $id$等の置換
    732679                        name_array = cell.get_celltype.get_name_array(cell)
    733680                        var_addr = cell.get_celltype.subst_name(var_addr, name_array)
     
    753700                        id_attr = join.get_rhs_cell.get_celltype.find(:id)
    754701                        if id_attr_join
    755                                 # セル生成時に初期化する場合
     702                                # セル生成時に初期化する場合
    756703                                id = id_attr_join.get_rhs.to_s
    757704                        else
    758                                 # セルタイプの初期化値を使う場合
     705                                # セルタイプの初期化値を使う場合
    759706                                id = id_attr.get_initializer.to_s
    760707                        end
    761708
    762                         # $id$等の置換
     709                        # $id$等の置換
    763710                        name_array = semaphoreCell.get_celltype.get_name_array(semaphoreCell)
    764711                        id = semaphoreCell.get_celltype.subst_name(id, name_array)
     
    793740                        id_attr = join.get_rhs_cell.get_celltype.find(:id)
    794741                        if id_attr_join
    795                                 # セル生成時に初期化する場合
     742                                # セル生成時に初期化する場合
    796743                                id = id_attr_join.get_rhs.to_s
    797744                        else
    798                                 # セルタイプの初期化値を使う場合
     745                                # セルタイプの初期化値を使う場合
    799746                                id = id_attr.get_initializer.to_s
    800747                        end
    801748                        flg_pattern = attrMap[SETFLG_FLAG_ATTR].get_rhs.to_s
    802749
    803                         # $id$等の置換
     750                        # $id$等の置換
    804751                        name_array = eventflagCell.get_celltype.get_name_array(eventflagCell)
    805752                        id = eventflagCell.get_celltype.subst_name(id, name_array)
     
    834781                        id_attr = join.get_rhs_cell.get_celltype.find(:id)
    835782                        if id_attr_join
    836                                 # セル生成時に初期化する場合
     783                                # セル生成時に初期化する場合
    837784                                id = id_attr_join.get_rhs.to_s
    838785                        else
    839                                 # セルタイプの初期化値を使う場合
     786                                # セルタイプの初期化値を使う場合
    840787                                id = id_attr.get_initializer.to_s
    841788                        end
    842789
    843                         # $id$等の置換
     790                        # $id$等の置換
    844791                        name_array = dataqueueCell.get_celltype.get_name_array(dataqueueCell)
    845792                        id = dataqueueCell.get_celltype.subst_name(id, name_array)
     
    868815                        sent_value = attrMap[SNDDTQ_VALUE_ATTR].get_rhs.to_s
    869816
    870                         # $id$等の置換
     817                        # $id$等の置換
    871818                        name_array = cell.get_celltype.get_name_array(cell)
    872819                        sent_value = cell.get_celltype.subst_name(sent_value, name_array)
     
    910857                end
    911858                def gen_cfg_handler_parameters(handler, join, attrMap, cell, adpt_gen)
    912                         # tTimeEventHandlerの結合å
    913 ˆã‚’取得
     859                        # tTimeEventHandlerの結合先を取得
    914860                        handler_cell = join.get_rhs_cell
    915861                call_join = handler_cell.get_join_list.get_item(:ciHandlerBody)
    916862
    917                         # 結合されていない場合はtecsgenがエラーを出すはずなのでここでは
    918                         # エラーにせず無視する.
     863                        # 結合されていない場合はtecsgenがエラーを出すはずなのでここでは
     864                        # エラーにせず無視する.
    919865                        return [] unless call_join
    920866
    921                         # アダプタ関数ハンドルを取得
     867                        # アダプタ関数ハンドルを取得
    922868                        adapter_handle = adpt_gen.make_adapter_handle(call_join)
    923869                return [adapter_handle[1], adapter_handle[0]]
     
    953899
    954900    #@celltype:: Celltype
    955     #@option:: String     :オプション文字列
     901    #@option:: String     :オプション文字列
    956902    def initialize( celltype, option )
    957903        super
    958904        @plugin_arg_check_proc_tab = NotifierPluginArgProc
    959905        @plugin_arg_str = option
    960         @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' )    # 前後の "" を取り除く
     906        @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' )    # 前後の "" を取り除く
    961907        @plugin_arg_str.sub!( /(.*)"\z/, '\1' )
    962908        @factory = nil
     
    996942        kernelCfg.print "\#include \"tTimeEventHandler.h\"\n"
    997943
    998                 # アダプタ関数を生成する準備
     944                # アダプタ関数を生成する準備
    999945                @adpt_gen = AdapterGenerator.new("tTimeEventHandler", @celltype.get_global_name)
    1000946
    1001         # 属性置換が行えることを検証する。
    1002         # ここで行うのは、factoryで指定された属性名が
    1003         # 存在することを確認し、しなければエラーを出力することのみである。
    1004         # セルごとの処理の最中にエラーを出力することも可能ではあるが、
    1005         # そうするとセルタイプ側の問題であるのにもかかわらず、セルごとに
    1006         # エラーが表示されてしまう。
     947        # 属性置換が行えることを検証する。
     948        # ここで行うのは、factoryで指定された属性名が
     949        # 存在することを確認し、しなければエラーを出力することのみである。
     950        # セルごとの処理の最中にエラーを出力することも可能ではあるが、
     951        # そうするとセルタイプ側の問題であるのにもかかわらず、セルごとに
     952        # エラーが表示されてしまう。
    1007953        # {{attribute_name}} -> attribute_value
    1008954        @factory.scan(/\{\{([a-zA-Z0-9_]*?)\}\}/) { |match|
    1009955                name = $1.to_sym
    1010956
    1011                 # {{_handler_params_}} はハンドラに関する指定。プラグインå†
    1012 ã§å€¤ãŒç”Ÿæˆã•ã‚Œã‚‹
     957                # {{_handler_params_}} はハンドラに関する指定。プラグイン内で値が生成される
    1013958                next if name == :_handler_params_
    1014959
     
    1024969        }
    1025970
    1026                 # アダプタ関数の生成を完了させる
     971                # アダプタ関数の生成を完了させる
    1027972                @adpt_gen.finish
    1028973
     
    1039984        handler_flag = nil
    1040985
    1041                 # ignoreErrorsを取得
     986                # ignoreErrorsを取得
    1042987                ignoreErrors_attr_join = cell.get_join_list.get_item(:ignoreErrors)
    1043988                ignoreErrors_attr = cell.get_celltype.find(:ignoreErrors)
    1044989                if ignoreErrors_attr_join
    1045                         # セル生成時に初期化する場合
     990                        # セル生成時に初期化する場合
    1046991                        ignoreErrors = ignoreErrors_attr_join.get_rhs.to_s
    1047992                else
    1048                         # セルタイプの初期化値を使う場合
     993                        # セルタイプの初期化値を使う場合
    1049994                        ignoreErrors = ignoreErrors_attr.get_initializer.to_s
    1050995                end
     
    10581003                end
    10591004
    1060     # ドメイン指定用文字列
     1005    # ドメイン指定用文字列
    10611006    pre_text  = ""
    10621007    post_text = "\n"
     
    10641009 
    10651010        [EVENT_HANDLER, ERROR_HANDLER].each { |handler|
    1066                 # 呼び口の結合を取得
     1011                # 呼び口の結合を取得
    10671012                call_join = cell.get_join_list.get_item(handler.call_port_name.to_sym)
    10681013        domain_root = cell.get_region.get_domain_root
     
    10781023        end
    10791024
    1080                 # ハンドラタイプを判別する
     1025                # ハンドラタイプを判別する
    10811026                matches = HANDLER_TYPES.select { |handler_type|
    10821027                        handler_type.validate_join(handler, cell, call_join)
     
    10881033        end
    10891034
    1090                         # 最初に見つかった有効なハンドラタイプを使用
     1035                        # 最初に見つかった有効なハンドラタイプを使用
    10911036                ht = matches[0]
    10921037
    1093       # ドメインプラグインが指定されている場合、所属ドメインのチェック
     1038      # ドメインプラグインが指定されている場合、所属ドメインのチェック
    10941039      domain_root = cell.get_region.get_domain_root
    10951040      if domain_root.get_domain_type then
     
    11191064              end
    11201065              dbgPrint "#{self.class.name}: match pattern 2.\n"
    1121                         when NullHandlerType.new  # エラー通知を指定していない
     1066                        when NullHandlerType.new  # エラー通知を指定していない
    11221067              dbgPrint "#{self.class.name}: match pattern 3.\n"
    11231068            end
     
    11401085      end
    11411086
    1142                         # 通知ハンドラで「エラーが発生するはずがない」のに「エラーハンドラが指定されている」
    1143                         # もしくはその逆のパターンを検出する。
    1144                         # (handler_flagがnilである場合、ハンドラタイプが不明であり、エラーが発生するか不明
    1145                         #  なため、検出は行わない。)
     1087                        # 通知ハンドラで「エラーが発生するはずがない」のに「エラーハンドラが指定されている」
     1088                        # もしくはその逆のパターンを検出する。
     1089                        # (handler_flagがnilである場合、ハンドラタイプが不明であり、エラーが発生するか不明
     1090                        #  なため、検出は行わない。)
    11461091                if handler == ERROR_HANDLER && !ht.is_a?(NullHandlerType) && !event_handler_might_fail
    11471092                        cdl_error2( cell.get_locale, "NTF1004 cell $1: handler type $2 which never raises an error was inferred for the normal notification handler, but an error notification handler was specified.",
     
    11581103                end
    11591104
    1160                         # 通知方法の静的API記述を生成する
     1105                        # 通知方法の静的API記述を生成する
    11611106                handler_flag = ht.gen_cfg_handler_type(handler)
    11621107                handler_flags << handler_flag if handler_flag
     
    11721117        }
    11731118
    1174                 # $id$等の置換
     1119                # $id$等の置換
    11751120                name_array = cell.get_celltype.get_name_array(cell)
    11761121                handler_args.collect! { |e|
     
    11821127                }
    11831128
    1184         # tecsgen.cfgの記述を生成する。
    1185         # factoryに対し、パラメータ置換を行う。
     1129        # tecsgen.cfgの記述を生成する。
     1130        # factoryに対し、パラメータ置換を行う。
    11861131        # {{attribute_name}} -> attribute_value
    11871132        text = @factory.gsub(/\{\{([a-zA-Z0-9_]*?)\}\}/) { |match|
     
    11891134                        subst_attr = cell.get_celltype.find(name)
    11901135
    1191                         # {{_handler_params_}} はハンドラの指定に置換する。
     1136                        # {{_handler_params_}} はハンドラの指定に置換する。
    11921137                        if name == :_handler_params_
    11931138                        args_joined = handler_flags.join(' | ')
     
    12001145
    12011146                        unless subst_attr
    1202                                 # 属性が見つからないというエラーはすでに報告されているので
    1203                                 # ここではダミー値を返しておくだけである。
     1147                                # 属性が見つからないというエラーはすでに報告されているので
     1148                                # ここではダミー値を返しておくだけである。
    12041149                                next ""
    12051150                        end
     
    12071152                        subst_attr_join = cell.get_join_list.get_item(name)
    12081153                        if subst_attr_join
    1209                                 # セル生成時に初期化する場合
     1154                                # セル生成時に初期化する場合
    12101155                                subst = subst_attr_join.get_rhs.to_s
    12111156                        else
    1212                                 # セルタイプの初期化値を使う場合
     1157                                # セルタイプの初期化値を使う場合
    12131158                                subst = subst_attr.get_initializer.to_s
    12141159                        end
    12151160
    1216                         # $id$等の置換
     1161                        # $id$等の置換
    12171162                        cell.get_celltype.subst_name(subst, name_array)
    12181163      }
    12191164
    1220      # 出力 (CRE_xxx)
     1165     # 出力 (CRE_xxx)
    12211166     kernelCfg.print pre_text
    12221167     kernelCfg.print indent, text, "\n"
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/OpaqueMarshalerPlugin.rb

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

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
    5338#++
    5439
    55 # 以下を仮定(制限事é 
    56 ï¼‰
    57 #  呼びå
    58 ƒã€å‘¼ã³å
    59 ˆã®ã‚¨ãƒ³ãƒ‡ã‚£ã‚¢ãƒ³ã€char, short, int_t, long_t, intptr_t のサイズが同じ
    60 #  有符号、無符号でサイズが同じ
     40# 以下を仮定(制限事項)
     41#  呼び元、呼び先のエンディアン、char, short, int_t, long_t, intptr_t のサイズが同じ
     42#  有符号、無符号でサイズが同じ
    6143
    6244require_tecsgen_lib "lib/GenOpaqueMarshaler.rb"
     
    6850  include GenParamCopy
    6951
    70   # OpaqueRPCPlugin 専用のオプション
    71   OpaqueRPCPluginArgProc = RPCPluginArgProc.dup  # 複製を作ってå
    72 ƒã‚’変更しないようにする
     52  # OpaqueRPCPlugin 専用のオプション
     53  OpaqueRPCPluginArgProc = RPCPluginArgProc.dup  # 複製を作って元を変更しないようにする
    7354  OpaqueRPCPluginArgProc[ "noClientSemaphore"  ] = Proc.new { |obj,rhs| obj.set_noClientSemaphore rhs }
    7455
    75   #=== RPCPlugin の initialize
    76   #  説明は ThroughPlugin (plugin.rb) を参ç
    77 §
     56  #=== RPCPlugin の initialize
     57  #  説明は ThroughPlugin (plugin.rb) を参照
    7858  def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell )
    7959    super
     
    9878    gen_marshaler_celltype
    9979
    100     # チャンネル composite セルタイプの生成
    101     #  ここで生成された CDL ファイルは、tecsgen が直接 import するのではなく
    102     #  セルコードの CDL から import される
     80    # チャンネル composite セルタイプの生成
     81    #  ここで生成された CDL ファイルは、tecsgen が直接 import するのではなく
     82    #  セルコードの CDL から import される
    10383
    10484    f = CFile.open( @rpc_client_channel_celltype_file_name, "w" )
    105     # 同じå†
    106 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     85    # 同じ内容を二度書く可能性あり (AppFile は不可)
    10786
    10887    f.print <<EOT
     
    142121
    143122    f = CFile.open( @rpc_server_channel_celltype_file_name, "w" )
    144     # 同じå†
    145 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     123    # 同じ内容を二度書く可能性あり (AppFile は不可)
    146124
    147125    f.print <<EOT
     
    173151  end
    174152
    175   #===  through cell コードを生成
     153  #===  through cell コードを生成
    176154  #
    177155  #
     
    180158    gen_plugin_decl_code( file )
    181159
    182     # セルを探す
     160    # セルを探す
    183161    # path =["::",@next_cell.get_name]  # mikan namespace
    184162    # cell = Namespace.find( path )
     
    191169EOT
    192170
    193     ##### クライアント側のセルの生成 #####
     171    ##### クライアント側のセルの生成 #####
    194172    nest = @start_region.gen_region_str_pre file
    195173    nest_str = "  " * nest
    196174
    197     # セマフォの生成
     175    # セマフォの生成
    198176    if @b_noClientSemaphore == false then
    199177      file.print <<EOT
     
    206184    end
    207185
    208     # クライアント側チャンネル (TINET, Socket など)の生成
     186    # クライアント側チャンネル (TINET, Socket など)の生成
    209187    file.print <<EOT
    210188#{nest_str}  //  Client Side Channel
     
    216194EOT
    217195
    218     # セマフォの結合文
     196    # セマフォの結合文
    219197    if @b_noClientSemaphore == false then
    220198      semaphore = "#{nest_str}    cLockChannel = #{@serverChannelCell}_Semaphore.eSemaphore;\n"
     
    223201    end
    224202
    225     ### クライアント側チャンネル (マーシャラ+TDR)の生成 ###
    226     # アロケータの指定があるか?
     203    ### クライアント側チャンネル (マーシャラ+TDR)の生成 ###
     204    # アロケータの指定があるか?
    227205    if cell.get_allocator_list.length > 0 then
    228206
     
    240218
    241219        file.print delim
    242         delim = ",\n"        # 最終行には出さない
    243 
    244         if subsc then        # é
    245 åˆ—添数
     220        delim = ",\n"        # 最終行には出さない
     221
     222        if subsc then        # 配列添数
    246223          subsc_str = '[#{subsc}]'
    247224        else
     
    249226        end
    250227
    251         eport = "eThroughEntry" #RPCの受け口名に変更
     228        eport = "eThroughEntry" #RPCの受け口名に変更
    252229        file.print nest_str
    253230        file.print  "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc_str}"
     
    269246
    270247EOT
    271     ### END: クライアント側チャンネル (マーシャラ+TDR)の生成 ###
     248    ### END: クライアント側チャンネル (マーシャラ+TDR)の生成 ###
    272249
    273250    @start_region.gen_region_str_post file
    274251    file.print "\n\n"
    275252
    276     ##### サーバー側のセルの生成 #####
     253    ##### サーバー側のセルの生成 #####
    277254    nest = @end_region.gen_region_str_pre file
    278255    nest_str = "  " * nest
     
    295272    end
    296273
    297     # サーバー側チャンネル (TINET, Socket など)
     274    # サーバー側チャンネル (TINET, Socket など)
    298275    file.print <<EOT
    299276
     
    304281EOT
    305282
    306     # サーバー側チャンネル (アンマーシャラ+TDR)
     283    # サーバー側チャンネル (アンマーシャラ+TDR)
    307284    file.print <<EOT
    308285
     
    314291EOT
    315292
    316     # サーバー側タスクメイン
     293    # サーバー側タスクメイン
    317294    file.print <<EOT
    318295
     
    323300EOT
    324301
    325     # サーバー側タスク
     302    # サーバー側タスク
    326303    file.print <<EOT
    327304
     
    337314  end
    338315
    339   #=== プラグイン引数 noClientSemaphore のチェック
     316  #=== プラグイン引数 noClientSemaphore のチェック
    340317  def set_noClientSemaphore rhs
    341318    rhs = rhs.to_sym
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/RPCPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
     
    5641require_tecsgen_lib "lib/GenParamCopy.rb"
    5742
    58 #= Transparent RPC プラグイン
    59 # Transparent RPC チャンネルを生成する
    60 # プラグイン引数は以下の RPCPluginArgProc を参ç
    61 §
    62 
    63 # mikan through plugin: namespace が考æ
    64 ®ã•ã‚Œã¦ã„ない
    65 # これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定するå¿
    66 è¦ãŒã‚ã‚‹
     43#= Transparent RPC プラグイン
     44# Transparent RPC チャンネルを生成する
     45# プラグイン引数は以下の RPCPluginArgProc を参照
     46
     47# mikan through plugin: namespace が考慮されていない
     48# これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定する必要がある
    6749# tecsgen toppers_jsp.cdl sChannel.cdl your_description.cdl
    6850
    69 # 以下を仮定(制限事é 
    70 ï¼‰
    71 #  呼びå
    72 ƒã€å‘¼ã³å
    73 ˆã®ã‚¨ãƒ³ãƒ‡ã‚£ã‚¢ãƒ³ã€char, short, int_t, long_t, intptr_t のサイズが同じ
    74 #  有符号、無符号でサイズが同じ
     51# 以下を仮定(制限事項)
     52#  呼び元、呼び先のエンディアン、char, short, int_t, long_t, intptr_t のサイズが同じ
     53#  有符号、無符号でサイズが同じ
    7554
    7655class RPCPlugin < ThroughPlugin
     
    7958  include GenParamCopy
    8059
    81   # RPCPlugin 専用のオプション
    82   TransparentRPCPluginArgProc = RPCPluginArgProc.dup  # 複製を作ってå
    83 ƒã‚’変更しないようにする
     60  # RPCPlugin 専用のオプション
     61  TransparentRPCPluginArgProc = RPCPluginArgProc.dup  # 複製を作って元を変更しないようにする
    8462  TransparentRPCPluginArgProc[ "noClientSemaphore"  ] = Proc.new { |obj,rhs| obj.set_noClientSemaphore rhs }
    8563  TransparentRPCPluginArgProc[ "semaphoreCelltype"  ] = Proc.new { |obj,rhs| obj.set_semaphoreCelltype rhs }
    8664
    87   #=== RPCPlugin の initialize
    88   #  説明は ThroughPlugin (plugin.rb) を参ç
    89 §
     65  #=== RPCPlugin の initialize
     66  #  説明は ThroughPlugin (plugin.rb) を参照
    9067  def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell )
    9168    super
     
    9471    initialize_transparent_marshaler cell_name
    9572
    96     # オプション:GenTransparentMarshaler 参ç
    97 §
     73    # オプション:GenTransparentMarshaler 参照
    9874    @plugin_arg_check_proc_tab = TransparentRPCPluginArgProc
    9975    parse_plugin_arg
     
    10581      if @PPAllocatorSize == nil then
    10682        cdl_error( "PPAllocatorSize must be speicified for oneway [in] array" )
    107         # @PPAllocatorSize = 0   # 仮に 0 としておく (cdl の構文エラーを避けるため)
     83        # @PPAllocatorSize = 0   # 仮に 0 としておく (cdl の構文エラーを避けるため)
    10884      end
    10985    end
     
    11288#      if func_decl.get_type.is_oneway? then
    11389#        if ( param_decl.get_size || param_decl.get_count ) && param_decl.get_string then
    114 #          cdl_error( "array of string not supported for oneway function in Transparent RPC" )  # mikan 文字列のé
    115 åˆ—
     90#          cdl_error( "array of string not supported for oneway function in Transparent RPC" )  # mikan 文字列の配列
    11691#        elsif param_decl.get_string == -1 then
    117 #          cdl_error( "length unspecified string is not permited for oneway function in Transparent RPC" )  # mikan 長さ未指定文字列
     92#          cdl_error( "length unspecified string is not permited for oneway function in Transparent RPC" )  # mikan 長さ未指定文字列
    11893#        end
    11994#      end
     
    12196  end
    12297
    123   #=== plugin の宣言コード (celltype の定義) 生成
     98  #=== plugin の宣言コード (celltype の定義) 生成
    12499  def gen_plugin_decl_code( file )
    125100
    126101    ct_name = "#{@ct_name}_#{@channelCelltype}"
    127102
    128     # このセルタイプ(同じシグニチャ)は既に生成されているか?
     103    # このセルタイプ(同じシグニチャ)は既に生成されているか?
    129104    if @@generated_celltype[ ct_name ] == nil then
    130105      @@generated_celltype[ ct_name ] = [ self ]
     
    159134
    160135    f = CFile.open( @rpc_channel_celltype_file_name, "w" )
    161     # 同じå†
    162 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     136    # 同じ内容を二度書く可能性あり (AppFile は不可)
    163137
    164138    f.print <<EOT
     
    199173};
    200174EOT
    201     # mikan stackSize option & 最新 tecs_package 対応
     175    # mikan stackSize option & 最新 tecs_package 対応
    202176
    203177    f.close
    204178  end
    205179
    206   #===  through cell コードを生成
     180  #===  through cell コードを生成
    207181  #
    208182  #
     
    211185    gen_plugin_decl_code( file )
    212186
    213     # セルを探す
     187    # セルを探す
    214188    # path =["::",@next_cell.get_global_name]
    215189    # cell = Namespace.find( path )
     
    230204
    231205    file.print <<EOT
    232 #{indent_str}// 一方向チャンネルセル
     206#{indent_str}// 一方向チャンネルセル
    233207#{indent_str}cell #{@channelCelltype} #{@channelCellName} {
    234208#{indent_str}};
    235209
    236 #{indent_str}// RPC チャンネルセル
    237 EOT
    238 
    239     # #473 が解決された場合、composite リレーアロケータに変更すべき
    240     # アロケータの指定があるか?
     210#{indent_str}// RPC チャンネルセル
     211EOT
     212
     213    # #473 が解決された場合、composite リレーアロケータに変更すべき
     214    # アロケータの指定があるか?
    241215    if cell.get_allocator_list.length > 0 then
    242216
     
    247221
    248222        file.print delim
    249         delim = ",\n#{indent_str}           "        # 最終行には出さない
    250 
    251         if subsc then        # é
    252 åˆ—添数
     223        delim = ",\n#{indent_str}           "        # 最終行には出さない
     224
     225        if subsc then        # 配列添数
    253226          subsc_str = '[#{subsc}]'
    254227        else
     
    256229        end
    257230
    258         eport = "eThroughEntry" #RPCの受け口名に変更
     231        eport = "eThroughEntry" #RPCの受け口名に変更
    259232        file.print  "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc}"
    260233      end
     
    275248
    276249
    277   #=== プラグイン引数 noClientSemaphore のチェック
     250  #=== プラグイン引数 noClientSemaphore のチェック
    278251  def set_noClientSemaphore rhs
    279252    rhs = rhs.to_sym
     
    287260  end
    288261
    289   #=== プラグイン引数 semaphoreCelltype のチェック
     262  #=== プラグイン引数 semaphoreCelltype のチェック
    290263  def set_semaphoreCelltype rhs
    291264    @semaphoreCelltype = rhs.to_sym
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/RepeatCellPlugin.rb

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

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    77#
    88#--
    9 #   ä¸Šè¨˜è‘—作権è€
    10 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    11 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    12 #   å¤‰ãƒ»å†é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    14 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    15 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    16 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    17 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    18 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    19 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    20 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    21 #       è€
    22 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    23 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    24 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    25 #       ç”¨ã§ããªã„形で再é
    26 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    27 #       ã¨ï¼Ž
    28 #     (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    32 #     (b) 再é
    33 å¸ƒã®å½¢æ
    34 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    35 #         å ±å‘Šã™ã‚‹ã“と.
    36 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    37 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    38 ãŠã‚ˆã³TOPPERSプロジェクトをå
    39 è²¬ã™ã‚‹ã“と.
    40 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    41 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    42 ãŠã‚ˆã³TOPPERSプロジェクトを
    43 #       å
    44 è²¬ã™ã‚‹ã“と.
     9#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     10#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14#       スコード中に含まれていること.
     15#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18#       の無保証規定を掲載すること.
     19#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21#       と.
     22#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     24#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25#         報告すること.
     26#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30#       免責すること.
    4531
    46 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    47 ãŠ
    48 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    49 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    50 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    51 #   ã®è²¬ä»»ã‚’負わない.
     32#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36#   の責任を負わない.
    5237
    5338#  $Id$
     
    7055      # print "Join: #{j.get_name} = #{j.get_rhs.to_s}\n"
    7156
    72       # Join の右辺を解析
     57      # Join の右辺を解析
    7358      ret = j.get_rhs.analyze_cell_join_expression
    7459      if ret == nil then
     
    7762      rhs_nsp = ret[0]; rhs_subscript = ret[1]; rhs_port_name = ret[2]
    7863
    79       # 呼び口é
    80 åˆ—で、添数が 0 の場合にのみカウントアップさせる
     64      # 呼び口配列で、添数が 0 の場合にのみカウントアップさせる
    8165      if j.get_subscript == 0 then
    8266        rhs_name = rhs_nsp.get_name.to_s
     
    128112  end
    129113
    130   #=== count オプションの解析
     114  #=== count オプションの解析
    131115  def set_count rhs
    132116    if rhs =~ /\A\d+\z/
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/SharedOpaqueRPCPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
     
    5641require_tecsgen_lib "lib/GenParamCopy.rb"
    5742
    58 #= SharedOpaqueRPC プラグイン
    59 # SharedOpaqueRPC チャンネルを生成する
    60 # プラグイン引数は GenTransparentMarshaler 参ç
    61 §
    62 
    63 # mikan through plugin: namespace が考æ
    64 ®ã•ã‚Œã¦ã„ない
    65 # これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定するå¿
    66 è¦ãŒã‚ã‚‹
     43#= SharedOpaqueRPC プラグイン
     44# SharedOpaqueRPC チャンネルを生成する
     45# プラグイン引数は GenTransparentMarshaler 参照
     46
     47# mikan through plugin: namespace が考慮されていない
     48# これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定する必要がある
    6749# tecsgen toppers_jsp.cdl sChannel.cdl your_description.cdl
    6850
    69 # 以下を仮定(制限事é 
    70 ï¼‰
    71 #  呼びå
    72 ƒã€å‘¼ã³å
    73 ˆã®ã‚¨ãƒ³ãƒ‡ã‚£ã‚¢ãƒ³ã€char, short, int_t, long_t, intptr_t のサイズが同じ
    74 #  有符号、無符号でサイズが同じ
     51# 以下を仮定(制限事項)
     52#  呼び元、呼び先のエンディアン、char, short, int_t, long_t, intptr_t のサイズが同じ
     53#  有符号、無符号でサイズが同じ
    7554
    7655class SharedOpaqueRPCPlugin < ThroughPlugin
    7756
    78   # チャンネルをå
    79 ±æœ‰ã™ã‚‹ãƒ—ラグインオブジェクトへのハッシュリスト
     57  # チャンネルを共有するプラグインオブジェクトへのハッシュリスト
    8058  @@shared_channel_list = {}    # { chan_name => [ Plugin_obj0, Plugin_Obj1, ... ] }
    8159
     
    8462  include GenParamCopy
    8563
    86   # SharedOpaqueRPCPlugin 専用のオプション
    87   SharedOpaqueRPCPluginArgProc = RPCPluginArgProc.dup  # 複製を作ってå
    88 ƒã‚’変更しないようにする
     64  # SharedOpaqueRPCPlugin 専用のオプション
     65  SharedOpaqueRPCPluginArgProc = RPCPluginArgProc.dup  # 複製を作って元を変更しないようにする
    8966  SharedOpaqueRPCPluginArgProc[ "sharedChannelName"  ] = Proc.new { |obj,rhs| obj.set_sharedChannelName rhs }
    9067
    91   #=== RPCPlugin の initialize
    92   #  説明は ThroughPlugin (plugin.rb) を参ç
    93 §
     68  #=== RPCPlugin の initialize
     69  #  説明は ThroughPlugin (plugin.rb) を参照
    9470  def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell )
    9571    super
    9672    initialize_opaque_marshaler
    97     @entry_port_name = :"eClientEntry"   # Marshaler の受け口名 (through セルのå
    98 ¥ã‚Šå£)
    99 
    100     # オプション:GenOpaqueMarshaler 参ç
    101 §
     73    @entry_port_name = :"eClientEntry"   # Marshaler の受け口名 (through セルの入り口)
     74
     75    # オプション:GenOpaqueMarshaler 参照
    10276    @plugin_arg_check_proc_tab = SharedOpaqueRPCPluginArgProc
    10377    @sharedChannelName = nil
     
    12599    prev_start = @@shared_channel_list[ @shared_channel_cell ][0].start_region
    126100    if @start_region != prev_start then
    127       # 初出と start リージョン不一致 (初出は、自分自身とチェックされる。無駄だが小さいので放置)
     101      # 初出と start リージョン不一致 (初出は、自分自身とチェックされる。無駄だが小さいので放置)
    128102      cdl_error( "SharedRPCPlugin: start region mismatch current: #{@region.get_name} previous: #{prev_start.get_name}")
    129103    end
     
    131105    prev_end = @@shared_channel_list[ @shared_channel_cell ][0].end_region
    132106    if @end_region != prev_end then
    133       # 初出と end リージョン不一致  (初出は、自分自身とチェックされる。無駄だが小さいので放置)
     107      # 初出と end リージョン不一致  (初出は、自分自身とチェックされる。無駄だが小さいので放置)
    134108      cdl_error( "SharedRPCPlugin: end region mismatch current: #{@region.get_name} previous: #{prev_end.get_name}")
    135109    end
     
    141115  # end
    142116
    143   #=== プラグイン引数 sharedChannelCell のチェック
     117  #=== プラグイン引数 sharedChannelCell のチェック
    144118  def set_sharedChannelName( rhs )
    145119    @sharedChannelName = rhs
     
    153127  def gen_plugin_decl_code( file )
    154128
    155     # このセルタイプ(同じシグニチャ)は既に生成されているか?
     129    # このセルタイプ(同じシグニチャ)は既に生成されているか?
    156130    if @@generated_celltype[ @shared_channel_server_ct_name ] == nil then
    157131      @@generated_celltype[ @shared_channel_server_ct_name ] = [ self ]
     
    162136    gen_marshaler_celltype
    163137
    164     # 同じå†
    165 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     138    # 同じ内容を二度書く可能性あり (AppFile は不可)
    166139
    167140    if @PPAllocatorSize then
     
    174147
    175148    f = CFile.open( @shared_channel_ct_file_name, "w" )
    176     # 同じå†
    177 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     149    # 同じ内容を二度書く可能性あり (AppFile は不可)
    178150
    179151    f.print <<EOT
     
    233205  end
    234206
    235   #===  through cell コードを生成
     207  #===  through cell コードを生成
    236208  #
    237209  #
     
    256228    end
    257229
    258     # セルを探す
     230    # セルを探す
    259231    # path =["::",@next_cell.get_name]
    260232    # cell = Namespace.find( path )
    261233    cell = Namespace.find( @next_cell.get_namespace_path )
    262234
    263     # å
    264 ±æœ‰ã•ã‚Œã‚‹é€šä¿¡ãƒãƒ£ãƒ³ãƒãƒ«ã®ç”Ÿæˆã®ãƒ—ロトタイプ宣言
     235    # 共有される通信チャンネルの生成のプロトタイプ宣言
    265236    file.print <<EOT
    266237#{indent_str}cell #{@shared_channel_client_ct_name} #{@shared_channel_cell};
    267238EOT
    268239
    269     # マーシャラセルの生成(アロケータコードの生成から)
    270     # アロケータの指定があるか?
     240    # マーシャラセルの生成(アロケータコードの生成から)
     241    # アロケータの指定があるか?
    271242    if cell.get_allocator_list.length > 0 then
    272243
     
    284255
    285256        file.print delim
    286         delim = ",\n#{indent_str}           "        # 最終行には出さない
    287 
    288         if subsc then        # é
    289 åˆ—添数
     257        delim = ",\n#{indent_str}           "        # 最終行には出さない
     258
     259        if subsc then        # 配列添数
    290260          subsc_str = '[#{subsc}]'
    291261        else
     
    293263        end
    294264
    295         eport = @entry_port_name #RPCの受け口名に変更
     265        eport = @entry_port_name #RPCの受け口名に変更
    296266        file.print  "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc_str}"
    297267      end
     
    300270    end
    301271
    302     # マーシャラセル本体生成
     272    # マーシャラセル本体生成
    303273    file.print <<EOT
    304274/* OpaqueRPC Marshaler Cell */
     
    311281    @start_region.gen_region_str_post file
    312282
    313     # アンマーシャラセルの出力
    314     # セル本体の生成
     283    # アンマーシャラセルの出力
     284    # セル本体の生成
    315285    nest = @end_region.gen_region_str_pre file
    316286
     
    321291EOT
    322292
    323     # PPAllocator がå¿
    324 è¦ã‹?
     293    # PPAllocator が必要か?
    325294    if @PPAllocatorSize then
    326295      if @sub_channel_no == 0 then
     
    347316  end
    348317
    349   #=== post コード(CDL) を生成
    350   # プラグインの後のコードを生成
     318  #=== post コード(CDL) を生成
     319  # プラグインの後のコードを生成
    351320  #file:: File:
    352321  def self.gen_post_code( file )
     
    361330  end
    362331
    363   #=== post コード(CDL) を生成
    364   # å
    365 ±æœ‰ãƒãƒ£ãƒ³ãƒãƒ«ã‚’生成する
    366   # このメソッドは、チャンネルをå
    367 ±æœ‰ã™ã‚‹æœ€åˆã®ãƒ—ラグインオブジェクトのみ呼び出される
     332  #=== post コード(CDL) を生成
     333  # 共有チャンネルを生成する
     334  # このメソッドは、チャンネルを共有する最初のプラグインオブジェクトのみ呼び出される
    368335  def gen_post_code( file, plugin_obj_array )
    369336
    370     # å
    371 ±æœ‰ã•ã‚Œã¦ã„る通信チャンネルの生成
    372     # 各プラグインインスタンスでは @shared_channel_ct_name として記憶している
     337    # 共有されている通信チャンネルの生成
     338    # 各プラグインインスタンスでは @shared_channel_ct_name として記憶している
    373339    # region = @caller_cell.get_region
    374340    nest = @start_region.gen_region_str_pre file
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/SharedRPCPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
     
    5641require_tecsgen_lib "lib/GenParamCopy.rb"
    5742
    58 #= SharedRPC プラグイン
    59 # SharedRPC チャンネルを生成する
    60 # プラグイン引数は GenTransparentMarshaler 参ç
    61 §
    62 
    63 # mikan through plugin: namespace が考æ
    64 ®ã•ã‚Œã¦ã„ない
    65 # これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定するå¿
    66 è¦ãŒã‚ã‚‹
     43#= SharedRPC プラグイン
     44# SharedRPC チャンネルを生成する
     45# プラグイン引数は GenTransparentMarshaler 参照
     46
     47# mikan through plugin: namespace が考慮されていない
     48# これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定する必要がある
    6749# tecsgen toppers_jsp.cdl sChannel.cdl your_description.cdl
    6850
    69 # 以下を仮定(制限事é 
    70 ï¼‰
    71 #  呼びå
    72 ƒã€å‘¼ã³å
    73 ˆã®ã‚¨ãƒ³ãƒ‡ã‚£ã‚¢ãƒ³ã€char, short, int_t, long_t, intptr_t のサイズが同じ
    74 #  有符号、無符号でサイズが同じ
     51# 以下を仮定(制限事項)
     52#  呼び元、呼び先のエンディアン、char, short, int_t, long_t, intptr_t のサイズが同じ
     53#  有符号、無符号でサイズが同じ
    7554
    7655class SharedRPCPlugin < ThroughPlugin
     
    8160  include GenParamCopy
    8261
    83   #=== RPCPlugin の initialize
    84   #  説明は ThroughPlugin (plugin.rb) を参ç
    85 §
     62  #=== RPCPlugin の initialize
     63  #  説明は ThroughPlugin (plugin.rb) を参照
    8664  def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell )
    8765
    88     # mikan プラグインオプション指定の不一致のチェック task_priority,
     66    # mikan プラグインオプション指定の不一致のチェック task_priority,
    8967
    9068    super
    9169    initialize_transparent_marshaler cell_name
    9270
    93     # オプション:GenTransparentMarshaler 参ç
    94 §
     71    # オプション:GenTransparentMarshaler 参照
    9572    @plugin_arg_check_proc_tab = RPCPluginArgProc
    96     @channelCellName = ""     # nil にしておく
     73    @channelCellName = ""     # nil にしておく
    9774    parse_plugin_arg
    9875
     
    10885
    10986    if @@shared_channel_list[ @shared_channel_cell ] == nil then
    110       # 初出
     87      # 初出
    11188      @@shared_channel_list[ @shared_channel_cell ] = [ self ]
    11289    else
    113       # 二番目以降
     90      # 二番目以降
    11491      @@shared_channel_list[ @shared_channel_cell ] << self
    11592    end
     
    11794
    11895    if @region != @@shared_channel_list[ @shared_channel_cell ][0].region then
    119       # 初出とリージョン不一致 (初出は、自分自身とチェックされる。無駄だが小さいので放置)
     96      # 初出とリージョン不一致 (初出は、自分自身とチェックされる。無駄だが小さいので放置)
    12097      cdl_error( "SharedRPCPlugin: preferred region mismatch current: #{@region.get_name} previous: #{@@shared_channel_list[ @shared_channel_cell ][0].region.get_name}")
    12198    else
     
    138115  def gen_plugin_decl_code( file )
    139116
    140     # このセルタイプ(同じシグニチャ)は既に生成されているか?
     117    # このセルタイプ(同じシグニチャ)は既に生成されているか?
    141118    if @@generated_celltype[ @shared_channel_ct_name ] == nil then
    142119      @@generated_celltype[ @shared_channel_ct_name ] = [ self ]
     
    152129
    153130    gen_marshaler_celltype
    154     # 同じå†
    155 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     131    # 同じ内容を二度書く可能性あり (AppFile は不可)
    156132
    157133    if @signature.need_PPAllocator? then
     
    164140
    165141    f = CFile.open( @rpc_channel_celltype_file_name, "w" )
    166     # 同じå†
    167 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     142    # 同じ内容を二度書く可能性あり (AppFile は不可)
    168143
    169144    f.print <<EOT
     
    196171};
    197172EOT
    198     # mikan stackSize option & 最新 tecs_package 対応
     173    # mikan stackSize option & 最新 tecs_package 対応
    199174
    200175    f.close
    201176
    202177    f = CFile.open( "#{$gen}/#{@shared_channel_ct_name}.cdl", "w" )
    203     # 同じå†
    204 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     178    # 同じ内容を二度書く可能性あり (AppFile は不可)
    205179
    206180    f.print <<EOT
     
    247221  end
    248222
    249   #===  through cell コードを生成
     223  #===  through cell コードを生成
    250224  #
    251225  #
     
    268242    end
    269243
    270     # セルを探す
     244    # セルを探す
    271245    # path =["::",@next_cell.get_name]
    272246    # cell = Namespace.find( path )
    273247    cell = Namespace.find( @next_cell.get_namespace_path )
    274248
    275     # PPAllocator がå¿
    276 è¦ã‹?
     249    # PPAllocator が必要か?
    277250    if @signature.need_PPAllocator? then
    278251      if @sub_channel_no == 0 then
     
    289262    end
    290263
    291     # å
    292 ±æœ‰ã•ã‚Œã‚‹é€šä¿¡ãƒãƒ£ãƒ³ãƒãƒ«ã®ç”Ÿæˆã®ãƒ—ロトタイプ宣言
     264    # 共有される通信チャンネルの生成のプロトタイプ宣言
    293265    file.print <<EOT
    294266#{indent_str}cell #{@shared_channel_ct_name} #{@shared_channel_cell};
    295267EOT
    296268
    297     # ここから各結合ごとのセルを生成
    298 
    299     # アロケータの指定があるか?
     269    # ここから各結合ごとのセルを生成
     270
     271    # アロケータの指定があるか?
    300272    if cell.get_allocator_list.length > 0 then
    301273
     
    306278
    307279        file.print delim
    308         delim = ",\n#{indent_str}           "        # 最終行には出さない
    309 
    310         if subsc then        # é
    311 åˆ—添数
     280        delim = ",\n#{indent_str}           "        # 最終行には出さない
     281
     282        if subsc then        # 配列添数
    312283          subsc_str = '[#{subsc}]'
    313284        else
     
    315286        end
    316287
    317         eport = "eThroughEntry" #RPCの受け口名に変更
     288        eport = "eThroughEntry" #RPCの受け口名に変更
    318289        file.print  "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc}"
    319290      end
     
    322293    end
    323294
    324     # セル本体の生成
     295    # セル本体の生成
    325296    file.print <<EOT
    326297#{indent_str}cell #{@rpc_channel_celltype_name} #{@cell_name} {
     
    334305  end
    335306
    336   #=== 後ろのコードを生成
    337   #プラグインの後ろのコードを生成
     307  #=== 後ろのコードを生成
     308  #プラグインの後ろのコードを生成
    338309  #file:: File:
    339310  def self.gen_post_code( file )
     
    344315  end
    345316
    346   #=== 後ろのコードを生成
    347   # plugin_obj[0] が代表して出力する(インスタンス変数にアクセスしたいため)
     317  #=== 後ろのコードを生成
     318  # plugin_obj[0] が代表して出力する(インスタンス変数にアクセスしたいため)
    348319  def gen_post_code( file, plugin_obj )
    349320
     
    353324    indent_str = "  " * nest
    354325
    355     # å
    356 ±æœ‰ã•ã‚Œã¦ã„る通信チャンネルの生成
    357     # 各プラグインインスタンスでは @shared_channel_ct_name として記憶している
     326    # 共有されている通信チャンネルの生成
     327    # 各プラグインインスタンスでは @shared_channel_ct_name として記憶している
    358328    file.print "#{indent_str}cell tSharedRPCPlugin_#{@channelCelltype} #{chan_name} {\n"
    359329    plugin_obj.each{ |po|
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/SignaturePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
    5338#++
    5439
    55 #== signature プラグインのå
    56 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     40#== signature プラグインの共通の親クラス
    5741class SignaturePlugin < Plugin
    58 #@signature:: Signature   ãƒ—ラグインの対象となるシグニチャ
    59 #@option:: String   '"', '"' で囲まれた文字列
     42#@signature:: Signature   プラグインの対象となるシグニチャ
     43#@option:: String   '"', '"' で囲まれた文字列
    6044
    61   #signature::     Signature        シグニチャ(インスタンス)
     45  #signature::     Signature        シグニチャ(インスタンス)
    6246  def initialize( signature, option )
    6347    super()
    6448    @signature = signature
    65     # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' )    # 前後の "" を取り除く
     49    # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' )    # 前後の "" を取り除く
    6650    # @plugin_arg_str.sub!( /(.*)"\z/, '\1' )
    6751    @plugin_arg_str = CDLString.remove_dquote option
     
    6953  end
    7054
    71   #=== 後ろのコードを生成
    72   #プラグインの後ろの CDL コードを生成
     55  #=== 後ろのコードを生成
     56  #プラグインの後ろの CDL コードを生成
    7357  #file:: File:
    7458  def self.gen_post_code( file )
    75     # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
     59    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
    7660    # file.print "/* '#{self.class.name}' post code */\n"
    7761  end
    7862
    79   #===  受け口関数の本体(C言語)を生成する
    80   #     é€šå¸¸ã§ã‚れば、ジェネレータは受け口関数のテンプレートを生成する
    81   #     ãƒ—ラグインの場合、変更するå¿
    82 è¦ã®ãªã„セルタイプコードを生成する
    83   #file::           FILE        出力å
    84 ˆãƒ•ã‚¡ã‚¤ãƒ«
     63  #===  受け口関数の本体(C言語)を生成する
     64  #     通常であれば、ジェネレータは受け口関数のテンプレートを生成する
     65  #     プラグインの場合、変更する必要のないセルタイプコードを生成する
     66  #file::           FILE        出力先ファイル
    8567  #b_singleton::    bool        true if singleton
    8668  #ct_name::        Symbol
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/TECS2CBridgePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
    5338#++
    5439
    55 #== TECS => C 呼び出しプラグイン
     40#== TECS => C 呼び出しプラグイン
    5641class TECS2CBridgePlugin < SignaturePlugin
    57 #@signature:: Signature   ãƒ—ラグインの対象となるシグニチャ
    58 #@option:: String   '"', '"' で囲まれた文字列
     42#@signature:: Signature   プラグインの対象となるシグニチャ
     43#@option:: String   '"', '"' で囲まれた文字列
    5944
    6045  @@signature_list = { }
    6146
    62   #signature::     Signature        シグニチャ(インスタンス)
     47  #signature::     Signature        シグニチャ(インスタンス)
    6348  def initialize( signature, option )
    6449    super
     
    9176  end
    9277
    93   #=== 後ろのコードを生成
    94   #プラグインの後ろのコードを生成
     78  #=== 後ろのコードを生成
     79  #プラグインの後ろのコードを生成
    9580  #file:: File:
    9681  def self.gen_post_code( file )
    97     # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
     82    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
    9883    # file.print "/* '#{self.class.name}' post code */\n"
    9984  end
    10085
    101   #===  受け口関数の本体(C言語)を生成する
    102   #     é€šå¸¸ã§ã‚れば、ジェネレータは受け口関数のテンプレートを生成する
    103   #     ãƒ—ラグインの場合、変更するå¿
    104 è¦ã®ãªã„セルタイプコードを生成する
    105   #file::           FILE        出力å
    106 ˆãƒ•ã‚¡ã‚¤ãƒ«
     86  #===  受け口関数の本体(C言語)を生成する
     87  #     通常であれば、ジェネレータは受け口関数のテンプレートを生成する
     88  #     プラグインの場合、変更する必要のないセルタイプコードを生成する
     89  #file::           FILE        出力先ファイル
    10790  #b_singleton::    bool        true if singleton
    10891  #ct_name::        Symbol
     
    129112    p_cellcb = #{global_ct_name}_GET_CELLCB(idx);
    130113  }else{
    131      /* エラー処理コードをここに記述 */
     114     /* エラー処理コードをここに記述 */
    132115  }
    133116
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/TECSInfoPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2017-2018 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
     
    6247  #@cell_list::[Cell]
    6348
    64   #celltype::     Celltype        セルタイプ(インスタンス)
     49  #celltype::     Celltype        セルタイプ(インスタンス)
    6550  def initialize( celltype, option )
    6651    super
     
    7156  end
    7257
    73   #=== 新しいセル
    74   #cell::        Cell            セル
     58  #=== 新しいセル
     59  #cell::        Cell            セル
    7560  #
    76   # celltype プラグインを指定されたセルタイプのセルが生成された
    77   # セルタイププラグインに対する新しいセルの報告
     61  # celltype プラグインを指定されたセルタイプのセルが生成された
     62  # セルタイププラグインに対する新しいセルの報告
    7863  def new_cell( cell )
    7964    @@cell_list << cell
    8065
    81     # AppFile は、重ね書きようなので、やめる
     66    # AppFile は、重ね書きようなので、やめる
    8267    # p "import: cell nTECSInfo::tTECSInfoSub #{cell.get_namespace_path.to_s} under #{cell.get_region.get_name}"
    8368    # cell.show_tree 0
    84     # TECSInfoSub セルのプロトタイプ宣言
     69    # TECSInfoSub セルのプロトタイプ宣言
    8570    fn = "#{$gen}/tmp_#{cell.get_region.get_global_name}_TECSInfoSub.cdl"
    8671    File.open( fn, "w" ){ |f|
     
    9883    Import.new fn
    9984
    100     # セルに cTECSInfo の結合があるか?
     85    # セルに cTECSInfo の結合があるか?
    10186    if cell.get_join_list.get_item( :cTECSInfo ) == nil then
    102       # cTECSInfo = rTECSInfo::TECSInfosub.eTECSInfo; の追加
     87      # cTECSInfo = rTECSInfo::TECSInfosub.eTECSInfo; の追加
    10388      nsp = NamespacePath.new( :rTECSInfo, false )
    10489      nsp.append! :TECSInfoSub
     
    10994  end
    11095
    111   #=== tCelltype_factory.h に挿å
    112 ¥ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’生成する
    113   # file 以外の他のファイルにファクトリコードを生成してもよい
    114   # セルタイププラグインが指定されたセルタイプのみ呼び出される
     96  #=== tCelltype_factory.h に挿入するコードを生成する
     97  # file 以外の他のファイルにファクトリコードを生成してもよい
     98  # セルタイププラグインが指定されたセルタイプのみ呼び出される
    11599  def gen_factory file
    116100    File.open( "#{$gen}/include_all_signature_header.h", "w" ){ |f|
     
    199183    f.print "#define TOPPERS_CB_TYPE_ONLY\n"
    200184    Namespace.get_root.print_celltype_define f
    201     # FOREACH_CELL を出しなおす
     185    # FOREACH_CELL を出しなおす
    202186    ct = Namespace.find [ "::", :nTECSInfo, :tCelltypeInfo ]
    203187    ct.gen_ph_foreach_cell f
     
    269253    }
    270254    Region.get_root.print_cell_define f
    271     # FOREACH_CELL を出しなおす
     255    # FOREACH_CELL を出しなおす
    272256    ct = Namespace.find [ "::", :nTECSInfo, :tCellInfo ]
    273257    ct.gen_ph_foreach_cell f
     
    280264  end
    281265
    282   #=== 後ろの CDL コードを生成
    283   #プラグインの後ろの CDL コードを生成
     266  #=== 後ろの CDL コードを生成
     267  #プラグインの後ろの CDL コードを生成
    284268  #file:: File:
    285269  def self.gen_post_code( file )
     
    288272      return
    289273    end
    290     # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
     274    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
    291275    file.print <<EOT
    292276/*------------ #{self.name} post code ------------*/
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/ThroughPlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
    5338#++
    5439
    55 # mikan through plugin: namespace が考æ
    56 ®ã•ã‚Œã¦ã„ない
    57 
    58 #==  スループラグインのå
    59 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹ã€€ã‹ã¤ (何もせず)スルーするセルを挿å
    60 ¥ã™ã‚‹ã‚¹ãƒ«ãƒ¼ãƒ—ラグイン
    61 #    スループラグインは ThroughPlugin の子クラスとして定義する
     40# mikan through plugin: namespace が考慮されていない
     41
     42#==  スループラグインの共通の親クラス かつ (何もせず)スルーするセルを挿入するスループラグイン
     43#    スループラグインは ThroughPlugin の子クラスとして定義する
    6244class ThroughPlugin < Plugin
    63 #@cell_name::      Symbol             ç”Ÿæˆã™ã‚‹ã‚»ãƒ«åï¼ˆè¤‡æ•°ã‚»ãƒ«ã‚’生成する場合、受け口側のセル)
    64 #@plugin_arg_str:: string             through で指定された引数
    65 #@next_cell:: Cell                    呼び口を結合するセル
    66 #@next_cell_port_name:: Symbol       å‘¼ã³å£ã‚’結合する受口の名前
    67 #@next_cell_port_subscript::Nil|Integer   å‘¼ã³å£ã‚’結合する受口のé
    68 åˆ—添数.受け口é
    69 åˆ—でない場合 nil
    70 #@signature::      Signature          シグニチャ
    71 #@celltype::       Celltype           å‘¼ã³å
    72 ˆã®ã‚»ãƒ«ã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—. through が連接する場合、最終的な呼びå
    73 ˆã®ã‚»ãƒ«ã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—
    74 #@entry_port_name::Symbol             ç”Ÿæˆã™ã‚‹ã‚»ãƒ«ã®å—け口名  "eThroughEntry"
    75 #@call_port_name:: Symbol             ç”Ÿæˆã™ã‚‹ã‚»ãƒ«ã®å‘¼ã³å£å  "cCall"
    76 #@ct_name::        Symbol             ç”Ÿæˆã™ã‚‹ã‚»ãƒ«ã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—名   "t#{self.class.name}_#{@signature.get_global_name}"
    77 #@plugin_arg_list:: Hash              プラグイン引数をパースした結果のハッシュ変数
    78 #@caller_cell::    Cell               å‘¼ã³å
    79 ƒã®ã‚»ãƒ«ï¼Žthrough プラグインが連接する場合では、最も呼びå
    80 ƒã®ã‚»ãƒ«ï¼Ž($source$)
    81 #                                     through プラグインが合流するケースでは、1つ目の呼びå
    82 ƒã‚»ãƒ«ã®ã¿å¼•æ•°ã¨ã—て与えられる
    83 #                                     å¾“って TracePlugin の呼びå
    84 ƒã®åˆ¤åˆ¥ã«åˆ©ç”¨ã™ã‚‹å ´åˆã¯ã€ç•°ãªã‚‹å‘¼ã³å
    85 ƒã‹ã‚‰å‘¼ã°ã‚Œã‚‹å¯èƒ½æ€§ãŒã‚ることに注意しなくてはならない
    86 #@callee_cell:: Cell                  呼びå
    87 ˆã®ã‚»ãƒ«($destination$)
    88 #@plugin_arg_check_proc_tab:: [string => Proc]  プラグイン引数名⇒チェック関数
    89 # 以下の変数は、initialize ではなく、後から設定される
    90 #@start_@region::  Region             å§‹ã¾ã‚Šã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼š caller_cell のリージョンとは異なる可能性がある ($start_region$)
    91 #@end_region::  Region                終わりのリージョン: next_cell のリージョンとは異なる可能性がある ($end_region$)
    92 #@region:: Region                     @start_region と @end_region のいずれかで、cell を置くのが好ましいリージョン ($preferred_region$)
    93 #@through_type:: Symbol              :THROUGH, :TO_THROUGH, :IN_THROUGH, :OUT_THROUGH のいずれか
    94 
    95   # この Plugin が生成したセルタイプのリスト
     45#@cell_name::      Symbol             生成するセル名(複数セルを生成する場合、受け口側のセル)
     46#@plugin_arg_str:: string             through で指定された引数
     47#@next_cell:: Cell                    呼び口を結合するセル
     48#@next_cell_port_name:: Symbol       呼び口を結合する受口の名前
     49#@next_cell_port_subscript::Nil|Integer   呼び口を結合する受口の配列添数.受け口配列でない場合 nil
     50#@signature::      Signature          シグニチャ
     51#@celltype::       Celltype           呼び先のセルのセルタイプ. through が連接する場合、最終的な呼び先のセルのセルタイプ
     52#@entry_port_name::Symbol             生成するセルの受け口名  "eThroughEntry"
     53#@call_port_name:: Symbol             生成するセルの呼び口名  "cCall"
     54#@ct_name::        Symbol             生成するセルのセルタイプ名   "t#{self.class.name}_#{@signature.get_global_name}"
     55#@plugin_arg_list:: Hash              プラグイン引数をパースした結果のハッシュ変数
     56#@caller_cell::    Cell               呼び元のセル.through プラグインが連接する場合では、最も呼び元のセル.($source$)
     57#                                     through プラグインが合流するケースでは、1つ目の呼び元セルのみ引数として与えられる
     58#                                     従って TracePlugin の呼び元の判別に利用する場合は、異なる呼び元から呼ばれる可能性があることに注意しなくてはならない
     59#@callee_cell:: Cell                  呼び先のセル($destination$)
     60#@plugin_arg_check_proc_tab:: [string => Proc]  プラグイン引数名⇒チェック関数
     61# 以下の変数は、initialize ではなく、後から設定される
     62#@start_@region::  Region             始まりのリージョン: caller_cell のリージョンとは異なる可能性がある ($start_region$)
     63#@end_region::  Region                終わりのリージョン: next_cell のリージョンとは異なる可能性がある ($end_region$)
     64#@region:: Region                     @start_region と @end_region のいずれかで、cell を置くのが好ましいリージョン ($preferred_region$)
     65#@through_type:: Symbol              :THROUGH, :TO_THROUGH, :IN_THROUGH, :OUT_THROUGH のいずれか
     66
     67  # この Plugin が生成したセルタイプのリスト
    9668  @@generated_celltype = {}
    9769
    98   #=== ThroughPlugin の初期化
    99   #     through が指定された時点で生成が行われる
    100   #         åˆæœŸåŒ–では、指定された引数を記録するに留める
    101   #cell_name::      Symbol             ç”Ÿæˆã™ã¹ãã‚»ãƒ«åï¼ˆå—口側)
    102   #plugin_arg::     string             through で指定された引数
    103   #next_cell::      Cell               å‘¼ã³å£ã‚’接続するセル
    104   #next_cell_port_name:: Symbol        呼び口を接続する受口の名前
    105   #next_cell_port_subscript:: Nil|Integer  呼び口を接続する受口é
    106 åˆ—添数
    107   #signature::      Signature          シグニチャ
    108   #celltype::       Celltype           ã‚»ãƒ«ã‚¿ã‚¤ãƒ— (呼びå
    109 ˆã®ã‚»ãƒ«ã®ã‚»ãƒ«ã‚¿ã‚¤ãƒ—)
    110   #caller_cell::    Cell               å‘¼ã³å
    111 ƒã®ã‚»ãƒ«ï¼Ž@caller_cell のé 
    112 ã‚’参ç
    113 §
     70  #=== ThroughPlugin の初期化
     71  #     through が指定された時点で生成が行われる
     72  #         初期化では、指定された引数を記録するに留める
     73  #cell_name::      Symbol             生成すべきセル名(受口側)
     74  #plugin_arg::     string             through で指定された引数
     75  #next_cell::      Cell               呼び口を接続するセル
     76  #next_cell_port_name:: Symbol        呼び口を接続する受口の名前
     77  #next_cell_port_subscript:: Nil|Integer  呼び口を接続する受口配列添数
     78  #signature::      Signature          シグニチャ
     79  #celltype::       Celltype           セルタイプ (呼び先のセルのセルタイプ)
     80  #caller_cell::    Cell               呼び元のセル.@caller_cell の項を参照
    11481  def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell )
    11582    super()
    116     @cell_name = cell_name                      # 生成すべきセル名(受け口側のセル名)
    117                                                 # この呼びå
    118 ˆã«åˆ¥ã‚»ãƒ«ã‚’生成する場合、この名前を接頭辞とすべき
    119     @next_cell = next_cell                      # 呼びå
    120 ˆã®ã‚»ãƒ«
     83    @cell_name = cell_name                      # 生成すべきセル名(受け口側のセル名)
     84                                                # この呼び先に別セルを生成する場合、この名前を接頭辞とすべき
     85    @next_cell = next_cell                      # 呼び先のセル
    12186    @next_cell_port_name = next_cell_port_name
    12287    @next_cell_port_subscript = next_cell_port_subscript
     
    12792    @celltype = celltype
    12893    @plugin_arg_str = plugin_arg
    129     @plugin_arg_list = {}                       # プラグイン引数をパースした結果のハッシュ変数
     94    @plugin_arg_list = {}                       # プラグイン引数をパースした結果のハッシュ変数
    13095    @caller_cell     = caller_cell
    131     Join.set_through_info self                  # 引数で渡らない(後から追加された)ものは set_through_info で設定される
     96    Join.set_through_info self                  # 引数で渡らない(後から追加された)ものは set_through_info で設定される
    13297    print( "#{self.class.name}.new( '#{cell_name}', '#{plugin_arg}', '#{next_cell.get_name}', '#{next_cell_port_name}', #{celltype.get_name} )\n" )
    13398  end
    13499
    135   #=== æƒ
    136 å ±ã‚’設定する
    137   # å
    138 ±æœ‰ãƒãƒ£ãƒ³ãƒãƒ«ã®å ´åˆ caller_cell, next_cell のいずれの region でもないケースがある
    139   # 後から追加したので initialize の引数ではなく、別メソッドで設定
    140   # このメソッドは、オーバーライドしないでください
    141   # Join と ThrougPlugin の間の連絡用で、今後とも引数が追加される可能性があるため
    142   # このメソッドは V1.C.0.34 で位置が移動され、ThroughPlugin#initialize で呼び出される
     100  #=== 情報を設定する
     101  # 共有チャンネルの場合 caller_cell, next_cell のいずれの region でもないケースがある
     102  # 後から追加したので initialize の引数ではなく、別メソッドで設定
     103  # このメソッドは、オーバーライドしないでください
     104  # Join と ThrougPlugin の間の連絡用で、今後とも引数が追加される可能性があるため
     105  # このメソッドは V1.C.0.34 で位置が移動され、ThroughPlugin#initialize で呼び出される
    143106  def set_through_info( start_region, end_region, through_type, join, callee_cell, count )
    144107    @start_region = start_region
     
    149112    @count = count
    150113
    151     # preferred_region の設定
     114    # preferred_region の設定
    152115    case through_type
    153116    when :IN_THROUGH, :THROUGH
     
    160123  end
    161124
    162   #===  セルの名前を得る
     125  #===  セルの名前を得る
    163126  def get_cell_name
    164127    @cell_name
    165128  end
    166129
    167   #=== NamespacePath を得る
    168   # 生成するセルの namespace path を生成する
     130  #=== NamespacePath を得る
     131  # 生成するセルの namespace path を生成する
    169132  def get_cell_namespace_path
    170133#    nsp = @region.get_namespace.get_namespace_path
     
    173136  end
    174137
    175   #===  生成されたセルの受け口の名前を得る
     138  #===  生成されたセルの受け口の名前を得る
    176139  def get_through_entry_port_name
    177140    @entry_port_name
    178141  end
    179142
    180   #===  生成されたセルの受け口é
    181 åˆ—添数を得る
     143  #===  生成されたセルの受け口配列添数を得る
    182144  def get_through_entry_port_subscript
    183145    @entry_port_subscript
    184146  end
    185147
    186   #===  宣言コードの生成
    187   #      typedef, signature, celltype など(cell 以外)のコードを生成
    188   #          重複して生成してはならない(すでに生成されている場合は出力しないこと)
    189   #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     148  #===  宣言コードの生成
     149  #      typedef, signature, celltype など(cell 以外)のコードを生成
     150  #          重複して生成してはならない(すでに生成されている場合は出力しないこと)
     151  #file::        FILE       生成するファイル
    190152  def gen_plugin_decl_code( file )
    191153
    192     # このセルタイプ(同じシグニチャ)は既に生成されているか?
     154    # このセルタイプ(同じシグニチャ)は既に生成されているか?
    193155    if @@generated_celltype[ @ct_name ] == nil then
    194156      @@generated_celltype[ @ct_name ] = [ self ]
     
    235197  end
    236198
    237   #=== CDL ファイルの生成
    238   #file::     FILE    生成するファイル
     199  #=== CDL ファイルの生成
     200  #file::     FILE    生成するファイル
    239201  def gen_cdl_file( file )
    240202    gen_plugin_decl_code( file )
     
    242204  end
    243205
    244   #===  セルコードの生成
    245   #     through 指定により生じるセルコード(CDL)を生成する
    246   #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     206  #===  セルコードの生成
     207  #     through 指定により生じるセルコード(CDL)を生成する
     208  #file::        FILE       生成するファイル
    247209  def gen_through_cell_code( file )
    248210
     
    259221  end
    260222
    261   #=== 後ろのコードを生成
    262   #プラグインの後ろのコード (CDL) を生成
     223  #=== 後ろのコードを生成
     224  #プラグインの後ろのコード (CDL) を生成
    263225  #file:: File:
    264226  def self.gen_post_code( file )
    265     # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
     227    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
    266228    # file.print "/* '#{self.class.name}' post code */\n"
    267229  end
    268230
    269   #===  受け口関数の本体(C言語)を生成する
    270   #     é€šå¸¸ã§ã‚れば、ジェネレータは受け口関数のテンプレートを生成する
    271   #     ãƒ—ラグインの場合、変更するå¿
    272 è¦ã®ãªã„セルタイプコードを生成する
    273   #file::           FILE        出力å
    274 ˆãƒ•ã‚¡ã‚¤ãƒ«
     231  #===  受け口関数の本体(C言語)を生成する
     232  #     通常であれば、ジェネレータは受け口関数のテンプレートを生成する
     233  #     プラグインの場合、変更する必要のないセルタイプコードを生成する
     234  #file::           FILE        出力先ファイル
    275235  #b_singleton::    bool        true if singleton
    276236  #ct_name::        Symbol
     
    297257    p_cellcb = #{global_ct_name}_GET_CELLCB(idx);
    298258  }else{
    299      /* エラー処理コードをここに記述 */
     259     /* エラー処理コードをここに記述 */
    300260  }
    301261
     
    330290  end
    331291
    332   #=== Through プラグインの引数の名前を置換する
     292  #=== Through プラグインの引数の名前を置換する
    333293  def check_plugin_arg( ident, rhs )
    334294    rhs = subst_name rhs
     
    336296  end
    337297
    338   #=== ThroughPlugin#名前の置換
    339   # プラグインオプション引数å†
    340 ã®æ–‡å­—列を置換する
    341   #   $source$       â€¦ 呼びå
    342 ƒã®ã‚»ãƒ«å
    343   #   $destination$  … 呼びå
    344 ˆã®ã‚»ãƒ«å
    345   #   $SOURCE$       â€¦ 呼びå
    346 ƒã®ã‚»ãƒ«å (リージョン名を '_' で連結した global_name)
    347   #   $DESTINATION$  … 呼びå
    348 ˆã®ã‚»ãƒ«å (リージョン名を '_' で連結した global_name)
    349   #   $next$         â€¦ 次のセル名
    350   #                     è¤‡æ•°ã® through がつながっている場合、すぐ後ろに来るもの
    351   #   $NEXT$         â€¦ 次のセル名 (リージョン名を '_' で連結した global_name)
    352   #                     è¤‡æ•°ã® through がつながっている場合、すぐ後ろに来るもの
    353   #   $start_region$ … $source$ のセルの存在する region (global_name)
    354   #   $end_region$   â€¦ $destination$ のセルの存在する region (global_name)
    355   #   $preferred_region$  … 適切な region (global_name), start_region または end_region
    356   #   $count$        … region 間の through の適用数
    357   #   $$             â€¦ $ に置換
     298  #=== ThroughPlugin#名前の置換
     299  # プラグインオプション引数内の文字列を置換する
     300  #   $source$       … 呼び元のセル名
     301  #   $destination$  … 呼び先のセル名
     302  #   $SOURCE$       … 呼び元のセル名 (リージョン名を '_' で連結した global_name)
     303  #   $DESTINATION$  … 呼び先のセル名 (リージョン名を '_' で連結した global_name)
     304  #   $next$         … 次のセル名
     305  #                     複数の through がつながっている場合、すぐ後ろに来るもの
     306  #   $NEXT$         … 次のセル名 (リージョン名を '_' で連結した global_name)
     307  #                     複数の through がつながっている場合、すぐ後ろに来るもの
     308  #   $start_region$ … $source$ のセルの存在する region (global_name)
     309  #   $end_region$   … $destination$ のセルの存在する region (global_name)
     310  #   $preferred_region$  … 適切な region (global_name), start_region または end_region
     311  #   $count$        … region 間の through の適用数
     312  #   $$             … $ に置換
    358313  def subst_name( str )
    359     # セル名の置換
     314    # セル名の置換
    360315    str = str.gsub( /(^|[^\$])\$source\$/, "\\1#{@caller_cell.get_name}" )
    361316    str = str.gsub( /(^|[^\$])\$destination\$/, "\\1#{@callee_cell.get_name}" )
     
    364319    str = str.gsub( /(^|[^\$])\$next\$/, "\\1#{@next_cell.get_name}" )
    365320    str = str.gsub( /(^|[^\$])\$NEXT\$/, "\\1#{@next_cell.get_global_name}" )
    366     # region 名の置換
     321    # region 名の置換
    367322    str = str.gsub( /(^|[^\$])\$start_region\$/, "\\1#{@start_region.get_global_name}" )
    368323    str = str.gsub( /(^|[^\$])\$end_region\$/, "\\1#{@end_region.get_global_name}" )
     
    370325    str = str.gsub( /(^|[^\$])\$count\$/, "\\1#{@count}" )
    371326
    372     str = str.gsub( /\$\$/, "\$" )                       # $$ を $ に置換
     327    str = str.gsub( /\$\$/, "\$" )                       # $$ を $ に置換
    373328
    374329    return str
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/TracePlugin.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
     
    5540class TracePlugin < ThroughPlugin
    5641#@cellEntry_list::[ "Cell.eEntry", "Cell2.eEntry2", ... ]
    57 #@b_generate::bool  : true : TracePlugin を生成するå¿
    58 è¦ãŒã‚ã‚‹
    59 
    60   #=== TracePlugin の initialize
    61   #  説明は ThroughPlugin (plugin.rb) を参ç
    62 §
     42#@b_generate::bool  : true : TracePlugin を生成する必要がある
     43
     44  #=== TracePlugin の initialize
     45  #  説明は ThroughPlugin (plugin.rb) を参照
    6346  def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell )
    6447
     
    8669
    8770    if @b_generate == false then
    88       # å
    89 ƒã€
    90 å‘¼ã³å‡ºã™ã‚»ãƒ«ã«çµåˆã™ã‚‹ã‚‚のとする
     71      # 元々呼び出すセルに結合するものとする
    9172      @entry_port_name = next_cell_port_name
    9273      @cell_name = next_cell.get_name
     
    9475  end
    9576
    96   #===  宣言コードの生成
    97   #      typedef, signature, celltype など(cell 以外)のコードを生成
    98   #          重複して生成してはならない(すでに生成されている場合は出力しないこと)
    99   #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     77  #===  宣言コードの生成
     78  #      typedef, signature, celltype など(cell 以外)のコードを生成
     79  #          重複して生成してはならない(すでに生成されている場合は出力しないこと)
     80  #file::        FILE       生成するファイル
    10081  def gen_plugin_decl_code( file )
    10182
    102     # このセルタイプ(同じシグニチャ)は既に生成されているか?
     83    # このセルタイプ(同じシグニチャ)は既に生成されているか?
    10384    if @@generated_celltype[ @ct_name ] == nil then
    10485      @@generated_celltype[ @ct_name ] = [ self ]
     
    449430  end
    450431
    451   # プラグイン引数名と Proc
     432  # プラグイン引数名と Proc
    452433  TracePluginArgProc = {
    453434    "maxArrayDisplay"    => Proc.new { |obj,rhs| obj.set_maxArrayDisplay rhs },
     
    489470  end
    490471
    491   #=== プラグイン引数 tKernel のチェック
     472  #=== プラグイン引数 tKernel のチェック
    492473  def set_kernelCelltype( rhs )
    493474    @kernelCelltype = rhs.to_sym
     
    499480  end
    500481
    501   #=== プラグイン引数 tSyslog のチェック
     482  #=== プラグイン引数 tSyslog のチェック
    502483  def set_syslogCelltype( rhs )
    503484    @syslogCelltype = rhs.to_sym
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/lib/GenHRP2Marshaler.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
    5338#++
    5439
    55 #プラグインオプション用変数
     40#プラグインオプション用変数
    5641#@task_priority:: Integer
    5742#@channelCelltype:: String
     
    6045module GenTransparentMarshaler
    6146
    62   # プラグイン引数名と Proc
     47  # プラグイン引数名と Proc
    6348  RPCPluginArgProc = {
    6449    "taskPriority"    => Proc.new { |obj,rhs| obj.set_taskPriority rhs },
     
    6954  }
    7055
    71   #=== プラグイン引数 taskPriority のチェック
     56  #=== プラグイン引数 taskPriority のチェック
    7257  def set_taskPriority( rhs )
    7358    @task_priority = rhs
    7459  end
    7560
    76   #=== プラグイン引数 channelCelltype のチェック
     61  #=== プラグイン引数 channelCelltype のチェック
    7762  def set_channelCelltype( rhs )
    7863    @channelCelltype = rhs.to_sym
     
    8671  end
    8772
    88   #=== プラグイン引数 TDRCelltype のチェック
     73  #=== プラグイン引数 TDRCelltype のチェック
    8974  def set_TDRCelltype( rhs )
    9075    @TDRCelltype = rhs.to_sym
     
    9883  end
    9984
    100   #=== プラグイン引数 channelCellName のチェック
     85  #=== プラグイン引数 channelCellName のチェック
    10186  def set_channelCellName( rhs )
    10287    @channelCellName = rhs
     
    10893  end
    10994
    110   #=== プラグイン引数 PPAllocatorSize のチェック
     95  #=== プラグイン引数 PPAllocatorSize のチェック
    11196  def set_PPAllocatorSize( rhs )
    11297    @PPAllocatorSize = rhs
    11398  end
    11499
    115   #=== marshaler のセルタイプ名を設定する
     100  #=== marshaler のセルタイプ名を設定する
    116101  def initialize_transparent_marshaler cell_name
    117102    @task_priority = 8
     
    135120
    136121    f = CFile.open( @marshaler_celltype_file_name, "w" )
    137     # 同じå†
    138 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     122    # 同じ内容を二度書く可能性あり (AppFile は不可)
    139123
    140124    # modified by ishikawa
     
    164148  end
    165149
    166   #===  受け口関数の本体コードを生成(頭部と末尾は別途出力)
    167   #ct_name:: Symbol    (through プラグインで生成された) セルタイプ名 .Symbol として送られてくる(らしい)
     150  #===  受け口関数の本体コードを生成(頭部と末尾は別途出力)
     151  #ct_name:: Symbol    (through プラグインで生成された) セルタイプ名 .Symbol として送られてくる(らしい)
    168152  def gen_ep_func_body( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
    169153
    170     # unmarshaler クラスか?
     154    # unmarshaler クラスか?
    171155    if ct_name == @unmarshaler_celltype_name.to_sym then
    172156      gen_ep_func_body_unmarshal( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
     
    176160  end
    177161
    178   #===  marshal コードの生成
     162  #===  marshal コードの生成
    179163  def gen_ep_func_body_marshal( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
    180164
     
    182166    b_ret_er = false
    183167
    184     # 関数の戻り値のå
    185 ƒã®åž‹ã‚’å¾—ã‚‹(typedef されている場合)
     168    # 関数の戻り値の元の型を得る(typedef されている場合)
    186169    type = func_type.get_type.get_original_type
    187170
    188     # 戻り値記憶用の変数を出力(void 型の関数では出力しない)
     171    # 戻り値記憶用の変数を出力(void 型の関数では出力しない)
    189172    if ! type.kind_of?( VoidType ) then
    190173      if func_type.get_type.kind_of?( DefinedType ) && ( func_type.get_type.get_type_str == "ER" || func_type.get_type.get_type_str == "ER_INT" ) then
     
    201184    file.print( "    FLGPTN  flgptn;\n" )
    202185
    203     # 呼びå
    204 ˆã® signature を取り出す
     186    # 呼び先の signature を取り出す
    205187    signature = @signature
    206188
    207     # 関数 ID (整数値)
     189    # 関数 ID (整数値)
    208190    func_id = signature.get_id_from_func_name( func_name )
    209191    file.print( "    int16_t  func_id_ = #{func_id};    /* id of #{func_name}: #{func_id} */\n" )
     
    211193    file.print( "    uint8_t  msg[256];\n" )
    212194
    213     # シングルトンでないか?
     195    # シングルトンでないか?
    214196    if ! b_singleton then
    215197
    216       # singleton でなければ p_cellcb 取得コードを出力
     198      # singleton でなければ p_cellcb 取得コードを出力
    217199      file.print <<EOT
    218200    #{ct_name}_CB *p_cellcb;
     
    222204EOT
    223205
    224       # エラーを返すか?
     206      # エラーを返すか?
    225207      if b_ret_er then
    226208        file.print <<EOT
     
    232214        file.print <<EOT
    233215    }else{
    234         /* エラー処理コードをここに記述 */
    235     }
    236 EOT
    237       end
    238     end
    239 
    240     # channel lock コード
     216        /* エラー処理コードをここに記述 */
     217    }
     218EOT
     219      end
     220    end
     221
     222    # channel lock コード
    241223    file.print <<EOT
    242224    ///* Channel Lock */
     
    247229
    248230=begin
    249     # SOP を送信
    250     file.print "    /* SOPの送出 */\n"
     231    # SOP を送信
     232    file.print "    /* SOPの送出 */\n"
    251233    file.print "    if( ( ercd_ = cTDR_sendSOP( true ) ) != E_OK )\n"
    252234    file.print "      goto error_reset;\n"
    253235=end
    254236
    255     # func_id を送信
    256     file.print "    /* 関数 id の送出 */\n"
     237    # func_id を送信
     238    file.print "    /* 関数 id の送出 */\n"
    257239=begin
    258240    file.print "    if( ( ercd_ = cTDR_putInt16( func_id_ ) ) != E_OK )\n"
     
    264246    # p "#{ct_name}, #{sig_name}, #{func_name}, #{func_global_name}"
    265247
    266     b_get = false    # marshal なら put
     248    b_get = false    # marshal なら put
    267249    b_marshal = true  # marshal
    268250
    269     # in 方向のå
    270 ¥å‡ºåŠ›ã‚’出力
     251    # in 方向の入出力を出力
    271252    @index = 2
    272     file.print "    /* å
    273 ¥åŠ›å¼•æ•°é€å‡º */\n"
     253    file.print "    /* 入力引数送出 */\n"
    274254    print_params( params, file, 1, b_marshal, b_get, true, func_type.is_oneway? )
    275255    print_params( params, file, 1, b_marshal, b_get, false, func_type.is_oneway? )
     
    281261=end
    282262
    283     file.print "    /* EOPの送出(パケットの掃きだし) */\n"
     263    file.print "    /* EOPの送出(パケットの掃きだし) */\n"
    284264    if ! func_type.is_oneway? then
    285265      b_continue = "true"
     
    316296
    317297    if( b_void == false )then
    318       # 呼びå
    319 ƒã«æˆ»ã‚Šå€¤ã‚’リターン
     298      # 呼び元に戻り値をリターン
    320299      file.print( "    cMessageBuffer_receive(&retval_);\n" )
    321300      file.print( "    return retval_;\n" )
     
    333312EOT
    334313
    335     # channel lock コード
     314    # channel lock コード
    336315    file.print <<EOT
    337316    ///* Channel Lock */
     
    342321
    343322    if( b_ret_er != false )then
    344       # 呼びå
    345 ƒã«æˆ»ã‚Šå€¤ã‚’リターン
     323      # 呼び元に戻り値をリターン
    346324      file.print( "    return ercd_;\n" )
    347325    else
     
    351329  end
    352330
    353   #===  unmarshal コードの生成
     331  #===  unmarshal コードの生成
    354332  def gen_ep_func_body_unmarshal( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
    355333
     
    357335    b_ret_er = false
    358336
    359     # func_id を得るコードを生成
     337    # func_id を得るコードを生成
    360338    file.print <<EOT
    361339
     
    378356        file.print <<EOT
    379357    }else{
    380         /* エラー処理コードをここに記述 */
     358        /* エラー処理コードをここに記述 */
    381359    }
    382360EOT
     
    388366
    389367#if 0
    390     /* SOPのチェック */
     368    /* SOPのチェック */
    391369    if( (ercd_=cTDR_receiveSOP( false )) != E_OK )
    392370        goto error_reset;
    393     /* func_id の取得 */
     371    /* func_id の取得 */
    394372    if( (ercd_=cTDR_getInt16( &func_id_ )) != E_OK )
    395373        goto error_reset;
     
    406384EOT
    407385
    408     # 呼びå
    409 ˆã® signature を取り出す
     386    # 呼び先の signature を取り出す
    410387    # port = @celltype.find( @next_cell_port_name )
    411388    # signature = port.get_signature
    412389    signature = @signature
    413390
    414     # through の signature に含まれる すべての関数について
     391    # through の signature に含まれる すべての関数について
    415392    signature.get_function_head_array.each { |f|
    416393      f_name = f.get_name
     
    418395      id = signature.get_id_from_func_name( f_name )
    419396
    420       # 関数は返り値を持つか?
     397      # 関数は返り値を持つか?
    421398      if f_type.get_type.kind_of?( VoidType ) then
    422399        b_void = true
     
    425402      end
    426403
    427       # パケットの終わりをチェック(未受け取りのデータが残っていないかチェック)
     404      # パケットの終わりをチェック(未受け取りのデータが残っていないかチェック)
    428405      file.print "    case #{id}:       /*** #{f_name} ***/ \n"
    429406      file.print "        if( tTransparentUnmarshaler_#{@signature.get_name}_#{f_name}() != E_OK )\n"
     
    434411
    435412    if @PPAllocatorSize then
    436       ppallocator_dealloc_str = "    /* PPAllocator のすべてを解放 */\n    cPPAllocator_dealloc_all();"
     413      ppallocator_dealloc_str = "    /* PPAllocator のすべてを解放 */\n    cPPAllocator_dealloc_all();"
    437414    else
    438415      ppallocator_dealloc_str = ""
     
    442419    file.print <<EOT
    443420    default:
    444 #if 0 // deleted by ishikawa: tSysLogが未実è£
    445 
     421#if 0 // deleted by ishikawa: tSysLogが未実装
    446422        syslog(LOG_INFO, "unmarshaler task: ERROR: unknown func_id: %d", func_id_ );
    447423#endif /* 0 */
     
    464440
    465441  # IN b_marshal, b_get
    466   #  b_marshal = true  && b_get == false   :  マーシャラでå
    467 ¥åŠ›å¼•æ•°é€å‡º
    468   #  b_marshal = true  && b_get == true    :  マーシャラで出力引数受取
    469   #  b_marshal = false && b_get == true    :  アンマーシャラでå
    470 ¥åŠ›å¼•æ•°å—取
    471   #  b_marshal = false && b_get == get     :  アンマーシャラで出力引数送出
     442  #  b_marshal = true  && b_get == false   :  マーシャラで入力引数送出
     443  #  b_marshal = true  && b_get == true    :  マーシャラで出力引数受取
     444  #  b_marshal = false && b_get == true    :  アンマーシャラで入力引数受取
     445  #  b_marshal = false && b_get == get     :  アンマーシャラで出力引数送出
    472446  def print_params( params, file, nest, b_marshal, b_get, b_referenced, b_oneway = false )
    473447    params.each{ |param|
     
    480454      type = param.get_type
    481455      if b_oneway && dir == :IN && type.get_original_type.kind_of?( PtrType ) || type.get_original_type.kind_of?( ArrayType ) then
    482         # oneway, in, PtrType の場合コピー
     456        # oneway, in, PtrType の場合コピー
    483457        alloc_cp = "cPPAllocator_alloc"
    484458        alloc_cp_extra = nil
     
    502476  end
    503477
    504   #=== コピーしない引数渡しコードの出力
     478  #=== コピーしない引数渡しコードの出力
    505479  def print_param_nc( name, type, file, nest, b_marshal, outer, outer2, b_get )
    506480    indent = "    " * ( nest + 1 )
     
    522496        when :SIGNED
    523497          if bit_size == -1 || bit_size == -11 then
    524             # signed char の場合、signed を指定する
     498            # signed char の場合、signed を指定する
    525499            signC = "S"
    526500            sign  = "s"
     
    641615
    642616
    643   #=== PREAMBLE 部のコード生成
    644   # アンマーシャラセルタイプの場合、アンマーシャラ関数のプロトタイプ宣言を生成
     617  #=== PREAMBLE 部のコード生成
     618  # アンマーシャラセルタイプの場合、アンマーシャラ関数のプロトタイプ宣言を生成
    645619  def gen_preamble file, b_singleton, ct_name, global_name
    646620    if ct_name != @unmarshaler_celltype_name.to_sym then
     
    648622    end
    649623
    650     file.print "/* アンマーシャラ関数のプロトタイプ宣言 */\n"
    651     # signature に含まれる すべての関数について
     624    file.print "/* アンマーシャラ関数のプロトタイプ宣言 */\n"
     625    # signature に含まれる すべての関数について
    652626    @signature.get_function_head_array.each { |f|
    653627      f_name = f.get_name
     
    661635  end
    662636
    663   #=== POSTAMBLE 部のコード生成
    664   # アンマーシャラセルタイプの場合、アンマーシャラ関数の生成
     637  #=== POSTAMBLE 部のコード生成
     638  # アンマーシャラセルタイプの場合、アンマーシャラ関数の生成
    665639  def gen_postamble file, b_singleton, ct_name, global_name
    666640    if ct_name != @unmarshaler_celltype_name.to_sym then
     
    668642    end
    669643
    670     file.print "\n/*** アンマーシャラ関数 ***/\n\n"
     644    file.print "\n/*** アンマーシャラ関数 ***/\n\n"
    671645    @signature.get_function_head_array.each { |f|
    672646      f_name = f.get_name
     
    674648      id = @signature.get_id_from_func_name( f_name )
    675649
    676       # 関数は返り値を持つか?
     650      # 関数は返り値を持つか?
    677651      if f_type.get_type.kind_of?( VoidType ) then
    678652        b_void = true
     
    692666      file.print "      ER  ercd_;\n"
    693667
    694       # 引数を受取る変数の定義
     668      # 引数を受取る変数の定義
    695669      param_list = f.get_declarator.get_type.get_paramlist.get_items
    696670           # FuncHead->  Decl->    FuncType->ParamList
     
    707681        end
    708682
    709         type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" を外す
     683        type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" を外す
    710684
    711685        file.printf( "    %-12s %s%s%s%s;\n", type_str, aster, name, aster2, type.get_type_str_post )
    712686      }
    713687
    714       # 戻り値を受け取る変数の定義
     688      # 戻り値を受け取る変数の定義
    715689      if ! b_void then
    716690        if f.is_oneway? then
    717           retval_ptr = ""   # oneway の場合、受け取るが捨てられる
     691          retval_ptr = ""   # oneway の場合、受け取るが捨てられる
    718692        else
    719693          # =begin ishikawa modified
     
    725699      end
    726700
    727       # in 方向のå
    728 ¥å‡ºåŠ›ã‚’å
    729 ¥åŠ›
    730       file.print "\n        /* å
    731 ¥åŠ›å¼•æ•°å—取 */\n"
    732       b_get = true    # unmarshal では get
     701      # in 方向の入出力を入力
     702      file.print "\n        /* 入力引数受取 */\n"
     703      b_get = true    # unmarshal では get
    733704      b_marshal  = false
    734705      @index = 2
     
    741712      end
    742713=end
    743       # パケットの受信完了
    744       # mikan 本当は、対象関数を呼出す後に実施したい.呼出しパケットの使用終わりを宣言する目的として
    745       file.print "        /* パケット終わりをチェック */\n"
     714      # パケットの受信完了
     715      # mikan 本当は、対象関数を呼出す後に実施したい.呼出しパケットの使用終わりを宣言する目的として
     716      file.print "        /* パケット終わりをチェック */\n"
    746717      if ! f.is_oneway? then
    747718        b_continue = "true"
     
    753724      file.print "        goto error_reset;\n\n"
    754725=end
    755       # 対象関数を呼出す
    756       file.print "    /* 対象関数の呼出し */\n"
     726      # 対象関数を呼出す
     727      file.print "    /* 対象関数の呼出し */\n"
    757728      if b_void then
    758729        file.print( "    cServerCall_#{f_name}(" )
     
    769740      file.print( " );\n" )
    770741
    771       # 戻り値、出力引数の受取コードの生成
     742      # 戻り値、出力引数の受取コードの生成
    772743
    773744      if ! b_void && ! f.is_oneway? then
     
    776747
    777748      end
    778       # oneway の場合出力、戻り値が無く、受取をå¾
    779 ãŸãªã„(非同期な呼出し)
     749      # oneway の場合出力、戻り値が無く、受取を待たない(非同期な呼出し)
    780750      if ! f.is_oneway? then
    781751        file.print <<EOT
    782     /* 関数処理の終了を通知 */
     752    /* 関数処理の終了を通知 */
    783753    if( ( ercd_ = cEventflag_set( 0x01 ) ) != E_OK ){
    784754      goto error_reset;
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/lib/GenOpaqueMarshaler.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2018 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
     
    5439
    5540#== GenOpaqueMarshaler
    56 # OpaqueRPCPlugin, sharedOpaqueRPCPlugin å
    57 ±é€šã®è¦ç´ ã‚’集めたモジュール
     41# OpaqueRPCPlugin, sharedOpaqueRPCPlugin 共通の要素を集めたモジュール
    5842module GenOpaqueMarshaler
    5943
    60   # プラグイン引数名と Proc
     44  # プラグイン引数名と Proc
    6145  RPCPluginArgProc = {
    6246    "clientChannelCelltype" => Proc.new { |obj,rhs| obj.set_clientChannelCelltype rhs },
     
    7963  }
    8064
    81   ##### プラグイン引数チェック関数
    82 
    83   #=== プラグイン引数 taskPriority のチェック
     65  ##### プラグイン引数チェック関数
     66
     67  #=== プラグイン引数 taskPriority のチェック
    8468  def set_taskPriority( rhs )
    8569    @taskPriority = rhs
    8670  end
    8771
    88   #=== プラグイン引数 serverChannelCelltype のチェック
     72  #=== プラグイン引数 serverChannelCelltype のチェック
    8973  def set_serverChannelCelltype( rhs )
    9074    @serverChannelCelltype = rhs.to_sym
     
    9882  end
    9983
    100   #=== プラグイン引数 clientChannelCelltype のチェック
     84  #=== プラグイン引数 clientChannelCelltype のチェック
    10185  def set_clientChannelCelltype( rhs )
    10286    @clientChannelCelltype = rhs.to_sym
     
    11094  end
    11195
    112   #=== プラグイン引数 serverChannelCell のチェック
     96  #=== プラグイン引数 serverChannelCell のチェック
    11397  def set_serverChannelCell( rhs )
    11498    @serverChannelCell = rhs.to_sym
    115     # ChannelCell はプラグインで生成されるため、ここではチェックできない
     99    # ChannelCell はプラグインで生成されるため、ここではチェックできない
    116100    # path = [ "::", @serverChannelCell ]
    117101    # obj = Namespace.find( path )
     
    121105  end
    122106
    123   #=== プラグイン引数 clientChannelCell のチェック
     107  #=== プラグイン引数 clientChannelCell のチェック
    124108  def set_clientChannelCell( rhs )
    125109    @clientChannelCell = rhs.to_sym
    126     # ChannelCell はプラグインで生成されるため、ここではチェックできない
     110    # ChannelCell はプラグインで生成されるため、ここではチェックできない
    127111    # path = [ "::", @clientChannelCell ]
    128112    # obj = Namespace.find( path )
     
    132116  end
    133117
    134   #=== プラグイン引数 serverChannelInitializer のチェック
     118  #=== プラグイン引数 serverChannelInitializer のチェック
    135119  def set_serverChannelInitializer( rhs )
    136120    @serverChannelInitializer = rhs.to_sym
    137121  end
    138122
    139   #=== プラグイン引数 clientChannelInitializer のチェック
     123  #=== プラグイン引数 clientChannelInitializer のチェック
    140124  def set_clientChannelInitializer( rhs )
    141125    @clientChannelInitializer = rhs.to_sym
    142126  end
    143127
    144   #=== タスクタイプ taskCellype のチェック
     128  #=== タスクタイプ taskCellype のチェック
    145129  def set_taskCelltype( rhs )
    146130    @taskCelltype = rhs.to_sym
     
    154138  end
    155139
    156   #=== タスクタイプ stack\size のチェック
     140  #=== タスクタイプ stack\size のチェック
    157141  def set_stackSize( rhs )
    158142    @stackSize = rhs
    159143  end
    160144
    161   #=== プラグイン引数 PPAllocatorSize のチェック
     145  #=== プラグイン引数 PPAllocatorSize のチェック
    162146  def set_PPAllocatorSize( rhs )
    163147    @PPAllocatorSize = rhs
    164148  end
    165149
    166   #=== プラグイン引数 TDRCelltype のチェック
     150  #=== プラグイン引数 TDRCelltype のチェック
    167151  def set_TDRCelltype( rhs )
    168152    @TDRCelltype = rhs.to_sym
     
    176160  end
    177161
    178   #=== プラグイン引数 substituteAllocator のチェック
    179   # オプション引数が、以下の形式であることをチェック
     162  #=== プラグイン引数 substituteAllocator のチェック
     163  # オプション引数が、以下の形式であることをチェック
    180164  #     substituteAllocator(Alloc.eAlloc=>Subst.eAlloc,Alloc2.eAlloc=>Subst2.eAlloc)
    181165  def set_substituteAllocator( rhs )
    182     #str::String : 破壊される(マッチした残りになる)。str.empty? で空になったことをチェックできる
    183     #regexp::Regexp : 期å¾
    184 ã™ã‚‹ãƒˆãƒ¼ã‚¯ãƒ³ã«ãƒžãƒƒãƒã™ã‚‹æ­£è¦è¡¨ç¾ã€‚ "\A" 出始める
    185     #expected::String: 期å¾
    186 ã™ã‚‹ãƒˆãƒ¼ã‚¯ãƒ³ã€regexp が出現しなかった場合にエラーメッセージとして表示
     166    #str::String : 破壊される(マッチした残りになる)。str.empty? で空になったことをチェックできる
     167    #regexp::Regexp : 期待するトークンにマッチする正規表現。 "\A" 出始める
     168    #expected::String: 期待するトークン、regexp が出現しなかった場合にエラーメッセージとして表示
    187169    def optparse (str,regexp,expected)
    188170      str.strip!
     
    198180    ident_rexpr = /\A(\w[\w\d]*)/
    199181
    200     # "Alloc.eAlloc=>CAlloc.eAlloc" の形式になっていることをチェック
     182    # "Alloc.eAlloc=>CAlloc.eAlloc" の形式になっていることをチェック
    201183    while true
    202184      lhs_alloc_cell = optparse( opt, ident_rexpr, "allocator cell name" )
     
    221203      break if ! rhs_alloc_ent
    222204
    223 #  ここでは、右辺のチェックはできない。右辺のセルは前方参ç
    224 §ã¨ãªã‚‹
     205#  ここでは、右辺のチェックはできない。右辺のセルは前方参照となる
    225206#      path = [ "::", rhs_alloc_cell.to_sym ]   # mikan namespace
    226207#      obj = Namespace.find( path )
     
    229210#      else
    230211#        ct = obj.get_celltype
    231 #        if ct #  nil なら既にエラー
     212#        if ct #  nil なら既にエラー
    232213#          ent = ct.find rhs_alloc_ent
    233214#          if ! ent.instance_of? Port || ent.get_port_type != :ENTRY || ent.get_signature == nil || ! ent.get_signature.is_allocator?
     
    250231  end
    251232
    252   #=== プラグイン引数 noServerChannelOpenerCode のチェック
     233  #=== プラグイン引数 noServerChannelOpenerCode のチェック
    253234  def set_noServerChannelOpenerCode( rhs )
    254235    rhs = rhs.to_sym
     
    262243  end
    263244
    264   #=== プラグイン引数 clientSemaphoreCelltype のチェック
     245  #=== プラグイン引数 clientSemaphoreCelltype のチェック
    265246  def set_clientSemaphoreCelltype rhs
    266247    @semaphoreCelltype = rhs.to_sym
     
    272253  end
    273254
    274   #=== プラグイン引数 clientSemaphoreInitializer のチェック
     255  #=== プラグイン引数 clientSemaphoreInitializer のチェック
    275256  def set_clientSemaphoreInitializer rhs
    276257    @semaphoreInitializer = rhs.to_sym
    277258  end
    278259
    279   #=== プラグイン引数 clientErrorHandler のチェック
     260  #=== プラグイン引数 clientErrorHandler のチェック
    280261  def set_clientErrorHandler rhs
    281262    @clientErrorHandler = rhs.to_sym
    282263  end
    283264
    284   #=== プラグイン引数 serverErrorHandler のチェック
     265  #=== プラグイン引数 serverErrorHandler のチェック
    285266  def set_serverErrorHandler rhs
    286267    @serverErrorHandler = rhs.to_sym
     
    288269
    289270
    290   #===  セルの名前を得る
    291   # ThroughPlugin::get_cell_name plugin.rb をオーバーライド
     271  #===  セルの名前を得る
     272  # ThroughPlugin::get_cell_name plugin.rb をオーバーライド
    292273  def get_cell_name
    293274    @cell_name
     
    295276  end
    296277
    297   #=== marshaler のセルタイプ名を設定する
     278  #=== marshaler のセルタイプ名を設定する
    298279  def initialize_opaque_marshaler
    299280
    300     # オプション設定される変数のデフォルトを設定
     281    # オプション設定される変数のデフォルトを設定
    301282    @taskPriority = 11
    302283    @stackSize  = 4096
     
    309290    @taskCelltype = :"tTask"
    310291    @PPAllocatorSize = nil
    311     # @TDRCelltype  = :"tTDR"   # "tNBOTDR" に変更の予定
     292    # @TDRCelltype  = :"tTDR"   # "tNBOTDR" に変更の予定
    312293    @TDRCelltype  = :"tNBOTDR"
    313294    @substituteAllocator = {}
     
    324305    @marshaler_celltype_file_name = "#{$gen}/#{@marshaler_celltype_name}.cdl"
    325306
    326     # signature で対応できないものをチェック
     307    # signature で対応できないものをチェック
    327308    @signature.each_param{ |func_decl, param_decl|
    328309      if param_decl.get_direction == :OUT then
     
    337318  end
    338319
    339   #=== GenOpaqueMarshaler# Opener Code の生成時のチェック
     320  #=== GenOpaqueMarshaler# Opener Code の生成時のチェック
    340321  def check_opener_code
    341     # サーバーチャンネルセルタイプが entry sServerChannelOpener eOpener を持つかどうかをチェック
    342     # mikan entry か (call でないか) をチェックしていない
     322    # サーバーチャンネルセルタイプが entry sServerChannelOpener eOpener を持つかどうかをチェック
     323    # mikan entry か (call でないか) をチェックしていない
    343324    # scct = Namespace.find ["::", @serverChannelCelltype] # mikan namespace
    344325    nsp = NamespacePath.analyze( @serverChannelCelltype.to_s )
     
    360341  end
    361342
    362   #=== GenOpaqueMarshaler# PPAllocator のå¿
    363 è¦æ€§ã‚’チェックする
     343  #=== GenOpaqueMarshaler# PPAllocator の必要性をチェックする
    364344  def check_PPAllocator
    365345    if @signature.need_PPAllocator?(true) then
     
    374354  def gen_marshaler_celltype
    375355    f = CFile.open( @marshaler_celltype_file_name, "w" )
    376     # 同じå†
    377 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     356    # 同じ内容を二度書く可能性あり (AppFile は不可)
    378357
    379358    if @PPAllocatorSize then
     
    404383  end
    405384
    406   #===  受け口関数の本体コードを生成(頭部と末尾は別途出力)
    407   #ct_name:: Symbol    (through プラグインで生成された) セルタイプ名 .Symbol として送られてくる(らしい)
     385  #===  受け口関数の本体コードを生成(頭部と末尾は別途出力)
     386  #ct_name:: Symbol    (through プラグインで生成された) セルタイプ名 .Symbol として送られてくる(らしい)
    408387  def gen_ep_func_body( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
    409388
    410     # unmarshaler クラスか?
     389    # unmarshaler クラスか?
    411390    if ct_name == @unmarshaler_celltype_name.to_sym then
    412391      gen_ep_func_body_unmarshal( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
     
    416395  end
    417396
    418   #===  marshal コードの生成
     397  #===  marshal コードの生成
    419398  def gen_ep_func_body_marshal( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
    420399
     
    422401    b_ret_er = false
    423402
    424     # 関数の戻り値のå
    425 ƒã®åž‹ã‚’å¾—ã‚‹(typedef されている場合)
     403    # 関数の戻り値の元の型を得る(typedef されている場合)
    426404    type = func_type.get_type.get_original_type
    427405
    428     # 戻り値記憶用の変数を出力(void 型の関数では出力しない)
     406    # 戻り値記憶用の変数を出力(void 型の関数では出力しない)
    429407    if ! type.is_void? then
    430408      file.print( "\t#{func_type.get_type.get_type_str}\t\tretval_;\n" )
     
    439417    file.print( "\tint16_t\tstate_;\n" )
    440418
    441     # 関数 ID (整数値)
     419    # 関数 ID (整数値)
    442420    func_id = "FUNCID_#{@signature.get_global_name}_#{func_name}".upcase
    443421    fid = @signature.get_id_from_func_name( func_name )
    444422    file.print( "\tint16_t\tfunc_id_ = #{func_id};      /* (id of '#{func_name}') = #{fid}*/\n" )
    445423
    446     # シングルトンでないか?
     424    # シングルトンでないか?
    447425    if ! b_singleton then
    448426
    449       # singleton でなければ p_cellcb 取得コードを出力
     427      # singleton でなければ p_cellcb 取得コードを出力
    450428      file.print <<EOT
    451429        #{ct_name}_CB *p_cellcb;
     
    455433EOT
    456434
    457       # エラーを返すか?
     435      # エラーを返すか?
    458436      if b_ret_er then
    459437        file.print <<EOT
     
    465443        file.print <<EOT
    466444        }else{
    467                 /* エラー処理コードをここに記述 */
     445                /* エラー処理コードをここに記述 */
    468446        }
    469447
     
    481459    end
    482460
    483     # channel lock コード
     461    # channel lock コード
    484462    file.print <<EOT
    485463
     
    492470EOT
    493471
    494     # SOP を送信
    495     file.print "        /* SOPの送出 */\n"
     472    # SOP を送信
     473    file.print "        /* SOPの送出 */\n"
    496474    file.print "        SET_RPC_STATE( state_, RPCSTATE_CLIENT_SEND_SOP );\n"
    497475    file.print "        if( ( ercd_ = cTDR_sendSOP( true ) ) != E_OK )\n"
    498476    file.print "                goto error_reset;\n"
    499477
    500     # func_id を送信
    501     file.print "        /* 関数 id の送出 */\n"
     478    # func_id を送信
     479    file.print "        /* 関数 id の送出 */\n"
    502480    file.print "        if( ( ercd_ = cTDR_putInt16( func_id_ ) ) != E_OK )\n"
    503481    file.print "                goto error_reset;\n"
     
    506484    # p "#{ct_name}, #{sig_name}, #{func_name}, #{func_global_name}"
    507485
    508     b_get = false    # marshal なら put
     486    b_get = false    # marshal なら put
    509487    b_marshal = true  # marshal
    510488
    511     # in 方向のå
    512 ¥å‡ºåŠ›ã‚’出力
     489    # in 方向の入出力を出力
    513490    if func_type.has_inward? then
    514       file.print "      /* å
    515 ¥åŠ›å¼•æ•°é€å‡º */\n"
     491      file.print "      /* 入力引数送出 */\n"
    516492      file.print "      SET_RPC_STATE( state_, RPCSTATE_CLIENT_SEND_BODY );\n"
    517493      print_params( params, file, 1, b_marshal, b_get, true, "eClientEntry", func_name )
     
    525501      b_continue = "false"
    526502    end
    527     file.print "        /* EOPの送出(パケットの掃きだし) */\n"
     503    file.print "        /* EOPの送出(パケットの掃きだし) */\n"
    528504    file.print "        SET_RPC_STATE( state_, RPCSTATE_CLIENT_SEND_EOP );\n"
    529505    file.print "        if( (ercd_=cTDR_sendEOP(#{b_continue})) != E_OK )\n"
    530506    file.print "                goto error_reset;\n\n"
    531507
    532     # send のメモリをデアロケート
     508    # send のメモリをデアロケート
    533509    if func_type.has_send? then
    534510      file.print "      /* dealloc send parameter while executing */\n"
     
    541517    if ! func_type.is_oneway? then
    542518
    543       file.print "      /* パケットの始まりをチェック */\n"
     519      file.print "      /* パケットの始まりをチェック */\n"
    544520      file.print "      SET_RPC_STATE( state_, RPCSTATE_CLIENT_RECV_SOP );\n"
    545521      file.print "      if( (ercd_=cTDR_receiveSOP( true )) != E_OK )\n"
    546522      file.print "              goto error_reset;\n"
    547523
    548       b_get = true     # marshaler は get
    549       file.print "      /* 戻り値の受け取り */\n"
     524      b_get = true     # marshaler get
     525      file.print "      /* 戻り値の受け取り */\n"
    550526      print_param( "retval_", func_type.get_type, file, 1, :RETURN, nil, nil, b_marshal, b_get )
    551527
     
    559535        indent = "      " * indent_level
    560536
    561         file.print "#{indent}/* 出力値の受け取り */\n"
     537        file.print "#{indent}/* 出力値の受け取り */\n"
    562538        file.print "#{indent}SET_RPC_STATE( state_, RPCSTATE_CLIENT_RECV_BODY );\n"
    563539        print_params( params, file, indent_level, b_marshal, b_get, true, "eClientEntry", func_name )
     
    569545      end
    570546
    571       file.print "\n    /* パケットの終わりをチェック */\n"
     547      file.print "\n    /* パケットの終わりをチェック */\n"
    572548      file.print "      SET_RPC_STATE( state_, RPCSTATE_CLIENT_RECV_EOP );\n"
    573549      file.print "      if( (ercd_=cTDR_receiveEOP(false)) != E_OK )\n"  # b_continue = false
     
    576552    end # ! func_type.is_oneway?
    577553
    578     # channel lock コード
     554    # channel lock コード
    579555    file.print <<EOT
    580556        /* Channel Unlock */
     
    593569
    594570    if( b_void == false )then
    595       # 呼びå
    596 ƒã«æˆ»ã‚Šå€¤ã‚’リターン
     571      # 呼び元に戻り値をリターン
    597572      file.print( "     return retval_;\n" )
    598573    else
     
    604579error_reset:
    605580EOT
    606     # send のメモリをデアロケート
     581    # send のメモリをデアロケート
    607582    if func_type.has_send? then
    608583      file.print "      /* dealloc send parameter */\n"
     
    613588    end
    614589
    615     # receive のメモリをデアロケート
     590    # receive のメモリをデアロケート
    616591    if func_type.has_receive? then
    617592      file.print( "     /* receive parameter */\n" )
     
    625600EOT
    626601
    627     # channel lock コード
     602    # channel lock コード
    628603    file.print <<EOT
    629604        /* Channel Unlock */
     
    636611
    637612    if( b_ret_er != false )then
    638       # 呼びå
    639 ƒã«æˆ»ã‚Šå€¤ã‚’リターン
     613      # 呼び元に戻り値をリターン
    640614      file.print( "     return ERCD( E_RPC, MERCD( ercd_ ) );\n" )
    641615    else
     
    645619  end
    646620
    647   #===  unmarshal コードの生成
     621  #===  unmarshal コードの生成
    648622  def gen_ep_func_body_unmarshal( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
    649623
    650624    b_ret_er = true
    651625
    652     # func_id を得るコードを生成
     626    # func_id を得るコードを生成
    653627    file.print <<EOT
    654628
     
    672646        file.print <<EOT
    673647        }else{
    674                 /* エラー処理コードをここに記述 */
     648                /* エラー処理コードをここに記述 */
    675649        }
    676650EOT
     
    683657#endif
    684658
    685         /* SOPのチェック */
     659        /* SOPのチェック */
    686660        SET_RPC_STATE( state_, RPCSTATE_SERVER_RECV_SOP );
    687661        if( (ercd_=cTDR_receiveSOP( false )) != E_OK )
    688662                goto error_reset;
    689         /* func_id の取得 */
     663        /* func_id の取得 */
    690664        if( (ercd_=cTDR_getInt16( &func_id_ )) != E_OK )
    691665                goto error_reset;
     
    697671EOT
    698672
    699     # signature に含まれる すべての関数について
     673    # signature に含まれる すべての関数について
    700674    @signature.get_function_head_array.each { |f|
    701675      f_name = f.get_name
     
    711685
    712686    if @PPAllocatorSize then
    713       ppallocator_dealloc_str = "       /* PPAllocator のすべてを解放 */\n       cPPAllocator_dealloc_all();"
     687      ppallocator_dealloc_str = "       /* PPAllocator のすべてを解放 */\n     cPPAllocator_dealloc_all();"
    714688    else
    715689      ppallocator_dealloc_str = ""
     
    734708  end
    735709
    736   #=== PREAMBLE 部のコード生成
    737   # アンマーシャラセルタイプの場合、アンマーシャラ関数のプロトタイプ宣言を生成
     710  #=== PREAMBLE 部のコード生成
     711  # アンマーシャラセルタイプの場合、アンマーシャラ関数のプロトタイプ宣言を生成
    738712  def gen_preamble file, b_singleton, ct_name, global_name
    739713    if ct_name != @unmarshaler_celltype_name.to_sym then
     
    741715    end
    742716
    743     # string.h の include (memset, strlen のため)
     717    # string.h の include (memset, strlen のため)
    744718    file.print "/* header file (strlen, memset) */\n"
    745719    file.print "#include\t<string.h>\n\n"
    746720
    747     file.print "/* アンマーシャラ関数のプロトタイプ宣言 */\n"
    748     # signature に含まれる すべての関数について
     721    file.print "/* アンマーシャラ関数のプロトタイプ宣言 */\n"
     722    # signature に含まれる すべての関数について
    749723    @signature.get_function_head_array.each { |f|
    750724      f_name = f.get_name
     
    756730  end
    757731
    758   #=== POSTAMBLE 部のコード生成
    759   # アンマーシャラセルタイプの場合、個ã€
    760 ã®ã‚¢ãƒ³ãƒžãƒ¼ã‚·ãƒ£ãƒ©é–¢æ•°ã®ç”Ÿæˆ
     732  #=== POSTAMBLE 部のコード生成
     733  # アンマーシャラセルタイプの場合、個々のアンマーシャラ関数の生成
    761734  def gen_postamble file, b_singleton, ct_name, global_name
    762735    if ct_name != @unmarshaler_celltype_name.to_sym then
     
    764737    end
    765738
    766     file.print "\n/*** アンマーシャラ関数 ***/\n\n"
     739    file.print "\n/*** アンマーシャラ関数 ***/\n\n"
    767740    @signature.get_function_head_array.each { |f|
    768741      f_name = f.get_name
     
    770743      id = @signature.get_id_from_func_name( f_name )
    771744
    772       # 関数は返り値を持つか?
     745      # 関数は返り値を持つか?
    773746      b_ret_er = false
    774747      init_retval = ""
     
    794767      file.print "      ER      ercd_;\n"
    795768
    796       # 引数を受取る変数の定義
     769      # 引数を受取る変数の定義
    797770      params = f.get_declarator.get_type.get_paramlist.get_items
    798771           # FuncHead->  Decl->    FuncType->ParamList
     
    803776        dir = par.get_direction
    804777        if( dir == :RECEIVE )then
    805           # type は PtrType で、それを取り除いた型
     778          # type は PtrType で、それを取り除いた型
    806779          type = type.get_type
    807780        end
     
    821794        end
    822795
    823         type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" を外す
     796        type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" を外す
    824797        file.printf( "  %-12s %s%s%s%s%s;\n", type_str, aster, name, aster2, type.get_type_str_post, init )
    825798
     
    833806      end
    834807
    835       # in 方向のå
    836 ¥å‡ºåŠ›ã‚’å
    837 ¥åŠ›
    838       file.print "\n    /* å
    839 ¥åŠ›å¼•æ•°å—取 */\n"
     808      # in 方向の入出力を入力
     809      file.print "\n    /* 入力引数受取 */\n"
    840810      file.print "      SET_RPC_STATE( *state_, RPCSTATE_SERVER_RECV_BODY );\n"
    841       b_get = true    # unmarshal では get
     811      b_get = true    # unmarshal では get
    842812      b_marshal  = false
    843813      print_params( params, file, 1, b_marshal, b_get, true, "cServerCall", f_name )
     
    846816
    847817
    848       # パケットの受信完了
    849       file.print "      /* パケット終わりをチェック */\n"
     818      # パケットの受信完了
     819      file.print "      /* パケット終わりをチェック */\n"
    850820      file.print "      SET_RPC_STATE( *state_, RPCSTATE_SERVER_RECV_EOP );\n"
    851821      if ! f_type.is_oneway? then
     
    857827      file.print "              goto error_reset;\n\n"
    858828
    859       # out のメモリをアロケート
     829      # out のメモリをアロケート
    860830      dir = :OUT; alloc_cp = "cPPAllocator_alloc"; alloc_cp_extra = nil; nest = 1
    861831      alloc_for_out_params( params, file, nest, dir, alloc_cp, alloc_cp_extra )
    862832
    863       # 対象関数を呼出す
    864       file.print "      /* 対象関数の呼出し */\n"
     833      # 対象関数を呼出す
     834      file.print "      /* 対象関数の呼出し */\n"
    865835      file.print "      SET_RPC_STATE( *state_, RPCSTATE_SERVER_EXEC );\n"
    866836      if b_void then
     
    881851      file.print( " );\n" )
    882852
    883       # 戻り値、出力引数の受取コードの生成
    884 
    885       # oneway の場合出力、戻り値が無く、受取をå¾
    886 ãŸãªã„(非同期な呼出し)
     853      # 戻り値、出力引数の受取コードの生成
     854
     855      # oneway の場合出力、戻り値が無く、受取を待たない(非同期な呼出し)
    887856      if ! f.is_oneway? then
    888857
    889         file.print "\n  /* SOPの送出 */\n"
     858        file.print "\n  /* SOPの送出 */\n"
    890859        file.print "    SET_RPC_STATE( *state_, RPCSTATE_SERVER_SEND_SOP );\n"
    891860
     
    893862        file.print "            goto error_reset;\n"
    894863
    895         b_get = false     # unmarshaler は put
     864        b_get = false     # unmarshaler put
    896865        if( ! b_void )then
    897           file.print "  /* 戻り値の送出 */\n"
     866          file.print "  /* 戻り値の送出 */\n"
    898867          print_param( "retval_", f_type.get_type, file, 1, :RETURN, nil, nil, b_marshal, b_get )
    899868        end
     
    908877          indent = "    " * indent_level
    909878
    910           file.print "#{indent}/* 出力値の送出 */\n"
     879          file.print "#{indent}/* 出力値の送出 */\n"
    911880          file.print "#{indent}SET_RPC_STATE( *state_, RPCSTATE_SERVER_SEND_BODY );\n"
    912881          print_params( params, file, indent_level, b_marshal, b_get, true, "cServerCall", f_name )
    913882          print_params( params, file, indent_level, b_marshal, b_get, false, "cServerCall", f_name )
    914883
    915           # receive のメモリをデアロケート
     884          # receive のメモリをデアロケート
    916885          if f_type.has_receive? then
    917886            file.print "#{indent}/* dealloc receive parameter */\n"
     
    925894        end
    926895
    927         file.print "    /* パケットの終わり(掃きだし) */\n"
     896        file.print "    /* パケットの終わり(掃きだし) */\n"
    928897        file.print "    SET_RPC_STATE( *state_, RPCSTATE_SERVER_SEND_EOP );\n"
    929898        file.print "    if( (ercd_=cTDR_sendEOP(false)) != E_OK )\n"  # b_continue = false
     
    936905error_reset:
    937906EOT
    938       # send のリセット用デアロケート
     907      # send のリセット用デアロケート
    939908      if f_type.has_send? then
    940909        file.print "    /* dealloc send parameter */\n"
     
    945914      end
    946915
    947       # receive のメモリをデアロケート
     916      # receive のメモリをデアロケート
    948917      if f_type.has_receive? && b_ret_er then
    949918        file.print "    /* dealloc receive parameter */\n"
     
    957926      file.print "}\n\n"
    958927
    959       # ここ(個ã€
    960 ã®é–¢æ•°ï¼‰ã§ã¯ã‚¨ãƒ©ãƒ¼ãƒãƒ³ãƒ‰ãƒ©ãƒ¼ã¯å‘¼ã³å‡ºã•ãªã„。呼びå
    961 ƒï¼ˆã‚µãƒ¼ãƒãƒ¼ã®ãƒ¡ã‚¤ãƒ³é–¢æ•°ï¼‰ã§å‘¼ã³å‡ºã™ã€‚
     928      # ここ(個々の関数)ではエラーハンドラーは呼び出さない。呼び元(サーバーのメイン関数)で呼び出す。
    962929    }
    963930  end
     
    966933  #b_marshal:: bool
    967934  #b_get:: bool
    968   #  b_marshal = true  && b_get == false   :  マーシャラでå
    969 ¥åŠ›å¼•æ•°é€å‡º
    970   #  b_marshal = true  && b_get == true    :  マーシャラで出力引数受取
    971   #  b_marshal = false && b_get == false   :  アンマーシャラでå
    972 ¥åŠ›å¼•æ•°å—取
    973   #  b_marshal = false && b_get == true    :  アンマーシャラで出力引数送出
    974   #b_referenced:: size_is, count_is, string で参ç
    975 §ã•ã‚Œã¦ã„るものを出力
     935  #  b_marshal = true  && b_get == false   :  マーシャラで入力引数送出
     936  #  b_marshal = true  && b_get == true    :  マーシャラで出力引数受取
     937  #  b_marshal = false && b_get == false   :  アンマーシャラで入力引数受取
     938  #  b_marshal = false && b_get == true    :  アンマーシャラで出力引数送出
     939  #b_referenced:: size_is, count_is, string で参照されているものを出力
    976940  def print_params( params, file, nest, b_marshal, b_get, b_referenced, port_name, func_name )
    977941    params.each{ |param|
     
    996960        case dir
    997961        when :OUT, :INOUT
    998           alloc_cp = nil        # inout の b_get==true&&b_marsha==true のときアロケータコードは不用
     962          alloc_cp = nil        # inout の b_get==true&&b_marsha==true のときアロケータコードは不用
    999963          alloc_cp_extra = nil
    1000964          print_param( param.get_name, param.get_type, file, nest, dir, nil, nil, b_marshal, b_get, alloc_cp, alloc_cp_extra )
     
    1003967          alloc_cp_extra = nil
    1004968          if b_get then
    1005             outer = "(*"         # マーシャラ側では、ポインタが (send と比べ) 一つ多い
     969            outer = "(*"         # マーシャラ側では、ポインタが (send と比べ) 一つ多い
    1006970            outer2 = ")"
    1007971          else
    1008             outer = nil          # アンマーシャラ側では、ポインタが一つ外されている
     972            outer = nil          # アンマーシャラ側では、ポインタが一つ外されている
    1009973            outer2 = nil
    1010974          end
     
    1016980  end
    1017981
    1018   #=== アロケータコードを生成 (out のアンマーシャラ用)
     982  #=== アロケータコードを生成 (out のアンマーシャラ用)
    1019983  def alloc_for_out_params( params, file, nest, dir, alloc_cp, alloc_cp_extra )
    1020984    params.each{ |param|
     
    1026990  end
    1027991
    1028   #=== アロケータコードを生成 (out のアンマーシャラ用個別パラメータの生成)
     992  #=== アロケータコードを生成 (out のアンマーシャラ用個別パラメータの生成)
    1029993  def alloc_for_out_param( name, type, file, nest, outer, outer2, alloc_cp, alloc_cp_extra )
    1030994    org_type = type.get_original_type
     
    10391003      count = type.get_count; size = type.get_size; string = type.get_string
    10401004      if count || size || string then
    1041         loop_counter_type = IntType.new(16)   # mikan 方を size_is, count_is の引数の型とする
     1005        loop_counter_type = IntType.new(16)   # mikan 方を size_is, count_is の引数の型とする
    10421006        if count then
    10431007          len = type.get_count.to_s
     
    10521016        end
    10531017
    1054         # size_is に max 指定がある場合、length が max をè¶
    1055 ãˆã¦ã„るかチェックするコードを生成
     1018        # size_is に max 指定がある場合、length が max を超えているかチェックするコードを生成
    10561019        if org_type.get_max != nil && string == nil then
    10571020          file.print "#{indent}if( #{len} > #{type.get_max} ){\t/* GenOpaqueMarshaler max check 2 */\n"
     
    10921055  end
    10931056
    1094   #=== 引数の一括デアロケートコードの生成
    1095   # send:マーシャラの最後、receive:アンマーシャラの最後で一括して引数をデアロケートする
     1057  #=== 引数の一括デアロケートコードの生成
     1058  # send:マーシャラの最後、receive:アンマーシャラの最後で一括して引数をデアロケートする
    10961059  def dealloc_for_params( params, file, nest, dir, dealloc_cp, b_reset = false )
    10971060    if b_reset then
     
    11071070        aster = ""
    11081071        if dir == :RECEIVE then
    1109           type = type.get_type.get_original_type   # ポインタを一つ外す
     1072          type = type.get_type.get_original_type   # ポインタを一つ外す
    11101073          if b_reset then
    11111074            aster = "*"
     
    11281091  end
    11291092
    1130   #== out で nullable な引数のæƒ
    1131 å ±ã‚’渡す
    1132   # out nullable の場合、in, send, receive のように、値を渡す直前ではなく、呼出し時に渡す
     1093  #== out で nullable な引数の情報を渡す
     1094  # out nullable の場合、in, send, receive のように、値を渡す直前ではなく、呼出し時に渡す
    11331095  def  print_out_nullable( params, file, nest, b_marshal );
    11341096    indent = "\t" * nest
     
    11401102        file.print "#{indent}\tgoto error_reset;\n"
    11411103      else
    1142         # 呼びå
    1143 ˆã¯ alloc_for_out_param で nullable の対応する
     1104        # 呼び先は alloc_for_out_param で nullable の対応する
    11441105        file.print "#{indent}if( (ercd_=cTDR_getInt8( &b_#{param.get_name}_null_)) != E_OK )\n"
    11451106        file.print "#{indent}\tgoto error_reset;\n"
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/lib/GenParamCopy.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
     
    5540#= ParamCopy
    5641#
    57 # パラメータコピーするマーシャラ/アンマーシャラコードを生成するメソッド print_param を提供する.
    58 # RPCPlugin, OpaqueRPCPlugin に include される.
    59 # RPCPlugin (トランスペアレント) では、oneway 関数で in のポインタ引数の場合に限って print_param が用いられる.
     42# パラメータコピーするマーシャラ/アンマーシャラコードを生成するメソッド print_param を提供する.
     43# RPCPlugin, OpaqueRPCPlugin に include される.
     44# RPCPlugin (トランスペアレント) では、oneway 関数で in のポインタ引数の場合に限って print_param が用いられる.
    6045#
    6146module  GenParamCopy
    6247
    63   #=== 引数の転送コードを生成
     48  #=== 引数の転送コードを生成
    6449
    6550  def print_param( name, type, file, nest, dir, outer, outer2, b_marshal, b_get, alloc_cp = nil, alloc_cp_extra = nil, name_list = nil )
     
    7661EOT
    7762        if ( dir == :SEND || dir == :RECEIVE ) && type.get_type.has_pointer? then
    78           # send, receive の場合は、エラーリセットに備え NULL にする
     63          # send, receive の場合は、エラーリセットに備え NULL にする
    7964          file.print <<EOT
    8065#{indent}memset( (void *)#{outer}#{name}#{outer2}#{alloc_cp_extra}, 0, sizeof(#{type.get_type.get_type_str}#{type.get_type.get_type_str_post})*(#{size_str});   /* GenParamCopy Alloc1 */
     
    10388        when :SIGNED
    10489          if bit_size == -1 || bit_size == -11 then
    105             sign = "S"   # signed char の場合のみ S がつく
     90            sign = "S"   # signed char の場合のみ S がつく
    10691          else
    10792            sign = ""
     
    156141        nest = print_nullable_pre( name, type, file, nest, dir, outer, outer2, b_marshal, b_get )
    157142        indent = "\t" * nest
    158         loop_counter_type = IntType.new(32)   # mikan 型を size_is, count_is の引数の型とする
     143        loop_counter_type = IntType.new(32)   # mikan 型を size_is, count_is の引数の型とする
    159144        file.print "#{indent}{\t/* GenParamCopy 4 */\n"
    160145        file.print "#{indent}   #{loop_counter_type.get_type_str}  i__#{nest}, length__#{nest};\n"
     
    168153            count_str = count.to_str( name_list, outer, outer2 )
    169154          else
    170             # size_is はå¿
    171 é ˆ. count_is はオプション
     155            # size_is は必須. count_is はオプション
    172156            count_str = size_str
    173157          end
    174158          file.print "#{indent} length__#{nest} = #{count_str};\t/* GenParamCopy 5 */\n"
    175159
    176           # size_is に max 指定がある場合、length が max をè¶
    177 ãˆã¦ã„るかチェックするコードを生成
    178               # alloc_cp == nil のとき dir は INOUT, OUT のはず (条件が冗長)。試験が終わっているので、次回見直し時に外す
     160          # size_is に max 指定がある場合、length が max を超えているかチェックするコードを生成
     161              # alloc_cp == nil のとき dir は INOUT, OUT のはず (条件が冗長)。試験が終わっているので、次回見直し時に外す
    179162          if b_get && type.get_max != nil && ! ( ( dir == :INOUT || dir == :OUT ) && alloc_cp == nil ) then
    180163            file.print "#{indent}       if( length__#{nest} > #{type.get_max.to_s} ){\t/* GenParamCopy max check 1 */\n"
     
    202185              file.print "#{indent}     length__#{nest} = STRLEN#{b_size}(#{outer}#{name}#{outer2})+1;\t/* GenParamCopy 7 */\n"
    203186            end
    204             size_str = "length__#{nest}"     # string の場合、strnlen 以上の領域を確保しない
     187            size_str = "length__#{nest}"     # string の場合、strnlen 以上の領域を確保しない
    205188          else
    206189            if ( dir == :INOUT ) then
    207190              if ( string.instance_of? Expression ) then
    208191                len = string.to_str( name_list, outer, outer2 )
    209                 size_str = "#{len}"              # string(len) の場合 len を確保する
     192                size_str = "#{len}"              # string(len) の場合 len を確保する
    210193              else
    211194                raise "unsuscripted string used for inout parameter #{name}"
    212195              end
    213196            else
    214               size_str = "length__#{nest}"     # string の場合、strnlen 以上の領域を確保しない
     197              size_str = "length__#{nest}"     # string の場合、strnlen 以上の領域を確保しない
    215198            end
    216199          end
     
    224207EOT
    225208          if ( dir == :SEND || dir == :RECEIVE ) && type.get_type.has_pointer? then
    226             # send, receive の場合は、エラーリセットに備え NULL にする
     209            # send, receive の場合は、エラーリセットに備え NULL にする
    227210            file.print <<EOT
    228211#{indent}       memset( (void *)#{outer}#{name}#{outer2}#{alloc_cp_extra}, 0, sizeof(#{type.get_type.get_type_str}#{type.get_type.get_type_str_post})*(#{size_str}) );   /* GenParamCopy Alloc2 */
     
    251234EOT
    252235          if ( dir == :SEND || dir == :RECEIVE ) && type.get_type.has_pointer? then
    253             # send, receive の場合は、エラーリセットに備え NULL にする
     236            # send, receive の場合は、エラーリセットに備え NULL にする
    254237            file.print <<EOT
    255238#{indent}memset( (void *)#{outer}#{name}#{outer2}#{alloc_cp_extra}, 0, sizeof(#{type.get_type.get_type_str}#{type.get_type.get_type_str_post}) );   /* GenParamCopy Alloc3 */
     
    286269        size_str = subsc.to_str( name_list, outer, outer2 )
    287270
    288         loop_counter_type = IntType.new(32)   # mikan 型を size_is, count_is の引数の型とする
     271        loop_counter_type = IntType.new(32)   # mikan 型を size_is, count_is の引数の型とする
    289272        file.print "#{indent}{\t/* GenParamCopy 11 */\n"
    290273        file.print "#{indent}   #{loop_counter_type.get_type_str}  i__#{nest}, length__#{nest} = #{size_str};\n"
     
    302285    if type.is_nullable? then
    303286      indent = "        " * nest
    304       if dir == :OUT then  # OUT の場合 print_out_nullable で NULL かどうかのæƒ
    305 å ±ã‚’渡す
     287      if dir == :OUT then  # OUT の場合 print_out_nullable で NULL かどうかの情報を渡す
    306288        # 'null or not' is sent in the function 'print_out_nullable'
    307289        if b_get then
     
    321303#{indent}       if( ! b_null_ ){
    322304EOT
    323           else # dir = :INOUT, b_marshal = true, b_get = true の場合、NULL かどうかのæƒ
    324 å ±ã‚’渡さない
     305          else # dir = :INOUT, b_marshal = true, b_get = true の場合、NULL かどうかの情報を渡さない
    325306            file.print <<EOT
    326307#{indent}       int8_t  b_null_ = (#{outer}#{name}#{outer2} == NULL);\t/* GenParamCopy Null 21 */
     
    335316
    336317          if ! ( dir == :INOUT && b_marshal == false ) then
    337             # dir = :INOUT, b_marshal = false, b_get = false の場合
     318            # dir = :INOUT, b_marshal = false, b_get = false の場合
    338319            file.print <<EOT
    339320#{indent}       if((ercd_=cTDR_putInt8( b_null_ )) != E_OK )\t/* GenParamCopy Null 32 */
     
    355336  def print_nullable_post( name, type, file, nest, dir, outer, outer2, b_marshal, b_get )
    356337    if type.is_nullable? then
    357       if dir == :OUT then  # OUT の場合 print_out_nullable で NULL かどうかのæƒ
    358 å ±ã‚’渡す
     338      if dir == :OUT then  # OUT の場合 print_out_nullable で NULL かどうかの情報を渡す
    359339        nest -= 1
    360340        indent = "      " * nest
     
    371351#{indent}       }  /* ! b_null_ */
    372352EOT
    373           else # dir = :INOUT, b_marshal = true   # inout の out 方向
     353          else # dir = :INOUT, b_marshal = true   # inout の out 方向
    374354            file.print "#{indent}       }  /* ! b_null_  GenParamCopy Null 52 */\n"
    375355          end
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/lib/GenTransparentMarshaler.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
    5338#++
    5439
    55 #プラグインオプション用変数
     40#プラグインオプション用変数
    5641#@task_priority:: Integer
    5742#@channelCelltype:: String
     
    6045module GenTransparentMarshaler
    6146
    62   # プラグイン引数名と Proc
     47  # プラグイン引数名と Proc
    6348  RPCPluginArgProc = {
    6449    "taskPriority"    => Proc.new { |obj,rhs| obj.set_taskPriority rhs },
     
    6954  }
    7055
    71   #=== プラグイン引数 taskPriority のチェック
     56  #=== プラグイン引数 taskPriority のチェック
    7257  def set_taskPriority( rhs )
    7358    @task_priority = rhs
    7459  end
    7560
    76   #=== プラグイン引数 channelCelltype のチェック
     61  #=== プラグイン引数 channelCelltype のチェック
    7762  def set_channelCelltype( rhs )
    7863    @channelCelltype = rhs.to_sym
     
    8671  end
    8772
    88   #=== プラグイン引数 TDRCelltype のチェック
     73  #=== プラグイン引数 TDRCelltype のチェック
    8974  def set_TDRCelltype( rhs )
    9075    @TDRCelltype = rhs.to_sym
     
    9883  end
    9984
    100   #=== プラグイン引数 channelCellName のチェック
     85  #=== プラグイン引数 channelCellName のチェック
    10186  def set_channelCellName( rhs )
    10287    @channelCellName = rhs
     
    10893  end
    10994
    110   #=== プラグイン引数 PPAllocatorSize のチェック
     95  #=== プラグイン引数 PPAllocatorSize のチェック
    11196  def set_PPAllocatorSize( rhs )
    11297    @PPAllocatorSize = rhs
    11398  end
    11499
    115   #=== marshaler のセルタイプ名を設定する
     100  #=== marshaler のセルタイプ名を設定する
    116101  def initialize_transparent_marshaler cell_name
    117102    @task_priority = 8
     
    135120
    136121    f = CFile.open( @marshaler_celltype_file_name, "w" )
    137     # 同じå†
    138 å®¹ã‚’二度書く可能性あり (AppFile は不可)
     122    # 同じ内容を二度書く可能性あり (AppFile は不可)
    139123
    140124    f.print <<EOT
     
    157141  end
    158142
    159   #===  受け口関数の本体コードを生成(頭部と末尾は別途出力)
    160   #ct_name:: Symbol    (through プラグインで生成された) セルタイプ名 .Symbol として送られてくる(らしい)
     143  #===  受け口関数の本体コードを生成(頭部と末尾は別途出力)
     144  #ct_name:: Symbol    (through プラグインで生成された) セルタイプ名 .Symbol として送られてくる(らしい)
    161145  def gen_ep_func_body( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
    162146
    163     # unmarshaler クラスか?
     147    # unmarshaler クラスか?
    164148    if ct_name == @unmarshaler_celltype_name.to_sym then
    165149      gen_ep_func_body_unmarshal( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
     
    169153  end
    170154
    171   #===  marshal コードの生成
     155  #===  marshal コードの生成
    172156  def gen_ep_func_body_marshal( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
    173157
     
    175159    b_ret_er = false
    176160
    177     # 関数の戻り値のå
    178 ƒã®åž‹ã‚’å¾—ã‚‹(typedef されている場合)
     161    # 関数の戻り値の元の型を得る(typedef されている場合)
    179162    type = func_type.get_type.get_original_type
    180163
    181     # 戻り値記憶用の変数を出力(void 型の関数では出力しない)
     164    # 戻り値記憶用の変数を出力(void 型の関数では出力しない)
    182165    if ! type.is_void? then
    183166      if func_type.get_type.kind_of?( DefinedType ) && ( func_type.get_type.get_type_str == "ER" || func_type.get_type.get_type_str == "ER_INT" ) then
     
    194177    file.print( "    FLGPTN  flgptn;\n" )
    195178
    196     # 呼びå
    197 ˆã® signature を取り出す
     179    # 呼び先の signature を取り出す
    198180    signature = @signature
    199181
    200     # 関数 ID (整数値)
     182    # 関数 ID (整数値)
    201183    func_id = signature.get_id_from_func_name( func_name )
    202184    file.print( "    int16_t  func_id_ = #{func_id};    /* id of #{func_name}: #{func_id} */\n" )
    203185
    204     # シングルトンでないか?
     186    # シングルトンでないか?
    205187    if ! b_singleton then
    206188
    207       # singleton でなければ p_cellcb 取得コードを出力
     189      # singleton でなければ p_cellcb 取得コードを出力
    208190      file.print <<EOT
    209191    #{ct_name}_CB *p_cellcb;
     
    213195EOT
    214196
    215       # エラーを返すか?
     197      # エラーを返すか?
    216198      if b_ret_er then
    217199        file.print <<EOT
     
    223205        file.print <<EOT
    224206    }else{
    225         /* エラー処理コードをここに記述 */
    226     }
    227 EOT
    228       end
    229     end
    230 
    231     # channel lock コード
     207        /* エラー処理コードをここに記述 */
     208    }
     209EOT
     210      end
     211    end
     212
     213    # channel lock コード
    232214    file.print <<EOT
    233215    /* Channel Lock */
     
    237219EOT
    238220
    239     # SOP を送信
    240     file.print "    /* SOPの送出 */\n"
     221    # SOP を送信
     222    file.print "    /* SOPの送出 */\n"
    241223    file.print "    if( ( ercd_ = cTDR_sendSOP( true ) ) != E_OK )\n"
    242224    file.print "      goto error_reset;\n"
    243225
    244     # func_id を送信
    245     file.print "    /* 関数 id の送出 */\n"
     226    # func_id を送信
     227    file.print "    /* 関数 id の送出 */\n"
    246228    file.print "    if( ( ercd_ = cTDR_putInt16( func_id_ ) ) != E_OK )\n"
    247229    file.print "        goto error_reset;\n"
     
    250232    # p "#{ct_name}, #{sig_name}, #{func_name}, #{func_global_name}"
    251233
    252     b_get = false    # marshal なら put
     234    b_get = false    # marshal なら put
    253235    b_marshal = true  # marshal
    254236
    255     # in 方向のå
    256 ¥å‡ºåŠ›ã‚’出力
    257     file.print "    /* å
    258 ¥åŠ›å¼•æ•°é€å‡º */\n"
     237    # in 方向の入出力を出力
     238    file.print "    /* 入力引数送出 */\n"
    259239    print_params( params, file, 1, b_marshal, b_get, true, func_type.is_oneway? )
    260240    print_params( params, file, 1, b_marshal, b_get, false, func_type.is_oneway? )
     
    264244    end
    265245
    266     file.print "    /* EOPの送出(パケットの掃きだし) */\n"
     246    file.print "    /* EOPの送出(パケットの掃きだし) */\n"
    267247    if ! func_type.is_oneway? then
    268248      b_continue = "true"
     
    293273
    294274    if( b_void == false )then
    295       # 呼びå
    296 ƒã«æˆ»ã‚Šå€¤ã‚’リターン
     275      # 呼び元に戻り値をリターン
    297276      file.print( "    return retval_;\n" )
    298277    else
     
    307286EOT
    308287
    309     # channel lock コード
     288    # channel lock コード
    310289    file.print <<EOT
    311290    /* Channel Lock */
     
    316295
    317296    if( b_ret_er != false )then
    318       # 呼びå
    319 ƒã«æˆ»ã‚Šå€¤ã‚’リターン
     297      # 呼び元に戻り値をリターン
    320298      file.print( "    return ercd_;\n" )
    321299    else
     
    325303  end
    326304
    327   #===  unmarshal コードの生成
     305  #===  unmarshal コードの生成
    328306  def gen_ep_func_body_unmarshal( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
    329307
     
    331309    b_ret_er = false
    332310
    333     # func_id を得るコードを生成
     311    # func_id を得るコードを生成
    334312    file.print <<EOT
    335313
     
    352330        file.print <<EOT
    353331    }else{
    354         /* エラー処理コードをここに記述 */
     332        /* エラー処理コードをここに記述 */
    355333    }
    356334EOT
     
    359337    file.print <<EOT
    360338
    361     /* SOPのチェック */
     339    /* SOPのチェック */
    362340    if( (ercd_=cTDR_receiveSOP( false )) != E_OK )
    363341        goto error_reset;
    364     /* func_id の取得 */
     342    /* func_id の取得 */
    365343    if( (ercd_=cTDR_getInt16( &func_id_ )) != E_OK )
    366344        goto error_reset;
     
    372350EOT
    373351
    374     # 呼びå
    375 ˆã® signature を取り出す
     352    # 呼び先の signature を取り出す
    376353    # port = @celltype.find( @next_cell_port_name )
    377354    # signature = port.get_signature
    378355    signature = @signature
    379356
    380     # through の signature に含まれる すべての関数について
     357    # through の signature に含まれる すべての関数について
    381358    signature.get_function_head_array.each { |f|
    382359      f_name = f.get_name
     
    384361      id = signature.get_id_from_func_name( f_name )
    385362
    386       # 関数は返り値を持つか?
     363      # 関数は返り値を持つか?
    387364      if f_type.get_type.is_void? then
    388365        b_void = true
     
    391368      end
    392369
    393       # パケットの終わりをチェック(未受け取りのデータが残っていないかチェック)
     370      # パケットの終わりをチェック(未受け取りのデータが残っていないかチェック)
    394371      file.print "    case #{id}:       /*** #{f_name} ***/ \n"
    395372      file.print "        if( tTransparentUnmarshaler_#{@signature.get_global_name}_#{f_name}() != E_OK )\n"
     
    400377
    401378    if @PPAllocatorSize then
    402       ppallocator_dealloc_str = "    /* PPAllocator のすべてを解放 */\n    cPPAllocator_dealloc_all();"
     379      ppallocator_dealloc_str = "    /* PPAllocator のすべてを解放 */\n    cPPAllocator_dealloc_all();"
    403380    else
    404381      ppallocator_dealloc_str = ""
     
    423400
    424401  # IN b_marshal, b_get
    425   #  b_marshal = true  && b_get == false   :  マーシャラでå
    426 ¥åŠ›å¼•æ•°é€å‡º
    427   #  b_marshal = true  && b_get == true    :  マーシャラで出力引数受取
    428   #  b_marshal = false && b_get == true    :  アンマーシャラでå
    429 ¥åŠ›å¼•æ•°å—取
    430   #  b_marshal = false && b_get == get     :  アンマーシャラで出力引数送出
     402  #  b_marshal = true  && b_get == false   :  マーシャラで入力引数送出
     403  #  b_marshal = true  && b_get == true    :  マーシャラで出力引数受取
     404  #  b_marshal = false && b_get == true    :  アンマーシャラで入力引数受取
     405  #  b_marshal = false && b_get == get     :  アンマーシャラで出力引数送出
    431406  def print_params( params, file, nest, b_marshal, b_get, b_referenced, b_oneway = false )
    432407    params.each{ |param|
     
    439414      type = param.get_type
    440415      if b_oneway && dir == :IN && type.get_original_type.kind_of?( PtrType ) || type.get_original_type.kind_of?( ArrayType ) then
    441         # oneway, in, PtrType の場合コピー
     416        # oneway, in, PtrType の場合コピー
    442417        alloc_cp = "cPPAllocator_alloc"
    443418        alloc_cp_extra = nil
     
    461436  end
    462437
    463   #=== コピーしない引数渡しコードの出力
     438  #=== コピーしない引数渡しコードの出力
    464439  def print_param_nc( name, type, file, nest, b_marshal, outer, outer2, b_get )
    465440    indent = "    " * ( nest + 1 )
     
    481456        when :SIGNED
    482457          if bit_size == -1 || bit_size == -11 then
    483             # signed char の場合、signed を指定する
     458            # signed char の場合、signed を指定する
    484459            signC = "S"
    485460            sign  = "s"
     
    574549
    575550
    576   #=== PREAMBLE 部のコード生成
    577   # アンマーシャラセルタイプの場合、アンマーシャラ関数のプロトタイプ宣言を生成
     551  #=== PREAMBLE 部のコード生成
     552  # アンマーシャラセルタイプの場合、アンマーシャラ関数のプロトタイプ宣言を生成
    578553  def gen_preamble file, b_singleton, ct_name, global_name
    579554    if ct_name != @unmarshaler_celltype_name.to_sym then
     
    581556    end
    582557
    583     file.print "/* アンマーシャラ関数のプロトタイプ宣言 */\n"
    584     # signature に含まれる すべての関数について
     558    file.print "/* アンマーシャラ関数のプロトタイプ宣言 */\n"
     559    # signature に含まれる すべての関数について
    585560    @signature.get_function_head_array.each { |f|
    586561      f_name = f.get_name
     
    592567  end
    593568
    594   #=== POSTAMBLE 部のコード生成
    595   # アンマーシャラセルタイプの場合、アンマーシャラ関数の生成
     569  #=== POSTAMBLE 部のコード生成
     570  # アンマーシャラセルタイプの場合、アンマーシャラ関数の生成
    596571  def gen_postamble file, b_singleton, ct_name, global_name
    597572    if ct_name != @unmarshaler_celltype_name.to_sym then
     
    599574    end
    600575
    601     file.print "\n/*** アンマーシャラ関数 ***/\n\n"
     576    file.print "\n/*** アンマーシャラ関数 ***/\n\n"
    602577    @signature.get_function_head_array.each { |f|
    603578      f_name = f.get_name
     
    605580      id = @signature.get_id_from_func_name( f_name )
    606581
    607       # 関数は返り値を持つか?
     582      # 関数は返り値を持つか?
    608583      if f_type.get_type.is_void? then
    609584        b_void = true
     
    624599      file.print "      CELLCB  *p_cellcb;\n"
    625600
    626       # 引数を受取る変数の定義
     601      # 引数を受取る変数の定義
    627602      param_list = f.get_declarator.get_type.get_paramlist.get_items
    628603           # FuncHead->  Decl->    FuncType->ParamList
     
    639614        end
    640615
    641         type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" を外す
     616        type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" を外す
    642617
    643618        file.printf( "    %-12s %s%s%s%s;\n", type_str, aster, name, aster2, type.get_type_str_post )
    644619      }
    645620
    646       # 戻り値を受け取る変数の定義
     621      # 戻り値を受け取る変数の定義
    647622      if ! b_void then
    648623        if f.is_oneway? then
    649           retval_ptr = ""   # oneway の場合、受け取るが捨てられる
     624          retval_ptr = ""   # oneway の場合、受け取るが捨てられる
    650625        else
    651626          retval_ptr = "*"
     
    654629      end
    655630
    656       # in 方向のå
    657 ¥å‡ºåŠ›ã‚’å
    658 ¥åŠ›
    659       file.print "\n        /* å
    660 ¥åŠ›å¼•æ•°å—取 */\n"
    661       b_get = true    # unmarshal では get
     631      # in 方向の入出力を入力
     632      file.print "\n        /* 入力引数受取 */\n"
     633      b_get = true    # unmarshal では get
    662634      b_marshal  = false
    663635      print_params( param_list, file, 1, b_marshal, b_get, true, f.is_oneway? )
     
    668640      end
    669641
    670       # パケットの受信完了
    671       # mikan 本当は、対象関数を呼出す後に実施したい.呼出しパケットの使用終わりを宣言する目的として
    672       file.print "        /* パケット終わりをチェック */\n"
     642      # パケットの受信完了
     643      # mikan 本当は、対象関数を呼出す後に実施したい.呼出しパケットの使用終わりを宣言する目的として
     644      file.print "        /* パケット終わりをチェック */\n"
    673645      if ! f.is_oneway? then
    674646        b_continue = "true"
     
    679651      file.print "        goto error_reset;\n\n"
    680652
    681       # 対象関数を呼出す
    682       file.print "    /* 対象関数の呼出し */\n"
     653      # 対象関数を呼出す
     654      file.print "    /* 対象関数の呼出し */\n"
    683655      if b_void then
    684656        file.print( "    cServerCall_#{f_name}(" )
     
    695667      file.print( " );\n" )
    696668
    697       # 戻り値、出力引数の受取コードの生成
    698 
    699       # oneway の場合出力、戻り値が無く、受取をå¾
    700 ãŸãªã„(非同期な呼出し)
     669      # 戻り値、出力引数の受取コードの生成
     670
     671      # oneway の場合出力、戻り値が無く、受取を待たない(非同期な呼出し)
    701672      if ! f.is_oneway? then
    702673        file.print <<EOT
    703     /* 関数処理の終了を通知 */
     674    /* 関数処理の終了を通知 */
    704675    if( ( ercd_ = cEventflag_set( 0x01 ) ) != E_OK ){
    705676      goto error_reset;
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/lib/MrubyBridgeCelltypePluginModule.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2011 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
    5338#++
    5439
    55 #== celltype プラグインのå
    56 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     40#== celltype プラグインの共通の親クラス
    5741module MrubyBridgeCelltypePluginModule
    5842
    59   # プラグイン引数名 => Proc
     43  # プラグイン引数名 => Proc
    6044  MrubyBridgePluginArgProc = {
    6145      "ignoreUnsigned" => Proc.new { |obj,rhs| obj.set_ignoreUnsigned rhs },
     
    7155  @@count = 1
    7256
    73   #celltype::     Celltype        セルタイプ(インスタンス)
     57  #celltype::     Celltype        セルタイプ(インスタンス)
    7458  def initialize( celltype, option )
    7559    dbgPrint "#{self.class.name}: initialzie: #{celltype.get_name}\n"
     
    9377  end
    9478
    95   #=== 新しいセル
    96   #cell::        Cell            セル
     79  #=== 新しいセル
     80  #cell::        Cell            セル
    9781  #
    98   # celltype プラグインを指定されたセルタイプのセルが生成された
    99   # セルタイププラグインに対する新しいセルの報告
    100   # generate 文により呼び出された場合、それまでに定義された cell については、initialize のタイミングで呼び出される
     82  # celltype プラグインを指定されたセルタイプのセルが生成された
     83  # セルタイププラグインに対する新しいセルの報告
     84  # generate 文により呼び出された場合、それまでに定義された cell については、initialize のタイミングで呼び出される
    10185  def new_cell( cell )
    10286    dbgPrint "MrubyBridgeCelltypePluginModule: new_cell: #{cell.get_name}\n"
    10387
    104     return if @cell_list.include? cell   # この行は、本来不要のはず
    105     if TECSGEN.post_coded?               # post_code 以降のセルは対象から外す
     88    return if @cell_list.include? cell   # この行は、本来不要のはず
     89    if TECSGEN.post_coded?               # post_code 以降のセルは対象から外す
    10690      cdl_info( "I9999 MrubyBridgeCelltypePlugin: $1 is excluded because cell generated after post_coded", cell.get_name )
    10791      return
     
    146130  end
    147131
    148 ### 意味解析段階で呼び出されるメソッド ###
    149   #===  CDL ファイルの生成
    150   #      typedef, signature, celltype, cell のコードを生成
    151   #      重複して生成してはならない
    152   #      すでに生成されている場合は出力しないこと。
    153   #      もしくは同名の import により、重複を避けること。
    154   #file::        FILE       ç”Ÿæˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«
     132### 意味解析段階で呼び出されるメソッド ###
     133  #===  CDL ファイルの生成
     134  #      typedef, signature, celltype, cell のコードを生成
     135  #      重複して生成してはならない
     136  #      すでに生成されている場合は出力しないこと。
     137  #      もしくは同名の import により、重複を避けること。
     138  #file::        FILE       生成するファイル
    155139  def gen_cdl_file file
    156 #   ã“の段階で呼びだすと generate 文が呼び出される前のセルのみの出力となる
     140#   この段階で呼びだすと generate 文が呼び出される前のセルのみの出力となる
    157141   
    158142#    dbgPrint "MrubyBridgeCelltypePlugin: gen_cdl_file: #{@celltype.get_name}\n"
     
    175159  end
    176160
    177   #=== tCelltype_factory.h に挿å
    178 ¥ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’生成する
    179   # file 以外の他のファイルにファクトリコードを生成してもよい
    180   # セルタイププラグインが指定されたセルタイプのみ呼び出される
     161  #=== tCelltype_factory.h に挿入するコードを生成する
     162  # file 以外の他のファイルにファクトリコードを生成してもよい
     163  # セルタイププラグインが指定されたセルタイプのみ呼び出される
    181164  def gen_factory file
    182165  end
     
    187170
    188171  @@b_gen_post_code_called = false
    189   #=== 後ろの CDL コードを生成
    190   #プラグインの後ろの CDL コードを生成
     172  #=== 後ろの CDL コードを生成
     173  #プラグインの後ろの CDL コードを生成
    191174  #file:: File:
    192175  def self.gen_post_code( file )
     
    198181    end
    199182
    200 #    この段階で生成すると、同じポストコードで出力される mruby の初期化コードに反映されない
     183#    この段階で生成すると、同じポストコードで出力される mruby の初期化コードに反映されない
    201184   
    202 #    # MrubyBridgeCelltypePlugin の生成する generate 文は、
     185#    # MrubyBridgeCelltypePlugin の生成する generate 文は、
    203186#    fn2 = "#{$gen}/tmp_MrubyBridgeCelltypePlugin_post.cdl"
    204187#    f2 = File.open( fn2, "w" )
    205 #    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
     188#    # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
    206189#    dbgPrint "MrubyBridgeCelltypePlugin: gen_post_code\n"
    207190#    f2.print "/* '#{self.name}' post code */\n"
     
    219202  end
    220203
    221   #=== プラグイン引数
    222 
    223   #=== プラグイン引数 ignoreUnsigned
     204  #=== プラグイン引数
     205
     206  #=== プラグイン引数 ignoreUnsigned
    224207  def set_ignoreUnsigned rhs
    225208    if rhs == "true" || rhs == nil then
     
    256239  end
    257240
    258   #=== プラグイン引数 exclude_port_func
     241  #=== プラグイン引数 exclude_port_func
    259242  def set_exclude_port_func rhs
    260243    port_funcs = rhs.split ','
     
    287270  end
    288271
    289   #=== プラグイン引数 auto_exclude
     272  #=== プラグイン引数 auto_exclude
    290273  def set_auto_exclude rhs
    291274    # print "MrubyBridgeCellPlugin: auto_exclude=#{rhs}\n"
Note: See TracChangeset for help on using the changeset viewer.