Changeset 389 for azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin
- Timestamp:
- May 22, 2019, 10:03:37 PM (5 years ago)
- 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
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project TECS-WG 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ 53 38 #++ 54 39 55 #== celltype ãã©ã°ã¤ã³ã®å 56 ±éã®è¦ªã¯ã©ã¹ 40 #== celltype プラグインの共通の親クラス 57 41 class ATK1AlarmPlugin < CelltypePlugin 58 42 #@celltype:: Celltype 59 #@option:: String : ãªãã·ã§ã³æåå60 61 #signature:: Celltype ã·ã°ããã£ï¼ã¤ã³ã¹ã¿ã³ã¹ï¼43 #@option:: String :オプション文字列 44 45 #signature:: Celltype シグニチャ(インスタンス) 62 46 def initialize( celltype, option ) 63 47 super 64 48 end 65 49 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 生成するファイル 72 56 # def gen_cdl_file file 73 57 # end … … 76 60 end 77 61 78 #=== åãå£é¢æ°ã®æ¬ä½(Cè¨èª)ãçæãã 79 # ãã®ã¡ã½ãããæªå®ç¾©ã®å ´åãã¸ã§ãã¬ã¼ã¿ã¯åãå£é¢æ°ã®ãã³ãã¬ã¼ããçæãã 80 # ãã®ã¡ã½ãããå®ç¾©æ¸ã¿ã®å ´åãï¼ãã³ãã¬ã¼ãã§ã¯ãªããå¤æ´ããå¿ 81 è¦ã®ãªãï¼ã»ã«ã¿ã¤ãã³ã¼ããçæãã 82 #file:: FILE åºåå 83 ãã¡ã¤ã« 62 #=== 受け口関数の本体(C言語)を生成する 63 # このメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する 64 # このメソッドが定義済みの場合、(テンプレートではなく、変更する必要のない)セルタイプコードを生成する 65 #file:: FILE 出力先ファイル 84 66 #b_singleton:: bool true if singleton 85 67 #ct_name:: Symbol … … 190 172 file2.close 191 173 192 # 追è¨ããããã« AppFile ã使ãï¼æåã³ã¼ãå¤æãããªãï¼174 # 追記するために AppFile を使う(文字コード変換されない) 193 175 file = AppFile.open( "#{$gen}/tAlarm_tecsgen.#{$c_suffix}" ) 194 176 file.print "\n/* Generated by ATK1AlarmPlugin */\n" -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/ATK1DelayTaskPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project TECS-WG 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ 53 38 #++ 54 39 55 #== celltype ãã©ã°ã¤ã³ã®å 56 ±éã®è¦ªã¯ã©ã¹ 40 #== celltype プラグインの共通の親クラス 57 41 class ATK1DelayTaskPlugin < CelltypePlugin 58 42 #@celltype:: Celltype 59 #@option:: String : ãªãã·ã§ã³æåå43 #@option:: String :オプション文字列 60 44 61 #signature:: Celltype ã·ã°ããã£ï¼ã¤ã³ã¹ã¿ã³ã¹ï¼45 #signature:: Celltype シグニチャ(インスタンス) 62 46 def initialize( celltype, option ) 63 47 super 64 48 end 65 49 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 生成するファイル 72 56 # def gen_cdl_file file 73 57 # end … … 83 67 end 84 68 85 #=== åãå£é¢æ°ã®æ¬ä½(Cè¨èª)ãçæãã 86 # ãã®ã¡ã½ãããæªå®ç¾©ã®å ´åãã¸ã§ãã¬ã¼ã¿ã¯åãå£é¢æ°ã®ãã³ãã¬ã¼ããçæãã 87 # ãã®ã¡ã½ãããå®ç¾©æ¸ã¿ã®å ´åãï¼ãã³ãã¬ã¼ãã§ã¯ãªããå¤æ´ããå¿ 88 è¦ã®ãªãï¼ã»ã«ã¿ã¤ãã³ã¼ããçæãã 89 #file:: FILE åºåå 90 ãã¡ã¤ã« 69 #=== 受け口関数の本体(C言語)を生成する 70 # このメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する 71 # このメソッドが定義済みの場合、(テンプレートではなく、変更する必要のない)セルタイプコードを生成する 72 #file:: FILE 出力先ファイル 91 73 #b_singleton:: bool true if singleton 92 74 #ct_name:: Symbol … … 102 84 def gen_factory file 103 85 104 # 追è¨ããããã« AppFile ã使ãï¼æåã³ã¼ãå¤æãããªãï¼86 # 追記するために AppFile を使う(文字コード変換されない) 105 87 file2 = AppFile.open( "#{$gen}/tDelayTaskBody_factory.#{$h_suffix}" ) 106 88 file2.print "\n/* Generated by ATK1DelayTaskPlugin */\n\n" -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/ATK1EventPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project TECS-WG 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id 53 38 #++ 54 39 55 #== ATK1 Event celltype ãã©ã°ã¤ã³ã¯ã©ã¹40 #== ATK1 Event celltype プラグインクラス 56 41 class ATK1EventPlugin < CelltypePlugin 57 #@@instancies:: [] : ã»ã«å®ä½ç¾¤42 #@@instancies:: [] :セル実体群 58 43 @@instancies = [] 59 44 60 #=== åæå 61 # å 62 ¨ã¦ã®ã»ã«ã®å®ä½ãæå³è§£æå¾ã«åç 63 §ããå¿ 64 è¦ãããããã« 65 # åæåæã« singleton ã® instancies ã«æ ¼ç´ãã 66 #signature:: Celltype ã·ã°ããã£ï¼ã¤ã³ã¹ã¿ã³ã¹ï¼ 45 #=== 初期化 46 # 全てのセルの実体を意味解析後に参照する必要があるために 47 # 初期化時に singleton の instancies に格納する 48 #signature:: Celltype シグニチャ(インスタンス) 67 49 def initialize( celltype, option ) 68 50 super … … 70 52 end 71 53 72 #=== cell ã®çæ54 #=== cellの生成 73 55 def new_cell cell 74 56 end 75 57 76 #=== æå³è§£æå®è¡å¾ã®ã³ã¼ãçæ58 #=== 意味解析実行後のコード生成 77 59 def self.gen_post_code file 78 60 … … 83 65 end 84 66 85 #=== OIL ãã¡ã¤ã«åºå67 #=== OILファイル出力 86 68 def gen_oil_code file 87 69 -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/ATK1ISRPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project TECS-WG 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ 53 38 #++ 54 39 55 #== celltype ãã©ã°ã¤ã³ã®å 56 ±éã®è¦ªã¯ã©ã¹ 40 #== celltype プラグインの共通の親クラス 57 41 class ATK1ISRPlugin < CelltypePlugin 58 42 #@celltype:: Celltype 59 #@option:: String : ãªãã·ã§ã³æåå43 #@option:: String :オプション文字列 60 44 61 #signature:: Celltype ã·ã°ããã£ï¼ã¤ã³ã¹ã¿ã³ã¹ï¼45 #signature:: Celltype シグニチャ(インスタンス) 62 46 def initialize( celltype, option ) 63 47 super 64 48 end 65 49 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 生成するファイル 72 56 # def gen_cdl_file file 73 57 # end … … 76 60 end 77 61 78 #=== åãå£é¢æ°ã®æ¬ä½(Cè¨èª)ãçæãã 79 # ãã®ã¡ã½ãããæªå®ç¾©ã®å ´åãã¸ã§ãã¬ã¼ã¿ã¯åãå£é¢æ°ã®ãã³ãã¬ã¼ããçæãã 80 # ãã®ã¡ã½ãããå®ç¾©æ¸ã¿ã®å ´åãï¼ãã³ãã¬ã¼ãã§ã¯ãªããå¤æ´ããå¿ 81 è¦ã®ãªãï¼ã»ã«ã¿ã¤ãã³ã¼ããçæãã 82 #file:: FILE åºåå 83 ãã¡ã¤ã« 62 #=== 受け口関数の本体(C言語)を生成する 63 # このメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する 64 # このメソッドが定義済みの場合、(テンプレートではなく、変更する必要のない)セルタイプコードを生成する 65 #file:: FILE 出力先ファイル 84 66 #b_singleton:: bool true if singleton 85 67 #ct_name:: Symbol … … 116 98 end 117 99 118 # ENTRY (entry ã¯tecsgenã®äºç´èªã®ããNumberãä»å)100 # ENTRY (entryはtecsgenの予約語のためNumberを付加) 119 101 join = cell.get_join_list.get_item( :entryNumber ) 120 102 if join then … … 152 134 file2.close 153 135 154 # 追è¨ããããã« AppFile ã使ãï¼æåã³ã¼ãå¤æãããªãï¼136 # 追記するために AppFile を使う(文字コード変換されない) 155 137 file = AppFile.open( "#{$gen}/tISR_tecsgen.#{$c_suffix}" ) 156 138 file.print "\n/* Generated by ATK1ISRPlugin */\n" … … 165 147 #if defined( OMIT_ISR1_ENTRY ) 166 148 EOT 167 file.print "/* ISR1å 168 ¥ãå£æªçææã¯æ¬é¢æ°ãå²è¾¼ã¿é¢æ°æå®ãã */\n" 149 file.print "/* ISR1入り口未生成時は本関数を割込み関数指定する */\n" 169 150 file.print <<EOT 170 151 #pragma INTERRUPT #{cell.get_name} -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/ATK1KernelPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project TECS-WG 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ 53 38 #++ 54 39 55 #== celltype ãã©ã°ã¤ã³ã®å 56 ±éã®è¦ªã¯ã©ã¹ 40 #== celltype プラグインの共通の親クラス 57 41 class ATK1KernelPlugin < CelltypePlugin 58 42 #@celltype:: Celltype 59 #@option:: String : ãªãã·ã§ã³æåå43 #@option:: String :オプション文字列 60 44 @@cell_list = [] 61 45 62 #signature:: Celltype ã·ã°ããã£ï¼ã¤ã³ã¹ã¿ã³ã¹ï¼46 #signature:: Celltype シグニチャ(インスタンス) 63 47 def initialize( celltype, option ) 64 48 super 65 49 end 66 50 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 生成するファイル 73 57 # def gen_cdl_file file 74 58 # end … … 85 69 end 86 70 87 #=== åãå£é¢æ°ã®æ¬ä½(Cè¨èª)ãçæãã 88 # ãã®ã¡ã½ãããæªå®ç¾©ã®å ´åãã¸ã§ãã¬ã¼ã¿ã¯åãå£é¢æ°ã®ãã³ãã¬ã¼ããçæãã 89 # ãã®ã¡ã½ãããå®ç¾©æ¸ã¿ã®å ´åãï¼ãã³ãã¬ã¼ãã§ã¯ãªããå¤æ´ããå¿ 90 è¦ã®ãªãï¼ã»ã«ã¿ã¤ãã³ã¼ããçæãã 91 #file:: FILE åºåå 92 ãã¡ã¤ã« 71 #=== 受け口関数の本体(C言語)を生成する 72 # このメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する 73 # このメソッドが定義済みの場合、(テンプレートではなく、変更する必要のない)セルタイプコードを生成する 74 #file:: FILE 出力先ファイル 93 75 #b_singleton:: bool true if singleton 94 76 #ct_name:: Symbol … … 184 166 file2.close 185 167 186 # 追è¨ããããã« AppFile ã使ãï¼æåã³ã¼ãå¤æãããªãï¼168 # 追記するために AppFile を使う(文字コード変換されない) 187 169 file2 = AppFile.open( "#{$gen}/tKernel_tecsgen.#{$c_suffix}" ) 188 170 file2.print "\n/* Generated by ATK1KernelPlugin */\n\n" -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/ATK1ResourcePlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project TECS-WG 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ 53 38 #++ 54 39 55 #== celltype ãã©ã°ã¤ã³ã®å 56 ±éã®è¦ªã¯ã©ã¹ 40 #== celltype プラグインの共通の親クラス 57 41 class ATK1ResourcePlugin < CelltypePlugin 58 42 #@celltype:: Celltype 59 #@option:: String : ãªãã·ã§ã³æåå43 #@option:: String :オプション文字列 60 44 61 #signature:: Celltype ã·ã°ããã£ï¼ã¤ã³ã¹ã¿ã³ã¹ï¼45 #signature:: Celltype シグニチャ(インスタンス) 62 46 def initialize( celltype, option ) 63 47 super 64 48 end 65 49 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 生成するファイル 72 56 # def gen_cdl_file file 73 57 # end … … 76 60 end 77 61 78 #=== åãå£é¢æ°ã®æ¬ä½(Cè¨èª)ãçæãã 79 # ãã®ã¡ã½ãããæªå®ç¾©ã®å ´åãã¸ã§ãã¬ã¼ã¿ã¯åãå£é¢æ°ã®ãã³ãã¬ã¼ããçæãã 80 # ãã®ã¡ã½ãããå®ç¾©æ¸ã¿ã®å ´åãï¼ãã³ãã¬ã¼ãã§ã¯ãªããå¤æ´ããå¿ 81 è¦ã®ãªãï¼ã»ã«ã¿ã¤ãã³ã¼ããçæãã 82 #file:: FILE åºåå 83 ãã¡ã¤ã« 62 #=== 受け口関数の本体(C言語)を生成する 63 # このメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する 64 # このメソッドが定義済みの場合、(テンプレートではなく、変更する必要のない)セルタイプコードを生成する 65 #file:: FILE 出力先ファイル 84 66 #b_singleton:: bool true if singleton 85 67 #ct_name:: Symbol -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/ATK1TaskPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project TECS-WG 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ 53 38 #++ 54 39 55 #== celltype ãã©ã°ã¤ã³ã®å 56 ±éã®è¦ªã¯ã©ã¹ 40 #== celltype プラグインの共通の親クラス 57 41 class ATK1TaskPlugin < CelltypePlugin 58 42 #@celltype:: Celltype 59 #@option:: String : ãªãã·ã§ã³æåå60 61 #signature:: Celltype ã·ã°ããã£ï¼ã¤ã³ã¹ã¿ã³ã¹ï¼43 #@option:: String :オプション文字列 44 45 #signature:: Celltype シグニチャ(インスタンス) 62 46 def initialize( celltype, option ) 63 47 super 64 48 end 65 49 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 生成するファイル 72 56 # def gen_cdl_file file 73 57 # end … … 83 67 end 84 68 85 #=== åãå£é¢æ°ã®æ¬ä½(Cè¨èª)ãçæãã 86 # ãã®ã¡ã½ãããæªå®ç¾©ã®å ´åãã¸ã§ãã¬ã¼ã¿ã¯åãå£é¢æ°ã®ãã³ãã¬ã¼ããçæãã 87 # ãã®ã¡ã½ãããå®ç¾©æ¸ã¿ã®å ´åãï¼ãã³ãã¬ã¼ãã§ã¯ãªããå¤æ´ããå¿ 88 è¦ã®ãªãï¼ã»ã«ã¿ã¤ãã³ã¼ããçæãã 89 #file:: FILE åºåå 90 ãã¡ã¤ã« 69 #=== 受け口関数の本体(C言語)を生成する 70 # このメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する 71 # このメソッドが定義済みの場合、(テンプレートではなく、変更する必要のない)セルタイプコードを生成する 72 #file:: FILE 出力先ファイル 91 73 #b_singleton:: bool true if singleton 92 74 #ct_name:: Symbol … … 218 200 file2.close 219 201 220 # 追è¨ããããã« AppFile ã使ãï¼æåã³ã¼ãå¤æãããªãï¼202 # 追記するために AppFile を使う(文字コード変換されない) 221 203 file = AppFile.open( "#{$gen}/tTask_tecsgen.#{$c_suffix}" ) 222 204 file.print "\n/* Generated by ATK1TaskPlugin */\n" -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/C2TECSBridgePlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2015 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ 53 38 #++ 54 39 55 #== C => TECS åãå£å¼ã³åºãã®ãã©ã°ã¤ã³40 #== C => TECS 受け口呼び出しのプラグイン 56 41 class C2TECSBridgePlugin < SignaturePlugin 57 #@signature:: Signature ãã©ã°ã¤ã³ã®å¯¾è±¡ã¨ãªãã·ã°ããã£58 #@option:: String '"', '"' ã§å²ã¾ããæåå59 60 # ãã©ã°ã¤ã³å¼æ°åã¨Proc42 #@signature:: Signature プラグインの対象となるシグニチャ 43 #@option:: String '"', '"' で囲まれた文字列 44 45 # プラグイン引数名と Proc 61 46 C2TECSBridgePluginArgProc = { 62 47 "prefix" => Proc.new { |obj,rhs| obj.set_prefix rhs }, … … 68 53 @@signature_list = { } 69 54 70 #signature:: Signature ã·ã°ããã£ï¼ã¤ã³ã¹ã¿ã³ã¹ï¼55 #signature:: Signature シグニチャ(インスタンス) 71 56 def initialize( signature, option ) 72 57 super … … 100 85 end 101 86 102 #=== å¾ãã®ã³ã¼ããçæ103 # ãã©ã°ã¤ã³ã®å¾ãã®ã³ã¼ããçæ87 #=== 後ろのコードを生成 88 #プラグインの後ろのコードを生成 104 89 #file:: File: 105 90 def self.gen_post_code( file ) 106 # è¤æ°ã®ãã©ã°ã¤ã³ã® post_code ãä¸ã¤ã®ãã¡ã¤ã«ã«å«ã¾ããããã以ä¸ã®ãããªè¦åºããã¤ãããã¨91 # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること 107 92 # file.print "/* '#{self.class.name}' post code */\n" 108 93 end 109 94 110 #=== åãå£é¢æ°ã®æ¬ä½(Cè¨èª)ãçæãã 111 # é常ã§ããã°ãã¸ã§ãã¬ã¼ã¿ã¯åãå£é¢æ°ã®ãã³ãã¬ã¼ããçæãã 112 # ãã©ã°ã¤ã³ã®å ´åãå¤æ´ããå¿ 113 è¦ã®ãªãã»ã«ã¿ã¤ãã³ã¼ããçæãã 114 #file:: FILE åºåå 115 ãã¡ã¤ã« 95 #=== 受け口関数の本体(C言語)を生成する 96 # 通常であれば、ジェネレータは受け口関数のテンプレートを生成する 97 # プラグインの場合、変更する必要のないセルタイプコードを生成する 98 #file:: FILE 出力先ファイル 116 99 #b_singleton:: bool true if singleton 117 100 #ct_name:: Symbol … … 212 195 end 213 196 214 #=== set_prefix - prefix ãã©ã°ã¤ã³ãªãã·ã§ã³197 #=== set_prefix - prefix プラグインオプション 215 198 def set_prefix rhs 216 199 @prefix = rhs.to_s 217 200 end 218 #=== set_suffix - suffix ãã©ã°ã¤ã³ãªãã·ã§ã³201 #=== set_suffix - suffix プラグインオプション 219 202 def set_suffix rhs 220 203 @suffix = rhs.to_s 221 204 end 222 #=== set_header_name - header_name ãã©ã°ã¤ã³ãªãã·ã§ã³205 #=== set_header_name - header_name プラグインオプション 223 206 def set_header_name rhs 224 207 @header_name = "#{$gen}/" + rhs.to_s -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/CellPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2011 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ 53 38 #++ 54 39 55 #== celltype ãã©ã°ã¤ã³ã®å 56 ±éã®è¦ªã¯ã©ã¹ 40 #== celltype プラグインの共通の親クラス 57 41 class CellPlugin < Plugin 58 42 59 43 #=== CellPlugin# initialize 60 #cell:: Cell ã»ã«ï¼ã¤ã³ã¹ã¿ã³ã¹ï¼61 # ãã®ã¡ã½ããã¯ãã»ã«ã®æ§æ解æãçµãã£ãã¨ããã§å¼ã³åºããã62 # ãã®æ®µéã§ã¯æå³è§£æãçµãã£ã¦ããªã44 #cell:: Cell セル(インスタンス) 45 # このメソッドは、セルの構文解析が終わったところで呼び出される 46 # この段階では意味解析が終わっていない 63 47 def initialize( cell, option ) 64 48 super() 65 49 @cell = cell 66 50 @plugin_arg_str = CDLString.remove_dquote option 67 # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' ) # åå¾ã® "" ãåãé¤ã51 # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' ) # 前後の "" を取り除く 68 52 # @plugin_arg_str.sub!( /(.*)"\z/, '\1' ) 69 53 @plugin_arg_list = {} 70 54 end 71 55 72 #=== å¾ãã® CDL ã³ã¼ããçæ73 # ãã©ã°ã¤ã³ã®å¾ãã® CDL ã³ã¼ããçæ56 #=== 後ろの CDL コードを生成 57 #プラグインの後ろの CDL コードを生成 74 58 #file:: File: 75 59 def self.gen_post_code( file ) 76 # è¤æ°ã®ãã©ã°ã¤ã³ã® post_code ãä¸ã¤ã®ãã¡ã¤ã«ã«å«ã¾ããããã以ä¸ã®ãããªè¦åºããã¤ãããã¨60 # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること 77 61 # file.print "/* '#{self.class.name}' post code */\n" 78 62 end -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/CelltypePlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ 53 38 #++ 54 39 55 #== celltype ãã©ã°ã¤ã³ã®å 56 ±éã®è¦ªã¯ã©ã¹ 40 #== celltype プラグインの共通の親クラス 57 41 class CelltypePlugin < Plugin 58 42 59 #celltype:: Celltype ã»ã«ã¿ã¤ãï¼ã¤ã³ã¹ã¿ã³ã¹ï¼43 #celltype:: Celltype セルタイプ(インスタンス) 60 44 def initialize( celltype, option ) 61 45 super() 62 46 @celltype = celltype 63 # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' ) # åå¾ã® "" ãåãé¤ã47 # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' ) # 前後の "" を取り除く 64 48 # @plugin_arg_str.sub!( /(.*)"\z/, '\1' ) 65 49 @plugin_arg_str = CDLString.remove_dquote option … … 67 51 end 68 52 69 #=== æ°ããã»ã«70 #cell:: Cell ã»ã«53 #=== 新しいセル 54 #cell:: Cell セル 71 55 # 72 # celltype ãã©ã°ã¤ã³ãæå®ãããã»ã«ã¿ã¤ãã®ã»ã«ãçæããã73 # ã»ã«ã¿ã¤ããã©ã°ã¤ã³ã«å¯¾ããæ°ããã»ã«ã®å ±å56 # celltype プラグインを指定されたセルタイプのセルが生成された 57 # セルタイププラグインに対する新しいセルの報告 74 58 def new_cell( cell ) 75 59 end 76 60 77 61 78 #=== tCelltype_factory.h ã«æ¿å 79 ¥ããã³ã¼ããçæãã 80 # file 以å¤ã®ä»ã®ãã¡ã¤ã«ã«ãã¡ã¯ããªã³ã¼ããçæãã¦ããã 81 # ã»ã«ã¿ã¤ããã©ã°ã¤ã³ãæå®ãããã»ã«ã¿ã¤ãã®ã¿å¼ã³åºããã 62 #=== tCelltype_factory.h に挿入するコードを生成する 63 # file 以外の他のファイルにファクトリコードを生成してもよい 64 # セルタイププラグインが指定されたセルタイプのみ呼び出される 82 65 def gen_factory file 83 66 end 84 67 85 #=== å¾ãã® CDL ã³ã¼ããçæ86 # ãã©ã°ã¤ã³ã®å¾ãã® CDL ã³ã¼ããçæ68 #=== 後ろの CDL コードを生成 69 #プラグインの後ろの CDL コードを生成 87 70 #file:: File: 88 71 def self.gen_post_code( file ) 89 # è¤æ°ã®ãã©ã°ã¤ã³ã® post_code ãä¸ã¤ã®ãã¡ã¤ã«ã«å«ã¾ããããã以ä¸ã®ãããªè¦åºããã¤ãããã¨72 # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること 90 73 # file.print "/* '#{self.class.name}' post code */\n" 91 74 end -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/CompositePlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ 53 38 #++ 54 39 55 #== CompositeCelltype ãã©ã°ã¤ã³ã®å 56 ±éã®è¦ªã¯ã©ã¹ 40 #== CompositeCelltype プラグインの共通の親クラス 57 41 class CompositePlugin < Plugin 58 42 59 #celltype:: CompositeCelltype ã»ã«ã¿ã¤ãï¼ã¤ã³ã¹ã¿ã³ã¹ï¼43 #celltype:: CompositeCelltype セルタイプ(インスタンス) 60 44 def initialize( celltype, option ) 61 45 super() 62 46 @celltype = celltype 63 # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' ) # åå¾ã® "" ãåãé¤ã47 # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' ) # 前後の "" を取り除く 64 48 # @plugin_arg_str.sub!( /(.*)"\z/, '\1' ) 65 49 @plugin_arg_str = CDLString.remove_dquote option … … 67 51 end 68 52 69 #=== æ°ããã»ã«70 #cell:: Cell ã»ã«53 #=== 新しいセル 54 #cell:: Cell セル 71 55 # 72 # celltype ãã©ã°ã¤ã³ãæå®ãããã»ã«ã¿ã¤ãã®ã»ã«ãçæããã73 # ã»ã«ã¿ã¤ããã©ã°ã¤ã³ã«å¯¾ããæ°ããã»ã«ã®å ±å56 # celltype プラグインを指定されたセルタイプのセルが生成された 57 # セルタイププラグインに対する新しいセルの報告 74 58 def new_cell( cell ) 75 59 end 76 60 77 #=== å¾ãã® CDL ã³ã¼ããçæ78 # ãã©ã°ã¤ã³ã®å¾ãã® CDL ã³ã¼ããçæ61 #=== 後ろの CDL コードを生成 62 #プラグインの後ろの CDL コードを生成 79 63 #file:: File: 80 64 def self.gen_post_code( file ) 81 # è¤æ°ã®ãã©ã°ã¤ã³ã® post_code ãä¸ã¤ã®ãã¡ã¤ã«ã«å«ã¾ããããã以ä¸ã®ãããªè¦åºããã¤ãããã¨65 # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること 82 66 # file.print "/* '#{self.class.name}' post code */\n" 83 67 end -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/DomainPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ 53 38 #++ 54 39 55 #== ãã¡ã¤ã³ãã©ã°ã¤ã³ã®è¦ªã¯ã©ã¹40 #== ドメインプラグインの親クラス 56 41 class DomainPlugin < Plugin 57 42 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 指定子の第二引数 62 47 def initialize( region, domain_type_name, option ) 63 48 super() 64 49 end 65 50 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 を返す 73 54 #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 ) 指定したのと同等 77 57 # 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 プラグインの前に挿入される 82 61 # 83 # ãã®ã¡ã½ãããå¼åºãããæç¹ã§ã¯ Join#get_rhs_cell ãªã©æå³è§£æå¾84 # ã«ããå¼ã³åºããªãã¡ã½ãããå¼åºãã¦ããæå¹ãªå¤ã¯å¾ãããªã62 # このメソッドが呼出された時点では Join#get_rhs_cell など意味解析後 63 # にしか呼び出せないメソッドを呼出しても、有効な値は得られない 85 64 # 86 65 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 の説明参照) 97 72 # return [] 98 73 return nil 99 74 end 100 75 101 #== require ãçµåå¯è½ãï¼76 #== require が結合可能か? 102 77 def joinable?(current_region, next_region, through_type ) 103 78 return false 104 79 end 105 80 106 #== ãã¡ã¤ã³ç¨®å¥ãè¿ã81 #== ドメイン種別を返す 107 82 #return::Symbol :kernel, :user, :OutOfDomain 108 83 def get_kind … … 110 85 end 111 86 112 #== factory çæ113 # DomainPlugin ã® factory ã¯ç¹å®ã®ãã¡ã¤ã«ã¸ã®åºåãæ³å®ããã¦ããªã87 #== factory 生成 88 # DomainPlugin の factory は特定のファイルへの出力が想定されていない 114 89 def gen_factory 115 90 end -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2AlarmHandlerPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2012 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 56 41 #require "HRP2KernelObjectPlugin" 57 42 require_tecsgen_lib "HRP2KernelObjectPlugin.rb" 58 #== celltype ãã©ã°ã¤ã³ã®å 59 ±éã®è¦ªã¯ã©ã¹ 43 #== celltype プラグインの共通の親クラス 60 44 class HRP2AlarmHandlerPlugin < HRP2KernelObjectPlugin 61 45 @@ep = [:eStartAlarm, :eStopAlarm, :eManageAlarm, :eReferAlarm ] … … 71 55 name_array = @celltype.get_name_array cell 72 56 cell_CBP = name_array[8] # CBP 73 # CRE_XXX ã®çæ57 # CRE_XXXの生成 74 58 if (cell.get_region.get_region_type != :DOMAIN) || (cell.get_region.get_param != :KERNEL_DOMAIN) 75 # ç¡æå± or ã¦ã¼ã¶ãã¡ã¤ã³ã«å±ããå ´å59 # 無所属 or ユーザドメインに属する場合 76 60 raise "alarm handler #{val[:id]} must belong to kernel domain." 77 61 else … … 86 70 end 87 71 88 #tAlarm ã®åãå£ãªã¹ã72 #tAlarmの受け口リスト 89 73 def get_entry_ports_name_list() 90 74 @@ep -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2Cache.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
-
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2CyclicHandlerPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2017 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 56 41 require_tecsgen_lib "HRP2KernelObjectPlugin.rb" 57 42 58 #== celltype ãã©ã°ã¤ã³ã®å 59 ±éã®è¦ªã¯ã©ã¹ 43 #== celltype プラグインの共通の親クラス 60 44 class HRP2CyclicHandlerPlugin < HRP2KernelObjectPlugin 61 45 @@ep = [:eStartCyclic, :eStopCyclic, :eManageCyclic, :eReferCyclic ] … … 71 55 name_array = @celltype.get_name_array cell 72 56 cell_CBP = name_array[8] # CBP 73 # CRE_XXX ã®çæ57 # CRE_XXXの生成 74 58 if (cell.get_region.get_region_type != :DOMAIN) || (cell.get_region.get_param != :KERNEL_DOMAIN) 75 # ç¡æå± or ã¦ã¼ã¶ãã¡ã¤ã³ã«å±ããå ´å59 # 無所属 or ユーザドメインに属する場合 76 60 raise "cyclic handler #{val[:id]} must belong to kernel domain." 77 61 else … … 86 70 end 87 71 88 #tCyclicHandler ã®åãå£ãªã¹ã72 #tCyclicHandlerの受け口リスト 89 73 def get_entry_ports_name_list() 90 74 @@ep -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2DataqueuePlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2017 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 60 45 @@ep = [:eSendDataqueue, :eReceiveDataqueue, :eManageDataqueue, :eReferDataqueue ] 61 46 #=== 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 67 51 def print_cfg_cre(file, cell, val, tab) 68 52 file.print tab … … 70 54 end 71 55 #=== 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: アクセスベクタ 77 60 def print_cfg_sac(file, val, acv) 78 61 file.puts "SAC_DTQ(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});" 79 62 end 80 #tDataqueue ã®åãå£ãªã¹ã63 #tDataqueueの受け口リスト 81 64 def get_entry_ports_name_list() 82 65 @@ep -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2EventflagPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2017 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 60 45 @@ep = [:eSetEventflag, :eWaitEventflag, :eManageEventflag, :eReferEventflag ] 61 46 #=== 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 67 51 def print_cfg_cre(file, cell, val, tab) 68 52 file.print tab … … 70 54 end 71 55 #=== 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: アクセスベクタ 77 60 def print_cfg_sac(file, val, acv) 78 61 file.puts "SAC_FLG(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});" 79 62 end 80 #tEventflag ã®åãå£ãªã¹ã63 #tEventflagの受け口リスト 81 64 def get_entry_ports_name_list() 82 65 @@ep -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2FixedSizeMemoryPoolPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2017 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 60 45 @@ep = [:eSendFixedSizeMemoryPool, :eReceiveFixedSizeMemoryPool, :eManageFixedSizeMemoryPool, :eReferFixedSizeMemoryPool ] 61 46 #=== 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 67 51 def print_cfg_cre(file, cell, val, tab) 68 52 file.print tab … … 70 54 end 71 55 #=== 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: アクセスベクタ 77 60 def print_cfg_sac(file, val, acv) 78 61 file.puts "SAC_MPF(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});" 79 62 end 80 #tFixedSizeMemoryPool ã®åãå£ãªã¹ã63 #tFixedSizeMemoryPoolの受け口リスト 81 64 def get_entry_ports_name_list() 82 65 @@ep -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2HandlerPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2018 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 56 41 require_tecsgen_lib "HRP2KernelObjectPlugin.rb" 57 42 58 #== celltype ãã©ã°ã¤ã³ã®å 59 ±éã®è¦ªã¯ã©ã¹ 43 #== celltype プラグインの共通の親クラス 60 44 class HRP2HandlerPlugin < HRP2KernelObjectPlugin 61 45 @@ep = [:eStartAlarm, :eStopAlarm, :eManageAlarm, :eReferAlarm ] … … 73 57 name_array = @celltype.get_name_array cell 74 58 cell_CBP = name_array[8] # CBP 75 # CRE_XXX ã®çæ59 # CRE_XXXの生成 76 60 domainOption = cell.get_region.get_domain_root.get_domain_type.get_option 77 61 # if (cell.get_region.get_region_type != :DOMAIN) || (cell.get_region.get_param != :KERNEL_DOMAIN) 78 62 if (domainOption == "OutOfDomain") || (domainOption != "trusted") 79 # ç¡æå± or ã¦ã¼ã¶ãã¡ã¤ã³ã«å±ããå ´å63 # 無所属 or ユーザドメインに属する場合 80 64 raise "#{@plugin_arg_str.to_s.downcase} handler #{val[:id]} must belong to kernel domain." 81 65 elsif @plugin_arg_str == "ALARM" … … 127 111 128 112 =begin 129 #tAlarm ã®åãå£ãªã¹ã113 #tAlarmの受け口リスト 130 114 def get_entry_ports_name_list() 131 115 @@ep -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2KernelObjectPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2017 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ 53 38 #++ 54 39 55 # Region ã¯ã©ã¹ã«ã¡ã½ããã追å40 # Regionクラスにメソッドを追加 56 41 =begin 57 42 class Region … … 70 55 =end 71 56 72 # Cell ã¯ã©ã¹ã«ã¤ã³ã¹ã¿ã³ã¹å¤æ°ã¨ã¡ã½ããã追å57 # Cellクラスにインスタンス変数とメソッドを追加 73 58 =begin 74 59 class Cell … … 86 71 end 87 72 88 # set_referenced_cell ã«ããã»ãããã73 # set_referenced_cellにしたほうがよい 89 74 # def set_referenced_region( region, port_name ) 90 75 def set_referenced_cell( cell, port_name ) … … 140 125 =end 141 126 142 #== celltype ãã©ã°ã¤ã³ã®å 143 ±éã®è¦ªã¯ã©ã¹ 127 #== celltype プラグインの共通の親クラス 144 128 class HRP2KernelObjectPlugin < CelltypePlugin 145 129 # @@obj_hash = {} 146 130 147 131 #@celltype:: Celltype 148 #@option:: String : ãªãã·ã§ã³æåå132 #@option:: String :オプション文字列 149 133 def initialize( celltype, option ) 150 134 super 151 # ããããã®ã«ã¼ãã«ãªãã¸ã§ã¯ãã解æ対象ã»ã«ã¿ã¤ãã«è¿½å135 # それぞれのカーネルオブジェクトを解析対象セルタイプに追加 152 136 HRP2KernelObjectPlugin.set_celltype(celltype) 153 137 end 154 138 155 139 #=== 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 161 144 def print_cfg_cre(file, cell, val, tab) 162 145 raise "called virtual method print_cfg_cre in #{@celltype.get_name} plugin" … … 164 147 165 148 #=== 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: アクセスベクタ 171 153 def print_cfg_sac(file, val, acv) 172 154 raise "called virtual method print_cfg_sac in #{@celltype.get_name} plugin" … … 174 156 175 157 #=== HRP2KernelObjectPlugin#get_entry_ports_name_list 176 # ã«ã¼ãã«ãªãã¸ã§ã¯ãã®å種ã¢ã¯ã»ã¹ã®ç¨®å¥ã®åãå£åãåå¾158 # カーネルオブジェクトの各種アクセスの種別の受け口名を取得 177 159 def get_entry_ports_name_list() 178 160 raise "called virtual method get_entry_ports_name_list in #{@celltype.get_name} plugin" … … 186 168 puts "===== begin #{@celltype.get_name.to_s} plugin =====" 187 169 188 # 対象ã¨ãªããã¹ã¦ã®ã»ã«ã«ã¤ãã¦ãåãå£ã«çµåããã¦ãã189 # ã»ã«ã®æå±ãã¡ã¤ã³ã解æ170 # 対象となるすべてのセルについて、受け口に結合されている 171 # セルの所属ドメインを解析 190 172 if !HRP2KernelObjectPlugin.isChecked() 191 173 HRP2KernelObjectPlugin.check_referenced_cells() … … 194 176 end 195 177 196 # 追è¨ããããã« AppFile ã使ãï¼æåã³ã¼ãå¤æãããªãï¼178 # 追記するために AppFile を使う(文字コード変換されない) 197 179 file2 = AppFile.open( "#{$gen}/tecsgen.cfg" ) 198 180 file2.print "\n/* Generated by #{self.class.name} */\n\n" … … 201 183 if cell.is_generate? 202 184 puts "===== begin check my domain #{cell.get_name} =====" 203 # attrã®å¤ãããã·ã¥ã«å 204 ¥ãã 185 # attrの値をハッシュに入れる 205 186 val = {} 206 187 @celltype.get_attribute_list.each{ |a| … … 209 190 val[a.get_name] = [] 210 191 if j = cell.get_join_list.get_item(a.get_name) 211 # ã»ã«çææã«åæåããå ´å192 # セル生成時に初期化する場合 212 193 j.get_rhs.each { |elem| 213 194 val[a.get_name] << elem.to_s 214 195 } 215 196 elsif i = a.get_initializer 216 # ã»ã«ã¿ã¤ãã®åæåå¤ã使ãå ´å197 # セルタイプの初期化値を使う場合 217 198 i.each { |elem| 218 199 val[a.get_name] << elem.to_s … … 223 204 else 224 205 if j = cell.get_join_list.get_item(a.get_name) 225 # ã»ã«çææã«åæåããå ´å206 # セル生成時に初期化する場合 226 207 val[a.get_name] = j.get_rhs.to_s 227 208 elsif i = a.get_initializer 228 # ã»ã«ã¿ã¤ãã®åæåå¤ã使ãå ´å209 # セルタイプの初期化値を使う場合 229 210 val[a.get_name] = i.to_s 230 211 else … … 233 214 end 234 215 } 235 # generate.rb ãåèã«236 # $id$ ãç½®æ216 # generate.rbを参考に 217 # $id$を置換 237 218 if val[:id].nil? != true 238 219 puts val[:id] … … 240 221 val[:id] = @celltype.subst_name( val[:id], @celltype.get_name_array( cell ) ) 241 222 end 242 # $cbp$ ã®ä»£ãã223 # $cbp$の代わり 243 224 index = cell.get_id - @celltype.get_id_base 244 225 cell_CB_name = "#{@celltype.get_global_name}_CB_tab[#{index}]" … … 246 227 cell_domain_type = cell.get_region.get_domain_root.get_domain_type 247 228 248 # CRE_XXX/DEF_XXX ã®çæ229 # CRE_XXX/DEF_XXXの生成 249 230 if cell_domain_type.get_option.to_s != "OutOfDomain" 250 # ä¿è·ãã¡ã¤ã³ã«å±ããå ´å231 # 保護ドメインに属する場合 251 232 if !HRP2KernelObjectPlugin.include_region(cell_domain_root.get_name.to_s) 252 # ãã®ä¿è·ãã¡ã¤ã³ã®.cfgãçæããã¦ããªãå ´å233 # その保護ドメインの.cfgが生成されていない場合 253 234 HRP2KernelObjectPlugin.set_region_list(cell_domain_root.get_name.to_s) 254 235 puts "~~~~~ #{cell_domain_root.get_name.to_s} is registered!" … … 271 252 file3.close 272 253 else 273 # ç¡æå±ã®å ´å254 # 無所属の場合 274 255 puts "~~~~~ #{cell_domain_root.get_name.to_s} is OutOfDomain" 275 256 print_cfg_cre(file2, cell, val, "") … … 277 258 278 259 puts "===== end check my domain #{cell.get_name} =====" 279 # SAC_XXX ã®çæ260 # SAC_XXXの生成 280 261 if !val[:accessPattern].nil? 281 262 puts "===== begin check regions #{cell.get_name} =====" … … 284 265 285 266 #ep = [ :eTaskActivate, :eTaskControl, :eTaskManage, :eTaskRefer ] 286 # åã«ã¼ãã«ãªãã¸ã§ã¯ãã®åãå£åãåå¾267 #各カーネルオブジェクトの受け口名を取得 287 268 # ep = get_entry_ports_name_list() 288 269 i = 0 289 270 acv = [] 290 # ã¢ã¯ã»ã¹è¨±å¯ãã¯ã¿ã®çæ271 # アクセス許可ベクタの生成 291 272 val[:accessPattern].each { |acptnx| 292 # ã¢ã¯ã»ã¹è¨±å¯ãã¿ã¼ã³ã®çæ273 # アクセス許可パターンの生成 293 274 if acptnx != "OMIT" 294 275 acv << acptnx … … 309 290 p acv 310 291 311 # å種SACã®çæ292 #各種SACの生成 312 293 domainOption = cell_domain_type.get_option 313 294 # if cell.get_region.get_region_type == :DOMAIN 314 295 if domainOption != "OutOfDomain" 315 # ä¿è·ãã¡ã¤ã³ã«å±ããå ´å296 # 保護ドメインに属する場合 316 297 file3 = AppFile.open( "#{$gen}/tecsgen_#{cell.get_region.get_name.to_s}.cfg" ) 317 298 print_cfg_sac(file3, val, acv) 318 299 file3.close 319 300 else 320 # ç¡æå±ã®å ´å301 # 無所属の場合 321 302 print_cfg_sac(file2, val, acv) 322 303 end … … 331 312 end 332 313 333 # ã«ã¼ãã«ãªãã¸ã§ã¯ãã»ã«ã¿ã¤ãã®ç®¡ç334 # HRP2KernelObjectPlugin ã¯ã©ã¹ã«å¯¾ãã¦ã¡ã½ããå¼åºããè¡ããã¨ãæ³å®314 # カーネルオブジェクトセルタイプの管理 315 # HRP2KernelObjectPluginクラスに対してメソッド呼出しを行うことを想定 335 316 @@checked = false 336 317 @@celltype_list = [] … … 355 336 printf "===== check call port : " 356 337 # p p.get_name.to_s 357 next if j.nil? # æªçµåã®å ´å338 next if j.nil? # 未結合の場合 358 339 if @@celltype_list.include?(j.get_celltype) 359 340 # j.get_cell.set_referenced_region(cell.get_region) -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2ObjectPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2017 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 70 55 71 56 #=== 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 77 61 def print_cfg_cre(file, cell, val, tab) 78 62 if @@api.has_key?(@plugin_arg_str) == false … … 88 72 end 89 73 #=== 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: アクセスベクタ 95 78 def print_cfg_sac(file, val, acv) 96 79 if @@api.has_key?(@plugin_arg_str) == false … … 104 87 105 88 =begin 106 #tSemaphore ã®åãå£ãªã¹ã89 #tSemaphoreの受け口リスト 107 90 def get_entry_ports_name_list() 108 91 @@ep -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2Plugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2018 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 54 39 55 40 # 56 # åã¡ã½ããã®å½¹å²ãã¯ãDomainPlugin.rb ãåç 57 §ã®ã㨠58 # HRP2ã«ã¼ãã«ç¨ãã¡ã¤ã³ãã©ã°ã¤ã³ 41 # 各メソッドの役割りは、DomainPlugin.rb を参照のこと 42 # HRP2カーネル用ドメインプラグイン 59 43 class HRP2Plugin < DomainPlugin 60 44 … … 71 55 else 72 56 cdl_error( "HRPPlugin: '$1' is unacceptable domain kind, specify 'trusted' or 'nontrusted'", option ) 73 @option = "trusted" # ã¨ãããã trusted ãè¨å®ãã¦ãã57 @option = "trusted" # とりあえず trusted を設定しておく 74 58 end 75 59 end 76 60 77 61 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 の説明参照) 88 68 # return [] 89 69 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" … … 102 82 103 83 if HRP2KernelObjectPlugin.include_celltype?(join.get_cell.get_celltype) 104 # çµåå 105 ãã«ã¼ãã«ãªãã¸ã§ã¯ãã»ã« 84 # 結合先がカーネルオブジェクトセル 106 85 # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell) 107 # ä½ãããªãthrough86 # 何もしないthrough 108 87 puts "***** #{join.get_cell.get_celltype.get_name} is kernel object" 109 88 return [] … … 113 92 # elsif next_domain.nil? 114 93 elsif next_domain.get_option.to_s == "OutOfDomain" 115 # # çµåå 116 ãç¡æå± 117 # # ä½ãããªãthrough 94 # # 結合先が無所属 95 # # 何もしないthrough 118 96 # # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell) 119 97 puts "***** nil" … … 122 100 #elsif @start_region.get_param != :KERNEL_DOMAIN && @end_region.get_param == :KERNEL_DOMAIN 123 101 elsif current_domain.get_option.to_s != "trusted" && next_domain.get_option.to_s == "trusted" 124 # ã¦ã¼ã¶ãã¡ã¤ã³ããã«ã¼ãã«ãã¡ã¤ã³ã¸ã®çµå102 # ユーザドメインからカーネルドメインへの結合 125 103 # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell) 126 104 puts "***** svc" 127 105 return [ :HRP2SVCPlugin, "" ] 128 106 elsif current_domain != next_domain 129 # ã¦ã¼ã¶ãã¡ã¤ã³ããå¥ã®ã¦ã¼ã¶ãã¡ã¤ã³ã¸ã®çµå107 # ユーザドメインから別のユーザドメインへの結合 130 108 # @plugin_body = HRP2RPCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell) 131 109 puts "***** rpc" 132 110 return [ :HRP2RPCPlugin, "channelCelltype=tMessagebufferChannel,noClientSemaphore=true" ] 133 111 else 134 # ãã®ä»135 # ä½ãããªãthrough112 # その他 113 # 何もしないthrough 136 114 # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell) 137 115 print "warning: at HRP2 Join Check" … … 142 120 end 143 121 144 #== ãã¡ã¤ã³ç¨®å¥ãè¿ã122 #== ドメイン種別を返す 145 123 #return::Symbol :kernel, :user, :OutOfDomain 146 124 def get_kind -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2PostHook.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2017 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 64 49 65 50 def generate 66 # ã«ã¼ãã«ãªãã¸ã§ã¯ãã®ã»ã«ã¿ã¤ãã¯ã¡ã¢ãªä¿è·ããªã51 # カーネルオブジェクトのセルタイプはメモリ保護しない 67 52 #=begin 68 # TODO: ãã¹ãã®ããã«ç¡å¹å53 # TODO: テストのために無効化 69 54 if HRP2KernelObjectPlugin.include_celltype?( @celltype ) 70 55 puts "nothing is generated for kernel object component" … … 75 60 rlist = @celltype.get_region_list 76 61 if @celltype.is_singleton? 77 # singleton ã®å ´å62 # singletonの場合 78 63 puts "<singleton>" 79 64 … … 83 68 file = AppFile.open( "#{$gen}/tecsgen_#{rlist[0].get_param.to_s}.cfg" ) 84 69 end 85 # ã»ã«ç®¡çãããã¯ã¨ã¹ã±ã«ãã³ã®ã¡ã¢ãªä¿è·70 # セル管理ブロックとスケルトンのメモリ保護 86 71 file.print "ATT_MOD(\"#{@celltype.get_global_name}_tecsgen.o\");\n" 87 72 if !@celltype.is_all_entry_inline? 88 # ã»ã«ã¿ã¤ãã³ã¼ãã®ã¡ã¢ãªä¿è·73 # セルタイプコードのメモリ保護 89 74 file.print "ATT_MOD(\"#{@celltype.get_global_name}.o\");\n" 90 75 end … … 93 78 94 79 else 95 # singleton ã§ãªãå ´å80 # singletonでない場合 96 81 puts "<non-singleton>" 97 82 98 # ã¹ã±ã«ãã³ã¨ã»ã«ã¿ã¤ãã³ã¼ãã®ä¿è·83 # スケルトンとセルタイプコードの保護 99 84 if (rlist.length == 1) && 100 85 (@celltype.get_n_cell_gen == @celltype.get_n_cell_gen_r( rlist[0] )) 101 # æå±ããä¿è·ãã¡ã¤ã³ã1ã¤ã®å ´å86 # 所属する保護ドメインが1つの場合 102 87 puts "<private celltype>" 103 88 file = AppFile.open( "#{$gen}/tecsgen_#{rlist[0].get_param.to_s}.cfg" ) 104 89 else 105 # ç¡æå± or æå±ããä¿è·ãã¡ã¤ã³ãè¤æ°ã®å ´å90 # 無所属 or 所属する保護ドメインが複数の場合 106 91 puts "<shared celltype>" 107 92 file = AppFile.open( "#{$gen}/tecsgen.cfg" ) 108 93 end 109 94 110 # ã¹ã±ã«ãã³ã®ã¡ã¢ãªä¿è·95 # スケルトンのメモリ保護 111 96 file.print "ATT_MOD(\"#{@celltype.get_global_name}_tecsgen.o\");\n" 112 97 if !@celltype.is_all_entry_inline? 113 # ã»ã«ã¿ã¤ãã³ã¼ãã®ã¡ã¢ãªä¿è·98 # セルタイプコードのメモリ保護 114 99 file.print "ATT_MOD(\"#{@celltype.get_global_name}.o\");\n" 115 100 end 116 101 file.close 117 102 118 # ã»ã«ç®¡çãããã¯ã®ä¿è·103 # セル管理ブロックの保護 119 104 rlist.each { |reg| 120 105 file = AppFile.open( "#{$gen}/tecsgen_#{reg.get_param.to_s}.cfg" ) -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2PriorityDataqueuePlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2012 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 58 43 @@ep = [:eSendPriorityDataqueue, :eReceivePriorityDataqueue, :eManagePriorityDataqueue, :eReferPriorityDataqueue ] 59 44 #=== 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 65 49 def print_cfg_cre(file, cell, val, tab) 66 50 file.print tab … … 68 52 end 69 53 #=== 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: アクセスベクタ 75 58 def print_cfg_sac(file, val, acv) 76 59 file.puts "SAC_PDQ(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});" 77 60 end 78 #tPriorityDataqueue ã®åãå£ãªã¹ã61 #tPriorityDataqueueの受け口リスト 79 62 def get_entry_ports_name_list() 80 63 @@ep -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2RPCPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 57 42 # require_tecsgen_lib "GenParamCopy.rb" 58 43 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 を指定する必要がある 68 50 # tecsgen toppers_jsp.cdl sChannel.cdl your_description.cdl 69 51 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 # 有符号、無符号でサイズが同じ 76 55 77 56 # 78 # RPCãç¨ãããã¡ã¤ã³ééä¿¡ã® 79 # throughãã©ã°ã¤ã³ 80 # HRP2ãã¡ã¤ã³ãã©ã°ã¤ã³ã«ãã£ã¦æ¿å 81 ¥ããã 57 # RPCを用いたドメイン間通信の 58 # throughプラグイン 59 # HRP2ドメインプラグインによって挿入される 82 60 # 83 61 class HRP2RPCPlugin < ThroughPlugin … … 86 64 # include GenParamCopy 87 65 88 # RPCPlugin å°ç¨ã®ãªãã·ã§ã³ 89 TransparentRPCPluginArgProc = RPCPluginArgProc.dup # è¤è£½ãä½ã£ã¦å 90 ãå¤æ´ããªãããã«ãã 66 # RPCPlugin 専用のオプション 67 TransparentRPCPluginArgProc = RPCPluginArgProc.dup # 複製を作って元を変更しないようにする 91 68 TransparentRPCPluginArgProc[ "noClientSemaphore" ] = Proc.new { |obj,rhs| obj.set_noClientSemaphore rhs } 92 69 TransparentRPCPluginArgProc[ "semaphoreCelltype" ] = Proc.new { |obj,rhs| obj.set_semaphoreCelltype rhs } 93 70 94 #=== RPCPlugin ã® initialize 95 # 説æ㯠ThroughPlugin (plugin.rb) ãåç 96 § 71 #=== RPCPlugin の initialize 72 # 説明は ThroughPlugin (plugin.rb) を参照 97 73 def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell ) 98 74 super … … 101 77 initialize_transparent_marshaler cell_name 102 78 103 # ãªãã·ã§ã³ï¼GenTransparentMarshaler åç 104 § 79 # オプション:GenTransparentMarshaler 参照 105 80 @plugin_arg_check_proc_tab = TransparentRPCPluginArgProc 106 81 parse_plugin_arg … … 112 87 if @PPAllocatorSize == nil then 113 88 cdl_error( "PPAllocatorSize must be speicified for oneway [in] array" ) 114 # @PPAllocatorSize = 0 # 仮㫠0 ã¨ãã¦ãã (cdl ã®æ§æã¨ã©ã¼ãé¿ãããã)89 # @PPAllocatorSize = 0 # 仮に 0 としておく (cdl の構文エラーを避けるため) 115 90 end 116 91 end … … 119 94 # if func_decl.get_type.is_oneway? then 120 95 # 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 文字列の配列 123 97 # 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 長さ未指定文字列 125 99 # end 126 100 # end … … 128 102 end 129 103 130 #=== plugin ã®å®£è¨ã³ã¼ã (celltype ã®å®ç¾©) çæ104 #=== plugin の宣言コード (celltype の定義) 生成 131 105 def gen_plugin_decl_code( file ) 132 106 133 107 ct_name = "#{@ct_name}_#{@channelCelltype}" 134 108 135 # ãã®ã»ã«ã¿ã¤ãï¼åãã·ã°ããã£ï¼ã¯æ¢ã«çæããã¦ãããï¼109 # このセルタイプ(同じシグニチャ)は既に生成されているか? 136 110 if @@generated_celltype[ ct_name ] == nil then 137 111 @@generated_celltype[ ct_name ] = [ self ] … … 166 140 167 141 f = CFile.open( @rpc_channel_celltype_file_name, "w" ) 168 # åãå 169 容ãäºåº¦æ¸ãå¯è½æ§ãã (AppFile ã¯ä¸å¯) 142 # 同じ内容を二度書く可能性あり (AppFile は不可) 170 143 171 144 f.print <<EOT … … 223 196 }; 224 197 EOT 225 # mikan stackSize option & ææ° tecs_package 対å¿198 # mikan stackSize option & 最新 tecs_package 対応 226 199 227 200 f.close 228 201 end 229 202 230 #=== through cell ã³ã¼ããçæ203 #=== through cell コードを生成 231 204 # 232 205 # … … 235 208 gen_plugin_decl_code( file ) 236 209 237 # ã»ã«ãæ¢ã210 # セルを探す 238 211 # path =["::",@next_cell.get_name] 239 212 # cell = Namespace.find( path ) … … 258 231 indent_str = " " * nest 259 232 260 # #473 ã解決ãããå ´åãcomposite ãªã¬ã¼ã¢ãã±ã¼ã¿ã«å¤æ´ãã¹ã261 # ã¢ãã±ã¼ã¿ã®æå®ããããï¼233 # #473 が解決された場合、composite リレーアロケータに変更すべき 234 # アロケータの指定があるか? 262 235 if cell.get_allocator_list.length > 0 then 263 236 … … 269 242 270 243 file.print delim 271 delim = ",\n#{indent_str} " # æçµè¡ã«ã¯åºããªã 272 273 if subsc then # é 274 åæ·»æ° 244 delim = ",\n#{indent_str} " # 最終行には出さない 245 246 if subsc then # 配列添数 275 247 subsc_str = '[#{subsc}]' 276 248 else … … 278 250 end 279 251 280 eport = "eThroughEntry" #RPC ã®åãå£åã«å¤æ´252 eport = "eThroughEntry" #RPCの受け口名に変更 281 253 file.print "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc}" 282 254 end … … 321 293 322 294 323 #=== ãã©ã°ã¤ã³å¼æ° noClientSemaphore ã®ãã§ãã¯295 #=== プラグイン引数 noClientSemaphore のチェック 324 296 def set_noClientSemaphore rhs 325 297 rhs = rhs.to_sym … … 333 305 end 334 306 335 #=== ãã©ã°ã¤ã³å¼æ° semaphoreCelltype ã®ãã§ãã¯307 #=== プラグイン引数 semaphoreCelltype のチェック 336 308 def set_semaphoreCelltype rhs 337 309 @semaphoreCelltype = rhs.to_sym … … 343 315 end 344 316 345 #=== NamespacePath ãå¾ã346 # çæããã»ã«ã® namespace path ãçæãã317 #=== NamespacePath を得る 318 # 生成するセルの namespace path を生成する 347 319 def get_cell_namespace_path 348 320 # nsp = @region.get_namespace.get_namespace_path -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2SVCPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ 53 38 #++ 54 39 55 # mikan through plugin: namespace ãèæ 56 ®ããã¦ããªã 57 # ãããå©ç¨ããå ´åã以ä¸ã®ããã« toppers_jsp.cdl sChannel.cdl ãæå®ããå¿ 58 è¦ããã 40 # mikan through plugin: namespace が考慮されていない 41 # これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定する必要がある 59 42 # tecsgen toppers_jsp.cdl sChannel.cdl your_description.cdl 60 43 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 # 有符号、無符号でサイズが同じ 67 47 68 48 class SVCManage 69 # TODO: ããã©ã«ãã®æ¡å¼µãµã¼ãã¹ã³ã¼ã«åãäºç´ãã¦ãã70 # ããã©ã«ãã®æ¡å¼µãµã¼ãã¹ã³ã¼ã«ï¼syslogãªã©ï¼ãã³ã³ãã¼ãã³ãåããã¾ã§49 # TODO: デフォルトの拡張サービスコール分を予約しておく 50 # デフォルトの拡張サービスコール(syslogなど)もコンポーネント化するまで 71 51 @@id = 20 72 52 @@func_ids = {} … … 94 74 95 75 # 96 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«ãç¨ãããã¡ã¤ã³ééä¿¡ã® 97 # throughãã©ã°ã¤ã³ 98 # HRP2ãã¡ã¤ã³ãã©ã°ã¤ã³ã«ãã£ã¦æ¿å 99 ¥ããã 76 # 拡張サービスコールを用いたドメイン間通信の 77 # throughプラグイン 78 # HRP2ドメインプラグインによって挿入される 100 79 # 101 80 class HRP2SVCPlugin < ThroughPlugin 102 81 103 #=== RPCPlugin ã® initialize 104 # 説æ㯠ThroughPlugin (plugin.rb) ãåç 105 § 82 #=== RPCPlugin の initialize 83 # 説明は ThroughPlugin (plugin.rb) を参照 106 84 @@generated_celltype_header = {} 107 85 … … 117 95 end 118 96 119 #=== NamespacePath ãå¾ã120 # çæããã»ã«ã® namespace path ãçæãã97 #=== NamespacePath を得る 98 # 生成するセルの namespace path を生成する 121 99 def get_cell_namespace_path 122 100 # nsp = @region.get_namespace.get_namespace_path … … 127 105 def gen_plugin_decl_code( file ) 128 106 129 # ãã®ã»ã«ã¿ã¤ãï¼åãã·ã°ããã£ï¼ã¯æ¢ã«çæããã¦ãããï¼107 # このセルタイプ(同じシグニチャ)は既に生成されているか? 130 108 if !HRP2KernelObjectPlugin.include_celltype?(@next_cell.get_celltype) 131 109 if @@generated_celltype[ @ct_name_body ] == nil then … … 145 123 end 146 124 147 # ãã®ã»ã«ã¿ã¤ãï¼åãã·ã°ããã£ï¼ã¯æ¢ã«çæããã¦ãããï¼125 # このセルタイプ(同じシグニチャ)は既に生成されているか? 148 126 if @@generated_celltype[ @ct_name ] == nil then 149 127 @@generated_celltype[ @ct_name ] = [ self ] … … 156 134 EOT 157 135 else 158 # TODO inline ã«ããæ¹ãå¹çããããï¼tecsgenã®çæããããããã¡ã¤ã«ã®159 # èªè¾¼é ã®ããã«ã¨ã©ã¼ã¨ãªã136 # TODO inlineにした方が効率がよいが,tecsgenの生成したヘッダファイルの 137 # 読込順のためにエラーとなる 160 138 file2.print <<EOT 161 139 celltype #{@ct_name} { … … 174 152 175 153 =begin 176 # TODO: send. receive 対å¿154 # TODO: send. receive 対応 177 155 send_receive = [] 178 156 if @signature != nil then … … 206 184 end 207 185 208 #=== through cell ã³ã¼ããçæ186 #=== through cell コードを生成 209 187 # 210 188 # … … 215 193 216 194 if !HRP2KernelObjectPlugin.include_celltype?(@next_cell.get_celltype) 217 # ã»ã«ãæ¢ã195 # セルを探す 218 196 # path =["::",@next_cell.get_name] # mikan namespace 219 197 # cell = Namespace.find( path ) 220 198 # cell = Namespace.find( @next_cell.get_namespace_path ) 221 199 222 ##### ã¯ã©ã¤ã¢ã³ãå´ã®ã»ã«ã®çæ#####200 ##### クライアント側のセルの生成 ##### 223 201 # file.print "[domain(HRP2, \"trusted\")]" 224 202 nest = @start_region.gen_region_str_pre file 225 203 nest_str = " " * nest 226 204 227 # ã¯ã©ã¤ã¢ã³ãå´ãã£ã³ãã«ã®çæ228 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«å¼åºã205 # クライアント側チャンネルの生成 206 # 拡張サービスコール呼出し 229 207 file.print <<EOT 230 208 #{nest_str} // Client Side Channel … … 237 215 file.print "\n\n" 238 216 239 ##### ãµã¼ãã¼å´ã®ã»ã«ã®çæ#####217 ##### サーバー側のセルの生成 ##### 240 218 nest = @end_region.gen_region_str_pre file 241 219 nest_str = " " * nest … … 246 224 end 247 225 248 # ãµã¼ãã¼å´ãã£ã³ãã«ã®çæ249 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«æ¬ä½226 # サーバー側チャンネルの生成 227 # 拡張サービスコール本体 250 228 file.print <<EOT 251 229 … … 266 244 else 267 245 268 ##### ã¯ã©ã¤ã¢ã³ãå´ã®ã»ã«ã®çæ#####246 ##### クライアント側のセルの生成 ##### 269 247 nest = @start_region.gen_region_str_pre file 270 248 nest_str = " " * nest … … 275 253 end 276 254 277 # ã¯ã©ã¤ã¢ã³ãå´ãã£ã³ãã«ã®çæ278 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«å¼åºã255 # クライアント側チャンネルの生成 256 # 拡張サービスコール呼出し 279 257 file.print <<EOT 280 258 #{nest_str} // Client Side Channel … … 291 269 end 292 270 293 #=== åãå£é¢æ°ã®æ¬ä½(Cè¨èª)ãçæãã 294 # é常ã§ããã°ãã¸ã§ãã¬ã¼ã¿ã¯åãå£é¢æ°ã®ãã³ãã¬ã¼ããçæãã 295 # ãã©ã°ã¤ã³ã®å ´åãå¤æ´ããå¿ 296 è¦ã®ãªãã»ã«ã¿ã¤ãã³ã¼ããçæãã 297 #file:: FILE åºåå 298 ãã¡ã¤ã« 271 #=== 受け口関数の本体(C言語)を生成する 272 # 通常であれば、ジェネレータは受け口関数のテンプレートを生成する 273 # プラグインの場合、変更する必要のないセルタイプコードを生成する 274 #file:: FILE 出力先ファイル 299 275 #b_singleton:: bool true if singleton 300 276 #ct_name:: Symbol … … 309 285 310 286 if !HRP2KernelObjectPlugin.include_celltype?(@next_cell.get_celltype) 311 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«å¼åºã287 # 拡張サービスコール呼出し 312 288 if ! func_type.get_type.kind_of?( VoidType ) then 313 289 file.print( " #{func_type.get_type_str} retval;\n" ) … … 321 297 p_cellcb = #{global_ct_name}_GET_CELLCB(idx); 322 298 }else{ 323 /* ã¨ã©ã¼å¦çã³ã¼ããããã«è¨è¿°*/299 /* エラー処理コードをここに記述 */ 324 300 } 325 301 … … 372 348 end 373 349 374 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«æ¬ä½350 # 拡張サービスコール本体 375 351 if new_func 376 352 file2 = AppFile.open( "#{$gen}/#{@ct_name_body}.c" ) … … 381 357 # file2.print <<EOT 382 358 # /* 383 # * ãã®ãã¡ã¤ã«ã¯ tecsgen ã«ããèªåçæããã¾ãã384 # * ãã®ãã¡ã¤ã«ãç·¨éãã¦ä½¿ç¨ãããã¨ã¯ãæå³ããã¦ãã¾ãã359 # * このファイルは tecsgen により自動生成されました 360 # * このファイルを編集して使用することは、意図されていません 385 361 # */ 386 362 # /* #[<PREAMBLE>]# 387 # * #[<...>]# ãã #[</...>]# ã§å²ã¾ããã³ã¡ã³ãã¯ç·¨éããªãã§ãã ãã388 # * tecsmerge ã«ãããã¼ã¸ã«ä½¿ç¨ããã¾ã363 # * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください 364 # * tecsmerge によるマージに使用されます 389 365 # * 390 366 # * #[</PREAMBLE>]# */ 391 367 # 392 # /* ãããã¿ã¤ã宣è¨ãå¤æ°ã®å®ç¾©ãããã«æ¸ãã¾ã#_PAC_# */368 # /* プロトタイプ宣言や変数の定義をここに書きます #_PAC_# */ 393 369 # #include "#{@ct_name_body}_tecsgen.h" 394 370 # … … 418 394 p_cellcb = #{@ct_name_body}_GET_CELLCB(idx); 419 395 }else{ 420 /* ã¨ã©ã¼å¦çã³ã¼ããããã«è¨è¿°*/396 /* エラー処理コードをここに記述 */ 421 397 } 422 398 #else … … 474 450 file2 = AppFile.open( "#{$gen}/tecsgen.cfg" ) 475 451 file2.print "\n/* Generated by HRP2SVCPlugin */\n\n" 476 # TODO: ã¹ã¿ãã¯ãµã¤ãºã¯é©å½452 # TODO: スタックサイズは適当 477 453 file2.print <<EOT 478 454 KERNEL_DOMAIN{ … … 490 466 end 491 467 else 492 # ã«ã¼ãã«ãã¡ã¤ã³ã®ã»ã«ã¯ç¹å¥ãªãã¨ã¯ä½ãããï¼æ®éã«å¼ã³åºã468 # カーネルドメインのセルは特別なことは何もせず,普通に呼び出す 493 469 super 494 470 end -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2SemaphorePlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2011 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 59 44 @@ep = [:eSignalSemaphore, :eWaitSemaphore, :eManageSemaphore, :eReferSemaphore ] 60 45 #=== 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 66 50 def print_cfg_cre(file, cell, val, tab) 67 51 file.print tab … … 69 53 end 70 54 #=== 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: アクセスベクタ 76 59 def print_cfg_sac(file, val, acv) 77 60 file.puts "SAC_SEM(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});" 78 61 end 79 #tSemaphore ã®åãå£ãªã¹ã62 #tSemaphoreの受け口リスト 80 63 def get_entry_ports_name_list() 81 64 @@ep -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2TaskPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 55 40 #require "HRP2KernelObjectPlugin" 56 41 require_tecsgen_lib "HRP2KernelObjectPlugin.rb" 57 #== celltype ãã©ã°ã¤ã³ã®å 58 ±éã®è¦ªã¯ã©ã¹ 42 #== celltype プラグインの共通の親クラス 59 43 class HRP2TaskPlugin < HRP2KernelObjectPlugin 60 44 # @@ep = [:eActivateTask, :eControlTask, :eManageTask, :eReferTask ] 61 # ATT_MOD ãçææ¸ã¿ãã©ãã45 # ATT_MODを生成済みかどうか 62 46 @@generate_memory_module = false 63 47 … … 71 55 #val[:id] = val[:id].gsub( /(^|[^\$])\$id\$/, "\\1#{@celltype.get_name.to_s}_#{cell.get_global_name.to_s}" ) 72 56 #val[:id] = @celltype.subst_name( val[:id], @celltype.get_name_array( cell ) ) 73 # $cbp$ ã®ä»£ãã57 # $cbp$の代わり 74 58 index = cell.get_id - @celltype.get_id_base 75 59 #cell_CB_name = "#{@celltype.get_global_name}_pCB_tab[#{index}]" 76 60 cell_CB_name = "#{index}" 77 # CRE_XXX/DEF_XXX ã®çæ61 # CRE_XXX/DEF_XXXの生成 78 62 dbgPrint "assign task plugin\n" 79 63 domainOption = cell.get_region.get_domain_root.get_domain_type.get_option … … 81 65 # cell.show_tree 1 82 66 if domainOption != "OutOfDomain" 83 # ä¿è·ãã¡ã¤ã³ã«å±ããå ´å67 # 保護ドメインに属する場合 84 68 if domainOption == "trusted" 85 # ã«ã¼ãã«ãã¡ã¤ã³69 # カーネルドメイン 86 70 if val[:userStackSize] != "OMIT" 87 71 raise "system task cannot have user stack." … … 92 76 EOT 93 77 else 94 # ã¦ã¼ã¶ãã¡ã¤ã³78 # ユーザドメイン 95 79 if val[:userStackSize] == "OMIT" 96 80 raise "user task must have user stack." … … 109 93 end 110 94 else 111 # ç¡æå±ã®å ´å95 # 無所属の場合 112 96 raise "task #{val[:id]} must belong to a domain." 113 97 end 114 98 115 # ä¾å¤ç¨ã®ãçæ99 # 例外用のを生成 116 100 file.print <<EOT 117 101 #{tab}DEF_TEX(#{val[:id]}, { #{val[:exceptionAttribute]}, tTask_start_exception }); … … 124 108 125 109 =begin 126 #tTask ã®åãå£ãªã¹ã110 #tTaskの受け口リスト 127 111 def get_entry_ports_name_list() 128 112 @@ep … … 130 114 =end 131 115 # 132 # ATT_MOD ã®çæ133 # gen_factory å®è¡æã«ã¯ï¼ãã¹ã¦ã®ã»ã«ã¿ã¤ããã©ã°ã¤ã³ãçææ¸ã¿ã®ã¯ããªã®ã§ï¼134 # ã«ã¼ãã«APIã³ã¼ãã®ã¡ã¢ãªä¿è·ãçç¥ã§ããï¼116 # ATT_MODの生成 117 # gen_factory実行時には,すべてのセルタイププラグインを生成済みのはずなので, 118 # カーネルAPIコードのメモリ保護を省略できる. 135 119 # 136 120 def gen_factory file … … 140 124 141 125 Cell.get_cell_list2.each { |cell| 142 # ãã¹ã¦ã®ã»ã«ãèµ°æ»ãã¦ã»ã«ã¿ã¤ãããã§ãã¯126 # すべてのセルを走査してセルタイプをチェック 143 127 ct = cell.get_celltype 144 128 if ct.class == Celltype && check_celltype_list.include?( ct ) == false 145 # ãã§ãã¯æ¸ã¿ã»ã«ã¿ã¤ãã«ç»é²129 # チェック済みセルタイプに登録 146 130 check_celltype_list << ct 147 131 148 # æªãã§ãã¯ã®ã»ã«ã¿ã¤ãã ã£ãå ´å132 # 未チェックのセルタイプだった場合 149 133 # puts "check for ATT_MOD : #{ct.classget_global_name}" 150 134 puts "check for ATT_MOD : #{ct.get_global_name}" 151 135 152 # ã«ã¼ãã«APIã®ã³ã¼ãï¼ãã¼ã¿ã¯ã¡ã¢ãªä¿è·ããªã136 # カーネルAPIのコード,データはメモリ保護しない 153 137 next if HRP2KernelObjectPlugin.include_celltype?( ct ) 154 138 155 # å¿ 156 è¦ã®ãªãã»ã«ã¿ã¤ãã®ã³ã¼ãï¼ãã¼ã¿ã¯ã¡ã¢ãªä¿è·ããªã 139 # 必要のないセルタイプのコード,データはメモリ保護しない 157 140 next if ! ct.need_generate? 158 141 159 # HRP2 ã®ãã¡ã¤ã³ãªã¼ã¸ã§ã³ãåå¾142 # HRP2のドメインリージョンを取得 160 143 regions = ct.get_domain_roots 161 144 regions_hrp2 = regions[ :HRP2 ] … … 166 149 puts "" 167 150 168 # ã»ã«ç®¡çãããã¯ã¨ã¹ã±ã«ãã³ã®ã¡ã¢ãªä¿è·169 # gen_celltype_names_domain ç¸å½ã®å¦ç151 # セル管理ブロックとスケルトンのメモリ保護 152 # gen_celltype_names_domain 相当の処理 170 153 if regions_hrp2.include?( Region.get_root ) == false && regions_hrp2.length > 1 171 # ãã¡ã¤ã³ãè¤æ°ã§ï¼OutOfDomainã«ã»ã«ãåå¨ããªãã»ã«ã¿ã¤ãã®å ´å 172 # å 173 ±æã®ã»ã«ç®¡çãããã¯ã¨ã¹ã±ã«ãã³ã³ã¼ããç»é²ãã 154 # ドメインが複数で,OutOfDomainにセルが存在しないセルタイプの場合 155 # 共有のセル管理ブロックとスケルトンコードを登録する 174 156 file = AppFile.open( "#{$gen}/tecsgen.cfg" ) 175 157 file.print "ATT_MOD(\"#{ct.get_global_name}_tecsgen.o\");\n" … … 188 170 } 189 171 190 # ã»ã«ã¿ã¤ãã³ã¼ãããªãå ´åã¯ã¹ããã172 # セルタイプコードがない場合はスキップ 191 173 next if ct.is_all_entry_inline? && ! ct.is_active? 192 174 193 # ã»ã«ã¿ã¤ãã³ã¼ãã®ã¡ã¢ãªä¿è·194 # gen_celltype_names_domain2 ç¸å½ã®å¦ç175 # セルタイプコードのメモリ保護 176 # gen_celltype_names_domain2 相当の処理 195 177 if regions_hrp2.include?( Region.get_root ) == true || regions_hrp2.length > 1 196 # OutOfDomainã«ã»ã«ãåå¨ããã»ã«ã¿ã¤ãã®å ´å 197 # ã¾ãã¯ï¼è¤æ°ã®ãã¡ã¤ã³ã«ã»ã«ãåå¨ããã»ã«ã¿ã¤ãã®å ´å 198 # ã»ã«ã¿ã¤ãã³ã¼ããå 199 ±æããããã«ç»é²ãã 178 # OutOfDomainにセルが存在するセルタイプの場合 179 # または,複数のドメインにセルが存在するセルタイプの場合 180 # セルタイプコードを共有するように登録する 200 181 file = AppFile.open( "#{$gen}/tecsgen.cfg" ) 201 182 else 202 # OutOfDomain ã§ãªãåä¸ã®ãã¡ã¤ã³ã«ã»ã«ãåå¨ããã»ã«ã¿ã¤ãã®å ´å203 # ã»ã«ã¿ã¤ãã³ã¼ããå°æããããã«ç»é²ãã183 # OutOfDomainでない単一のドメインにセルが存在するセルタイプの場合 184 # セルタイプコードを専有するように登録する 204 185 file = AppFile.open( "#{$gen}/tecsgen_#{regions_hrp2[0].get_namespace_path.get_global_name}.cfg" ) 205 186 end … … 208 189 file.close 209 190 else 210 # ä½ãããªã191 # 何もしない 211 192 end 212 193 } … … 214 195 @@generate_memory_module = true 215 196 else 216 # ä½ãããªã197 # 何もしない 217 198 end 218 199 end -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRPHandlerPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2018 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 #++ … … 55 40 56 41 57 #== celltype ãã©ã°ã¤ã³ã®å 58 ±éã®è¦ªã¯ã©ã¹ 42 #== celltype プラグインの共通の親クラス 59 43 class HRPHandlerPlugin < HRPKernelObjectPlugin 60 44 … … 78 62 val[:id] = val[:id].gsub( /(^|[^\$])\$id\$/, "\\1#{@celltype.get_name.to_s}_#{cell.get_name.to_s}" ) 79 63 end 80 # $cbp$ ã®ä»£ãã64 # $cbp$の代わり 81 65 index = cell.get_id - @celltype.get_id_base 82 66 #cell_CB_name = "#{@celltype.get_global_name}_CB_tab[#{index}]" 83 67 name_array = cell.get_celltype.get_name_array cell 84 68 cell_CBP = name_array[8] 85 # CRE_XXX ã®çæ69 # CRE_XXXの生成 86 70 domainOption = cell.get_region.get_domain_root.get_domain_type.get_option 87 71 if (domainOption == "OutOfDomain") || (domainOption != "kernel") 88 # ç¡æå± or ã¦ã¼ã¶ãã¡ã¤ã³ã«å±ããå ´å72 # 無所属 or ユーザドメインに属する場合 89 73 raise "#{@plugin_arg_str.to_s.downcase} handler #{val[:id]} must belong to kernel domain." 90 74 elsif @plugin_arg_str == "CONFIG_INT" … … 125 109 # nothing to do 126 110 elsif @plugin_arg_str == "ISR" 127 # kernel.cdl ã® tISR 㧠accessPattern1 ï½ accessPattern4 ãå®ç¾©ããã¦ããã¨ãã®åæ®ã128 # accessPattern1 ãå®ç¾©ããã¦ããªãå ´åããããã¸ã¯æ¥ãªãï¼å¾©æ´»ããã¨ãã«åãã¦æ®ãã¦ããï¼111 # kernel.cdl の tISR で accessPattern1 ~ accessPattern4 が定義されているときの名残。 112 # accessPattern1 が定義されていない場合、こここへは来ない.復活したときに備えて残しておく. 129 113 # file.puts "SAC_#{@plugin_arg_str}(#{val[:id]}, { #{acv[:accessPattern1]}, #{acv[:accessPattern2]}, #{acv[:accessPattern3]}, #{acv[:accessPattern4]} });" 130 114 puts "*** Unsupported *** SAC_#{@plugin_arg_str}(#{val[:id]}, { #{acv[:accessPattern1]}, #{acv[:accessPattern2]}, #{acv[:accessPattern3]}, #{acv[:accessPattern4]} });\n" -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRPKernelObjectManager.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 5 5 # Copyright (C) 2015-2018 by TOPPERS Project 6 6 #-- 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 # 免責すること. 43 29 # 44 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 45 ã 46 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 47 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 48 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 49 # ã®è²¬ä»»ãè² ããªãï¼ 30 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 31 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 32 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 33 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 34 # の責任を負わない. 50 35 # 51 36 # $Id$ … … 77 62 def initialize() 78 63 # 79 # æ¬ã¯ã©ã¹ã¯ã¤ã³ã¹ã¿ã³ã¹ãæããªãä»®æ³çãªã¯ã©ã¹ã§ãã64 # 本クラスはインスタンスを持たない仮想的なクラスである 80 65 # 81 66 raise "class #{self.class.name} shall not have instances" -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRPKernelObjectPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2018 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # … … 54 39 #++ 55 40 56 #== celltype ãã©ã°ã¤ã³ã®å 57 ±éã®è¦ªã¯ã©ã¹ 41 #== celltype プラグインの共通の親クラス 58 42 class HRPKernelObjectPlugin < CelltypePlugin 59 43 # @@obj_hash = {} 60 44 61 45 #@celltype:: Celltype 62 #@option:: String : ãªãã·ã§ã³æåå46 #@option:: String :オプション文字列 63 47 def initialize( celltype, option ) 64 48 super 65 49 # 66 # ããããã®ã«ã¼ãã«ãªãã¸ã§ã¯ãã解æ対象ã»ã«ã¿ã¤ãã«è¿½å67 # ç®çï¼68 # - ã«ã¼ãã«ãªãã¸ã§ã¯ãã®ã»ã«ãã¡ã¢ãªä¿è·å¯¾è±¡å¤ã¨ãã69 # - ã«ã¼ãã«ãªãã¸ã§ã¯ãæ¬ä½ã®ç®¡çã¯TECSã§ãªãOSã§å®æ½ãããã70 # - ã«ã¼ãã«ãªãã¸ã§ã¯ãã®ã»ã«ã¸ã®ã¢ã¯ã»ã¹ãç´æ¥é¢æ°å¼åºã71 # ãã¨ãã72 # - ã·ã¹ãã ãµã¼ãã¹å¼åºãã¯OSãæä¾ãããã50 # それぞれのカーネルオブジェクトを解析対象セルタイプに追加 51 # 目的: 52 # - カーネルオブジェクトのセルをメモリ保護対象外とする 53 # - カーネルオブジェクト本体の管理はTECSでなくOSで実施するため 54 # - カーネルオブジェクトのセルへのアクセスを直接関数呼出し 55 # とする 56 # - システムサービス呼出しはOSが提供するため 73 57 HRPKernelObjectPlugin.set_celltype(celltype) 74 58 end 75 59 76 60 #=== 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 82 65 def print_cfg_cre(file, cell, val, tab) 83 66 raise "called virtual method print_cfg_cre in #{@celltype.get_name} plugin" … … 85 68 86 69 #=== 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: アクセスベクタ 92 74 def print_cfg_sac(file, val, acv) 93 75 raise "called virtual method print_cfg_sac in #{@celltype.get_name} plugin" … … 95 77 96 78 # 97 # ã»ã«ã¿ã¤ããã©ã°ã¤ã³ã®æ¬ä½ã¡ã½ãã 98 # - éçAPIã®çæ 99 # file:: FILE: åºåå 100 ãã¡ã¤ã« 79 # セルタイププラグインの本体メソッド 80 # - 静的APIの生成 81 # file:: FILE: 出力先ファイル 101 82 # 102 83 def gen_factory file … … 104 85 105 86 # 106 # 対象ã¨ãªããã¹ã¦ã®ã»ã«ã«ã¤ãã¦ãåãå£ã«çµåããã¦ãã 107 # ã»ã«ã®æå±ãã¡ã¤ã³ã解æ 108 # - çæãã¹ãcfgãã¡ã¤ã«åãåå¾ããããã«å¿ 109 è¦ 87 # 対象となるすべてのセルについて、受け口に結合されている 88 # セルの所属ドメインを解析 89 # - 生成すべきcfgファイル名を取得するために必要 110 90 # 111 91 if !HRPKernelObjectPlugin.isChecked() … … 115 95 end 116 96 117 # 追è¨ããããã« AppFile ã使ãï¼æåã³ã¼ãå¤æãããªãï¼97 # 追記するために AppFile を使う(文字コード変換されない) 118 98 file2 = AppFile.open( "#{$gen}/tecsgen.cfg" ) 119 99 file2.print "\n/* Generated by #{self.class.name} */\n\n" … … 123 103 dbgPrint "===== begin check my domain #{cell.get_name} =====\n" 124 104 # 125 # ã«ã¼ãã«ãªãã¸ã§ã¯ãã®å±æ§ãï¼valã«ã³ãã¼105 # カーネルオブジェクトの属性を,valにコピー 126 106 # 127 107 val = {} … … 131 111 val[a.get_name] = [] 132 112 if j = cell.get_join_list.get_item(a.get_name) 133 # ã»ã«çææã«åæåããå ´å113 # セル生成時に初期化する場合 134 114 j.get_rhs.each { |elem| 135 115 val[a.get_name] << elem.to_s 136 116 } 137 117 elsif i = a.get_initializer 138 # ã»ã«ã¿ã¤ãã®åæåå¤ã使ãå ´å118 # セルタイプの初期化値を使う場合 139 119 i.each { |elem| 140 120 val[a.get_name] << elem.to_s … … 145 125 else 146 126 if j = cell.get_join_list.get_item(a.get_name) 147 # ã»ã«çææã«åæåããå ´å127 # セル生成時に初期化する場合 148 128 val[a.get_name] = j.get_rhs.to_s 149 129 elsif i = a.get_initializer 150 # ã»ã«ã¿ã¤ãã®åæåå¤ã使ãå ´å130 # セルタイプの初期化値を使う場合 151 131 val[a.get_name] = i.to_s 152 132 else … … 155 135 end 156 136 } 157 # generate.rb ãåèã«158 # $id$ ãç½®æ137 # generate.rbを参考に 138 # $id$を置換 159 139 if val[:id].nil? != true 160 140 name_array = @celltype.get_name_array( cell ) 161 141 val[:id] = @celltype.subst_name( val[:id], name_array ) 162 142 end 163 # $cbp$ ã®ä»£ãã143 # $cbp$の代わり 164 144 cell_domain_root = cell.get_region.get_domain_root 165 145 cell_domain_type = cell.get_region.get_domain_root.get_domain_type 166 146 167 # CRE_XXX/DEF_XXX ã®çæ147 # CRE_XXX/DEF_XXXの生成 168 148 if cell_domain_type.get_option.to_s != "OutOfDomain" 169 # ä¿è·ãã¡ã¤ã³ã«å±ããå ´å149 # 保護ドメインに属する場合 170 150 if !HRPKernelObjectPlugin.include_region(cell_domain_root.get_name.to_s) 171 # ãã®ä¿è·ãã¡ã¤ã³ã®.cfgãçæããã¦ããªãå ´å151 # その保護ドメインの.cfgが生成されていない場合 172 152 HRPKernelObjectPlugin.set_region_list(cell_domain_root.get_name.to_s) 173 153 dbgPrint "~~~~~ #{cell_domain_root.get_name.to_s} is registered!\n" … … 189 169 file3.close 190 170 else 191 # ç¡æå±ã®å ´å171 # 無所属の場合 192 172 dbgPrint "~~~~~ #{cell_domain_root.get_namespace_path} is OutOfDomain\n" 193 173 # print "~~~~~ #{cell_domain_root.get_namespace_path} is OutOfDomain\n" … … 197 177 else 198 178 # if !HRPKernelObjectPlugin.include_region(cell_domain_root.get_name.to_s) 199 # # ãã®ä¿è·ãã¡ã¤ã³ã®.cfgãçæããã¦ããªãå ´å179 # # その保護ドメインの.cfgが生成されていない場合 200 180 # HRPKernelObjectPlugin.set_region_list(cell_domain_root.get_name.to_s) 201 181 # file2.puts "INCLUDE(\"#{$gen}/tecsgen_#{cell_domain_root.get_name.to_s}.cfg\");\n" … … 211 191 212 192 # 213 # SAC_XXX ã®çæ193 # SAC_XXXの生成 214 194 # 215 195 if !val[:accessPattern1].nil? … … 224 204 acv_tmp = [] 225 205 domain_roots = HRPPlugin.get_inter_domain_join_roots cell 226 # çµåå 227 ã»ã«ã®ãã¡ã¤ã³ãå ãã 206 # 結合先セルのドメインを加える 228 207 if cell_domain_type.get_kind != :OutOfDomain then 229 208 domain_roots << cell_domain_root … … 237 216 when :OutOfDomain 238 217 if cell_domain_type.get_kind == :OutOfDomain then 239 # å¼ã³å 240 ããå¼ã³å 241 ã OutOfDomain ã®å ´å 218 # 呼び元も、呼び先も OutOfDomain の場合 242 219 acv_tmp << "TACP_SHARED" 243 220 end … … 246 223 acv_tmp.uniq! 247 224 if acv_tmp.length == 0 then 248 # å¼ã³å 249 ã»ã«ãç¡æå±ãã¤ãå¼ã³å 250 ãç¡æå±ã®ã¿ãã¾ãã¯çµåç¡ãã®å ´å 225 # 呼び先セルが無所属かつ、呼び元も無所属のみ、または結合無しの場合 251 226 acv_tmp = [ "TACP_SHARED" ] 252 227 end … … 265 240 when :user 266 241 if dr.get_namespace_path != cell.get_region.get_domain_root.get_namespace_path 267 # ä»ã®ã¦ã¼ã¶ã¼ãã¡ã¤ã³ããã®çµå242 # 他のユーザードメインからの結合 268 243 if( b_warn == false ) then 269 244 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 ) … … 273 248 when :OutOfDomain 274 249 if( b_info == false ) then 275 # ç¡æå±ããã®çµå250 # 無所属からの結合 276 251 # cdl_error( "HRP9999 kernel object joined from out of domain" ) 277 252 if cell_domain_type.get_kind == :OutOfDomain 278 # ãã®æ 279 å ±ã¯ãä¸è¦ã¨å¤æãã (ç¡æå±ããç¡æå±ã¸çµåãããã¨ãã¢ã¯ã»ã¹è¨±å¯ãã¯ã¿ãè¨å®ãããªã) 253 # この情報は、不要と判断する (無所属から無所属へ結合があると、アクセス許可ベクタが設定されない) 280 254 # cdl_info2( cell.get_locale, "HRP9999 '$1': kernel object joined from out of domain, access vector is not set", cell.get_name ) 281 255 b_info = true … … 289 263 else 290 264 # p "OutOfDomainCell" 291 # ç¡æå±ã®ã»ã« 292 # çµåå 293 ãã¡ã¤ã³ã«è¨±å¯ãã 294 # çµåå 295 ã«ç¡æå±ã®ã»ã«ãããã¨ãTACP_SHARED ãè¨å®ããã. ããã¼è§£æãã¦ãã¡ã¤ã³ãç¹å®ã§ããã®ããããã¹ãä»æ§ 265 # 無所属のセル 266 # 結合元ドメインに許可する 267 # 結合元に無所属のセルがあると、TACP_SHARED が設定される. フロー解析してドメインを特定できるのが、あるべき仕様 296 268 end 297 269 if acp == "OMIT" … … 300 272 end 301 273 } 302 # å種SACã®çæ274 #各種SACの生成 303 275 domainOption = cell_domain_type.get_option 304 276 # p "domain_root ", cell.get_region.get_domain_root.get_name 305 277 if domainOption != "OutOfDomain" || cell.get_region.get_domain_root.get_name != "::" 306 # ä¿è·ãã¡ã¤ã³ã«å±ããå ´å278 # 保護ドメインに属する場合 307 279 file3 = AppFile.open( "#{$gen}/tecsgen_#{cell.get_region.get_name.to_s}.cfg" ) 308 280 print_cfg_sac(file3, val, acv) 309 281 file3.close 310 282 else 311 # ç¡æå±ã®å ´å283 # 無所属の場合 312 284 print_cfg_sac(file2, val, acv) 313 285 end … … 321 293 end 322 294 323 # ã«ã¼ãã«ãªãã¸ã§ã¯ãã»ã«ã¿ã¤ãã®ç®¡ç324 # HRPKernelObjectPlugin ã¯ã©ã¹ã«å¯¾ãã¦ã¡ã½ããå¼åºããè¡ããã¨ãæ³å®295 # カーネルオブジェクトセルタイプの管理 296 # HRPKernelObjectPluginクラスに対してメソッド呼出しを行うことを想定 325 297 @@checked = false 326 298 @@celltype_list = [] -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRPObjectPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2018 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 69 54 70 55 #=== 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 76 60 def print_cfg_cre(file, cell, val, tab) 77 61 if @@api.has_key?(@plugin_arg_str) == false … … 81 65 params = @@api[@plugin_arg_str] 82 66 if @plugin_arg_str == "MUTEX" && ((val[:attribute] =~ /\bTA_CEILING\b/)==nil) 83 slice_end = -2 # :ceilingPriority ãå¤ã67 slice_end = -2 # :ceilingPriority を外す 84 68 else 85 69 slice_end = -1 … … 94 78 end 95 79 #=== 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: アクセスベクタ 101 84 def print_cfg_sac(file, val, acv) 102 85 if @@api.has_key?(@plugin_arg_str) == false -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRPPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2014-2018 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 56 41 require_tecsgen_lib "HRPKernelObjectManager.rb" 57 42 # 58 # åã¡ã½ããã®å½¹å²ãã¯ãDomainPlugin.rb ãåç 59 §ã®ã㨠60 # HRPã«ã¼ãã«ç¨ãã¡ã¤ã³ãã©ã°ã¤ã³ 43 # 各メソッドの役割りは、DomainPlugin.rb を参照のこと 44 # HRPカーネル用ドメインプラグイン 61 45 class HRPPlugin < DomainPlugin 62 46 … … 72 56 else 73 57 cdl_error( "HRPPlugin: '$1' is unacceptable domain kind, specify 'kernel' or 'user'", option ) 74 @option = "kernel" # ã¨ãããã kernel ãè¨å®ãã¦ãã58 @option = "kernel" # とりあえず kernel を設定しておく 75 59 end 76 60 end 77 61 78 62 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 の説明参照) 89 69 # return [] 90 70 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" … … 110 90 get_real_celltype(join.get_rhs_port1). 111 91 get_global_name) #oyama: get_name => get_global_name 112 # çµåå 113 ãã«ã¼ãã«ãªãã¸ã§ã¯ãã»ã« 92 # 結合先がカーネルオブジェクトセル 114 93 # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell) 115 # ä½ãããªãthrough94 # 何もしないthrough 116 95 # puts "***** #{join.get_cell.get_celltype.get_name} is kernel object" 117 96 return [] … … 121 100 # elsif next_domain.nil? 122 101 elsif next_domain.get_option.to_s == "OutOfDomain" 123 # # çµåå 124 ãç¡æå± 125 # # ä½ãããªãthrough 102 # # 結合先が無所属 103 # # 何もしないthrough 126 104 # # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell) 127 105 # puts "***** nil" … … 129 107 #elsif @start_region.get_param != :KERNEL_DOMAIN && @end_region.get_param == :KERNEL_DOMAIN 130 108 elsif current_domain.get_option.to_s != "kernel" && next_domain.get_option.to_s == "kernel" 131 # ã¦ã¼ã¶ãã¡ã¤ã³ããã«ã¼ãã«ãã¡ã¤ã³ã¸ã®çµå109 # ユーザドメインからカーネルドメインへの結合 132 110 # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell) 133 111 # puts "***** svc" 134 112 return [ :HRPSVCPlugin, "" ] 135 113 elsif current_domain != next_domain 136 # å¥ã®ã¦ã¼ã¶ãã¡ã¤ã³ã¸ã®çµå114 # 別のユーザドメインへの結合 137 115 # @plugin_body = HRP2RPCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell) 138 116 # puts "***** rpc" … … 141 119 return [ :HRPRPCPlugin, "noClientSemaphore=false,PPAllocatorSize=256" ] 142 120 else 143 # ãã®ä»144 # ä½ãããªãthrough121 # その他 122 # 何もしないthrough 145 123 # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell) 146 124 dbgPrint "warning: at HRP Join Check" … … 156 134 end 157 135 158 #== ãã¡ã¤ã³ç¨®å¥ãè¿ã136 #== ドメイン種別を返す 159 137 #return::Symbol :kernel, :user, :OutOfDomain 160 138 def get_kind … … 165 143 end 166 144 167 # ATT_MOD ãçææ¸ã¿ãã©ãã# 2017.8.27145 # ATT_MODを生成済みかどうか # 2017.8.27 168 146 @@generate_memory_module = false 169 147 170 @@include_extsvc_fncd = false # 17.07.26 æ«å®148 @@include_extsvc_fncd = false # 17.07.26 暫定 171 149 # 172 # ATT_MOD ã®çæ173 # gen_factory å®è¡æã«ã¯ï¼ãã¹ã¦ã®ã»ã«ã¿ã¤ããã©ã°ã¤ã³ãçææ¸ã¿ã®ã¯ããªã®ã§ï¼174 # ã«ã¼ãã«APIã³ã¼ãã®ã¡ã¢ãªä¿è·ãçç¥ã§ããï¼150 # ATT_MODの生成 151 # gen_factory実行時には,すべてのセルタイププラグインを生成済みのはずなので, 152 # カーネルAPIコードのメモリ保護を省略できる. 175 153 # 176 154 def gen_factory … … 187 165 if @@generate_memory_module == false 188 166 189 # INCLUDE ãåºå 190 # ãã¹ã¦ã®ãã¡ã¤ã³ã«å¯¾ãã cfg ãå 191 ã«çæãã¦ãã 192 # ããããã¡ã¤ã³ã«å±ããã«ã¼ãã«ãªãã¸ã§ã¯ãããã¢ã¸ã¥ã¼ã«ããªãå ´åã§ããcfg ãåºåããã 167 # INCLUDE を出力 168 # すべてのドメインに対する cfg を先に生成しておく 169 # もし、ドメインに属するカーネルオブジェクトも、モジュールもない場合でも、cfg が出力される 193 170 regions = DomainType.get_domain_regions[ :HRP ] 194 171 file = AppFile.open( "#{$gen}/tecsgen.cfg" ) … … 219 196 220 197 # 221 # ATT_MOD ã®çæ198 # ATT_MODの生成 222 199 # 223 200 Cell.get_cell_list2.each { |cell| 224 # ãã¹ã¦ã®ã»ã«ãèµ°æ»ãã¦ã»ã«ã¿ã¤ãããã§ãã¯201 # すべてのセルを走査してセルタイプをチェック 225 202 ct = cell.get_celltype 226 203 if ct.class == Celltype && check_celltype_list.include?( ct ) == false 227 # ãã§ãã¯æ¸ã¿ã»ã«ã¿ã¤ãã«ç»é²204 # チェック済みセルタイプに登録 228 205 check_celltype_list << ct 229 206 230 # æªãã§ãã¯ã®ã»ã«ã¿ã¤ãã ã£ãå ´å207 # 未チェックのセルタイプだった場合 231 208 # puts "check for ATT_MOD : #{ct.classget_global_name}" 232 209 # puts "check for ATT_MOD : #{ct.get_global_name}" 233 210 234 # ã«ã¼ãã«APIã®ã³ã¼ãï¼ãã¼ã¿ã¯ã¡ã¢ãªä¿è·ããªã# HRP3 oyama delete by Takada's request211 # カーネルAPIのコード,データはメモリ保護しない # HRP3 oyama delete by Takada's request 235 212 # next if HRPKernelObjectManager.include_celltype?( ct.get_name ) 236 213 237 # å¿ 238 è¦ã®ãªãã»ã«ã¿ã¤ãã®ã³ã¼ãï¼ãã¼ã¿ã¯ã¡ã¢ãªä¿è·ããªã 214 # 必要のないセルタイプのコード,データはメモリ保護しない 239 215 next if ! ct.need_generate? 240 216 241 # HRP ã®ãã¡ã¤ã³ãªã¼ã¸ã§ã³ãåå¾217 # HRPのドメインリージョンを取得 242 218 regions = ct.get_domain_roots 243 219 regions_hrp = regions[ :HRP ] … … 248 224 # puts "" 249 225 250 # ã»ã«ç®¡çãããã¯ã¨ã¹ã±ã«ãã³ã®ã¡ã¢ãªä¿è·251 # gen_celltype_names_domain ç¸å½ã®å¦ç226 # セル管理ブロックとスケルトンのメモリ保護 227 # gen_celltype_names_domain 相当の処理 252 228 if regions_hrp.include?( Region.get_root ) == false && regions_hrp.length > 1 253 # ãã¡ã¤ã³ãè¤æ°ã§ï¼OutOfDomainã«ã»ã«ãåå¨ããªãã»ã«ã¿ã¤ãã®å ´å 254 # å 255 ±æã®ã»ã«ç®¡çãããã¯ã¨ã¹ã±ã«ãã³ã³ã¼ããç»é²ãã 229 # ドメインが複数で,OutOfDomainにセルが存在しないセルタイプの場合 230 # 共有のセル管理ブロックとスケルトンコードを登録する 256 231 file = AppFile.open( "#{$gen}/tecsgen.cfg" ) 257 232 file.printf "%-60s/* HRPPlugin 003 */\n", "ATT_MOD(\"#{ct.get_global_name}_tecsgen.o\");" … … 270 245 } 271 246 272 # ã»ã«ã¿ã¤ãã³ã¼ãããªãå ´åã¯ã¹ããã247 # セルタイプコードがない場合はスキップ 273 248 next if ct.is_all_entry_inline? && ! ct.is_active? 274 249 275 # ã»ã«ã¿ã¤ãã³ã¼ãã®ã¡ã¢ãªä¿è·276 # gen_celltype_names_domain2 ç¸å½ã®å¦ç250 # セルタイプコードのメモリ保護 251 # gen_celltype_names_domain2 相当の処理 277 252 if regions_hrp.include?( Region.get_root ) == true || regions_hrp.length > 1 278 # OutOfDomainã«ã»ã«ãåå¨ããã»ã«ã¿ã¤ãã®å ´å 279 # ã¾ãã¯ï¼è¤æ°ã®ãã¡ã¤ã³ã«ã»ã«ãåå¨ããã»ã«ã¿ã¤ãã®å ´å 280 # ã»ã«ã¿ã¤ãã³ã¼ããå 281 ±æããããã«ç»é²ãã 253 # OutOfDomainにセルが存在するセルタイプの場合 254 # または,複数のドメインにセルが存在するセルタイプの場合 255 # セルタイプコードを共有するように登録する 282 256 file = AppFile.open( "#{$gen}/tecsgen.cfg" ) 283 257 else 284 # OutOfDomain ã§ãªãåä¸ã®ãã¡ã¤ã³ã«ã»ã«ãåå¨ããã»ã«ã¿ã¤ãã®å ´å285 # ã»ã«ã¿ã¤ãã³ã¼ããå°æããããã«ç»é²ãã258 # OutOfDomainでない単一のドメインにセルが存在するセルタイプの場合 259 # セルタイプコードを専有するように登録する 286 260 file = AppFile.open( "#{$gen}/tecsgen_#{regions_hrp[0].get_global_name}.cfg" ) 287 261 end … … 290 264 file.close 291 265 else 292 # ä½ãããªã266 # 何もしない 293 267 end 294 268 } … … 296 270 @@generate_memory_module = true 297 271 else 298 # ä½ãããªã272 # 何もしない 299 273 end 300 274 end … … 309 283 @@inter_domain_join_set[ rhs_cell ] = [] 310 284 end 311 # 左辺ã®ãã¡ã¤ã³ã«ã¼ããè¨é²285 # 左辺のドメインルートを記録 312 286 @@inter_domain_join_set[ rhs_cell ] << join 313 287 end … … 339 313 cell_domain_root = cell.get_region.get_domain_root 340 314 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 # 結合先のドメインも含める 343 316 end 344 317 domain_roots.each{ |dr| … … 364 337 } 365 338 if acv == "" then 366 # å¼ã³å 367 ã»ã«ãç¡æå±ãã¤ãå¼ã³å 368 ãç¡æå±ã®ã¿ãã¾ãã¯çµåç¡ãã®å ´å 339 # 呼び先セルが無所属かつ、呼び元も無所属のみ、または結合無しの場合 369 340 acv = "TACP_SHARED" 370 341 end -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRPRPCPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2018 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 56 41 require_tecsgen_lib "lib/GenParamCopy.rb" 57 42 58 #= HRPRPCPlugin ãã©ã°ã¤ã³59 # ã¹ã«ã¼ãã©ã°ã¤ã³(through)60 # ã»OpaqueMarshalerPlugin ã使ç¨ãã¦ãã¼ã·ã£ã©ã»ã«ã¿ã¤ããçæãã61 # ã»ãã¼ã·ã£ã©ãTDRããã£ã³ãã«ãã¡ãã»ã¼ã¸ãããã¡ãçæãã43 #= HRPRPCPlugin プラグイン 44 # スループラグイン (through) 45 # ・OpaqueMarshalerPlugin を使用してマーシャラセルタイプを生成する 46 # ・マーシャラ、TDR、チャンネル、メッセージバッファを生成する 62 47 # 63 48 class HRPRPCPlugin < ThroughPlugin … … 66 51 include GenParamCopy 67 52 68 # RPCPlugin å°ç¨ã®ãªãã·ã§ã³ 69 HRPRPCPluginArgProc = RPCPluginArgProc.dup # è¤è£½ãä½ã£ã¦å 70 ãå¤æ´ããªãããã«ãã 53 # RPCPlugin 専用のオプション 54 HRPRPCPluginArgProc = RPCPluginArgProc.dup # 複製を作って元を変更しないようにする 71 55 HRPRPCPluginArgProc[ "noClientSemaphore" ] = Proc.new { |obj,rhs| obj.set_noClientSemaphore rhs } 72 56 HRPRPCPluginArgProc[ "semaphoreCelltype" ] = Proc.new { |obj,rhs| obj.set_semaphoreCelltype rhs } 73 57 @@isFirstInstance = true 74 58 75 #=== RPCPlugin ã® initialize 76 # 説æ㯠ThroughPlugin (plugin.rb) ãåç 77 § 59 #=== RPCPlugin の initialize 60 # 説明は ThroughPlugin (plugin.rb) を参照 78 61 def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell ) 79 62 super … … 82 65 initialize_opaque_marshaler 83 66 84 # ãªãã·ã§ã³ï¼GenOpaqueMarshaler åç 85 § 67 # オプション:GenOpaqueMarshaler 参照 86 68 @plugin_arg_check_proc_tab = HRPRPCPluginArgProc 87 69 parse_plugin_arg … … 99 81 if @PPAllocatorSize == nil then 100 82 cdl_error( "HRP9999 PPAllocatorSize must be speicified for pointer argments" ) 101 # @PPAllocatorSize = 0 # 仮㫠0 ã¨ãã¦ãã (cdl ã®æ§æã¨ã©ã¼ãé¿ãããã)83 # @PPAllocatorSize = 0 # 仮に 0 としておく (cdl の構文エラーを避けるため) 102 84 end 103 85 elsif @PPAllocatorSize then … … 109 91 # if func_decl.get_type.is_oneway? then 110 92 # 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 文字列の配列 113 94 # 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 長さ未指定文字列 115 96 # end 116 97 # end … … 118 99 119 100 # 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 に入れるのがよい 127 105 # if @@isFirstInstance 128 106 # f = AppFile.open( "#{$gen}/Makefile.tecsgen" ) … … 134 112 end 135 113 136 #=== plugin ã®å®£è¨ã³ã¼ã (celltype ã®å®ç¾©) çæ114 #=== plugin の宣言コード (celltype の定義) 生成 137 115 def gen_plugin_decl_code( file ) 138 116 139 117 ct_name = "#{@ct_name}_#{@channelCelltype}" 140 118 141 # ãã®ã»ã«ã¿ã¤ãï¼åãã·ã°ããã£ï¼ã¯æ¢ã«çæããã¦ãããï¼119 # このセルタイプ(同じシグニチャ)は既に生成されているか? 142 120 if @@generated_celltype[ ct_name ] == nil then 143 121 @@generated_celltype[ ct_name ] = [ self ] … … 148 126 149 127 f = CFile.open( @rpc_channel_celltype_file_name, "w" ) 150 # åãå 151 容ãäºåº¦æ¸ãå¯è½æ§ãã (AppFile ã¯ä¸å¯) 128 # 同じ内容を二度書く可能性あり (AppFile は不可) 152 129 153 130 f.print <<EOT … … 177 154 end 178 155 179 #=== through cell ã³ã¼ããçæ156 #=== through cell コードを生成 180 157 # 181 158 # … … 229 206 EOT 230 207 231 ##### ã¯ã©ã¤ã¢ã³ãå´ã®ã»ã«ã®çæ#####208 ##### クライアント側のセルの生成 ##### 232 209 nest = @start_region.gen_region_str_pre file 233 210 nest_str = " " * nest 234 211 235 # ã»ããã©ã®çæ212 # セマフォの生成 236 213 if @b_noClientSemaphore == false then 237 214 file.print <<EOT … … 243 220 end 244 221 245 # ã¯ã©ã¤ã¢ã³ãå´ãã£ã³ãã« (tMessageBufferCEP)ã®çæ 246 # ãã£ã³ãã«ã¯å¿ 247 ããªã¼ã¸ã§ã³ä¸ã«ããã®ã§ã '::' ã§ã¤ãªã (ã§ãªããã°ãã«ã¼ããªã¼ã¸ã§ã³ã«ãªãããã§ãã¯ãå¿ 248 è¦ï¼ 222 # クライアント側チャンネル (tMessageBufferCEP)の生成 223 # チャンネルは必ずリージョン下にあるので、 '::' でつなぐ (でなければ、ルートリージョンにないかチェックが必要) 249 224 250 225 file.print <<EOT … … 263 238 EOT 264 239 265 # ã»ããã©ã®çµåæ240 # セマフォの結合文 266 241 if @b_noClientSemaphore == false then 267 242 semaphore = "#{nest_str} cLockChannel = #{@serverChannelCell}_Semaphore.eSemaphore;\n" … … 270 245 end 271 246 272 ### ã¯ã©ã¤ã¢ã³ãå´ãã£ã³ãã« (ãã¼ã·ã£ã©+TDR)ã®çæ###247 ### クライアント側チャンネル (マーシャラ+TDR)の生成 ### 273 248 cell = @next_cell 274 # ã¢ãã±ã¼ã¿ã®æå®ããããï¼249 # アロケータの指定があるか? 275 250 if cell.get_allocator_list.length > 0 then 276 251 … … 288 263 289 264 file.print delim 290 delim = ",\n" # æçµè¡ã«ã¯åºããªã 291 292 if subsc then # é 293 åæ·»æ° 265 delim = ",\n" # 最終行には出さない 266 267 if subsc then # 配列添数 294 268 subsc_str = '[#{subsc}]' 295 269 else … … 297 271 end 298 272 299 eport = "eThroughEntry" #RPC ã®åãå£åã«å¤æ´273 eport = "eThroughEntry" #RPCの受け口名に変更 300 274 file.print nest_str 301 275 file.print "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc_str}" … … 316 290 #{clientErrorHandler_str}#{semaphore}#{nest_str} }; 317 291 EOT 318 ### END: ã¯ã©ã¤ã¢ã³ãå´ãã£ã³ãã« (ãã¼ã·ã£ã©+TDR)ã®çæ###292 ### END: クライアント側チャンネル (マーシャラ+TDR)の生成 ### 319 293 @start_region.gen_region_str_post file 320 294 file.print "\n\n" 321 295 322 ##### ãµã¼ãã¼å´ã®ã»ã«ã®çæ#####296 ##### サーバー側のセルの生成 ##### 323 297 nest = @end_region.gen_region_str_pre file 324 298 nest_str = " " * nest … … 336 310 end 337 311 338 # ãµã¼ãã¼å´ãã£ã³ãã«(tMessageBufferCEP)312 # サーバー側チャンネル (tMessageBufferCEP) 339 313 if @PPAllocatorSize then 340 314 alloc_cell =<<EOT … … 358 332 EOT 359 333 360 # ãµã¼ãã¼å´TDR334 # サーバー側TDR 361 335 file.print <<EOT 362 336 … … 373 347 end 374 348 375 # ãµã¼ãã¼å´ãã£ã³ãã« (ã¢ã³ãã¼ã·ã£ã©)349 # サーバー側チャンネル (アンマーシャラ) 376 350 file.print <<EOT 377 351 #{alloc_cell} … … 383 357 EOT 384 358 385 # ãµã¼ãã¼å´ã¿ã¹ã¯ã¡ã¤ã³359 # サーバー側タスクメイン 386 360 file.print <<EOT 387 361 … … 392 366 EOT 393 367 394 # ãµã¼ãã¼å´ã¿ã¹ã¯368 # サーバー側タスク 395 369 file.print <<EOT 396 370 … … 407 381 408 382 409 #=== ãã©ã°ã¤ã³å¼æ° noClientSemaphore ã®ãã§ãã¯383 #=== プラグイン引数 noClientSemaphore のチェック 410 384 def set_noClientSemaphore rhs 411 385 rhs = rhs.to_sym … … 419 393 end 420 394 421 #=== ãã©ã°ã¤ã³å¼æ° semaphoreCelltype ã®ãã§ãã¯395 #=== プラグイン引数 semaphoreCelltype のチェック 422 396 def set_semaphoreCelltype rhs 423 397 @semaphoreCelltype = rhs.to_sym … … 429 403 end 430 404 431 #=== NamespacePath ãå¾ã432 # çæããã»ã«ã® namespace path ãçæãã405 #=== NamespacePath を得る 406 # 生成するセルの namespace path を生成する 433 407 def get_cell_namespace_path 434 408 # nsp = @region.get_namespace.get_namespace_path -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRPSVCPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2018 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ 53 38 #++ 54 39 55 # mikan through plugin: namespace ãèæ 56 ®ããã¦ããªã 57 # ãããå©ç¨ããå ´åã以ä¸ã®ããã« toppers_jsp.cdl sChannel.cdl ãæå®ããå¿ 58 è¦ããã 40 # mikan through plugin: namespace が考慮されていない 41 # これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定する必要がある 59 42 # tecsgen toppers_jsp.cdl sChannel.cdl your_description.cdl 60 43 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 # 有符号、無符号でサイズが同じ 67 47 68 48 class SVCManage 69 49 # 70 # @@id: TECS ã®ãã©ã°ã¤ã³ã§çæããæ¡å¼µãµã¼ãã¹ã³ã¼ã«ã«å²ãå½ã¦ãid71 # å®éã®æ¡å¼µãµã¼ãã¹ã³ã¼ã«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 # 対応づけるハッシュ 77 57 # 78 58 @@id = 0 … … 80 60 def initialize() 81 61 # 82 # æ¬ã¯ã©ã¹ã¯ã¤ã³ã¹ã¿ã³ã¹ãæããªãä»®æ³çãªã¯ã©ã¹ã§ãã62 # 本クラスはインスタンスを持たない仮想的なクラスである 83 63 # 84 64 raise "class #{self.class.name} shall not have instances" … … 105 85 106 86 # 107 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«ãç¨ãããã¡ã¤ã³ééä¿¡ã® 108 # throughãã©ã°ã¤ã³ 109 # HRPãã¡ã¤ã³ãã©ã°ã¤ã³ã«ãã£ã¦æ¿å 110 ¥ããã 111 # åææ¡ä»¶: å¼åºãå 112 ãã«ã¼ãã«ãªãã¸ã§ã¯ããã©ããã®å¤å®ã¯HRPãã¡ã¤ã³ãã©ã°ã¤ã³ 113 # ãããããã§å®æ½ãããããï¼ããã§ã¯å¤å®ããªããã¨ã¨ãã 87 # 拡張サービスコールを用いたドメイン間通信の 88 # throughプラグイン 89 # HRPドメインプラグインによって挿入される 90 # 前提条件: 呼出し先がカーネルオブジェクトかどうかの判定はHRPドメインプラグイン 91 # で実施されるため,ここでは判定しないこととした 114 92 # 115 93 class HRPSVCPlugin < ThroughPlugin 116 94 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 = {} # セルの重複排除用 121 99 122 100 def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell ) 123 101 super 124 102 125 # åãå£é 126 åã®å ´åãé 127 åæ·»æ°ãã¨ã«å¥ã®ã»ã«ã¿ã¤ãã¨ãã 128 # ã»ã«ã¿ã¤ããã·ã³ã°ã«ãã³åãããããã 129 # ãããªãã¨ãã»ã«ãèå¥ããå¼æ°ã渡ãå¿ 130 è¦ããããNUM_SVC_ARG_MAX(5) ã¤ãã渡ããªãå¼æ°ã®ä¸ã¤ãæ¶è²»ãããã¨ã«ãªãããã 103 # 受け口配列の場合、配列添数ごとに別のセルタイプとする 104 # セルタイプをシングルトン化したいため。 105 # さもないと、セルを識別する引数を渡す必要があり、NUM_SVC_ARG_MAX(5) つしか渡せない引数の一つを消費することになるため。 131 106 if @next_cell_port_subscript then 132 107 subscript = "__" + @next_cell_port_subscript.to_s … … 145 120 end 146 121 147 #=== NamespacePath ãå¾ã148 # çæããã»ã«ã® namespace path ãçæãã122 #=== NamespacePath を得る 123 # 生成するセルの namespace path を生成する 149 124 def get_cell_namespace_path 150 125 # nsp = @region.get_namespace.get_namespace_path … … 155 130 def gen_plugin_decl_code( file ) 156 131 157 # ãã®ã»ã«ã¿ã¤ãï¼åãã·ã°ããã£ï¼ã¯æ¢ã«çæããã¦ãããï¼132 # このセルタイプ(同じシグニチャ)は既に生成されているか? 158 133 if @@generated_celltype[ @ct_name_body ] == nil then 159 134 @@generated_celltype[ @ct_name_body ] = [ self ] … … 177 152 file.print "import( \"#{$gen}/#{@ct_name_body}.cdl\" );\n" 178 153 179 # ãã®ã»ã«ã¿ã¤ãï¼åãã·ã°ããã£ï¼ã¯æ¢ã«çæããã¦ãããï¼154 # このセルタイプ(同じシグニチャ)は既に生成されているか? 180 155 if @@generated_celltype[ @ct_name ] == nil then 181 156 @@generated_celltype[ @ct_name ] = [ self ] … … 197 172 198 173 =begin 199 # TODO: send. receive 対å¿174 # TODO: send. receive 対応 200 175 send_receive = [] 201 176 if @signature != nil then … … 229 204 end 230 205 231 #=== through cell ã³ã¼ããçæ206 #=== through cell コードを生成 232 207 # 233 208 # … … 236 211 # gen_plugin_decl_code( file ) this is called from super. 237 212 238 # ã»ã«ãæ¢ã213 # セルを探す 239 214 # path =["::",@next_cell.get_name] # mikan namespace 240 215 # cell = Namespace.find( path ) 241 216 # cell = Namespace.find( @next_cell.get_namespace_path ) 242 217 243 ##### ã¯ã©ã¤ã¢ã³ãå´ã®ã»ã«ã®çæ#####218 ##### クライアント側のセルの生成 ##### 244 219 # file.print "[domain(HRP, \"kernel\")]" 245 220 nest = @start_region.gen_region_str_pre file 246 221 nest_str = " " * nest 247 222 248 # ã¯ã©ã¤ã¢ã³ãå´ãã£ã³ãã«ã®çæ249 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«å¼åºã223 # クライアント側チャンネルの生成 224 # 拡張サービスコール呼出し 250 225 file.print <<EOT 251 226 /* HRPSVC0003 */ … … 259 234 file.print "\n\n" 260 235 261 ##### ãµã¼ãã¼å´ã®ã»ã«ã®çæ#####236 ##### サーバー側のセルの生成 ##### 262 237 # print "###### #{@cell_name_body} ... #{@ct_name_body} #{@@generated_cell[ @ct_name_body ].class} #####\n" 263 238 … … 274 249 end 275 250 276 # ãµã¼ãã¼å´ãã£ã³ãã«ã®çæ277 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«æ¬ä½251 # サーバー側チャンネルの生成 252 # 拡張サービスコール本体 278 253 file.print <<EOT 279 254 … … 295 270 file2.close 296 271 297 # callee_cell ã®get_restricted_regions ãå¼ã³åºãã¦ãã 298 # restrict ãåç 299 §ãããå°ãã¤ãããã 272 # callee_cell のget_restricted_regions を呼び出しておく 273 # restrict が参照された印をつけるため 300 274 @callee_cell.get_restricted_regions( :dummy_entry_name, :dummy_func_name ) 301 275 end 302 276 end 303 277 304 #=== åãå£é¢æ°ã®æ¬ä½(Cè¨èª)ãçæãã 305 # é常ã§ããã°ãã¸ã§ãã¬ã¼ã¿ã¯åãå£é¢æ°ã®ãã³ãã¬ã¼ããçæãã 306 # ãã©ã°ã¤ã³ã®å ´åãå¤æ´ããå¿ 307 è¦ã®ãªãã»ã«ã¿ã¤ãã³ã¼ããçæãã 308 #file:: FILE åºåå 309 ãã¡ã¤ã« 278 #=== 受け口関数の本体(C言語)を生成する 279 # 通常であれば、ジェネレータは受け口関数のテンプレートを生成する 280 # プラグインの場合、変更する必要のないセルタイプコードを生成する 281 #file:: FILE 出力先ファイル 310 282 #b_singleton:: bool true if singleton 311 283 #ct_name:: Symbol … … 320 292 321 293 # 322 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«å¼åºãå´ã®é¢æ°çæ294 # 拡張サービスコール呼出し側の関数生成 323 295 # 324 # å®æå½¢ã®ã¤ã¡ã¼ã¸296 # 完成形のイメージ 325 297 # 326 298 # ER_UINT … … 332 304 # p_cellcb = tHRPSVCPlugin_<Sig>SVCBody_<Cell>_<Entry>_GET_CELLCB(idx); 333 305 # }else{ 334 # /* ã¨ã©ã¼å¦çã³ã¼ããããã«è¨è¿°*/306 # /* エラー処理コードをここに記述 */ 335 307 # } 336 308 # … … 389 361 390 362 # 391 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«æ¬ä½å´ã®é¢æ°çæ363 # 拡張サービスコール本体側の関数生成 392 364 # 393 # å®æå½¢ã®ã¤ã¡ã¼ã¸365 # 完成形のイメージ 394 366 # 395 367 # ER_UINT … … 401 373 # p_cellcb = tHRPSVCPlugin_<Sig>SVCBody_<Cell>_<Entry>_GET_CELLCB(idx); 402 374 # }else{ 403 # /* ã¨ã©ã¼å¦çã³ã¼ããããã«è¨è¿°*/375 # /* エラー処理コードをここに記述 */ 404 376 # } 405 377 # … … 436 408 437 409 # 438 # ã¨ã©ã¼ãã§ãã¯å¦çã®çæ410 # エラーチェック処理の生成 439 411 # 440 412 441 413 # 442 # å¼åºãå 443 ãã¡ã¤ã³ã®ãã§ã㯠444 # * private method: gen_caller_check_codeåç 445 § 414 # 呼出し元ドメインのチェック 415 # * private method: gen_caller_check_code参照 446 416 # 447 417 generated_check_code = gen_caller_check_code(func_name) … … 450 420 451 421 # 452 # ãã©ã¡ã¼ã¿ã«ãã¤ã³ã¿ãåå¨ããå ´åï¼å¼åºãå 453 ã¿ã¹ã¯ã«å¯¾ãã 454 # ã¢ã¯ã»ã¹æ¨©ã®ãã§ãã¯å¦çãåºåãã 455 # â» cdmidãã«ã¼ãã«ãã¡ã¤ã³(æ¡å¼µãµã¼ãã¹ã³ã¼ã«å¼åºãä¸ã®ã¦ã¼ã¶ 456 # ãã¡ã¤ã³ãå«ã)ã§ããã°prb_memã®å¦çãã¹ããããï¼å段㮠457 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«ã®ã¿prb_memãå¼åºãå 458 ã¿ã¹ã¯ã«çºè¡ãã 422 # パラメータにポインタが存在する場合,呼出し元タスクに対する 423 # アクセス権のチェック処理を出力する 424 # ※ cdmidがカーネルドメイン(拡張サービスコール呼出し中のユーザ 425 # ドメインを含む)であればprb_memの処理をスキップし,初段の 426 # 拡張サービスコールのみprb_memを呼出し元タスクに発行する 459 427 # 460 428 num = 0 … … 465 433 if param.get_type.get_referto.kind_of?(IntType) then 466 434 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 (無符号含む) 468 436 # 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を参照 475 441 # 476 442 align_check_str = "" … … 479 445 if param.get_direction == :IN then 480 446 # 481 # å 482 ¥å([in])ã®ãã¤ã³ã¿ãã©ã¡ã¼ã¿ã¯ï¼å¼åºãå 483 ã¿ã¹ã¯ã« 484 # TPM_READ(èªåºãå¯è½)ã®ã¢ã¯ã»ã¹æ¨©ãå¿ 485 è¦ 447 # 入力([in])のポインタパラメータは,呼出し元タスクに 448 # TPM_READ(読出し可能)のアクセス権が必要 486 449 # 487 # äºéãã¤ã³ã¿ãä¸å¯ã®ãããsize_is 㨠string ãåæã«è¨å®ããããã¨ã¯ãªã450 # 二重ポインタが不可のため、size_is と string が同時に設定されることはない 488 451 prb_func = "prb_mem" 489 452 if param.get_size then … … 507 470 elsif param.get_direction == :OUT || param.get_direction == :INOUT then 508 471 # 509 # åºå([out])ã®ãã¤ã³ã¿ãã©ã¡ã¼ã¿ã¯ï¼å¼åºãå 510 ã¿ã¹ã¯ã« 511 # TPM_WRITE(æ¸è¾¼ã¿å¯è½)ã®ã¢ã¯ã»ã¹æ¨©ãå¿ 512 è¦ 472 # 出力([out])のポインタパラメータは,呼出し元タスクに 473 # TPM_WRITE(書込み可能)のアクセス権が必要 513 474 # 514 475 prb_func = "prb_mem" 515 476 if param.get_size then 516 477 size_str = param.get_size.to_s 517 elsif param.get_string then # å¼æ°ãªãã® string ã¯ãªã478 elsif param.get_string then # 引数なしの string はない 518 479 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 を用いる 521 481 else 522 482 size_str = "1" … … 535 495 536 496 # 537 # å¼åºãå 538 ãã«ã¼ãã«ãã¡ã¤ã³ã®ã¿è¨±å¯ããã¦ããå ´åï¼ 539 # ãã¹ã¦ã®ã¦ã¼ã¶ãã¡ã¤ã³ããã®å¼åºãã«å¯¾ãï¼E_OACVãè¿ã 497 # 呼出し元がカーネルドメインのみ許可されている場合, 498 # すべてのユーザドメインからの呼出しに対し,E_OACVを返す 540 499 # 541 500 if user_cannot_callable … … 545 504 if check_code != "" 546 505 # 547 # å¼åºãå 548 ãã«ã¼ãã«ãã¡ã¤ã³ã®å ´åï¼ã¢ã¯ã»ã¹æ¨©ã®ãã§ã㯠549 # å¦çãã¹ãããããã 506 # 呼出し元がカーネルドメインの場合,アクセス権のチェック 507 # 処理をスキップさせる 550 508 # 551 509 file2.print <<eot … … 557 515 558 516 # 559 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«æ¬ä½(æ¬æ¥ã®åãå£é¢æ°)ãå¼ã³åºã517 # 拡張サービスコール本体(本来の受け口関数)を呼び出す 560 518 # 561 519 file2.print" #{retval_assign}#{@call_port_name}_#{func_name}(" … … 580 538 581 539 # 582 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«ã®ç»é²540 # 拡張サービスコールの登録 583 541 # 584 542 file2 = AppFile.open( "#{$gen}/tecsgen.cfg" ) … … 593 551 594 552 # 595 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«ç»é²ã«å¿ 596 è¦ãªæ 597 å ±ããããã«åºå 598 # - æ¡å¼µãµã¼ãã¹ã³ã¼ã«å¼åºãæã®ãã§ãã¯ã§ä½¿ç¨ããã¹ã¿ãã¯ãµã¤ãºãåºå 599 # - æ¡å¼µãµã¼ãã¹ã³ã¼ã«ã¨ãã¦ç»é²ããé¢æ°åã®extern宣è¨ãåºå 553 # 拡張サービスコール登録に必要な情報をヘッダに出力 554 # - 拡張サービスコール呼出し時のチェックで使用するスタックサイズを出力 555 # - 拡張サービスコールとして登録する関数名のextern宣言を出力 600 556 # 601 557 file2 = AppFile.open( "#{$gen}/#{@ct_name_body}_factory.h" ) … … 627 583 private 628 584 # 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"=>ユーザドメインが呼出し不可能かどうかのフラグ} 637 592 # 638 593 def gen_caller_check_code(func_name) 639 594 dbgPrint "gen_caller_check_code(func_name): #{@callee_cell.get_name}\n" 640 595 # 641 # ã¨ã©ã¼ãã§ãã¯å¦ç596 # エラーチェック処理 642 597 # 643 598 check_code = "" … … 647 602 648 603 # 649 # å¼åºãå 650 ãã¡ã¤ã³ã®ãã§ãã¯å¦ç 651 # callable_domains: æ¡å¼µãµã¼ãã¹ã³ã¼ã«ãå¼åºãå¯è½ãªãã¡ã¤ã³ã®ãªã¹ã 652 # - ç¡æå±ã®ã»ã«ããçµåããã¦ããå ´åï¼ãã¹ã¦ã®ã»ã«ã«å¯¾ãã¦ï¼ 653 # ãcallable?ããã§ãã¯ãï¼å¼åºãå¯è½ãªãã¹ã¦ã®ãã¡ã¤ã³ãè¿ã 654 # - ç¡æå±ä»¥å¤ã®ã»ã«ããçµåããã¦ããå ´åï¼ãã®ã»ã«ã«å¯¾ã㦠655 # callable?ããã§ãã¯ãï¼å¼åºãå¯è½ã§ããã°ï¼ãã®ãã¡ã¤ã³ãè¿ã 604 # 呼出し元ドメインのチェック処理 605 # callable_domains: 拡張サービスコールを呼出し可能なドメインのリスト 606 # - 無所属のセルから結合されている場合,すべてのセルに対して, 607 # callable?をチェックし,呼出し可能なすべてのドメインを返す 608 # - 無所属以外のセルから結合されている場合,そのセルに対して 609 # callable?をチェックし,呼出し可能であれば,そのドメインを返す 656 610 # 657 611 callable_domains = [] 658 612 @@generated_celltype[ @ct_name_body ].each { |svcplugin| 659 613 if svcplugin.get_caller_cell.get_region.get_domain_root.get_domain_type.get_option == "OutOfDomain" 660 # ç¡æå±ã㤠active ãªå ´åããrestrict ã«å¾ã614 # 無所属かつ active な場合も、restrict に従う 661 615 # if svcplugin.get_caller_cell.get_celltype.is_active? 662 616 # # 663 # # ç¡æå±ãã¤activeãªã»ã«ã¯ãTECSããåå¨ãèªèããã¦ããªãã®ã664 # # å«ãä»»æã®ãã¡ã¤ã³ããå¼ã³åºãããå¯è½æ§ãåå¨ãã617 # # 無所属かつactiveなセルは、TECSから存在が認識されていないのを 618 # # 含む任意のドメインから呼び出される可能性も存在する 665 619 # # 666 620 # caller_unrestricted = true 667 621 # else 668 622 # # 669 # # ç¡æå±ããæ¥ç¶ããã¦ããå ´åã¯ï¼ãã¹ã¦ã®ã»ã«ã®670 # # restrict ããã§ãã¯623 # # 無所属から接続されている場合は,すべてのセルの 624 # # restrictをチェック 671 625 # # 672 626 # Cell.get_cell_list2.each { |cell| … … 680 634 # end 681 635 682 # restrict æå®ãããå ´åã«ã¯ãããã«å¾ãããããªããã°ããã§ãã¯ããªã636 # restrict 指定がある場合には、それに従う。さもなければ、チェックしない 683 637 callable_domains = @callee_cell.get_restricted_regions( get_callee_ep_name, func_name ) 684 638 if callable_domains == nil then … … 695 649 elsif svcplugin.get_caller_cell.callable?( svcplugin.get_callee_cell, svcplugin.get_callee_ep_name, func_name ) 696 650 # 697 # ç¹å®ã®ãã¡ã¤ã³ããæ¥ç¶ããã¦ããå ´åã¯ï¼å¼åºãå 698 ã»ã«ã® 699 # restrictããã§ã㯠651 # 特定のドメインから接続されている場合は,呼出し元セルの 652 # restrictをチェック 700 653 # 701 654 callable_domains << svcplugin.get_caller_cell.get_region.get_domain_root 702 655 else 703 656 # 704 # ç¡æå±ããçµåããã¦ãããï¼ç¹å®ã®å¼åºãå 705 ãã¡ã¤ã³ã«ã¢ã¯ã»ã¹æ¨© 706 # ããªãå ´åï¼callable_domainsã¯ç©ºã¨ãªã 657 # 無所属から結合されておらず,特定の呼出し元ドメインにアクセス権 658 # がない場合,callable_domainsは空となる 707 659 # 708 660 # pp "#{svcplugin.get_caller_cell.get_name} cannot call #{svcplugin.get_callee_cell.get_name}_#{svcplugin.get_callee_ep_name}_#{func_name}" … … 716 668 717 669 # 718 # éè¤ãåé¤670 # 重複を削除 719 671 # 720 672 callable_domains.uniq! 721 673 # 722 # ç¡æå±ã«å¯¾ãããã¡ã¤ã³ãã§ãã¯ã¯å®æ½ããªã723 # ã«ã¼ãã«ãã¡ã¤ã³ã«å¯¾ãããã¡ã¤ã³ãã§ãã¯ã¯å®æ½ããªã674 # 無所属に対するドメインチェックは実施しない 675 # カーネルドメインに対するドメインチェックは実施しない 724 676 # 725 677 callable_domains = callable_domains.select { |domain| … … 730 682 # pp callable_domains.map{|domain| domain.get_name } 731 683 # 732 # ãã¹ã¦ã®ã¦ã¼ã¶ãã¡ã¤ã³ããå¼åºãå¯è½ãªå ´åï¼ãã¡ã¤ã³ãã§ãã¯ã¯733 # å®æ½ããªã684 # すべてのユーザドメインから呼出し可能な場合,ドメインチェックは 685 # 実施しない 734 686 # 735 687 all_domain_regions = DomainType.get_domain_regions[:HRP].select { |reg| … … 745 697 746 698 # 747 # å¼åºãå 748 ãã¡ã¤ã³ã®ãã§ãã¯å¦çæ¬ä½ã®çæ 699 # 呼出し元ドメインのチェック処理本体の生成 749 700 # 750 701 if callable_domains.length == 0 751 702 dbgPrint "callable_domain.length = 0\n" 752 703 # 753 # ã¦ã¼ã¶ãã¡ã¤ã³ããå¼åºãä¸å¯è½ãªå ´åã¯754 # åå¥ã®ã¨ã©ã¼ãã§ãã¯ã¯ããï¼åçç¡ç¨ã§E_OACVãè¿ã704 # ユーザドメインから呼出し不可能な場合は 705 # 個別のエラーチェックはせず,問答無用でE_OACVを返す 755 706 # 756 707 user_cannot_callable = true … … 758 709 dbgPrint "callable_domain.length = 1\n" 759 710 # 760 # å¼åºãå¯è½ãªã¦ã¼ã¶ãã¡ã¤ã³ãåä¸ã®å ´åã¯761 # cdmid != <domain å> ã®å½¢å¼ã§ãã§ãã¯ãã711 # 呼出し可能なユーザドメインが単一の場合は 712 # cdmid != <domain名> の形式でチェックする 762 713 # 763 714 check_code += "\t/* HRPSVC0012.1 */\n" … … 766 717 dbgPrint "callable_domain.length > 1 && not all_domains \n" 767 718 # 768 # å¼åºãå¯è½ãªã¦ã¼ã¶ãã¡ã¤ã³ãè¤æ°ã®å ´åã¯769 # TACP(cdmid) & (TACP(<domain å>) | ...) != 0U770 # ã®å½¢å¼ã§ãã§ãã¯ãã719 # 呼出し可能なユーザドメインが複数の場合は 720 # TACP(cdmid) & (TACP(<domain名>) | ...) != 0U 721 # の形式でチェックする 771 722 # 772 723 check_code += "\t/* HRPSVC0012.2 */\n" … … 779 730 if check_code != "" 780 731 # 781 # å¼åºãå¯è½ãªã¦ã¼ã¶ãã¡ã¤ã³ã®ãã§ãã¯ãããå ´åã¯782 # ã¨ã©ã¼ã³ã¼ããè¿ãããã®ã³ã¼ããåºåãã732 # 呼出し可能なユーザドメインのチェックがある場合は 733 # エラーコードを返すためのコードを出力する 783 734 # 784 735 check_code += <<EOS … … 793 744 794 745 #---------------------------------------------------------# 795 #=== ã·ã°ããã£ã®ãã§ãã¯746 #=== シグニチャのチェック 796 747 def check_signature signature 797 748 signature.get_function_head_array.each{ |fh| … … 806 757 } 807 758 end 808 #=== æ»ãå¤ã®åã®ãã§ãã¯809 # ER, ER_UINT ã¯æ¨å¥¨ãããå810 # æ´æ°ããã¼ã«ãvoid ã¯å¯è½ãä»ã¯ä¸å¯759 #=== 戻り値の型のチェック 760 # ER, ER_UINT は推奨される型 761 # 整数、ブール、void は可能、他は不可 811 762 def check_return_type signature, fh, type 812 763 ot = type.get_original_type … … 820 771 end 821 772 end 822 #=== å¼æ°ã®åã®ãã§ãã¯773 #=== 引数の型のチェック 823 774 def check_param signature, fh, param 824 775 type = param.get_type -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRPTaskPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2018 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 55 40 require_tecsgen_lib "HRPKernelObjectPlugin.rb" 56 41 require_tecsgen_lib "HRPKernelObjectManager.rb" 57 #== celltype ãã©ã°ã¤ã³ã®å 58 ±éã®è¦ªã¯ã©ã¹ 42 #== celltype プラグインの共通の親クラス 59 43 class HRPTaskPlugin < HRPKernelObjectPlugin 60 44 ## … … 69 53 end 70 54 71 # # ATT_MOD ãçææ¸ã¿ãã©ãã# 2017.8.2755 # # ATT_MODを生成済みかどうか # 2017.8.27 72 56 # @@generate_memory_module = false 73 57 74 58 # 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: タブ 81 64 # 82 65 def print_cfg_cre(file, cell, val, tab) 83 66 val[:id] = val[:id].gsub( /(^|[^\$])\$id\$/, "\\1#{@celltype.get_name.to_s}_#{cell.get_name.to_s}" ) 84 # $cbp$ ã®ä»£ãã67 # $cbp$の代わり 85 68 cell_IDX = @celltype.get_name_array(cell)[7] 86 # CRE_TSK ã®çæ69 # CRE_TSKの生成 87 70 dbgPrint "assign task plugin\n" 88 71 domainOption = cell.get_region.get_domain_root.get_domain_type.get_option … … 91 74 if val[:systemStackSize] == "0" 92 75 # 93 # ã·ã¹ãã ã¹ã¿ãã¯ã®å®ç¾©ãçç¥76 # システムスタックの定義を省略 94 77 # 95 78 file.print <<EOT … … 98 81 else 99 82 # 100 # ã·ã¹ãã ã¹ã¿ãã¯ã®å®ç¾©ã追å83 # システムスタックの定義を追加 101 84 # 102 85 file.print <<EOT … … 106 89 else 107 90 # 108 # ç¡æå±ã®ã¿ã¹ã¯ã¯åå¨ãã¦ã¯ãªããªãããï¼ã¨ã©ã¼ã¨ãã91 # 無所属のタスクは存在してはならないため,エラーとする 109 92 # 110 93 raise "task #{val[:id]} must belong to a domain." … … 113 96 114 97 # 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}: アクセス許可ベクタ 120 102 # 121 103 def print_cfg_sac(file, val, acv) -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/Mruby2CBridgePlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 5 5 # Copyright (C) 2008-2014 by TOPPERS Project 6 6 # 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 # 免責すること. 43 29 # 44 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 45 ã 46 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 47 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 48 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 49 # ã®è²¬ä»»ãè² ããªãï¼ 30 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 31 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 32 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 33 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 34 # の責任を負わない. 50 35 # 51 36 # $Id$ -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/MrubyBridgeCellPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2017 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ 53 38 #++ 54 39 55 #== celltype ãã©ã°ã¤ã³ã®å 56 ±éã®è¦ªã¯ã©ã¹ 40 #== celltype プラグインの共通の親クラス 57 41 class MrubyBridgeCellPlugin < CellPlugin 58 42 59 # ãã©ã°ã¤ã³å¼æ°å=> Proc43 # プラグイン引数名 => Proc 60 44 MrubyBridgePluginArgProc = { 61 45 "ignoreUnsigned" => Proc.new { |obj,rhs| obj.set_ignoreUnsigned rhs }, … … 75 59 76 60 #=== CellPlugin# initialize 77 #cell:: Cell ã»ã«ï¼ã¤ã³ã¹ã¿ã³ã¹ï¼78 # ãã®ã¡ã½ããã¯ãã»ã«ã®æ§æ解æãçµãã£ãã¨ããã§å¼ã³åºããã79 # ãã®æ®µéã§ã¯æå³è§£æãçµãã£ã¦ããªã61 #cell:: Cell セル(インスタンス) 62 # このメソッドは、セルの構文解析が終わったところで呼び出される 63 # この段階では意味解析が終わっていない 80 64 def initialize( cell, option ) 81 65 dbgPrint " #{self.class.name}: initialzie=#{cell.get_name} option=#{option}\n" … … 91 75 92 76 @plugin_arg_str = CDLString.remove_dquote option 93 # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' ) # åå¾ã® "" ãåãé¤ã77 # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' ) # 前後の "" を取り除く 94 78 # @plugin_arg_str.sub!( /(.*)"\z/, '\1' ) 95 79 @plugin_arg_list = {} … … 104 88 port_list = ct.get_port_list 105 89 if @exclude_port.length > 0 then 106 # ãã®å®è£ 107 ã§ã¯ãåå¨ããªã port ãæå®ããã¦ããã§ãã¯ã§ããªã 90 # この実装では、存在しない port を指定されてもチェックできない 108 91 # print "MRBBridgeCellPlugin: exclude list\n" 109 92 port_list.each{ |port| … … 193 176 end 194 177 195 #=== å¾ãã® CDL ã³ã¼ããçæ196 # ãã©ã°ã¤ã³ã®å¾ãã® CDL ã³ã¼ããçæ178 #=== 後ろの CDL コードを生成 179 #プラグインの後ろの CDL コードを生成 197 180 #file:: File: 198 181 def self.gen_post_code( file ) … … 210 193 211 194 def self.gen_post_code_body file 212 # è¤æ°ã®ãã©ã°ã¤ã³ã® post_code ãä¸ã¤ã®ãã¡ã¤ã«ã«å«ã¾ããããã以ä¸ã®ãããªè¦åºããã¤ãããã¨195 # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること 213 196 # file.print "/* '#{self.class.name}' post code */\n" 214 197 dbgPrint "#{self.name}: gen_post_code_body\n" … … 216 199 end 217 200 218 #=== ãã©ã°ã¤ã³å¼æ°ignoreUnsigned201 #=== プラグイン引数 ignoreUnsigned 219 202 def set_ignoreUnsigned rhs 220 203 if rhs == "true" || rhs == nil then … … 223 206 end 224 207 225 #=== ãã©ã°ã¤ã³å¼æ°exclude_port208 #=== プラグイン引数 exclude_port 226 209 def set_exclude_port rhs 227 210 ports = rhs.split ',' … … 239 222 end 240 223 241 #=== ãã©ã°ã¤ã³å¼æ°exclude_port_func224 #=== プラグイン引数 exclude_port_func 242 225 def set_exclude_port_func rhs 243 226 port_funcs = rhs.split ',' … … 269 252 } 270 253 end 271 #=== ãã©ã°ã¤ã³å¼æ°auto_exclude254 #=== プラグイン引数 auto_exclude 272 255 def set_auto_exclude rhs 273 256 # print "MrubyBridgeCellPlugin: auto_exclude=#{rhs}\n" -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/MrubyBridgeCelltypePlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2017 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 67 52 68 53 # 69 ##== celltype ãã©ã°ã¤ã³ã®å 70 ±éã®è¦ªã¯ã©ã¹ 54 ##== celltype プラグインの共通の親クラス 71 55 #class MrubyBridgeCelltypePlugin < CelltypePlugin 72 56 # 73 # # ãã©ã°ã¤ã³å¼æ°å=> Proc57 # # プラグイン引数名 => Proc 74 58 # MrubyBridgePluginArgProc = { 75 59 # "ignoreUnsigned" => Proc.new { |obj,rhs| obj.set_ignoreUnsigned rhs }, … … 85 69 # @@count = 1 86 70 # 87 # #celltype:: Celltype ã»ã«ã¿ã¤ãï¼ã¤ã³ã¹ã¿ã³ã¹ï¼71 # #celltype:: Celltype セルタイプ(インスタンス) 88 72 # def initialize( celltype, option ) 89 73 # dbgPrint "#{self.class.name}: initialzie: #{celltype.get_name}\n" … … 107 91 # end 108 92 # 109 # #=== æ°ããã»ã«110 # #cell:: Cell ã»ã«93 # #=== 新しいセル 94 # #cell:: Cell セル 111 95 # # 112 # # celltype ãã©ã°ã¤ã³ãæå®ãããã»ã«ã¿ã¤ãã®ã»ã«ãçæããã113 # # ã»ã«ã¿ã¤ããã©ã°ã¤ã³ã«å¯¾ããæ°ããã»ã«ã®å ±å114 # # generate æã«ããå¼ã³åºãããå ´åãããã¾ã§ã«å®ç¾©ããã cell ã«ã¤ãã¦ã¯ãinitialize ã®ã¿ã¤ãã³ã°ã§å¼ã³åºããã96 # # celltype プラグインを指定されたセルタイプのセルが生成された 97 # # セルタイププラグインに対する新しいセルの報告 98 # # generate 文により呼び出された場合、それまでに定義された cell については、initialize のタイミングで呼び出される 115 99 # def new_cell( cell ) 116 100 # dbgPrint "MrubyBridgeCelltypePlugin: new_cell: #{cell.get_name}\n" 117 101 # 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 以降のセルは対象から外す 120 104 # cdl_info( "I9999 MrubyBridgeCelltypePlugin: $1 is excluded because cell generated after post_coded", cell.get_name ) 121 105 # return … … 160 144 # end 161 145 # 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 生成するファイル 169 153 # def gen_cdl_file file 170 ## ãã®æ®µéã§å¼ã³ã ã㨠generate æãå¼ã³åºãããåã®ã»ã«ã®ã¿ã®åºåã¨ãªã154 ## この段階で呼びだすと generate 文が呼び出される前のセルのみの出力となる 171 155 # 172 156 ## dbgPrint "MrubyBridgeCelltypePlugin: gen_cdl_file: #{@celltype.get_name}\n" … … 189 173 # end 190 174 # 191 # #=== tCelltype_factory.h ã«æ¿å 192 ¥ããã³ã¼ããçæãã 193 # # file 以å¤ã®ä»ã®ãã¡ã¤ã«ã«ãã¡ã¯ããªã³ã¼ããçæãã¦ããã 194 # # ã»ã«ã¿ã¤ããã©ã°ã¤ã³ãæå®ãããã»ã«ã¿ã¤ãã®ã¿å¼ã³åºããã 175 # #=== tCelltype_factory.h に挿入するコードを生成する 176 # # file 以外の他のファイルにファクトリコードを生成してもよい 177 # # セルタイププラグインが指定されたセルタイプのみ呼び出される 195 178 # def gen_factory file 196 179 # end … … 200 183 # end 201 184 # 202 # #=== å¾ãã® CDL ã³ã¼ããçæ203 # # ãã©ã°ã¤ã³ã®å¾ãã® CDL ã³ã¼ããçæ185 # #=== 後ろの CDL コードを生成 186 # #プラグインの後ろの CDL コードを生成 204 187 # #file:: File: 205 188 # def self.gen_post_code( file ) 206 189 # dbgPrint "#{self.name}: gen_post_code_body\n" 207 190 # print "#{self.name}: gen_post_code_body\n" 208 ## ãã®æ®µéã§çæããã¨ãåããã¹ãã³ã¼ãã§åºåããã mruby ã®åæåã³ã¼ãã«åæ ãããªã191 ## この段階で生成すると、同じポストコードで出力される mruby の初期化コードに反映されない 209 192 # 210 ## # MrubyBridgeCelltypePlugin ã®çæãã generate æã¯ã193 ## # MrubyBridgeCelltypePlugin の生成する generate 文は、 211 194 ## fn2 = "#{$gen}/tmp_MrubyBridgeCelltypePlugin_post.cdl" 212 195 ## f2 = File.open( fn2, "w" ) 213 ## # è¤æ°ã®ãã©ã°ã¤ã³ã® post_code ãä¸ã¤ã®ãã¡ã¤ã«ã«å«ã¾ããããã以ä¸ã®ãããªè¦åºããã¤ãããã¨196 ## # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること 214 197 ## dbgPrint "MrubyBridgeCelltypePlugin: gen_post_code\n" 215 198 ## f2.print "/* '#{self.name}' post code */\n" … … 229 212 # end 230 213 # 231 # #=== ãã©ã°ã¤ã³å¼æ°232 # 233 # #=== ãã©ã°ã¤ã³å¼æ°ignoreUnsigned214 # #=== プラグイン引数 215 # 216 # #=== プラグイン引数 ignoreUnsigned 234 217 # def set_ignoreUnsigned rhs 235 218 # if rhs == "true" || rhs == nil then … … 266 249 # end 267 250 # 268 # #=== ãã©ã°ã¤ã³å¼æ°exclude_port_func251 # #=== プラグイン引数 exclude_port_func 269 252 # def set_exclude_port_func rhs 270 253 # port_funcs = rhs.split ',' … … 297 280 # end 298 281 # 299 # #=== ãã©ã°ã¤ã³å¼æ°auto_exclude282 # #=== プラグイン引数 auto_exclude 300 283 # def set_auto_exclude rhs 301 284 # # print "MrubyBridgeCellPlugin: auto_exclude=#{rhs}\n" -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/MrubyBridgeCompositePlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2017 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/MrubyBridgePlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 5 5 # Copyright (C) 2008-2017 by TOPPERS Project 6 6 # 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 # 免責すること. 43 29 # 44 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 45 ã 46 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 47 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 48 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 49 # ã®è²¬ä»»ãè² ããªãï¼ 30 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 31 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 32 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 33 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 34 # の責任を負わない. 50 35 # 51 36 # $Id$ 52 37 # 53 38 54 #== MrubyBridgePlugin ã¯ã©ã¹39 #== MrubyBridgePlugin クラス 55 40 class MrubyBridgePlugin < MultiPlugin 56 41 def self.get_plugin superClass 57 # case when (ã¤ã¾ã㯠===) ã§ã¯ãæå¾ 58 ããããã«ä¸è´ããªãæ¨¡æ§ 42 # case when (つまりは ===) では、期待したように一致しない模様 59 43 if superClass == SignaturePlugin then 60 44 dbgPrint "MrubyBridgePlugin: SignaturePlugin" -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/MrubyBridgeSignaturePlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 5 5 # Copyright (C) 2008-2017 by TOPPERS Project 6 6 # 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 # 免責すること. 43 29 # 44 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 45 ã 46 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 47 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 48 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 49 # ã®è²¬ä»»ãè² ããªãï¼ 30 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 31 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 32 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 33 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 34 # の責任を負わない. 50 35 # 51 36 # $Id$ … … 53 38 54 39 # Todo: 55 # çæãããã®40 # 生成するもの 56 41 # 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 に記録 63 48 # 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 に記録 68 53 # gen_post_code 69 # æ§é ä½åæåã»ã«70 # ãã¤ã³ã¿åæåã»ã«71 # TECS åæåã»ã«54 # 構造体初期化セル 55 # ポインタ初期化セル 56 # TECS 初期化セル 72 57 # 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 … ブリッジ関数の定義 81 66 82 67 class MrubyBridgeSignaturePlugin < SignaturePlugin 83 68 84 # ãã©ã°ã¤ã³å¼æ°å=> Proc69 # プラグイン引数名 => Proc 85 70 MrubyBridgePluginArgProc = { 86 71 "ignoreUnsigned" => Proc.new { |obj,rhs| obj.set_ignoreUnsigned rhs }, … … 92 77 @@b_no_banner = false # 93 78 @@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 のインスタンスの配列 } 98 81 @@struct_list = { } # {struct_name=>StructType} 99 @@ptr_list = { } # {ptr_celltype_name=> @@TYPE_MAP ã®å¯¾å¿ãããã®}82 @@ptr_list = { } # {ptr_celltype_name=> @@TYPE_MAP の対応するもの} 100 83 @@VM_list = { } # VM_name => true 101 @@VM_celltypes = { } # VM_name => { @celltype_name => ã»ã«ã®é 102 å } 84 @@VM_celltypes = { } # VM_name => { @celltype_name => セルの配列 } 103 85 @@VM_struct_list = { } # {name=>StructType} 104 @@VM_ptr_list = { } # { VM_name => {name=> @@TYPE_MAP ã®å¯¾å¿ãããã®} }86 @@VM_ptr_list = { } # { VM_name => {name=> @@TYPE_MAP の対応するもの} } 105 87 @@TYPE_MAP = { # type_str class GET_SET 106 88 :char_t => [:char_t, "Char", :Char, :INT ], … … 119 101 120 102 :int => [:int, "Int", :Int, :INT ], 121 :char => [:char, "Char", :Char, :INT ], # char 㯠char_t ã¨ãã¦æ±ã103 :char => [:char, "Char", :Char, :INT ], # char は char_t として扱う 122 104 :short => [:short, "Short", :Int, :INT ], 123 105 :long => [:long, "Long", :Int, :INT ], … … 141 123 # included or excluded functions 142 124 143 ### ãã¼ããããæç¹ã§å®è¡ããã###144 145 # -I ã« $(TECSPATH)/mruby ã追å125 ### ロードされた時点で実行される ### 126 127 # -I に $(TECSPATH)/mruby を追加 146 128 # TECSGEN::Makefile.add_obj "$(MRUBY_MAIN_OBJ)" 147 129 TECSGEN::Makefile.add_ldflag "-lmruby -L$(MRUBYPATH)/lib -lm" … … 150 132 # TECSGEN::Makefile.add_var "MRUBY_MAIN_OBJ", "$(_TECS_OBJ_DIR)tecs_mruby.o", "CHANGE this if your have your main" 151 133 152 #=== ãã©ã°ã¤ã³ã¤ã³ã¹ã¿ã³ã¹ã®åæå153 # æ»ãå¤ãå¼æ°ã®åã使ç¨å¯è½ãªãã®ããã§ãã¯ãã134 #=== プラグインインスタンスの初期化 135 # 戻り値、引数の型が使用可能なものかチェックする 154 136 # 155 137 def initialize( signature, option ) … … 184 166 185 167 if signature.get_function_head_array == nil then 186 return # 以åã«ææ³ã¨ã©ã¼çºç168 return # 以前に文法エラー発生 187 169 end 188 170 … … 281 263 when FloatType 282 264 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 されている場合、元の型 287 267 register_ptr_type ttype_org, fh 288 268 … … 340 320 end 341 321 342 #=== æ§é ä½ã®ã¡ã³ãã¼ã®åã®ãã§ãã¯322 #=== 構造体のメンバーの型のチェック 343 323 def check_struct_member struct_type, fh 344 324 #p "tag name:#{struct_type.get_name}" … … 349 329 cdl_info( "MRI9999 tagless-struct cannot be handled, $1 automatcally excluded", fh.get_name ) 350 330 @auto_exclude_list[ fh.get_name ] = fh 351 return # ç»é²ããªãããã«æã¡åã331 return # 登録しないように打ち切る 352 332 else 353 333 cdl_error( "MRB10007 tagless-struct cannot be handled") … … 363 343 d.get_name, d.get_type.get_type_str + d.get_type.get_type_str_post, fh.get_name ) 364 344 @auto_exclude_list[ fh.get_name ] = fh 365 return # ç»é²ããªãããã«æã¡åã345 return # 登録しないように打ち切る 366 346 else 367 347 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 ) … … 400 380 return 401 381 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 も無視 404 384 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 も無視 408 388 end 409 389 return @@TYPE_MAP[ tstr.to_sym ] 410 390 end 411 391 412 #=== CDL ãã¡ã¤ã«ã®çæ413 # typedef, signature, celltype, cell ã³ã¼ããçæ414 #file:: FILE çæãããã¡ã¤ã«392 #=== CDL ファイルの生成 393 # typedef, signature, celltype, cell コードを生成 394 #file:: FILE 生成するファイル 415 395 def gen_cdl_file(file) 416 396 417 # ããªãã¸ã»ã«ã¿ã¤ãã®çæ397 # ブリッジセルタイプの生成 418 398 if @@celltypes[ @celltype_name ] == nil then 419 399 @@celltypes[ @celltype_name ] = [ self ] … … 458 438 EOT 459 439 460 # æ§é ä½ã»ã«ã¿ã¤ãã®çæ440 # 構造体セルタイプの生成 461 441 @struct_list.each{ |name, sttype| 462 442 if @@struct_list[ name ] == nil then … … 479 459 end 480 460 481 #=== gen_cdl_file ã§å®ç¾©ããã»ã«ã¿ã¤ãã« æ°ããã»ã«ãå®ç¾©ããã482 # cell ã®ã»ã«ã¿ã¤ãã®ååã¯@celltype_name461 #=== gen_cdl_file で定義したセルタイプに 新しいセルが定義された 462 # cell のセルタイプの名前は @celltype_name 483 463 def new_cell cell 484 464 if cell.get_celltype.get_name != @celltype_name then … … 499 479 file = CFile.open( initializer_celltype_cdl, "w" ) 500 480 501 # TECS åæåã»ã«(ãããã¿ã¤ã宣è¨)481 # TECS 初期化セル(プロトタイプ宣言) 502 482 print_msg " MrubyBridgePlugin: join your VM's cInitialize to #{vm_name}_TECSInitializer.eInitialize\n" 503 483 … … 544 524 end 545 525 546 #=== ãã©ã°ã¤ã³ã CDL ã® POST ã³ã¼ããçæ547 # tmp_plugin_post_code.cdl ã¸ã®åºå526 #=== プラグインが CDL の POST コードを生成 527 # tmp_plugin_post_code.cdl への出力 548 528 def self.gen_post_code file 549 529 dbgPrint "#{self.name}: gen_post_code\n" … … 580 560 # EOT 581 561 582 # gen_post_code ã§çæãã celltype 㯠gen_ep_func ãå¼ã³åºãããªã#847562 # gen_post_code で生成した celltype は gen_ep_func が呼び出されない #847 583 563 # @@struct_list.each{ |name,sttype| 584 564 # file.print <<EOT … … 649 629 end 650 630 651 ####### 以ä¸ã³ã¼ãçæ段é######652 653 #=== åãå£é¢æ°ã®æ¬ä½ã³ã¼ããçæï¼é é¨ã¨æ«å°¾ã¯å¥éåºåï¼654 #ct_name:: Symbol ( ãã©ã°ã¤ã³ã§çæããã) ã»ã«ã¿ã¤ãå ï¼Symbol ã¨ãã¦éããã¦ãã631 ####### 以下コード生成段階 ###### 632 633 #=== 受け口関数の本体コードを生成(頭部と末尾は別途出力) 634 #ct_name:: Symbol (プラグインで生成された) セルタイプ名 .Symbol として送られてくる 655 635 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 ) 656 636 if @@celltypes[ ct_name ] then … … 756 736 end 757 737 758 #=== åãå£é¢æ°ã® preamble (Cè¨èª)ãçæãã 759 # å¿ 760 è¦ãªã preamble é¨ã«åºåãã 761 #file:: FILE åºåå 762 ãã¡ã¤ã« 738 #=== 受け口関数の preamble (C言語)を生成する 739 # 必要なら preamble 部に出力する 740 #file:: FILE 出力先ファイル 763 741 #b_singleton:: bool true if singleton 764 742 #ct_name:: Symbol … … 805 783 806 784 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 のプロトタイプ宣言」にて不要になる見込み 809 787 nsp = NamespacePath.new( :nMruby, true ) 810 788 nsp.append! ct_name … … 1250 1228 if( param.get_size ) then 1251 1229 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 の同時指定 (二重ポインタ) はなし 1253 1231 sz_str = param.get_string.to_s 1254 1232 else 1255 1233 sz_str = "1" 1256 1234 end 1257 # unsigned åã®å ´åã«ã¯ cast ãå¿ 1258 è¦ 1235 # unsigned 型の場合には cast が必要 1259 1236 if ttype.get_original_type.get_type_str != param.get_type.get_type.get_type_str then 1260 1237 cast_str = "(#{param.get_type.get_type_str})" … … 1286 1263 end 1287 1264 1288 #=== ãã©ã°ã¤ã³å¼æ°ignoreUnsigned1265 #=== プラグイン引数 ignoreUnsigned 1289 1266 def set_ignoreUnsigned rhs 1290 1267 if rhs == "true" || rhs == nil then … … 1292 1269 end 1293 1270 end 1294 #=== ãã©ã°ã¤ã³å¼æ°include1271 #=== プラグイン引数 include 1295 1272 def set_include rhs 1296 1273 funcs = rhs.split ',' … … 1310 1287 } 1311 1288 end 1312 #=== ãã©ã°ã¤ã³å¼æ°exclude1289 #=== プラグイン引数 exclude 1313 1290 def set_exclude rhs 1314 1291 funcs = rhs.split ',' … … 1323 1300 } 1324 1301 end 1325 #=== ãã©ã°ã¤ã³å¼æ°auto_exclude1302 #=== プラグイン引数 auto_exclude 1326 1303 def set_auto_exclude rhs 1327 1304 if rhs == "false" then -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/MultiPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2017 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ 53 38 #++ 54 39 55 #== MultiPlugin ã¯ã©ã¹40 #== MultiPlugin クラス 56 41 class MultiPlugin < Node 57 42 def self.get_plugin superClass 58 # case when (ã¤ã¾ã㯠===) ã§ã¯ãæå¾ 59 ããããã«ä¸è´ããªãæ¨¡æ§ 43 # case when (つまりは ===) では、期待したように一致しない模様 60 44 if superClass == SignaturePlugin then 61 45 return SignaturePlugin -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/NotifierPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 11 11 # 12 12 #-- 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 # 免責すること. 49 35 # 50 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 51 ã 52 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 53 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 54 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 55 # ã®è²¬ä»»ãè² ããªãï¼ 36 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 37 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 38 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 39 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 40 # の責任を負わない. 56 41 # 57 42 # $Id$ … … 65 50 class NotifierPlugin < CelltypePlugin 66 51 67 # ---------- ã¢ããã¿é¢æ°ã®çæ-------------52 # ---------- アダプタ関数の生成 ------------- 68 53 # 69 # siHandlerBodyã®åãå£é¢æ°ã¯ï¼ã¿ã¤ã ã¤ãã³ãéç¥ã®éç¥å 70 ã¨ãã¦ç´æ¥æå®ãã 71 # ãã¨ã¯ã§ããªãï¼ã·ã°ããã£ãä¸è´ãã¦ããªããã¨ãçç±ã§ããï¼ãã®ããï¼ã¢ã 72 # ãã¿ã¨ãã¦åä½ããé¢æ°ãçæãï¼ã«ã¼ãã«ããã®å¼åºããTECSã®å¼åºãã«å¤æ㧠73 # ããããã«ããå¿ 74 è¦ãããï¼ 54 # siHandlerBodyの受け口関数は,タイムイベント通知の通知先として直接指定する 55 # ことはできない.シグネチャが一致していないことが理由である.このため,アダ 56 # プタとして動作する関数を生成し,カーネルからの呼出しをTECSの呼出しに変換で 57 # きるようにする必要がある. 75 58 # 76 # åºæ¬çã«ã¯ï¼åãå£æ¯ã«ã¢ããã¿é¢æ°ãçæããã°ååã§ããï¼ãããï¼ããã§ã¯ 77 # ã¡ã¢ãªæ¶è²»éãä¸å¿ 78 è¦ã«å¢å ãã¦ãã¾ãï¼ããã§ï¼éç¥å 79 é¢æ°ã«intptr_tåã®å¼æ° 80 # ã渡ãããã¨ã«çç®ãï¼é¢æ°ã®"ä¸è¬å"ãå³ãï¼ããªãã¡åãå£ã®ããå±æ§(ãã 81 # ã§ã¯ï¼çµåå 82 ã®ã»ã«ï¼æ·»åãªã©ãæã)ãï¼ã¢ããã¿é¢æ°ã®å¼æ°ã¨ãã¦åãåãã 83 # ããã«ãï¼1åã®ã¢ããã¿é¢æ°ã2å以ä¸ã®çµåã«å¯¾ãç¨ãããã¨ãã§ããããã« 84 # ããï¼ 59 # 基本的には,受け口毎にアダプタ関数を生成すれば十分である.しかし,これでは 60 # メモリ消費量が不必要に増加してしまう.そこで,通知先関数にintptr_t型の引数 61 # を渡せることに着目し,関数の"一般化"を図る.すなわち受け口のある属性(ここ 62 # では,結合先のセル,添字などを指す)を,アダプタ関数の引数として受け取れる 63 # ようにし,1個のアダプタ関数を2個以上の結合に対し用いることができるように 64 # する. 85 65 # 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 # う選択肢も可能であるが,実行速度を優先するために,この方法はとらなかった. 104 79 # 105 # ãã®ããï¼ä¸è¬åã¯ä»¥ä¸ã®ãã¿ã¼ã³ã«åé¡ãã¦è¡ãï¼80 # このため,一般化は以下のパターンに分類して行う. 106 81 # 107 # 1. ã»ã«ã¤ã³ããã¯ã¹ã®ã¿ä¸è¬åï¼ã»ã«ã¤ã³ããã¯ã¹ã®ãã¿ã¼ã³æ°ãåãå£é 108 åã® 109 # æ·»åã®ãã¿ã¼ã³æ°ããå¤ããï¼ãããã¯åãå£ãé 110 åã§ãªãå ´åã«è¡ãããï¼ 111 # 2. åãå£é 112 åã®æ·»åã®ã¿ä¸è¬åï¼ãã®å ´åï¼ã»ã«ãã¨ã«ç°ãªãé¢æ°ãç¨ããï¼ 82 # 1. セルインデックスのみ一般化.セルインデックスのパターン数が受け口配列の 83 # 添字のパターン数より多いか,あるいは受け口が配列でない場合に行われる. 84 # 2. 受け口配列の添字のみ一般化.この場合,セルごとに異なる関数を用いる. 113 85 # 114 # ããããï¼ååãå£é¢æ°ã«ã¤ãã¦ï¼ã¢ããã¿é¢æ°ã®çæåæ°ã¯ï¼115 # O(min{ ã»ã«ã¤ã³ããã¯ã¹ã®ãã¿ã¼ã³æ°, æ·»åã®ãã¿ã¼ã³æ°})116 # ã¨ãªãï¼86 # これより,各受け口関数について,アダプタ関数の生成個数は, 87 # O(min{セルインデックスのパターン数, 添字のパターン数}) 88 # となる. 117 89 # 118 # ãã©ã°ã¤ã³ã§ã®å¦çãã¯ã³ãã¹ã§è¡ãããã«ï¼tecsgen.cfgã§ã¯ã¢ããã¿é¢æ°ãç´119 # æ¥æå®ããã®ã§ã¯ãªãï¼ä»£ããã«ã¢ããã¿é¢æ°ã表ããã¯ãã使ç¨ããï¼ãã®120 # ãã¯ãã¯ã¢ããã¿é¢æ°ãã³ãã«ã¨å¼ã¶ãã¨ã«ããï¼121 # ã¢ããã¿é¢æ°ãã³ãã«ã¯ï¼æ¬¡ã®2åã®è¦ç´ ããæãï¼122 # - ã¢ããã¿é¢æ°ã¸ã®ã®ãã¤ã³ã¿123 # - ã¢ããã¿é¢æ°ã®å¼æ°90 # プラグインでの処理をワンパスで行うために,tecsgen.cfgではアダプタ関数を直 91 # 接指定するのではなく,代わりにアダプタ関数を表すマクロを使用する.この 92 # マクロはアダプタ関数ハンドルと呼ぶことにする. 93 # アダプタ関数ハンドルは,次の2個の要素から成る. 94 # - アダプタ関数へののポインタ 95 # - アダプタ関数の引数 124 96 # 125 97 # $Id$ … … 128 100 class AdapterGenerator 129 101 130 # çµåå 131 ã«é¢ããå±æ§ãå«ãï¼ã»ã«ï¼åãå£é 132 åã®æ·»åããæãï¼ 133 # åä¸ã®EntryPropertyã¨ãªãçµåã¯ï¼å 134 ¨ãåãæ¹æ³ã§ãã®åãå£é¢æ°ãå¼ã³ 135 # åºããï¼ 102 # 結合先に関する属性を含む.セル,受け口配列の添字から成る. 103 # 同一のEntryPropertyとなる結合は,全く同じ方法でその受け口関数を呼び 104 # 出せる. 136 105 # @private 137 106 class EntryProperty 138 # @return [Cell] åãå£å´ã®ã»ã«ï¼107 # @return [Cell] 受け口側のセル. 139 108 attr_reader :cell 140 109 141 # @return [Integer, nil] åãå£é 142 åã®æ·»åï¼é 143 åã§ãªãå ´åã¯nilï¼ 110 # @return [Integer, nil] 受け口配列の添字.配列でない場合はnil. 144 111 attr_reader :subscript 145 112 … … 153 120 end 154 121 155 # åå¤æ§ã®å®ç¾©ï¼Hashã®ãã¼ã¨ãã¦ä½¿ç¨ããã®ã«å¿ 156 è¦ï¼ 122 # 同値性の定義.Hashのキーとして使用するのに必要. 157 123 def eql?(o) @cell == o.cell && @subscript == o.subscript end 158 124 def hash() @cell.hash ^ @subscript.hash end … … 161 127 # @private 162 128 class EntryPort 163 # @param [Port] port çµåå 164 ã®ã»ã«ã®ã»ã«ã¿ã¤ãã®åãå£ï¼ 129 # @param [Port] port 結合先のセルのセルタイプの受け口. 165 130 def initialize(port, prefix) 166 131 @port = port 167 132 @global_name = "#{prefix}_#{@port.get_celltype.get_global_name}_#{@port.get_name}" 168 133 169 # åãå£é¢æ°åï¼siHandlerBodyãæ³å®ãã¦ããã®ã§ï¼é¢æ°åã¯mainã§åºå®ã§ããï¼134 # 受け口関数名.siHandlerBodyを想定しているので,関数名はmainで固定である. 170 135 @entry_fn_name = "#{@port.get_celltype.get_global_name}_#{@port.get_name}_main" 171 136 … … 174 139 end 175 140 176 # @return [String] ã°ãã¼ãã«ã«ä¸æ(ãªãã®ã¨ãã¦æ±ãããã)ãªèå¥åï¼141 # @return [String] グローバルに一意(なものとして扱えるよう)な識別子. 177 142 attr_reader :global_name 178 143 … … 180 145 attr_reader :port 181 146 182 # æå®ããEntryPropertyã«å¯¾å¿ããã¢ããã¿é¢æ°ãã³ãã«ãåå¾ããï¼147 # 指定したEntryPropertyに対応するアダプタ関数ハンドルを取得する. 183 148 # @param [EntryProperty] ep 184 # @return [String] ã¢ããã¿é¢æ°ãã³ãã«ï¼149 # @return [String] アダプタ関数ハンドル. 185 150 # @private 186 151 def adapter_handle_for_entry_property(ep) … … 192 157 end 193 158 194 # çµåå 195 ã®æ 196 å ±ã«å¿ããã¢ããã¿é¢æ°ãã½ã¼ã¹ã»ãããã¼ã«åºåããï¼ 197 # ä¸è¬åæå®ã¯ï¼`cell`ã¾ãã¯`subscript`ã®ä¸æ¹ã®ã¿è¡ããã¨ãã§ããï¼ 159 # 結合先の情報に応じたアダプタ関数をソース・ヘッダーに出力する. 160 # 一般化指定は,`cell`または`subscript`の一方のみ行うことができる. 198 161 # 199 162 # @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 の場合のみ有効 205 167 # @private 206 168 def generate_inner(context, fn_name, cell, subscript, callee_ct=nil) … … 213 175 ct = @port.get_celltype 214 176 215 # ã·ã³ã°ã«ãã³ã»ã«ã¿ã¤ã以å¤ã§ã¯ï¼CELLIDXã®æå®ãå¿ 216 è¦ï¼ 177 # シングルトンセルタイプ以外では,CELLIDXの指定が必要. 217 178 unless ct.is_singleton? 218 179 if cell == :generic … … 220 181 # params << "(CELLIDX)extinf" 221 182 else 222 # ã»ã«ã®CELLIDXãå¾ã183 # セルのCELLIDXを得る 223 184 if ct.has_INIB? || ct.has_CB? 224 185 params << ct.get_name_array(cell)[7] … … 229 190 end 230 191 231 # åãå£é 232 åã®æ·»åï¼ 192 # 受け口配列の添字. 233 193 if @port.get_array_size 234 194 if subscript == :generic … … 248 208 end 249 209 250 # æå®ããJoinã«å¯¾å¿ããã¢ããã¿é¢æ°ãã³ãã«ãåå¾ããï¼251 # @return [Array] ã¢ããã¿é¢æ°ãã³ãã«ï¼210 # 指定したJoinに対応するアダプタ関数ハンドルを取得する. 211 # @return [Array] アダプタ関数ハンドル. 252 212 def make_adapter_handle(join) 253 213 prop = EntryProperty.from_join(join) … … 259 219 end 260 220 261 # ã½ã¼ã¹ã»ãããã¼ã®è¨è¿°ãçæããï¼221 # ソース・ヘッダーの記述を生成する. 262 222 # @param [AdapterGenerator] context 263 223 def generate(context) … … 273 233 no_cellidx = false 274 234 if !(ct.has_INIB? || ct.has_CB?) 275 # CB, INIB æé©åã«ããï¼CB, INIBã両æ¹ä¸è¦ã«ãªã£ãã±ã¼ã¹ï¼276 # CELLIDX ãä¸è¦ã§ããã®ã§ï¼ã»ã«ã«ã¤ãã¦ä¸è¬åãã¦ãæå³277 # ã¯ãªãã®ã§ï¼æ·»åã«ããä¸è¬åãé¸æããï¼235 # CB, INIB最適化により,CB, INIBが両方不要になったケース. 236 # CELLIDXが不要であるので,セルについて一般化しても意味 237 # はないので,添字による一般化を選択する. 278 238 generalize_by_cell_idx = false 279 239 no_cellidx = true 280 240 281 # å 282 ¨ã¦ã®ã»ã«ãåä¸è¦ããï¼ 241 # 全てのセルを同一視する. 283 242 cells = { @props[0].cell => @props } 284 243 285 244 header_file.print " * No INIB & CB: generalized by subscript\n" 286 245 elsif @port.get_array_size 287 # ä¸è¬åãã¿ã¼ã³ã®åé¡ãè¡ãããã«ï¼åãå£å´ã»ã«ãæ·»åã®288 # ãã¿ã¼ã³æ°ãåæãã¦ï¼æé©ãªæ¹ãé¸æããï¼246 # 一般化パターンの分類を行うために,受け口側セルや添字の 247 # パターン数を分析して,最適な方を選択する. 289 248 generalize_by_cell_idx = cells.length >= subscripts.length 290 249 if generalize_by_cell_idx … … 294 253 end 295 254 else 296 # 常ã«CELLIDXã§ä¸è¬å255 # 常にCELLIDXで一般化 297 256 generalize_by_cell_idx = true 298 257 header_file.print " * non-array entry port: generalized by cell\n" … … 302 261 303 262 if generalize_by_cell_idx 304 # CELLIDX ã«ã¤ãã¦ä¸è¬å263 # CELLIDXについて一般化 305 264 subscripts.each { |subscript, props| 306 265 if subscript 307 266 fn_name = "#{@global_name}_adap_#{subscript}" 308 267 else 309 # åãå£é 310 åã§ãªãå ´å 268 # 受け口配列でない場合 311 269 fn_name = "#{@global_name}_adap" 312 270 end … … 318 276 handle = adapter_handle_for_entry_property(prop) 319 277 320 # ã»ã«ã®CELLIDXãå¾ã278 # セルのCELLIDXを得る 321 279 if ct.has_INIB? || ct.has_CB? 322 280 idx = ct.get_name_array(prop.cell)[7] … … 329 287 } 330 288 else 331 # æ·»åã«ã¤ãã¦ä¸è¬å289 # 添字について一般化 332 290 cells.each { |cell, props| 333 291 if no_cellidx 334 # CB/INIB ãªã292 # CB/INIB なし 335 293 fn_name = "#{@global_name}_adap" 336 294 else … … 358 316 attr :header_file 359 317 360 # @param [String] celltype_name ãã³ãã©é¢æ°ã®ã»ã«ã¿ã¤ãï¼361 # @param [String] prefix ååè¡çªãé²ãããã®ãã¬ãã£ãã¯ã¹ï¼318 # @param [String] celltype_name ハンドラ関数のセルタイプ. 319 # @param [String] prefix 名前衝突を防ぐためのプレフィックス. 362 320 def initialize(celltype_name, prefix) 363 321 @celltype_name = celltype_name … … 369 327 370 328 # ===AdapterGenerator#make_adapter_handle=== 371 # æå®ããçµåã®å¼åºããè¡ãããã®ã¢ããã¿é¢æ°ãã³ãã«ãçæããï¼372 # @return [Array] ã¢ããã¿é¢æ°ãã³ãã«ï¼329 # 指定した結合の呼出しを行うためのアダプタ関数ハンドルを生成する. 330 # @return [Array] アダプタ関数ハンドル. 373 331 def make_adapter_handle(join) 374 332 entry_port = @entry_ports[join.get_rhs_port] … … 382 340 383 341 # ===AdapterGenerator#finish=== 384 # ååãå£ã«å¯¾ãï¼ã¢ããã¿é¢æ°ãçæããï¼342 # 各受け口に対し,アダプタ関数を生成する. 385 343 def finish 386 344 @source_file = AppFile.open( "#{$gen}/#{@celltype_name}.c" ) … … 392 350 @header_file.print "\n/* Generated by #{self.class.name} */\n\n" 393 351 394 # NotifierPlugin ã使ç¨ããã»ã«ã¿ã¤ããè¤æ°ããå ´åï¼ããããã«395 # 対ãAdapterGenerator#finishãå¼ã³åºãããï¼tTimeEventHandler.hã«396 # ç¶ãã¦æ¸ãè¾¼ãã§ãã¾ãã¨ï¼ãããã¼ã¬ã¼ãã®é¢ä¿ã§2åç®ä»¥éã®è¨è¿°397 # ãèªã¿è¾¼ã¾ããªããªã£ã¦ãã¾ãï¼ãã®ããï¼ãã¡ã¤ã«å + ã»ã«ã¿ã¤ãå398 # ã¨ããå°ãç¹æ®ãªãããã¼ã¬ã¼ããç¨ããï¼352 # NotifierPluginを使用するセルタイプが複数ある場合,それぞれに 353 # 対しAdapterGenerator#finishが呼び出される.tTimeEventHandler.hに 354 # 続けて書き込んでしまうと,ヘッダーガードの関係で2回目以降の記述 355 # が読み込まれなくなってしまう.このため,ファイル名 + セルタイプ名 356 # という少し特殊なヘッダーガードを用いる. 399 357 header_guard = "#{@celltype_name}_H_#{@prefix}" 400 358 … … 402 360 @header_file.print "\#define #{header_guard}\n\n" 403 361 404 # ã«ã¼ãã«ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ãå®è¡ããéï¼ãã³ãã©åãå£ã®ã»ã«ã¿ã¤ã 405 # ã®ã»ã«CBã®å®ç¾©ãå¿ 406 è¦ãªå ´åãããï¼ 362 # カーネルコンフィギュレータを実行する際,ハンドラ受け口のセルタイプ 363 # のセルCBの定義が必要な場合がある. 407 364 @header_file.print "\#include \"#{@celltype_name}_aux.h\"\n\n" 408 365 409 # çµåå 410 ã®ã»ã«ã¿ã¤ãã®å®ç¾©ã¯ï¼èªåã®ã»ã«ã®tecsgen.hãããå 411 ã« 412 # èªã¿è¾¼ã¾ãªããã°ãªããªããï¼ãã®ãã©ã°ã¤ã³ãè¤æ°å®è¡ãããã¨ï¼ 413 # é åºãå´©ãã¦ãã¾ãï¼ããã§ï¼çµåå 414 ã®ã»ã«ã¿ã¤ãã®å®ç¾©ã¯ããä¸ã¤ã® 415 # ãããã¼ãã¡ã¤ã«(tCelltypeName_aux.h)ããèªã¿è¾¼ãããã«ããï¼ 366 # 結合先のセルタイプの定義は,自分のセルのtecsgen.hよりも先に 367 # 読み込まなければならないが,このプラグインが複数実行されると, 368 # 順序が崩れてしまう.そこで,結合先のセルタイプの定義はもう一つの 369 # ヘッダーファイル(tCelltypeName_aux.h)から読み込むようにする. 416 370 aux_header_file = AppFile.open( "#{$gen}/#{@celltype_name}_aux.h" ) 417 371 aux_header_file.print "\n/* Generated by #{self.class.name} */\n\n" … … 424 378 cb_type_only_guard = "#{@celltype_name}_AUX_H_#{@prefix}_CB_TYPE_ONLY" 425 379 426 # çµåå 427 ã®ã»ã«ã¿ã¤ãã®å®ç¾©ãèªã¿è¾¼ã 380 # 結合先のセルタイプの定義を読み込む 428 381 aux_header_file.print "#ifndef TOPPERS_CB_TYPE_ONLY\n" 429 382 aux_header_file.print "#define TOPPERS_CB_TYPE_ONLY\n" … … 456 409 end 457 410 458 # ------ éç¥ã®ãã³ãã©ã®ç¨®é¡ã®å®ç¾©-------411 # ------ 通知のハンドラの種類の定義 ------- 459 412 460 413 class Handler … … 466 419 end 467 420 468 # é常ã®ãã³ãã©421 # 通常のハンドラ 469 422 EVENT_HANDLER = Handler::new("ciNotificationHandler") 470 423 471 # ã¨ã©ã¼ãã³ãã© (é常ã®ãã³ãã©ã失æããå ´åã«å¼ã³åºããã)424 # エラーハンドラ (通常のハンドラが失敗した場合に呼び出される) 472 425 ERROR_HANDLER = Handler::new("ciErrorNotificationHandler") 473 426 … … 492 445 end 493 446 494 # ------ éç¥ã®å±æ§ã®å®ç¾©-------447 # ------ 通知の属性の定義 ------- 495 448 # 496 # ãã³ãã©ã¿ã¤ãã«åè´ããªãå±æ§ãæå®ãããå ´åã« 497 # ã¨ã©ã¼ãåºåã§ãããããå 498 ¨ã¦ã®å±æ§ãããã§åæããã 449 # ハンドラタイプに合致しない属性が指定された場合に 450 # エラーを出力できるよう、全ての属性をここで列挙する。 499 451 500 452 SETVAR_ADDR_ATTR = HandlerAttribute::new("setVariableAddress") … … 512 464 ] 513 465 514 # ------ ãã³ãã©ã¿ã¤ãã®å®ç¾©-------466 # ------ ハンドラタイプの定義 ------- 515 467 516 468 class BaseHandlerType … … 526 478 527 479 #=== 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であるもの) 533 484 def validate_join(handler, cell, join) 534 485 return !generate_attr_map(handler, cell).nil? … … 536 487 537 488 #=== 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を返す。 542 493 # 543 # handler:: Handler : ãã³ãã©544 # cell:: Cell : ã»ã«494 # handler:: Handler : ハンドラ 495 # cell:: Cell : セル 545 496 def generate_attr_map(handler, cell) 546 497 map = {} … … 552 503 join = join_list.get_item(attr_name.to_sym) 553 504 554 # ãã®ã»ã«ã¿ã¤ãã«ããã¦å¿ 555 é ã®å±æ§ã? 505 # このセルタイプにおいて必須の属性か? 556 506 is_required = @required_attributes.include?(known_attr) 557 507 558 # å±æ§ã®æå®ãä¸è¶³ãã¦ãã? or éå°? 559 # 注: ãã³ãã©ã¿ã¤ãã®å¤å¥ã«ã¯ãã»ã«ã§å¤ãæå®ããã¦ããã 560 # ãèæ 561 ®ããããã»ã«ã¿ã¤ãã§åæå¤ãæå®ããã¦ãã¦ãã 562 # ããã¯ãã³ãã©ã¿ã¤ãã®æ±ºå®ã«å½±é¿ããªãã 508 # 属性の指定が不足している? or 過剰? 509 # 注: ハンドラタイプの判別には、セルで値が指定されているか 510 # が考慮される。セルタイプで初期値が指定されていても、 511 # それはハンドラタイプの決定に影響しない。 563 512 return nil if join.nil? != !is_required 564 513 565 # å¿ 566 è¦ã®ãªãå±æ§ã§ãããæå®ãããã¦ããªãã®ã§é£ã°ã 514 # 必要のない属性であり、指定もされていないので飛ばす 567 515 next if join.nil? 568 516 569 # TODO: attr ã®çµåã§ãããã¨ãæ¤è¨¼517 # TODO: attrの結合であることを検証 570 518 571 519 map[known_attr] = join … … 576 524 577 525 #=== NotifierPlugin#BaseHandlerType#gen_cfg_handler_type 578 # ã¿ã¤ã ã¤ãã³ãã®éç¥ã®ç¨®é¡ã表ãã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã®è¨è¿°ãçæããStringã¾ãã¯nilãè¿ã579 # handler:: Handler : ãã³ãã©526 # タイムイベントの通知の種類を表すコンフィギュレータの記述を生成し、Stringまたはnilを返す 527 # handler:: Handler : ハンドラ 580 528 def gen_cfg_handler_type(handler) 581 529 raise "called abstract method gen_cfg_handler_type" … … 583 531 584 532 #=== 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であるもの) 588 536 # 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 : アダプタ関数を生成するオブジェクト 592 540 def gen_cfg_handler_parameters(handler, join, attrMap, cell, adpt_gen) 593 541 return nil … … 595 543 596 544 #=== NotifierPlugin#BaseHandlerType#might_fail 597 # éç¥ã®éãã¨ã©ã¼ãçºçãããã®çµæã¨ã©ã¼éç¥ãå¼ã¶å¿ 598 è¦ãçãã 599 # ãã©ãããè¿ãã 545 # 通知の際、エラーが発生し、その結果エラー通知を呼ぶ必要が生じる 546 # かどうかを返す。 600 547 def might_fail 601 548 return false … … 613 560 id_attr = join.get_rhs_cell.get_celltype.find(:id) 614 561 if id_attr_join 615 # ã»ã«çææã«åæåããå ´å562 # セル生成時に初期化する場合 616 563 id = id_attr_join.get_rhs.to_s 617 564 else 618 # ã»ã«ã¿ã¤ãã®åæåå¤ã使ãå ´å565 # セルタイプの初期化値を使う場合 619 566 id = id_attr.get_initializer.to_s 620 567 end 621 568 622 # $id$ çã®ç½®æ569 # $id$等の置換 623 570 name_array = taskCell.get_celltype.get_name_array(taskCell) 624 571 id = taskCell.get_celltype.subst_name(id, name_array) … … 673 620 var_value = attrMap[SETVAR_VALUE_ATTR].get_rhs.to_s 674 621 675 # $id$ çã®ç½®æ622 # $id$等の置換 676 623 name_array = cell.get_celltype.get_name_array(cell) 677 624 var_addr = cell.get_celltype.subst_name(var_addr, name_array) … … 702 649 var_addr = attrMap[SETVAR_ADDR_ATTR].get_rhs.to_s 703 650 704 # $id$ çã®ç½®æ651 # $id$等の置換 705 652 name_array = cell.get_celltype.get_name_array(cell) 706 653 var_addr = cell.get_celltype.subst_name(var_addr, name_array) … … 729 676 var_addr = attrMap[INCVAR_ADDR_ATTR].get_rhs.to_s 730 677 731 # $id$ çã®ç½®æ678 # $id$等の置換 732 679 name_array = cell.get_celltype.get_name_array(cell) 733 680 var_addr = cell.get_celltype.subst_name(var_addr, name_array) … … 753 700 id_attr = join.get_rhs_cell.get_celltype.find(:id) 754 701 if id_attr_join 755 # ã»ã«çææã«åæåããå ´å702 # セル生成時に初期化する場合 756 703 id = id_attr_join.get_rhs.to_s 757 704 else 758 # ã»ã«ã¿ã¤ãã®åæåå¤ã使ãå ´å705 # セルタイプの初期化値を使う場合 759 706 id = id_attr.get_initializer.to_s 760 707 end 761 708 762 # $id$ çã®ç½®æ709 # $id$等の置換 763 710 name_array = semaphoreCell.get_celltype.get_name_array(semaphoreCell) 764 711 id = semaphoreCell.get_celltype.subst_name(id, name_array) … … 793 740 id_attr = join.get_rhs_cell.get_celltype.find(:id) 794 741 if id_attr_join 795 # ã»ã«çææã«åæåããå ´å742 # セル生成時に初期化する場合 796 743 id = id_attr_join.get_rhs.to_s 797 744 else 798 # ã»ã«ã¿ã¤ãã®åæåå¤ã使ãå ´å745 # セルタイプの初期化値を使う場合 799 746 id = id_attr.get_initializer.to_s 800 747 end 801 748 flg_pattern = attrMap[SETFLG_FLAG_ATTR].get_rhs.to_s 802 749 803 # $id$ çã®ç½®æ750 # $id$等の置換 804 751 name_array = eventflagCell.get_celltype.get_name_array(eventflagCell) 805 752 id = eventflagCell.get_celltype.subst_name(id, name_array) … … 834 781 id_attr = join.get_rhs_cell.get_celltype.find(:id) 835 782 if id_attr_join 836 # ã»ã«çææã«åæåããå ´å783 # セル生成時に初期化する場合 837 784 id = id_attr_join.get_rhs.to_s 838 785 else 839 # ã»ã«ã¿ã¤ãã®åæåå¤ã使ãå ´å786 # セルタイプの初期化値を使う場合 840 787 id = id_attr.get_initializer.to_s 841 788 end 842 789 843 # $id$ çã®ç½®æ790 # $id$等の置換 844 791 name_array = dataqueueCell.get_celltype.get_name_array(dataqueueCell) 845 792 id = dataqueueCell.get_celltype.subst_name(id, name_array) … … 868 815 sent_value = attrMap[SNDDTQ_VALUE_ATTR].get_rhs.to_s 869 816 870 # $id$ çã®ç½®æ817 # $id$等の置換 871 818 name_array = cell.get_celltype.get_name_array(cell) 872 819 sent_value = cell.get_celltype.subst_name(sent_value, name_array) … … 910 857 end 911 858 def gen_cfg_handler_parameters(handler, join, attrMap, cell, adpt_gen) 912 # tTimeEventHandlerã®çµåå 913 ãåå¾ 859 # tTimeEventHandlerの結合先を取得 914 860 handler_cell = join.get_rhs_cell 915 861 call_join = handler_cell.get_join_list.get_item(:ciHandlerBody) 916 862 917 # çµåããã¦ããªãå ´åã¯tecsgenãã¨ã©ã¼ãåºãã¯ããªã®ã§ããã§ã¯918 # ã¨ã©ã¼ã«ããç¡è¦ããï¼863 # 結合されていない場合はtecsgenがエラーを出すはずなのでここでは 864 # エラーにせず無視する. 919 865 return [] unless call_join 920 866 921 # ã¢ããã¿é¢æ°ãã³ãã«ãåå¾867 # アダプタ関数ハンドルを取得 922 868 adapter_handle = adpt_gen.make_adapter_handle(call_join) 923 869 return [adapter_handle[1], adapter_handle[0]] … … 953 899 954 900 #@celltype:: Celltype 955 #@option:: String : ãªãã·ã§ã³æåå901 #@option:: String :オプション文字列 956 902 def initialize( celltype, option ) 957 903 super 958 904 @plugin_arg_check_proc_tab = NotifierPluginArgProc 959 905 @plugin_arg_str = option 960 @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' ) # åå¾ã® "" ãåãé¤ã906 @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' ) # 前後の "" を取り除く 961 907 @plugin_arg_str.sub!( /(.*)"\z/, '\1' ) 962 908 @factory = nil … … 996 942 kernelCfg.print "\#include \"tTimeEventHandler.h\"\n" 997 943 998 # ã¢ããã¿é¢æ°ãçæããæºå944 # アダプタ関数を生成する準備 999 945 @adpt_gen = AdapterGenerator.new("tTimeEventHandler", @celltype.get_global_name) 1000 946 1001 # å±æ§ç½®æãè¡ãããã¨ãæ¤è¨¼ããã1002 # ããã§è¡ãã®ã¯ãfactoryã§æå®ãããå±æ§åã1003 # åå¨ãããã¨ã確èªããããªããã°ã¨ã©ã¼ãåºåãããã¨ã®ã¿ã§ããã1004 # ã»ã«ãã¨ã®å¦çã®æä¸ã«ã¨ã©ã¼ãåºåãããã¨ãå¯è½ã§ã¯ãããã1005 # ããããã¨ã»ã«ã¿ã¤ãå´ã®åé¡ã§ããã®ã«ãããããããã»ã«ãã¨ã«1006 # ã¨ã©ã¼ã表示ããã¦ãã¾ãã947 # 属性置換が行えることを検証する。 948 # ここで行うのは、factoryで指定された属性名が 949 # 存在することを確認し、しなければエラーを出力することのみである。 950 # セルごとの処理の最中にエラーを出力することも可能ではあるが、 951 # そうするとセルタイプ側の問題であるのにもかかわらず、セルごとに 952 # エラーが表示されてしまう。 1007 953 # {{attribute_name}} -> attribute_value 1008 954 @factory.scan(/\{\{([a-zA-Z0-9_]*?)\}\}/) { |match| 1009 955 name = $1.to_sym 1010 956 1011 # {{_handler_params_}} ã¯ãã³ãã©ã«é¢ããæå®ããã©ã°ã¤ã³å 1012 ã§å¤ãçæããã 957 # {{_handler_params_}} はハンドラに関する指定。プラグイン内で値が生成される 1013 958 next if name == :_handler_params_ 1014 959 … … 1024 969 } 1025 970 1026 # ã¢ããã¿é¢æ°ã®çæãå®äºããã971 # アダプタ関数の生成を完了させる 1027 972 @adpt_gen.finish 1028 973 … … 1039 984 handler_flag = nil 1040 985 1041 # ignoreErrors ãåå¾986 # ignoreErrorsを取得 1042 987 ignoreErrors_attr_join = cell.get_join_list.get_item(:ignoreErrors) 1043 988 ignoreErrors_attr = cell.get_celltype.find(:ignoreErrors) 1044 989 if ignoreErrors_attr_join 1045 # ã»ã«çææã«åæåããå ´å990 # セル生成時に初期化する場合 1046 991 ignoreErrors = ignoreErrors_attr_join.get_rhs.to_s 1047 992 else 1048 # ã»ã«ã¿ã¤ãã®åæåå¤ã使ãå ´å993 # セルタイプの初期化値を使う場合 1049 994 ignoreErrors = ignoreErrors_attr.get_initializer.to_s 1050 995 end … … 1058 1003 end 1059 1004 1060 # ãã¡ã¤ã³æå®ç¨æåå1005 # ドメイン指定用文字列 1061 1006 pre_text = "" 1062 1007 post_text = "\n" … … 1064 1009 1065 1010 [EVENT_HANDLER, ERROR_HANDLER].each { |handler| 1066 # å¼ã³å£ã®çµåãåå¾1011 # 呼び口の結合を取得 1067 1012 call_join = cell.get_join_list.get_item(handler.call_port_name.to_sym) 1068 1013 domain_root = cell.get_region.get_domain_root … … 1078 1023 end 1079 1024 1080 # ãã³ãã©ã¿ã¤ããå¤å¥ãã1025 # ハンドラタイプを判別する 1081 1026 matches = HANDLER_TYPES.select { |handler_type| 1082 1027 handler_type.validate_join(handler, cell, call_join) … … 1088 1033 end 1089 1034 1090 # æåã«è¦ã¤ãã£ãæå¹ãªãã³ãã©ã¿ã¤ãã使ç¨1035 # 最初に見つかった有効なハンドラタイプを使用 1091 1036 ht = matches[0] 1092 1037 1093 # ãã¡ã¤ã³ãã©ã°ã¤ã³ãæå®ããã¦ããå ´åãæå±ãã¡ã¤ã³ã®ãã§ãã¯1038 # ドメインプラグインが指定されている場合、所属ドメインのチェック 1094 1039 domain_root = cell.get_region.get_domain_root 1095 1040 if domain_root.get_domain_type then … … 1119 1064 end 1120 1065 dbgPrint "#{self.class.name}: match pattern 2.\n" 1121 when NullHandlerType.new # ã¨ã©ã¼éç¥ãæå®ãã¦ããªã1066 when NullHandlerType.new # エラー通知を指定していない 1122 1067 dbgPrint "#{self.class.name}: match pattern 3.\n" 1123 1068 end … … 1140 1085 end 1141 1086 1142 # éç¥ãã³ãã©ã§ãã¨ã©ã¼ãçºçããã¯ãããªããã®ã«ãã¨ã©ã¼ãã³ãã©ãæå®ããã¦ããã1143 # ãããã¯ãã®éã®ãã¿ã¼ã³ãæ¤åºããã1144 # (handler_flag ãnilã§ããå ´åããã³ãã©ã¿ã¤ããä¸æã§ãããã¨ã©ã¼ãçºçãããä¸æ1145 # ãªãããæ¤åºã¯è¡ããªãã)1087 # 通知ハンドラで「エラーが発生するはずがない」のに「エラーハンドラが指定されている」 1088 # もしくはその逆のパターンを検出する。 1089 # (handler_flagがnilである場合、ハンドラタイプが不明であり、エラーが発生するか不明 1090 # なため、検出は行わない。) 1146 1091 if handler == ERROR_HANDLER && !ht.is_a?(NullHandlerType) && !event_handler_might_fail 1147 1092 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.", … … 1158 1103 end 1159 1104 1160 # éç¥æ¹æ³ã®éçAPIè¨è¿°ãçæãã1105 # 通知方法の静的API記述を生成する 1161 1106 handler_flag = ht.gen_cfg_handler_type(handler) 1162 1107 handler_flags << handler_flag if handler_flag … … 1172 1117 } 1173 1118 1174 # $id$ çã®ç½®æ1119 # $id$等の置換 1175 1120 name_array = cell.get_celltype.get_name_array(cell) 1176 1121 handler_args.collect! { |e| … … 1182 1127 } 1183 1128 1184 # tecsgen.cfg ã®è¨è¿°ãçæããã1185 # factory ã«å¯¾ãããã©ã¡ã¼ã¿ç½®æãè¡ãã1129 # tecsgen.cfgの記述を生成する。 1130 # factoryに対し、パラメータ置換を行う。 1186 1131 # {{attribute_name}} -> attribute_value 1187 1132 text = @factory.gsub(/\{\{([a-zA-Z0-9_]*?)\}\}/) { |match| … … 1189 1134 subst_attr = cell.get_celltype.find(name) 1190 1135 1191 # {{_handler_params_}} ã¯ãã³ãã©ã®æå®ã«ç½®æããã1136 # {{_handler_params_}} はハンドラの指定に置換する。 1192 1137 if name == :_handler_params_ 1193 1138 args_joined = handler_flags.join(' | ') … … 1200 1145 1201 1146 unless subst_attr 1202 # å±æ§ãè¦ã¤ãããªãã¨ããã¨ã©ã¼ã¯ãã§ã«å ±åããã¦ããã®ã§1203 # ããã§ã¯ããã¼å¤ãè¿ãã¦ããã ãã§ããã1147 # 属性が見つからないというエラーはすでに報告されているので 1148 # ここではダミー値を返しておくだけである。 1204 1149 next "" 1205 1150 end … … 1207 1152 subst_attr_join = cell.get_join_list.get_item(name) 1208 1153 if subst_attr_join 1209 # ã»ã«çææã«åæåããå ´å1154 # セル生成時に初期化する場合 1210 1155 subst = subst_attr_join.get_rhs.to_s 1211 1156 else 1212 # ã»ã«ã¿ã¤ãã®åæåå¤ã使ãå ´å1157 # セルタイプの初期化値を使う場合 1213 1158 subst = subst_attr.get_initializer.to_s 1214 1159 end 1215 1160 1216 # $id$ çã®ç½®æ1161 # $id$等の置換 1217 1162 cell.get_celltype.subst_name(subst, name_array) 1218 1163 } 1219 1164 1220 # åºå(CRE_xxx)1165 # 出力 (CRE_xxx) 1221 1166 kernelCfg.print pre_text 1222 1167 kernelCfg.print indent, text, "\n" -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/OpaqueMarshalerPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 54 39 55 40 #== OpaqueMarshaler 56 # OpaqueRPC ç¨ã®ãã¼ã·ã£ã©ãã¢ã³ãã¼ã·ã£ã©ã»ã«ã¿ã¤ããçæããã·ã°ããã£ãã©ã°ã¤ã³41 # OpaqueRPC 用のマーシャラ、アンマーシャラセルタイプを生成するシグニチャプラグイン 57 42 58 43 require_tecsgen_lib "lib/GenOpaqueMarshaler.rb" … … 76 61 # check_PPAllocator 77 62 if @signature.need_PPAllocator?(true) then 78 @PPAllocatorSize = 1 # PPAllocatorã®å¿ 79 è¦æ§æã®ããã«è¨å® (ãµã¤ãºã¯ä½¿ãããªã) 63 @PPAllocatorSize = 1 # PPAllocatorの必要性有のために設定 (サイズは使われない) 80 64 necessity = "Necessary" 81 65 else -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/OpaqueRPCPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ 53 38 #++ 54 39 55 # 以ä¸ãä»®å®ï¼å¶éäºé 56 ï¼ 57 # å¼ã³å 58 ãå¼ã³å 59 ã®ã¨ã³ãã£ã¢ã³ãchar, short, int_t, long_t, intptr_t ã®ãµã¤ãºãåã 60 # æ符å·ãç¡ç¬¦å·ã§ãµã¤ãºãåã 40 # 以下を仮定(制限事項) 41 # 呼び元、呼び先のエンディアン、char, short, int_t, long_t, intptr_t のサイズが同じ 42 # 有符号、無符号でサイズが同じ 61 43 62 44 require_tecsgen_lib "lib/GenOpaqueMarshaler.rb" … … 68 50 include GenParamCopy 69 51 70 # OpaqueRPCPlugin å°ç¨ã®ãªãã·ã§ã³ 71 OpaqueRPCPluginArgProc = RPCPluginArgProc.dup # è¤è£½ãä½ã£ã¦å 72 ãå¤æ´ããªãããã«ãã 52 # OpaqueRPCPlugin 専用のオプション 53 OpaqueRPCPluginArgProc = RPCPluginArgProc.dup # 複製を作って元を変更しないようにする 73 54 OpaqueRPCPluginArgProc[ "noClientSemaphore" ] = Proc.new { |obj,rhs| obj.set_noClientSemaphore rhs } 74 55 75 #=== RPCPlugin ã® initialize 76 # 説æ㯠ThroughPlugin (plugin.rb) ãåç 77 § 56 #=== RPCPlugin の initialize 57 # 説明は ThroughPlugin (plugin.rb) を参照 78 58 def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell ) 79 59 super … … 98 78 gen_marshaler_celltype 99 79 100 # ãã£ã³ãã« composite ã»ã«ã¿ã¤ãã®çæ101 # ããã§çæããã CDL ãã¡ã¤ã«ã¯ãtecsgen ãç´æ¥ import ããã®ã§ã¯ãªã102 # ã»ã«ã³ã¼ãã® CDL ãã import ããã80 # チャンネル composite セルタイプの生成 81 # ここで生成された CDL ファイルは、tecsgen が直接 import するのではなく 82 # セルコードの CDL から import される 103 83 104 84 f = CFile.open( @rpc_client_channel_celltype_file_name, "w" ) 105 # åãå 106 容ãäºåº¦æ¸ãå¯è½æ§ãã (AppFile ã¯ä¸å¯) 85 # 同じ内容を二度書く可能性あり (AppFile は不可) 107 86 108 87 f.print <<EOT … … 142 121 143 122 f = CFile.open( @rpc_server_channel_celltype_file_name, "w" ) 144 # åãå 145 容ãäºåº¦æ¸ãå¯è½æ§ãã (AppFile ã¯ä¸å¯) 123 # 同じ内容を二度書く可能性あり (AppFile は不可) 146 124 147 125 f.print <<EOT … … 173 151 end 174 152 175 #=== through cell ã³ã¼ããçæ153 #=== through cell コードを生成 176 154 # 177 155 # … … 180 158 gen_plugin_decl_code( file ) 181 159 182 # ã»ã«ãæ¢ã160 # セルを探す 183 161 # path =["::",@next_cell.get_name] # mikan namespace 184 162 # cell = Namespace.find( path ) … … 191 169 EOT 192 170 193 ##### ã¯ã©ã¤ã¢ã³ãå´ã®ã»ã«ã®çæ#####171 ##### クライアント側のセルの生成 ##### 194 172 nest = @start_region.gen_region_str_pre file 195 173 nest_str = " " * nest 196 174 197 # ã»ããã©ã®çæ175 # セマフォの生成 198 176 if @b_noClientSemaphore == false then 199 177 file.print <<EOT … … 206 184 end 207 185 208 # ã¯ã©ã¤ã¢ã³ãå´ãã£ã³ãã« (TINET, Socket ãªã©)ã®çæ186 # クライアント側チャンネル (TINET, Socket など)の生成 209 187 file.print <<EOT 210 188 #{nest_str} // Client Side Channel … … 216 194 EOT 217 195 218 # ã»ããã©ã®çµåæ196 # セマフォの結合文 219 197 if @b_noClientSemaphore == false then 220 198 semaphore = "#{nest_str} cLockChannel = #{@serverChannelCell}_Semaphore.eSemaphore;\n" … … 223 201 end 224 202 225 ### ã¯ã©ã¤ã¢ã³ãå´ãã£ã³ãã« (ãã¼ã·ã£ã©+TDR)ã®çæ###226 # ã¢ãã±ã¼ã¿ã®æå®ããããï¼203 ### クライアント側チャンネル (マーシャラ+TDR)の生成 ### 204 # アロケータの指定があるか? 227 205 if cell.get_allocator_list.length > 0 then 228 206 … … 240 218 241 219 file.print delim 242 delim = ",\n" # æçµè¡ã«ã¯åºããªã 243 244 if subsc then # é 245 åæ·»æ° 220 delim = ",\n" # 最終行には出さない 221 222 if subsc then # 配列添数 246 223 subsc_str = '[#{subsc}]' 247 224 else … … 249 226 end 250 227 251 eport = "eThroughEntry" #RPC ã®åãå£åã«å¤æ´228 eport = "eThroughEntry" #RPCの受け口名に変更 252 229 file.print nest_str 253 230 file.print "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc_str}" … … 269 246 270 247 EOT 271 ### END: ã¯ã©ã¤ã¢ã³ãå´ãã£ã³ãã« (ãã¼ã·ã£ã©+TDR)ã®çæ###248 ### END: クライアント側チャンネル (マーシャラ+TDR)の生成 ### 272 249 273 250 @start_region.gen_region_str_post file 274 251 file.print "\n\n" 275 252 276 ##### ãµã¼ãã¼å´ã®ã»ã«ã®çæ#####253 ##### サーバー側のセルの生成 ##### 277 254 nest = @end_region.gen_region_str_pre file 278 255 nest_str = " " * nest … … 295 272 end 296 273 297 # ãµã¼ãã¼å´ãã£ã³ãã« (TINET, Socket ãªã©)274 # サーバー側チャンネル (TINET, Socket など) 298 275 file.print <<EOT 299 276 … … 304 281 EOT 305 282 306 # ãµã¼ãã¼å´ãã£ã³ãã« (ã¢ã³ãã¼ã·ã£ã©+TDR)283 # サーバー側チャンネル (アンマーシャラ+TDR) 307 284 file.print <<EOT 308 285 … … 314 291 EOT 315 292 316 # ãµã¼ãã¼å´ã¿ã¹ã¯ã¡ã¤ã³293 # サーバー側タスクメイン 317 294 file.print <<EOT 318 295 … … 323 300 EOT 324 301 325 # ãµã¼ãã¼å´ã¿ã¹ã¯302 # サーバー側タスク 326 303 file.print <<EOT 327 304 … … 337 314 end 338 315 339 #=== ãã©ã°ã¤ã³å¼æ° noClientSemaphore ã®ãã§ãã¯316 #=== プラグイン引数 noClientSemaphore のチェック 340 317 def set_noClientSemaphore rhs 341 318 rhs = rhs.to_sym -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/RPCPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 56 41 require_tecsgen_lib "lib/GenParamCopy.rb" 57 42 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 を指定する必要がある 67 49 # tecsgen toppers_jsp.cdl sChannel.cdl your_description.cdl 68 50 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 # 有符号、無符号でサイズが同じ 75 54 76 55 class RPCPlugin < ThroughPlugin … … 79 58 include GenParamCopy 80 59 81 # RPCPlugin å°ç¨ã®ãªãã·ã§ã³ 82 TransparentRPCPluginArgProc = RPCPluginArgProc.dup # è¤è£½ãä½ã£ã¦å 83 ãå¤æ´ããªãããã«ãã 60 # RPCPlugin 専用のオプション 61 TransparentRPCPluginArgProc = RPCPluginArgProc.dup # 複製を作って元を変更しないようにする 84 62 TransparentRPCPluginArgProc[ "noClientSemaphore" ] = Proc.new { |obj,rhs| obj.set_noClientSemaphore rhs } 85 63 TransparentRPCPluginArgProc[ "semaphoreCelltype" ] = Proc.new { |obj,rhs| obj.set_semaphoreCelltype rhs } 86 64 87 #=== RPCPlugin ã® initialize 88 # 説æ㯠ThroughPlugin (plugin.rb) ãåç 89 § 65 #=== RPCPlugin の initialize 66 # 説明は ThroughPlugin (plugin.rb) を参照 90 67 def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell ) 91 68 super … … 94 71 initialize_transparent_marshaler cell_name 95 72 96 # ãªãã·ã§ã³ï¼GenTransparentMarshaler åç 97 § 73 # オプション:GenTransparentMarshaler 参照 98 74 @plugin_arg_check_proc_tab = TransparentRPCPluginArgProc 99 75 parse_plugin_arg … … 105 81 if @PPAllocatorSize == nil then 106 82 cdl_error( "PPAllocatorSize must be speicified for oneway [in] array" ) 107 # @PPAllocatorSize = 0 # 仮㫠0 ã¨ãã¦ãã (cdl ã®æ§æã¨ã©ã¼ãé¿ãããã)83 # @PPAllocatorSize = 0 # 仮に 0 としておく (cdl の構文エラーを避けるため) 108 84 end 109 85 end … … 112 88 # if func_decl.get_type.is_oneway? then 113 89 # 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 文字列の配列 116 91 # 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 長さ未指定文字列 118 93 # end 119 94 # end … … 121 96 end 122 97 123 #=== plugin ã®å®£è¨ã³ã¼ã (celltype ã®å®ç¾©) çæ98 #=== plugin の宣言コード (celltype の定義) 生成 124 99 def gen_plugin_decl_code( file ) 125 100 126 101 ct_name = "#{@ct_name}_#{@channelCelltype}" 127 102 128 # ãã®ã»ã«ã¿ã¤ãï¼åãã·ã°ããã£ï¼ã¯æ¢ã«çæããã¦ãããï¼103 # このセルタイプ(同じシグニチャ)は既に生成されているか? 129 104 if @@generated_celltype[ ct_name ] == nil then 130 105 @@generated_celltype[ ct_name ] = [ self ] … … 159 134 160 135 f = CFile.open( @rpc_channel_celltype_file_name, "w" ) 161 # åãå 162 容ãäºåº¦æ¸ãå¯è½æ§ãã (AppFile ã¯ä¸å¯) 136 # 同じ内容を二度書く可能性あり (AppFile は不可) 163 137 164 138 f.print <<EOT … … 199 173 }; 200 174 EOT 201 # mikan stackSize option & ææ° tecs_package 対å¿175 # mikan stackSize option & 最新 tecs_package 対応 202 176 203 177 f.close 204 178 end 205 179 206 #=== through cell ã³ã¼ããçæ180 #=== through cell コードを生成 207 181 # 208 182 # … … 211 185 gen_plugin_decl_code( file ) 212 186 213 # ã»ã«ãæ¢ã187 # セルを探す 214 188 # path =["::",@next_cell.get_global_name] 215 189 # cell = Namespace.find( path ) … … 230 204 231 205 file.print <<EOT 232 #{indent_str}// ä¸æ¹åãã£ã³ãã«ã»ã«206 #{indent_str}// 一方向チャンネルセル 233 207 #{indent_str}cell #{@channelCelltype} #{@channelCellName} { 234 208 #{indent_str}}; 235 209 236 #{indent_str}// RPC ãã£ã³ãã«ã»ã«237 EOT 238 239 # #473 ã解決ãããå ´åãcomposite ãªã¬ã¼ã¢ãã±ã¼ã¿ã«å¤æ´ãã¹ã240 # ã¢ãã±ã¼ã¿ã®æå®ããããï¼210 #{indent_str}// RPC チャンネルセル 211 EOT 212 213 # #473 が解決された場合、composite リレーアロケータに変更すべき 214 # アロケータの指定があるか? 241 215 if cell.get_allocator_list.length > 0 then 242 216 … … 247 221 248 222 file.print delim 249 delim = ",\n#{indent_str} " # æçµè¡ã«ã¯åºããªã 250 251 if subsc then # é 252 åæ·»æ° 223 delim = ",\n#{indent_str} " # 最終行には出さない 224 225 if subsc then # 配列添数 253 226 subsc_str = '[#{subsc}]' 254 227 else … … 256 229 end 257 230 258 eport = "eThroughEntry" #RPC ã®åãå£åã«å¤æ´231 eport = "eThroughEntry" #RPCの受け口名に変更 259 232 file.print "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc}" 260 233 end … … 275 248 276 249 277 #=== ãã©ã°ã¤ã³å¼æ° noClientSemaphore ã®ãã§ãã¯250 #=== プラグイン引数 noClientSemaphore のチェック 278 251 def set_noClientSemaphore rhs 279 252 rhs = rhs.to_sym … … 287 260 end 288 261 289 #=== ãã©ã°ã¤ã³å¼æ° semaphoreCelltype ã®ãã§ãã¯262 #=== プラグイン引数 semaphoreCelltype のチェック 290 263 def set_semaphoreCelltype rhs 291 264 @semaphoreCelltype = rhs.to_sym -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/RepeatCellPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 7 7 # 8 8 #-- 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 # 免責すること. 45 31 # 46 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 47 ã 48 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 49 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 50 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 51 # ã®è²¬ä»»ãè² ããªãï¼ 32 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 33 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 34 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 35 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 36 # の責任を負わない. 52 37 # 53 38 # $Id$ 54 39 #++ 55 40 56 #== cell ã count åç¹°ãè¿ãã»ã«ãã©ã°ã¤ã³ 57 # ä¸å®å 58 ¨ç¹ï¼ 59 # æå®åã«å¯¾å¿ãã¦ããªã 60 # cell ã®æå®å (allocator, id) 61 # çµåã®æå®å (through) 41 #== cell を count 個繰り返すセルプラグイン 42 # 不完全点: 43 # 指定子に対応していない 44 # cell の指定子 (allocator, id) 45 # 結合の指定子 (through) 62 46 class RepeatCellPlugin < CellPlugin 63 47 … … 102 86 while count < num 103 87 104 # ã»ã«åã®ã«ã¦ã³ã88 # セル名のカウント 105 89 count_str = (count + base_count).to_s 106 90 if tail_zero.length > count_str.length then … … 114 98 file.print "#{indent_str}cell #{@cell.get_celltype.get_name} #{cname}{\n" 115 99 116 # Join ã® CDL æååçæ100 # Join の CDL 文字列生成 117 101 @cell.get_join_list.get_items.each{ |j| 118 102 119 # Join ã®å³è¾ºã®è§£æ103 # Join の右辺の解析 120 104 res = j.get_rhs.analyze_cell_join_expression 121 105 if res then … … 131 115 end 132 116 133 # å³è¾ºã®ã»ã«å (æ«å°¾ã®æ°åãã«ã¦ã³ãã¢ãã)117 # 右辺のセル名 (末尾の数字をカウントアップ) 134 118 nsp.get_name.to_s =~ /(.*[^0-9])([0-9]+)\z/ 135 119 if $2 then … … 145 129 end 146 130 147 # Join æååã®åºå131 # Join 文字列の出力 148 132 if port_name then 149 # å³è¾ºã¯ ã»ã«ã®çµå133 # 右辺は セルの結合 150 134 if subscript then 151 135 file.print "#{indent_str} #{j.get_name} = #{nsp.get_path_str}.#{port_name}[#{(count+subscript).to_s}];\n" … … 154 138 end 155 139 else 156 # å³è¾ºã¯åä¸ã®èå¥å140 # 右辺は単一の識別子 157 141 file.print "#{indent_str} #{j.get_name} = #{nsp.get_path_str};\n" 158 142 end … … 166 150 end 167 151 168 #=== count ãªãã·ã§ã³ã®è§£æ152 #=== count オプションの解析 169 153 def set_count rhs 170 154 if rhs =~ /\A\d+\z/ -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/RepeatJoinPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 7 7 # 8 8 #-- 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 # 免責すること. 45 31 # 46 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 47 ã 48 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 49 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 50 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 51 # ã®è²¬ä»»ãè² ããªãï¼ 32 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 33 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 34 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 35 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 36 # の責任を負わない. 52 37 # 53 38 # $Id$ … … 70 55 # print "Join: #{j.get_name} = #{j.get_rhs.to_s}\n" 71 56 72 # Join ã®å³è¾ºã解æ57 # Join の右辺を解析 73 58 ret = j.get_rhs.analyze_cell_join_expression 74 59 if ret == nil then … … 77 62 rhs_nsp = ret[0]; rhs_subscript = ret[1]; rhs_port_name = ret[2] 78 63 79 # å¼ã³å£é 80 åã§ãæ·»æ°ã 0 ã®å ´åã«ã®ã¿ã«ã¦ã³ãã¢ããããã 64 # 呼び口配列で、添数が 0 の場合にのみカウントアップさせる 81 65 if j.get_subscript == 0 then 82 66 rhs_name = rhs_nsp.get_name.to_s … … 128 112 end 129 113 130 #=== count ãªãã·ã§ã³ã®è§£æ114 #=== count オプションの解析 131 115 def set_count rhs 132 116 if rhs =~ /\A\d+\z/ -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/SharedOpaqueRPCPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 56 41 require_tecsgen_lib "lib/GenParamCopy.rb" 57 42 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 を指定する必要がある 67 49 # tecsgen toppers_jsp.cdl sChannel.cdl your_description.cdl 68 50 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 # 有符号、無符号でサイズが同じ 75 54 76 55 class SharedOpaqueRPCPlugin < ThroughPlugin 77 56 78 # ãã£ã³ãã«ãå 79 ±æãããã©ã°ã¤ã³ãªãã¸ã§ã¯ãã¸ã®ããã·ã¥ãªã¹ã 57 # チャンネルを共有するプラグインオブジェクトへのハッシュリスト 80 58 @@shared_channel_list = {} # { chan_name => [ Plugin_obj0, Plugin_Obj1, ... ] } 81 59 … … 84 62 include GenParamCopy 85 63 86 # SharedOpaqueRPCPlugin å°ç¨ã®ãªãã·ã§ã³ 87 SharedOpaqueRPCPluginArgProc = RPCPluginArgProc.dup # è¤è£½ãä½ã£ã¦å 88 ãå¤æ´ããªãããã«ãã 64 # SharedOpaqueRPCPlugin 専用のオプション 65 SharedOpaqueRPCPluginArgProc = RPCPluginArgProc.dup # 複製を作って元を変更しないようにする 89 66 SharedOpaqueRPCPluginArgProc[ "sharedChannelName" ] = Proc.new { |obj,rhs| obj.set_sharedChannelName rhs } 90 67 91 #=== RPCPlugin ã® initialize 92 # 説æ㯠ThroughPlugin (plugin.rb) ãåç 93 § 68 #=== RPCPlugin の initialize 69 # 説明は ThroughPlugin (plugin.rb) を参照 94 70 def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell ) 95 71 super 96 72 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 参照 102 76 @plugin_arg_check_proc_tab = SharedOpaqueRPCPluginArgProc 103 77 @sharedChannelName = nil … … 125 99 prev_start = @@shared_channel_list[ @shared_channel_cell ][0].start_region 126 100 if @start_region != prev_start then 127 # ååºã¨ start ãªã¼ã¸ã§ã³ä¸ä¸è´ (ååºã¯ãèªåèªèº«ã¨ãã§ãã¯ããããç¡é§ã ãå°ããã®ã§æ¾ç½®)101 # 初出と start リージョン不一致 (初出は、自分自身とチェックされる。無駄だが小さいので放置) 128 102 cdl_error( "SharedRPCPlugin: start region mismatch current: #{@region.get_name} previous: #{prev_start.get_name}") 129 103 end … … 131 105 prev_end = @@shared_channel_list[ @shared_channel_cell ][0].end_region 132 106 if @end_region != prev_end then 133 # ååºã¨ end ãªã¼ã¸ã§ã³ä¸ä¸è´ (ååºã¯ãèªåèªèº«ã¨ãã§ãã¯ããããç¡é§ã ãå°ããã®ã§æ¾ç½®)107 # 初出と end リージョン不一致 (初出は、自分自身とチェックされる。無駄だが小さいので放置) 134 108 cdl_error( "SharedRPCPlugin: end region mismatch current: #{@region.get_name} previous: #{prev_end.get_name}") 135 109 end … … 141 115 # end 142 116 143 #=== ãã©ã°ã¤ã³å¼æ° sharedChannelCell ã®ãã§ãã¯117 #=== プラグイン引数 sharedChannelCell のチェック 144 118 def set_sharedChannelName( rhs ) 145 119 @sharedChannelName = rhs … … 153 127 def gen_plugin_decl_code( file ) 154 128 155 # ãã®ã»ã«ã¿ã¤ãï¼åãã·ã°ããã£ï¼ã¯æ¢ã«çæããã¦ãããï¼129 # このセルタイプ(同じシグニチャ)は既に生成されているか? 156 130 if @@generated_celltype[ @shared_channel_server_ct_name ] == nil then 157 131 @@generated_celltype[ @shared_channel_server_ct_name ] = [ self ] … … 162 136 gen_marshaler_celltype 163 137 164 # åãå 165 容ãäºåº¦æ¸ãå¯è½æ§ãã (AppFile ã¯ä¸å¯) 138 # 同じ内容を二度書く可能性あり (AppFile は不可) 166 139 167 140 if @PPAllocatorSize then … … 174 147 175 148 f = CFile.open( @shared_channel_ct_file_name, "w" ) 176 # åãå 177 容ãäºåº¦æ¸ãå¯è½æ§ãã (AppFile ã¯ä¸å¯) 149 # 同じ内容を二度書く可能性あり (AppFile は不可) 178 150 179 151 f.print <<EOT … … 233 205 end 234 206 235 #=== through cell ã³ã¼ããçæ207 #=== through cell コードを生成 236 208 # 237 209 # … … 256 228 end 257 229 258 # ã»ã«ãæ¢ã230 # セルを探す 259 231 # path =["::",@next_cell.get_name] 260 232 # cell = Namespace.find( path ) 261 233 cell = Namespace.find( @next_cell.get_namespace_path ) 262 234 263 # å 264 ±æãããéä¿¡ãã£ã³ãã«ã®çæã®ãããã¿ã¤ãå®£è¨ 235 # 共有される通信チャンネルの生成のプロトタイプ宣言 265 236 file.print <<EOT 266 237 #{indent_str}cell #{@shared_channel_client_ct_name} #{@shared_channel_cell}; 267 238 EOT 268 239 269 # ãã¼ã·ã£ã©ã»ã«ã®çæï¼ã¢ãã±ã¼ã¿ã³ã¼ãã®çæããï¼270 # ã¢ãã±ã¼ã¿ã®æå®ããããï¼240 # マーシャラセルの生成(アロケータコードの生成から) 241 # アロケータの指定があるか? 271 242 if cell.get_allocator_list.length > 0 then 272 243 … … 284 255 285 256 file.print delim 286 delim = ",\n#{indent_str} " # æçµè¡ã«ã¯åºããªã 287 288 if subsc then # é 289 åæ·»æ° 257 delim = ",\n#{indent_str} " # 最終行には出さない 258 259 if subsc then # 配列添数 290 260 subsc_str = '[#{subsc}]' 291 261 else … … 293 263 end 294 264 295 eport = @entry_port_name #RPC ã®åãå£åã«å¤æ´265 eport = @entry_port_name #RPCの受け口名に変更 296 266 file.print "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc_str}" 297 267 end … … 300 270 end 301 271 302 # ãã¼ã·ã£ã©ã»ã«æ¬ä½çæ272 # マーシャラセル本体生成 303 273 file.print <<EOT 304 274 /* OpaqueRPC Marshaler Cell */ … … 311 281 @start_region.gen_region_str_post file 312 282 313 # ã¢ã³ãã¼ã·ã£ã©ã»ã«ã®åºå314 # ã»ã«æ¬ä½ã®çæ283 # アンマーシャラセルの出力 284 # セル本体の生成 315 285 nest = @end_region.gen_region_str_pre file 316 286 … … 321 291 EOT 322 292 323 # PPAllocator ãå¿ 324 è¦ã? 293 # PPAllocator が必要か? 325 294 if @PPAllocatorSize then 326 295 if @sub_channel_no == 0 then … … 347 316 end 348 317 349 #=== post ã³ã¼ã(CDL) ãçæ350 # ãã©ã°ã¤ã³ã®å¾ã®ã³ã¼ããçæ318 #=== post コード(CDL) を生成 319 # プラグインの後のコードを生成 351 320 #file:: File: 352 321 def self.gen_post_code( file ) … … 361 330 end 362 331 363 #=== post ã³ã¼ã(CDL) ãçæ 364 # å 365 ±æãã£ã³ãã«ãçæãã 366 # ãã®ã¡ã½ããã¯ããã£ã³ãã«ãå 367 ±æããæåã®ãã©ã°ã¤ã³ãªãã¸ã§ã¯ãã®ã¿å¼ã³åºããã 332 #=== post コード(CDL) を生成 333 # 共有チャンネルを生成する 334 # このメソッドは、チャンネルを共有する最初のプラグインオブジェクトのみ呼び出される 368 335 def gen_post_code( file, plugin_obj_array ) 369 336 370 # å 371 ±æããã¦ããéä¿¡ãã£ã³ãã«ã®çæ 372 # åãã©ã°ã¤ã³ã¤ã³ã¹ã¿ã³ã¹ã§ã¯ @shared_channel_ct_name ã¨ãã¦è¨æ¶ãã¦ãã 337 # 共有されている通信チャンネルの生成 338 # 各プラグインインスタンスでは @shared_channel_ct_name として記憶している 373 339 # region = @caller_cell.get_region 374 340 nest = @start_region.gen_region_str_pre file -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/SharedRPCPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 56 41 require_tecsgen_lib "lib/GenParamCopy.rb" 57 42 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 を指定する必要がある 67 49 # tecsgen toppers_jsp.cdl sChannel.cdl your_description.cdl 68 50 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 # 有符号、無符号でサイズが同じ 75 54 76 55 class SharedRPCPlugin < ThroughPlugin … … 81 60 include GenParamCopy 82 61 83 #=== RPCPlugin ã® initialize 84 # 説æ㯠ThroughPlugin (plugin.rb) ãåç 85 § 62 #=== RPCPlugin の initialize 63 # 説明は ThroughPlugin (plugin.rb) を参照 86 64 def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell ) 87 65 88 # mikan ãã©ã°ã¤ã³ãªãã·ã§ã³æå®ã®ä¸ä¸è´ã®ãã§ãã¯task_priority,66 # mikan プラグインオプション指定の不一致のチェック task_priority, 89 67 90 68 super 91 69 initialize_transparent_marshaler cell_name 92 70 93 # ãªãã·ã§ã³ï¼GenTransparentMarshaler åç 94 § 71 # オプション:GenTransparentMarshaler 参照 95 72 @plugin_arg_check_proc_tab = RPCPluginArgProc 96 @channelCellName = "" # nil ã«ãã¦ãã73 @channelCellName = "" # nil にしておく 97 74 parse_plugin_arg 98 75 … … 108 85 109 86 if @@shared_channel_list[ @shared_channel_cell ] == nil then 110 # ååº87 # 初出 111 88 @@shared_channel_list[ @shared_channel_cell ] = [ self ] 112 89 else 113 # äºçªç®ä»¥é90 # 二番目以降 114 91 @@shared_channel_list[ @shared_channel_cell ] << self 115 92 end … … 117 94 118 95 if @region != @@shared_channel_list[ @shared_channel_cell ][0].region then 119 # ååºã¨ãªã¼ã¸ã§ã³ä¸ä¸è´ (ååºã¯ãèªåèªèº«ã¨ãã§ãã¯ããããç¡é§ã ãå°ããã®ã§æ¾ç½®)96 # 初出とリージョン不一致 (初出は、自分自身とチェックされる。無駄だが小さいので放置) 120 97 cdl_error( "SharedRPCPlugin: preferred region mismatch current: #{@region.get_name} previous: #{@@shared_channel_list[ @shared_channel_cell ][0].region.get_name}") 121 98 else … … 138 115 def gen_plugin_decl_code( file ) 139 116 140 # ãã®ã»ã«ã¿ã¤ãï¼åãã·ã°ããã£ï¼ã¯æ¢ã«çæããã¦ãããï¼117 # このセルタイプ(同じシグニチャ)は既に生成されているか? 141 118 if @@generated_celltype[ @shared_channel_ct_name ] == nil then 142 119 @@generated_celltype[ @shared_channel_ct_name ] = [ self ] … … 152 129 153 130 gen_marshaler_celltype 154 # åãå 155 容ãäºåº¦æ¸ãå¯è½æ§ãã (AppFile ã¯ä¸å¯) 131 # 同じ内容を二度書く可能性あり (AppFile は不可) 156 132 157 133 if @signature.need_PPAllocator? then … … 164 140 165 141 f = CFile.open( @rpc_channel_celltype_file_name, "w" ) 166 # åãå 167 容ãäºåº¦æ¸ãå¯è½æ§ãã (AppFile ã¯ä¸å¯) 142 # 同じ内容を二度書く可能性あり (AppFile は不可) 168 143 169 144 f.print <<EOT … … 196 171 }; 197 172 EOT 198 # mikan stackSize option & ææ° tecs_package 対å¿173 # mikan stackSize option & 最新 tecs_package 対応 199 174 200 175 f.close 201 176 202 177 f = CFile.open( "#{$gen}/#{@shared_channel_ct_name}.cdl", "w" ) 203 # åãå 204 容ãäºåº¦æ¸ãå¯è½æ§ãã (AppFile ã¯ä¸å¯) 178 # 同じ内容を二度書く可能性あり (AppFile は不可) 205 179 206 180 f.print <<EOT … … 247 221 end 248 222 249 #=== through cell ã³ã¼ããçæ223 #=== through cell コードを生成 250 224 # 251 225 # … … 268 242 end 269 243 270 # ã»ã«ãæ¢ã244 # セルを探す 271 245 # path =["::",@next_cell.get_name] 272 246 # cell = Namespace.find( path ) 273 247 cell = Namespace.find( @next_cell.get_namespace_path ) 274 248 275 # PPAllocator ãå¿ 276 è¦ã? 249 # PPAllocator が必要か? 277 250 if @signature.need_PPAllocator? then 278 251 if @sub_channel_no == 0 then … … 289 262 end 290 263 291 # å 292 ±æãããéä¿¡ãã£ã³ãã«ã®çæã®ãããã¿ã¤ãå®£è¨ 264 # 共有される通信チャンネルの生成のプロトタイプ宣言 293 265 file.print <<EOT 294 266 #{indent_str}cell #{@shared_channel_ct_name} #{@shared_channel_cell}; 295 267 EOT 296 268 297 # ããããåçµåãã¨ã®ã»ã«ãçæ298 299 # ã¢ãã±ã¼ã¿ã®æå®ããããï¼269 # ここから各結合ごとのセルを生成 270 271 # アロケータの指定があるか? 300 272 if cell.get_allocator_list.length > 0 then 301 273 … … 306 278 307 279 file.print delim 308 delim = ",\n#{indent_str} " # æçµè¡ã«ã¯åºããªã 309 310 if subsc then # é 311 åæ·»æ° 280 delim = ",\n#{indent_str} " # 最終行には出さない 281 282 if subsc then # 配列添数 312 283 subsc_str = '[#{subsc}]' 313 284 else … … 315 286 end 316 287 317 eport = "eThroughEntry" #RPC ã®åãå£åã«å¤æ´288 eport = "eThroughEntry" #RPCの受け口名に変更 318 289 file.print "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc}" 319 290 end … … 322 293 end 323 294 324 # ã»ã«æ¬ä½ã®çæ295 # セル本体の生成 325 296 file.print <<EOT 326 297 #{indent_str}cell #{@rpc_channel_celltype_name} #{@cell_name} { … … 334 305 end 335 306 336 #=== å¾ãã®ã³ã¼ããçæ337 # ãã©ã°ã¤ã³ã®å¾ãã®ã³ã¼ããçæ307 #=== 後ろのコードを生成 308 #プラグインの後ろのコードを生成 338 309 #file:: File: 339 310 def self.gen_post_code( file ) … … 344 315 end 345 316 346 #=== å¾ãã®ã³ã¼ããçæ347 # plugin_obj[0] ã代表ãã¦åºåããï¼ã¤ã³ã¹ã¿ã³ã¹å¤æ°ã«ã¢ã¯ã»ã¹ãããããï¼317 #=== 後ろのコードを生成 318 # plugin_obj[0] が代表して出力する(インスタンス変数にアクセスしたいため) 348 319 def gen_post_code( file, plugin_obj ) 349 320 … … 353 324 indent_str = " " * nest 354 325 355 # å 356 ±æããã¦ããéä¿¡ãã£ã³ãã«ã®çæ 357 # åãã©ã°ã¤ã³ã¤ã³ã¹ã¿ã³ã¹ã§ã¯ @shared_channel_ct_name ã¨ãã¦è¨æ¶ãã¦ãã 326 # 共有されている通信チャンネルの生成 327 # 各プラグインインスタンスでは @shared_channel_ct_name として記憶している 358 328 file.print "#{indent_str}cell tSharedRPCPlugin_#{@channelCelltype} #{chan_name} {\n" 359 329 plugin_obj.each{ |po| -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/SignaturePlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ 53 38 #++ 54 39 55 #== signature ãã©ã°ã¤ã³ã®å 56 ±éã®è¦ªã¯ã©ã¹ 40 #== signature プラグインの共通の親クラス 57 41 class SignaturePlugin < Plugin 58 #@signature:: Signature ãã©ã°ã¤ã³ã®å¯¾è±¡ã¨ãªãã·ã°ããã£59 #@option:: String '"', '"' ã§å²ã¾ããæåå42 #@signature:: Signature プラグインの対象となるシグニチャ 43 #@option:: String '"', '"' で囲まれた文字列 60 44 61 #signature:: Signature ã·ã°ããã£ï¼ã¤ã³ã¹ã¿ã³ã¹ï¼45 #signature:: Signature シグニチャ(インスタンス) 62 46 def initialize( signature, option ) 63 47 super() 64 48 @signature = signature 65 # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' ) # åå¾ã® "" ãåãé¤ã49 # @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' ) # 前後の "" を取り除く 66 50 # @plugin_arg_str.sub!( /(.*)"\z/, '\1' ) 67 51 @plugin_arg_str = CDLString.remove_dquote option … … 69 53 end 70 54 71 #=== å¾ãã®ã³ã¼ããçæ72 # ãã©ã°ã¤ã³ã®å¾ãã® CDL ã³ã¼ããçæ55 #=== 後ろのコードを生成 56 #プラグインの後ろの CDL コードを生成 73 57 #file:: File: 74 58 def self.gen_post_code( file ) 75 # è¤æ°ã®ãã©ã°ã¤ã³ã® post_code ãä¸ã¤ã®ãã¡ã¤ã«ã«å«ã¾ããããã以ä¸ã®ãããªè¦åºããã¤ãããã¨59 # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること 76 60 # file.print "/* '#{self.class.name}' post code */\n" 77 61 end 78 62 79 #=== åãå£é¢æ°ã®æ¬ä½(Cè¨èª)ãçæãã 80 # é常ã§ããã°ãã¸ã§ãã¬ã¼ã¿ã¯åãå£é¢æ°ã®ãã³ãã¬ã¼ããçæãã 81 # ãã©ã°ã¤ã³ã®å ´åãå¤æ´ããå¿ 82 è¦ã®ãªãã»ã«ã¿ã¤ãã³ã¼ããçæãã 83 #file:: FILE åºåå 84 ãã¡ã¤ã« 63 #=== 受け口関数の本体(C言語)を生成する 64 # 通常であれば、ジェネレータは受け口関数のテンプレートを生成する 65 # プラグインの場合、変更する必要のないセルタイプコードを生成する 66 #file:: FILE 出力先ファイル 85 67 #b_singleton:: bool true if singleton 86 68 #ct_name:: Symbol -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/TECS2CBridgePlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ 53 38 #++ 54 39 55 #== TECS => C å¼ã³åºããã©ã°ã¤ã³40 #== TECS => C 呼び出しプラグイン 56 41 class TECS2CBridgePlugin < SignaturePlugin 57 #@signature:: Signature ãã©ã°ã¤ã³ã®å¯¾è±¡ã¨ãªãã·ã°ããã£58 #@option:: String '"', '"' ã§å²ã¾ããæåå42 #@signature:: Signature プラグインの対象となるシグニチャ 43 #@option:: String '"', '"' で囲まれた文字列 59 44 60 45 @@signature_list = { } 61 46 62 #signature:: Signature ã·ã°ããã£ï¼ã¤ã³ã¹ã¿ã³ã¹ï¼47 #signature:: Signature シグニチャ(インスタンス) 63 48 def initialize( signature, option ) 64 49 super … … 91 76 end 92 77 93 #=== å¾ãã®ã³ã¼ããçæ94 # ãã©ã°ã¤ã³ã®å¾ãã®ã³ã¼ããçæ78 #=== 後ろのコードを生成 79 #プラグインの後ろのコードを生成 95 80 #file:: File: 96 81 def self.gen_post_code( file ) 97 # è¤æ°ã®ãã©ã°ã¤ã³ã® post_code ãä¸ã¤ã®ãã¡ã¤ã«ã«å«ã¾ããããã以ä¸ã®ãããªè¦åºããã¤ãããã¨82 # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること 98 83 # file.print "/* '#{self.class.name}' post code */\n" 99 84 end 100 85 101 #=== åãå£é¢æ°ã®æ¬ä½(Cè¨èª)ãçæãã 102 # é常ã§ããã°ãã¸ã§ãã¬ã¼ã¿ã¯åãå£é¢æ°ã®ãã³ãã¬ã¼ããçæãã 103 # ãã©ã°ã¤ã³ã®å ´åãå¤æ´ããå¿ 104 è¦ã®ãªãã»ã«ã¿ã¤ãã³ã¼ããçæãã 105 #file:: FILE åºåå 106 ãã¡ã¤ã« 86 #=== 受け口関数の本体(C言語)を生成する 87 # 通常であれば、ジェネレータは受け口関数のテンプレートを生成する 88 # プラグインの場合、変更する必要のないセルタイプコードを生成する 89 #file:: FILE 出力先ファイル 107 90 #b_singleton:: bool true if singleton 108 91 #ct_name:: Symbol … … 129 112 p_cellcb = #{global_ct_name}_GET_CELLCB(idx); 130 113 }else{ 131 /* ã¨ã©ã¼å¦çã³ã¼ããããã«è¨è¿°*/114 /* エラー処理コードをここに記述 */ 132 115 } 133 116 -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/TECSInfoPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2017-2018 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 62 47 #@cell_list::[Cell] 63 48 64 #celltype:: Celltype ã»ã«ã¿ã¤ãï¼ã¤ã³ã¹ã¿ã³ã¹ï¼49 #celltype:: Celltype セルタイプ(インスタンス) 65 50 def initialize( celltype, option ) 66 51 super … … 71 56 end 72 57 73 #=== æ°ããã»ã«74 #cell:: Cell ã»ã«58 #=== 新しいセル 59 #cell:: Cell セル 75 60 # 76 # celltype ãã©ã°ã¤ã³ãæå®ãããã»ã«ã¿ã¤ãã®ã»ã«ãçæããã77 # ã»ã«ã¿ã¤ããã©ã°ã¤ã³ã«å¯¾ããæ°ããã»ã«ã®å ±å61 # celltype プラグインを指定されたセルタイプのセルが生成された 62 # セルタイププラグインに対する新しいセルの報告 78 63 def new_cell( cell ) 79 64 @@cell_list << cell 80 65 81 # AppFile ã¯ãéãæ¸ããããªã®ã§ãããã66 # AppFile は、重ね書きようなので、やめる 82 67 # p "import: cell nTECSInfo::tTECSInfoSub #{cell.get_namespace_path.to_s} under #{cell.get_region.get_name}" 83 68 # cell.show_tree 0 84 # TECSInfoSub ã»ã«ã®ãããã¿ã¤ã宣è¨69 # TECSInfoSub セルのプロトタイプ宣言 85 70 fn = "#{$gen}/tmp_#{cell.get_region.get_global_name}_TECSInfoSub.cdl" 86 71 File.open( fn, "w" ){ |f| … … 98 83 Import.new fn 99 84 100 # ã»ã«ã« cTECSInfo ã®çµåããããï¼85 # セルに cTECSInfo の結合があるか? 101 86 if cell.get_join_list.get_item( :cTECSInfo ) == nil then 102 # cTECSInfo = rTECSInfo::TECSInfosub.eTECSInfo; ã®è¿½å87 # cTECSInfo = rTECSInfo::TECSInfosub.eTECSInfo; の追加 103 88 nsp = NamespacePath.new( :rTECSInfo, false ) 104 89 nsp.append! :TECSInfoSub … … 109 94 end 110 95 111 #=== tCelltype_factory.h ã«æ¿å 112 ¥ããã³ã¼ããçæãã 113 # file 以å¤ã®ä»ã®ãã¡ã¤ã«ã«ãã¡ã¯ããªã³ã¼ããçæãã¦ããã 114 # ã»ã«ã¿ã¤ããã©ã°ã¤ã³ãæå®ãããã»ã«ã¿ã¤ãã®ã¿å¼ã³åºããã 96 #=== tCelltype_factory.h に挿入するコードを生成する 97 # file 以外の他のファイルにファクトリコードを生成してもよい 98 # セルタイププラグインが指定されたセルタイプのみ呼び出される 115 99 def gen_factory file 116 100 File.open( "#{$gen}/include_all_signature_header.h", "w" ){ |f| … … 199 183 f.print "#define TOPPERS_CB_TYPE_ONLY\n" 200 184 Namespace.get_root.print_celltype_define f 201 # FOREACH_CELL ãåºããªãã185 # FOREACH_CELL を出しなおす 202 186 ct = Namespace.find [ "::", :nTECSInfo, :tCelltypeInfo ] 203 187 ct.gen_ph_foreach_cell f … … 269 253 } 270 254 Region.get_root.print_cell_define f 271 # FOREACH_CELL ãåºããªãã255 # FOREACH_CELL を出しなおす 272 256 ct = Namespace.find [ "::", :nTECSInfo, :tCellInfo ] 273 257 ct.gen_ph_foreach_cell f … … 280 264 end 281 265 282 #=== å¾ãã® CDL ã³ã¼ããçæ283 # ãã©ã°ã¤ã³ã®å¾ãã® CDL ã³ã¼ããçæ266 #=== 後ろの CDL コードを生成 267 #プラグインの後ろの CDL コードを生成 284 268 #file:: File: 285 269 def self.gen_post_code( file ) … … 288 272 return 289 273 end 290 # è¤æ°ã®ãã©ã°ã¤ã³ã® post_code ãä¸ã¤ã®ãã¡ã¤ã«ã«å«ã¾ããããã以ä¸ã®ãããªè¦åºããã¤ãããã¨274 # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること 291 275 file.print <<EOT 292 276 /*------------ #{self.name} post code ------------*/ -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/ThroughPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ 53 38 #++ 54 39 55 # mikan through plugin: namespace ãèæ 56 ®ããã¦ããªã 57 58 #== ã¹ã«ã¼ãã©ã°ã¤ã³ã®å 59 ±éã®è¦ªã¯ã©ã¹ãã㤠ï¼ä½ãããï¼ã¹ã«ã¼ããã»ã«ãæ¿å 60 ¥ããã¹ã«ã¼ãã©ã°ã¤ã³ 61 # ã¹ã«ã¼ãã©ã°ã¤ã³ã¯ ThroughPlugin ã®åã¯ã©ã¹ã¨ãã¦å®ç¾©ãã 40 # mikan through plugin: namespace が考慮されていない 41 42 #== スループラグインの共通の親クラス かつ (何もせず)スルーするセルを挿入するスループラグイン 43 # スループラグインは ThroughPlugin の子クラスとして定義する 62 44 class ThroughPlugin < Plugin 63 #@cell_name:: Symbol çæããã»ã«åï¼è¤æ°ã»ã«ãçæããå ´åãåãå£å´ã®ã»ã«ï¼ 64 #@plugin_arg_str:: string through ã§æå®ãããå¼æ° 65 #@next_cell:: Cell å¼ã³å£ãçµåããã»ã« 66 #@next_cell_port_name:: Symbol å¼ã³å£ãçµåããåå£ã®åå 67 #@next_cell_port_subscript::Nil|Integer å¼ã³å£ãçµåããåå£ã®é 68 åæ·»æ°ï¼åãå£é 69 åã§ãªãå ´å nil 70 #@signature:: Signature ã·ã°ãã㣠71 #@celltype:: Celltype å¼ã³å 72 ã®ã»ã«ã®ã»ã«ã¿ã¤ã. through ãé£æ¥ããå ´åãæçµçãªå¼ã³å 73 ã®ã»ã«ã®ã»ã«ã¿ã¤ã 74 #@entry_port_name::Symbol çæããã»ã«ã®åãå£å "eThroughEntry" 75 #@call_port_name:: Symbol çæããã»ã«ã®å¼ã³å£å "cCall" 76 #@ct_name:: Symbol çæããã»ã«ã®ã»ã«ã¿ã¤ãå "t#{self.class.name}_#{@signature.get_global_name}" 77 #@plugin_arg_list:: Hash ãã©ã°ã¤ã³å¼æ°ããã¼ã¹ããçµæã®ããã·ã¥å¤æ° 78 #@caller_cell:: Cell å¼ã³å 79 ã®ã»ã«ï¼through ãã©ã°ã¤ã³ãé£æ¥ããå ´åã§ã¯ãæãå¼ã³å 80 ã®ã»ã«ï¼($source$) 81 # through ãã©ã°ã¤ã³ãåæµããã±ã¼ã¹ã§ã¯ã1ã¤ç®ã®å¼ã³å 82 ã»ã«ã®ã¿å¼æ°ã¨ãã¦ä¸ãããã 83 # å¾ã£ã¦ TracePlugin ã®å¼ã³å 84 ã®å¤å¥ã«å©ç¨ããå ´åã¯ãç°ãªãå¼ã³å 85 ããå¼ã°ããå¯è½æ§ããããã¨ã«æ³¨æããªãã¦ã¯ãªããªã 86 #@callee_cell:: Cell å¼ã³å 87 ã®ã»ã«($destination$) 88 #@plugin_arg_check_proc_tab:: [string => Proc] ãã©ã°ã¤ã³å¼æ°åâãã§ãã¯é¢æ° 89 # 以ä¸ã®å¤æ°ã¯ãinitialize ã§ã¯ãªããå¾ããè¨å®ããã 90 #@start_@region:: Region å§ã¾ãã®ãªã¼ã¸ã§ã³ï¼ caller_cell ã®ãªã¼ã¸ã§ã³ã¨ã¯ç°ãªãå¯è½æ§ããã ($start_region$) 91 #@end_region:: Region çµããã®ãªã¼ã¸ã§ã³ï¼ next_cell ã®ãªã¼ã¸ã§ã³ã¨ã¯ç°ãªãå¯è½æ§ããã ($end_region$) 92 #@region:: Region @start_region 㨠@end_region ã®ããããã§ãcell ãç½®ãã®ã好ã¾ãããªã¼ã¸ã§ã³ ($preferred_region$) 93 #@through_type:: Symbol :THROUGH, :TO_THROUGH, :IN_THROUGH, :OUT_THROUGH ã®ãããã 94 95 # ãã® Plugin ãçæããã»ã«ã¿ã¤ãã®ãªã¹ã 45 #@cell_name:: Symbol 生成するセル名(複数セルを生成する場合、受け口側のセル) 46 #@plugin_arg_str:: string through で指定された引数 47 #@next_cell:: Cell 呼び口を結合するセル 48 #@next_cell_port_name:: Symbol 呼び口を結合する受口の名前 49 #@next_cell_port_subscript::Nil|Integer 呼び口を結合する受口の配列添数.受け口配列でない場合 nil 50 #@signature:: Signature シグニチャ 51 #@celltype:: Celltype 呼び先のセルのセルタイプ. through が連接する場合、最終的な呼び先のセルのセルタイプ 52 #@entry_port_name::Symbol 生成するセルの受け口名 "eThroughEntry" 53 #@call_port_name:: Symbol 生成するセルの呼び口名 "cCall" 54 #@ct_name:: Symbol 生成するセルのセルタイプ名 "t#{self.class.name}_#{@signature.get_global_name}" 55 #@plugin_arg_list:: Hash プラグイン引数をパースした結果のハッシュ変数 56 #@caller_cell:: Cell 呼び元のセル.through プラグインが連接する場合では、最も呼び元のセル.($source$) 57 # through プラグインが合流するケースでは、1つ目の呼び元セルのみ引数として与えられる 58 # 従って TracePlugin の呼び元の判別に利用する場合は、異なる呼び元から呼ばれる可能性があることに注意しなくてはならない 59 #@callee_cell:: Cell 呼び先のセル($destination$) 60 #@plugin_arg_check_proc_tab:: [string => Proc] プラグイン引数名⇒チェック関数 61 # 以下の変数は、initialize ではなく、後から設定される 62 #@start_@region:: Region 始まりのリージョン: caller_cell のリージョンとは異なる可能性がある ($start_region$) 63 #@end_region:: Region 終わりのリージョン: next_cell のリージョンとは異なる可能性がある ($end_region$) 64 #@region:: Region @start_region と @end_region のいずれかで、cell を置くのが好ましいリージョン ($preferred_region$) 65 #@through_type:: Symbol :THROUGH, :TO_THROUGH, :IN_THROUGH, :OUT_THROUGH のいずれか 66 67 # この Plugin が生成したセルタイプのリスト 96 68 @@generated_celltype = {} 97 69 98 #=== ThroughPlugin ã®åæå 99 # through ãæå®ãããæç¹ã§çæãè¡ããã 100 # åæåã§ã¯ãæå®ãããå¼æ°ãè¨é²ããã«çãã 101 #cell_name:: Symbol çæãã¹ãã»ã«åï¼åå£å´ï¼ 102 #plugin_arg:: string through ã§æå®ãããå¼æ° 103 #next_cell:: Cell å¼ã³å£ãæ¥ç¶ããã»ã« 104 #next_cell_port_name:: Symbol å¼ã³å£ãæ¥ç¶ããåå£ã®åå 105 #next_cell_port_subscript:: Nil|Integer å¼ã³å£ãæ¥ç¶ããåå£é 106 åæ·»æ° 107 #signature:: Signature ã·ã°ãã㣠108 #celltype:: Celltype ã»ã«ã¿ã¤ã (å¼ã³å 109 ã®ã»ã«ã®ã»ã«ã¿ã¤ã) 110 #caller_cell:: Cell å¼ã³å 111 ã®ã»ã«ï¼@caller_cell ã®é 112 ãåç 113 § 70 #=== ThroughPlugin の初期化 71 # through が指定された時点で生成が行われる 72 # 初期化では、指定された引数を記録するに留める 73 #cell_name:: Symbol 生成すべきセル名(受口側) 74 #plugin_arg:: string through で指定された引数 75 #next_cell:: Cell 呼び口を接続するセル 76 #next_cell_port_name:: Symbol 呼び口を接続する受口の名前 77 #next_cell_port_subscript:: Nil|Integer 呼び口を接続する受口配列添数 78 #signature:: Signature シグニチャ 79 #celltype:: Celltype セルタイプ (呼び先のセルのセルタイプ) 80 #caller_cell:: Cell 呼び元のセル.@caller_cell の項を参照 114 81 def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell ) 115 82 super() 116 @cell_name = cell_name # çæãã¹ãã»ã«åï¼åãå£å´ã®ã»ã«åï¼ 117 # ãã®å¼ã³å 118 ã«å¥ã»ã«ãçæããå ´åããã®ååãæ¥é è¾ã¨ãã¹ã 119 @next_cell = next_cell # å¼ã³å 120 ã®ã»ã« 83 @cell_name = cell_name # 生成すべきセル名(受け口側のセル名) 84 # この呼び先に別セルを生成する場合、この名前を接頭辞とすべき 85 @next_cell = next_cell # 呼び先のセル 121 86 @next_cell_port_name = next_cell_port_name 122 87 @next_cell_port_subscript = next_cell_port_subscript … … 127 92 @celltype = celltype 128 93 @plugin_arg_str = plugin_arg 129 @plugin_arg_list = {} # ãã©ã°ã¤ã³å¼æ°ããã¼ã¹ããçµæã®ããã·ã¥å¤æ°94 @plugin_arg_list = {} # プラグイン引数をパースした結果のハッシュ変数 130 95 @caller_cell = caller_cell 131 Join.set_through_info self # å¼æ°ã§æ¸¡ããªã(å¾ãã追å ããã)ãã®ã¯ set_through_info ã§è¨å®ããã96 Join.set_through_info self # 引数で渡らない(後から追加された)ものは set_through_info で設定される 132 97 print( "#{self.class.name}.new( '#{cell_name}', '#{plugin_arg}', '#{next_cell.get_name}', '#{next_cell_port_name}', #{celltype.get_name} )\n" ) 133 98 end 134 99 135 #=== æ 136 å ±ãè¨å®ãã 137 # å 138 ±æãã£ã³ãã«ã®å ´å caller_cell, next_cell ã®ãããã® region ã§ããªãã±ã¼ã¹ããã 139 # å¾ãã追å ããã®ã§ initialize ã®å¼æ°ã§ã¯ãªããå¥ã¡ã½ããã§è¨å® 140 # ãã®ã¡ã½ããã¯ããªã¼ãã¼ã©ã¤ãããªãã§ãã ãã 141 # Join 㨠ThrougPlugin ã®éã®é£çµ¡ç¨ã§ãä»å¾ã¨ãå¼æ°ã追å ãããå¯è½æ§ããããã 142 # ãã®ã¡ã½ãã㯠V1.C.0.34 ã§ä½ç½®ã移åãããThroughPlugin#initialize ã§å¼ã³åºããã 100 #=== 情報を設定する 101 # 共有チャンネルの場合 caller_cell, next_cell のいずれの region でもないケースがある 102 # 後から追加したので initialize の引数ではなく、別メソッドで設定 103 # このメソッドは、オーバーライドしないでください 104 # Join と ThrougPlugin の間の連絡用で、今後とも引数が追加される可能性があるため 105 # このメソッドは V1.C.0.34 で位置が移動され、ThroughPlugin#initialize で呼び出される 143 106 def set_through_info( start_region, end_region, through_type, join, callee_cell, count ) 144 107 @start_region = start_region … … 149 112 @count = count 150 113 151 # preferred_region ã®è¨å®114 # preferred_region の設定 152 115 case through_type 153 116 when :IN_THROUGH, :THROUGH … … 160 123 end 161 124 162 #=== ã»ã«ã®ååãå¾ã125 #=== セルの名前を得る 163 126 def get_cell_name 164 127 @cell_name 165 128 end 166 129 167 #=== NamespacePath ãå¾ã168 # çæããã»ã«ã® namespace path ãçæãã130 #=== NamespacePath を得る 131 # 生成するセルの namespace path を生成する 169 132 def get_cell_namespace_path 170 133 # nsp = @region.get_namespace.get_namespace_path … … 173 136 end 174 137 175 #=== çæãããã»ã«ã®åãå£ã®ååãå¾ã138 #=== 生成されたセルの受け口の名前を得る 176 139 def get_through_entry_port_name 177 140 @entry_port_name 178 141 end 179 142 180 #=== çæãããã»ã«ã®åãå£é 181 åæ·»æ°ãå¾ã 143 #=== 生成されたセルの受け口配列添数を得る 182 144 def get_through_entry_port_subscript 183 145 @entry_port_subscript 184 146 end 185 147 186 #=== 宣è¨ã³ã¼ãã®çæ187 # typedef, signature, celltype ãªã©ï¼cell 以å¤ï¼ã®ã³ã¼ããçæ188 # éè¤ãã¦çæãã¦ã¯ãªããªãï¼ãã§ã«çæããã¦ããå ´åã¯åºåããªããã¨ï¼189 #file:: FILE çæãããã¡ã¤ã«148 #=== 宣言コードの生成 149 # typedef, signature, celltype など(cell 以外)のコードを生成 150 # 重複して生成してはならない(すでに生成されている場合は出力しないこと) 151 #file:: FILE 生成するファイル 190 152 def gen_plugin_decl_code( file ) 191 153 192 # ãã®ã»ã«ã¿ã¤ãï¼åãã·ã°ããã£ï¼ã¯æ¢ã«çæããã¦ãããï¼154 # このセルタイプ(同じシグニチャ)は既に生成されているか? 193 155 if @@generated_celltype[ @ct_name ] == nil then 194 156 @@generated_celltype[ @ct_name ] = [ self ] … … 235 197 end 236 198 237 #=== CDL ãã¡ã¤ã«ã®çæ238 #file:: FILE çæãããã¡ã¤ã«199 #=== CDL ファイルの生成 200 #file:: FILE 生成するファイル 239 201 def gen_cdl_file( file ) 240 202 gen_plugin_decl_code( file ) … … 242 204 end 243 205 244 #=== ã»ã«ã³ã¼ãã®çæ245 # through æå®ã«ããçããã»ã«ã³ã¼ã(CDL)ãçæãã246 #file:: FILE çæãããã¡ã¤ã«206 #=== セルコードの生成 207 # through 指定により生じるセルコード(CDL)を生成する 208 #file:: FILE 生成するファイル 247 209 def gen_through_cell_code( file ) 248 210 … … 259 221 end 260 222 261 #=== å¾ãã®ã³ã¼ããçæ262 # ãã©ã°ã¤ã³ã®å¾ãã®ã³ã¼ã (CDL) ãçæ223 #=== 後ろのコードを生成 224 #プラグインの後ろのコード (CDL) を生成 263 225 #file:: File: 264 226 def self.gen_post_code( file ) 265 # è¤æ°ã®ãã©ã°ã¤ã³ã® post_code ãä¸ã¤ã®ãã¡ã¤ã«ã«å«ã¾ããããã以ä¸ã®ãããªè¦åºããã¤ãããã¨227 # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること 266 228 # file.print "/* '#{self.class.name}' post code */\n" 267 229 end 268 230 269 #=== åãå£é¢æ°ã®æ¬ä½(Cè¨èª)ãçæãã 270 # é常ã§ããã°ãã¸ã§ãã¬ã¼ã¿ã¯åãå£é¢æ°ã®ãã³ãã¬ã¼ããçæãã 271 # ãã©ã°ã¤ã³ã®å ´åãå¤æ´ããå¿ 272 è¦ã®ãªãã»ã«ã¿ã¤ãã³ã¼ããçæãã 273 #file:: FILE åºåå 274 ãã¡ã¤ã« 231 #=== 受け口関数の本体(C言語)を生成する 232 # 通常であれば、ジェネレータは受け口関数のテンプレートを生成する 233 # プラグインの場合、変更する必要のないセルタイプコードを生成する 234 #file:: FILE 出力先ファイル 275 235 #b_singleton:: bool true if singleton 276 236 #ct_name:: Symbol … … 297 257 p_cellcb = #{global_ct_name}_GET_CELLCB(idx); 298 258 }else{ 299 /* ã¨ã©ã¼å¦çã³ã¼ããããã«è¨è¿°*/259 /* エラー処理コードをここに記述 */ 300 260 } 301 261 … … 330 290 end 331 291 332 #=== Through ãã©ã°ã¤ã³ã®å¼æ°ã®ååãç½®æãã292 #=== Through プラグインの引数の名前を置換する 333 293 def check_plugin_arg( ident, rhs ) 334 294 rhs = subst_name rhs … … 336 296 end 337 297 338 #=== ThroughPlugin#ååã®ç½®æ 339 # ãã©ã°ã¤ã³ãªãã·ã§ã³å¼æ°å 340 ã®æååãç½®æãã 341 # $source$ ⦠å¼ã³å 342 ã®ã»ã«å 343 # $destination$ ⦠å¼ã³å 344 ã®ã»ã«å 345 # $SOURCE$ ⦠å¼ã³å 346 ã®ã»ã«å (ãªã¼ã¸ã§ã³åã '_' ã§é£çµãã global_name) 347 # $DESTINATION$ ⦠å¼ã³å 348 ã®ã»ã«å (ãªã¼ã¸ã§ã³åã '_' ã§é£çµãã global_name) 349 # $next$ ⦠次ã®ã»ã«å 350 # è¤æ°ã® through ãã¤ãªãã£ã¦ããå ´åãããå¾ãã«æ¥ããã® 351 # $NEXT$ ⦠次ã®ã»ã«å (ãªã¼ã¸ã§ã³åã '_' ã§é£çµãã global_name) 352 # è¤æ°ã® through ãã¤ãªãã£ã¦ããå ´åãããå¾ãã«æ¥ããã® 353 # $start_region$ ⦠$source$ ã®ã»ã«ã®åå¨ãã region (global_name) 354 # $end_region$ ⦠$destination$ ã®ã»ã«ã®åå¨ãã region (global_name) 355 # $preferred_region$ ⦠é©å㪠region (global_name), start_region ã¾ã㯠end_region 356 # $count$ ⦠region éã® through ã®é©ç¨æ° 357 # $$ ⦠$ ã«ç½®æ 298 #=== ThroughPlugin#名前の置換 299 # プラグインオプション引数内の文字列を置換する 300 # $source$ … 呼び元のセル名 301 # $destination$ … 呼び先のセル名 302 # $SOURCE$ … 呼び元のセル名 (リージョン名を '_' で連結した global_name) 303 # $DESTINATION$ … 呼び先のセル名 (リージョン名を '_' で連結した global_name) 304 # $next$ … 次のセル名 305 # 複数の through がつながっている場合、すぐ後ろに来るもの 306 # $NEXT$ … 次のセル名 (リージョン名を '_' で連結した global_name) 307 # 複数の through がつながっている場合、すぐ後ろに来るもの 308 # $start_region$ … $source$ のセルの存在する region (global_name) 309 # $end_region$ … $destination$ のセルの存在する region (global_name) 310 # $preferred_region$ … 適切な region (global_name), start_region または end_region 311 # $count$ … region 間の through の適用数 312 # $$ … $ に置換 358 313 def subst_name( str ) 359 # ã»ã«åã®ç½®æ314 # セル名の置換 360 315 str = str.gsub( /(^|[^\$])\$source\$/, "\\1#{@caller_cell.get_name}" ) 361 316 str = str.gsub( /(^|[^\$])\$destination\$/, "\\1#{@callee_cell.get_name}" ) … … 364 319 str = str.gsub( /(^|[^\$])\$next\$/, "\\1#{@next_cell.get_name}" ) 365 320 str = str.gsub( /(^|[^\$])\$NEXT\$/, "\\1#{@next_cell.get_global_name}" ) 366 # region åã®ç½®æ321 # region 名の置換 367 322 str = str.gsub( /(^|[^\$])\$start_region\$/, "\\1#{@start_region.get_global_name}" ) 368 323 str = str.gsub( /(^|[^\$])\$end_region\$/, "\\1#{@end_region.get_global_name}" ) … … 370 325 str = str.gsub( /(^|[^\$])\$count\$/, "\\1#{@count}" ) 371 326 372 str = str.gsub( /\$\$/, "\$" ) # $$ ã $ ã«ç½®æ327 str = str.gsub( /\$\$/, "\$" ) # $$ を $ に置換 373 328 374 329 return str -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/TracePlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 55 40 class TracePlugin < ThroughPlugin 56 41 #@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) を参照 63 46 def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell ) 64 47 … … 86 69 87 70 if @b_generate == false then 88 # å 89 ã 90 å¼ã³åºãã»ã«ã«çµåãããã®ã¨ãã 71 # 元々呼び出すセルに結合するものとする 91 72 @entry_port_name = next_cell_port_name 92 73 @cell_name = next_cell.get_name … … 94 75 end 95 76 96 #=== 宣è¨ã³ã¼ãã®çæ97 # typedef, signature, celltype ãªã©ï¼cell 以å¤ï¼ã®ã³ã¼ããçæ98 # éè¤ãã¦çæãã¦ã¯ãªããªãï¼ãã§ã«çæããã¦ããå ´åã¯åºåããªããã¨ï¼99 #file:: FILE çæãããã¡ã¤ã«77 #=== 宣言コードの生成 78 # typedef, signature, celltype など(cell 以外)のコードを生成 79 # 重複して生成してはならない(すでに生成されている場合は出力しないこと) 80 #file:: FILE 生成するファイル 100 81 def gen_plugin_decl_code( file ) 101 82 102 # ãã®ã»ã«ã¿ã¤ãï¼åãã·ã°ããã£ï¼ã¯æ¢ã«çæããã¦ãããï¼83 # このセルタイプ(同じシグニチャ)は既に生成されているか? 103 84 if @@generated_celltype[ @ct_name ] == nil then 104 85 @@generated_celltype[ @ct_name ] = [ self ] … … 449 430 end 450 431 451 # ãã©ã°ã¤ã³å¼æ°åã¨Proc432 # プラグイン引数名と Proc 452 433 TracePluginArgProc = { 453 434 "maxArrayDisplay" => Proc.new { |obj,rhs| obj.set_maxArrayDisplay rhs }, … … 489 470 end 490 471 491 #=== ãã©ã°ã¤ã³å¼æ° tKernel ã®ãã§ãã¯472 #=== プラグイン引数 tKernel のチェック 492 473 def set_kernelCelltype( rhs ) 493 474 @kernelCelltype = rhs.to_sym … … 499 480 end 500 481 501 #=== ãã©ã°ã¤ã³å¼æ° tSyslog ã®ãã§ãã¯482 #=== プラグイン引数 tSyslog のチェック 502 483 def set_syslogCelltype( rhs ) 503 484 @syslogCelltype = rhs.to_sym -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/lib/GenHRP2Marshaler.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ 53 38 #++ 54 39 55 # ãã©ã°ã¤ã³ãªãã·ã§ã³ç¨å¤æ°40 #プラグインオプション用変数 56 41 #@task_priority:: Integer 57 42 #@channelCelltype:: String … … 60 45 module GenTransparentMarshaler 61 46 62 # ãã©ã°ã¤ã³å¼æ°åã¨Proc47 # プラグイン引数名と Proc 63 48 RPCPluginArgProc = { 64 49 "taskPriority" => Proc.new { |obj,rhs| obj.set_taskPriority rhs }, … … 69 54 } 70 55 71 #=== ãã©ã°ã¤ã³å¼æ° taskPriority ã®ãã§ãã¯56 #=== プラグイン引数 taskPriority のチェック 72 57 def set_taskPriority( rhs ) 73 58 @task_priority = rhs 74 59 end 75 60 76 #=== ãã©ã°ã¤ã³å¼æ° channelCelltype ã®ãã§ãã¯61 #=== プラグイン引数 channelCelltype のチェック 77 62 def set_channelCelltype( rhs ) 78 63 @channelCelltype = rhs.to_sym … … 86 71 end 87 72 88 #=== ãã©ã°ã¤ã³å¼æ° TDRCelltype ã®ãã§ãã¯73 #=== プラグイン引数 TDRCelltype のチェック 89 74 def set_TDRCelltype( rhs ) 90 75 @TDRCelltype = rhs.to_sym … … 98 83 end 99 84 100 #=== ãã©ã°ã¤ã³å¼æ° channelCellName ã®ãã§ãã¯85 #=== プラグイン引数 channelCellName のチェック 101 86 def set_channelCellName( rhs ) 102 87 @channelCellName = rhs … … 108 93 end 109 94 110 #=== ãã©ã°ã¤ã³å¼æ° PPAllocatorSize ã®ãã§ãã¯95 #=== プラグイン引数 PPAllocatorSize のチェック 111 96 def set_PPAllocatorSize( rhs ) 112 97 @PPAllocatorSize = rhs 113 98 end 114 99 115 #=== marshaler ã®ã»ã«ã¿ã¤ãåãè¨å®ãã100 #=== marshaler のセルタイプ名を設定する 116 101 def initialize_transparent_marshaler cell_name 117 102 @task_priority = 8 … … 135 120 136 121 f = CFile.open( @marshaler_celltype_file_name, "w" ) 137 # åãå 138 容ãäºåº¦æ¸ãå¯è½æ§ãã (AppFile ã¯ä¸å¯) 122 # 同じ内容を二度書く可能性あり (AppFile は不可) 139 123 140 124 # modified by ishikawa … … 164 148 end 165 149 166 #=== åãå£é¢æ°ã®æ¬ä½ã³ã¼ããçæï¼é é¨ã¨æ«å°¾ã¯å¥éåºåï¼167 #ct_name:: Symbol (through ãã©ã°ã¤ã³ã§çæããã) ã»ã«ã¿ã¤ãå ï¼Symbol ã¨ãã¦éããã¦ããï¼ãããï¼150 #=== 受け口関数の本体コードを生成(頭部と末尾は別途出力) 151 #ct_name:: Symbol (through プラグインで生成された) セルタイプ名 .Symbol として送られてくる(らしい) 168 152 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 ) 169 153 170 # unmarshaler ã¯ã©ã¹ã?154 # unmarshaler クラスか? 171 155 if ct_name == @unmarshaler_celltype_name.to_sym then 172 156 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 ) … … 176 160 end 177 161 178 #=== marshal ã³ã¼ãã®çæ162 #=== marshal コードの生成 179 163 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 ) 180 164 … … 182 166 b_ret_er = false 183 167 184 # é¢æ°ã®æ»ãå¤ã®å 185 ã®åãå¾ã(typedef ããã¦ããå ´å) 168 # 関数の戻り値の元の型を得る(typedef されている場合) 186 169 type = func_type.get_type.get_original_type 187 170 188 # æ»ãå¤è¨æ¶ç¨ã®å¤æ°ãåºåï¼void åã®é¢æ°ã§ã¯åºåããªãï¼171 # 戻り値記憶用の変数を出力(void 型の関数では出力しない) 189 172 if ! type.kind_of?( VoidType ) then 190 173 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 … … 201 184 file.print( " FLGPTN flgptn;\n" ) 202 185 203 # å¼ã³å 204 ã® signature ãåãåºã 186 # 呼び先の signature を取り出す 205 187 signature = @signature 206 188 207 # é¢æ° ID ï¼æ´æ°å¤ï¼189 # 関数 ID (整数値) 208 190 func_id = signature.get_id_from_func_name( func_name ) 209 191 file.print( " int16_t func_id_ = #{func_id}; /* id of #{func_name}: #{func_id} */\n" ) … … 211 193 file.print( " uint8_t msg[256];\n" ) 212 194 213 # ã·ã³ã°ã«ãã³ã§ãªããï¼195 # シングルトンでないか? 214 196 if ! b_singleton then 215 197 216 # singleton ã§ãªããã° p_cellcb åå¾ã³ã¼ããåºå198 # singleton でなければ p_cellcb 取得コードを出力 217 199 file.print <<EOT 218 200 #{ct_name}_CB *p_cellcb; … … 222 204 EOT 223 205 224 # ã¨ã©ã¼ãè¿ããï¼206 # エラーを返すか? 225 207 if b_ret_er then 226 208 file.print <<EOT … … 232 214 file.print <<EOT 233 215 }else{ 234 /* ã¨ã©ã¼å¦çã³ã¼ããããã«è¨è¿°*/235 } 236 EOT 237 end 238 end 239 240 # channel lock ã³ã¼ã216 /* エラー処理コードをここに記述 */ 217 } 218 EOT 219 end 220 end 221 222 # channel lock コード 241 223 file.print <<EOT 242 224 ///* Channel Lock */ … … 247 229 248 230 =begin 249 # SOP ãéä¿¡250 file.print " /* SOP ã®éåº*/\n"231 # SOP を送信 232 file.print " /* SOPの送出 */\n" 251 233 file.print " if( ( ercd_ = cTDR_sendSOP( true ) ) != E_OK )\n" 252 234 file.print " goto error_reset;\n" 253 235 =end 254 236 255 # func_id ãéä¿¡256 file.print " /* é¢æ° id ã®éåº*/\n"237 # func_id を送信 238 file.print " /* 関数 id の送出 */\n" 257 239 =begin 258 240 file.print " if( ( ercd_ = cTDR_putInt16( func_id_ ) ) != E_OK )\n" … … 264 246 # p "#{ct_name}, #{sig_name}, #{func_name}, #{func_global_name}" 265 247 266 b_get = false # marshal ãªãput248 b_get = false # marshal なら put 267 249 b_marshal = true # marshal 268 250 269 # in æ¹åã®å 270 ¥åºåãåºå 251 # in 方向の入出力を出力 271 252 @index = 2 272 file.print " /* å 273 ¥åå¼æ°éåº */\n" 253 file.print " /* 入力引数送出 */\n" 274 254 print_params( params, file, 1, b_marshal, b_get, true, func_type.is_oneway? ) 275 255 print_params( params, file, 1, b_marshal, b_get, false, func_type.is_oneway? ) … … 281 261 =end 282 262 283 file.print " /* EOP ã®éåºï¼ãã±ããã®æãã ãï¼*/\n"263 file.print " /* EOPの送出(パケットの掃きだし) */\n" 284 264 if ! func_type.is_oneway? then 285 265 b_continue = "true" … … 316 296 317 297 if( b_void == false )then 318 # å¼ã³å 319 ã«æ»ãå¤ããªã¿ã¼ã³ 298 # 呼び元に戻り値をリターン 320 299 file.print( " cMessageBuffer_receive(&retval_);\n" ) 321 300 file.print( " return retval_;\n" ) … … 333 312 EOT 334 313 335 # channel lock ã³ã¼ã314 # channel lock コード 336 315 file.print <<EOT 337 316 ///* Channel Lock */ … … 342 321 343 322 if( b_ret_er != false )then 344 # å¼ã³å 345 ã«æ»ãå¤ããªã¿ã¼ã³ 323 # 呼び元に戻り値をリターン 346 324 file.print( " return ercd_;\n" ) 347 325 else … … 351 329 end 352 330 353 #=== unmarshal ã³ã¼ãã®çæ331 #=== unmarshal コードの生成 354 332 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 ) 355 333 … … 357 335 b_ret_er = false 358 336 359 # func_id ãå¾ãã³ã¼ããçæ337 # func_id を得るコードを生成 360 338 file.print <<EOT 361 339 … … 378 356 file.print <<EOT 379 357 }else{ 380 /* ã¨ã©ã¼å¦çã³ã¼ããããã«è¨è¿°*/358 /* エラー処理コードをここに記述 */ 381 359 } 382 360 EOT … … 388 366 389 367 #if 0 390 /* SOP ã®ãã§ãã¯*/368 /* SOPのチェック */ 391 369 if( (ercd_=cTDR_receiveSOP( false )) != E_OK ) 392 370 goto error_reset; 393 /* func_id ã®åå¾*/371 /* func_id の取得 */ 394 372 if( (ercd_=cTDR_getInt16( &func_id_ )) != E_OK ) 395 373 goto error_reset; … … 406 384 EOT 407 385 408 # å¼ã³å 409 ã® signature ãåãåºã 386 # 呼び先の signature を取り出す 410 387 # port = @celltype.find( @next_cell_port_name ) 411 388 # signature = port.get_signature 412 389 signature = @signature 413 390 414 # through ã® signature ã«å«ã¾ãã ãã¹ã¦ã®é¢æ°ã«ã¤ãã¦391 # through の signature に含まれる すべての関数について 415 392 signature.get_function_head_array.each { |f| 416 393 f_name = f.get_name … … 418 395 id = signature.get_id_from_func_name( f_name ) 419 396 420 # é¢æ°ã¯è¿ãå¤ãæã¤ã?397 # 関数は返り値を持つか? 421 398 if f_type.get_type.kind_of?( VoidType ) then 422 399 b_void = true … … 425 402 end 426 403 427 # ãã±ããã®çµããããã§ãã¯ï¼æªåãåãã®ãã¼ã¿ãæ®ã£ã¦ããªãããã§ãã¯ï¼404 # パケットの終わりをチェック(未受け取りのデータが残っていないかチェック) 428 405 file.print " case #{id}: /*** #{f_name} ***/ \n" 429 406 file.print " if( tTransparentUnmarshaler_#{@signature.get_name}_#{f_name}() != E_OK )\n" … … 434 411 435 412 if @PPAllocatorSize then 436 ppallocator_dealloc_str = " /* PPAllocator ã®ãã¹ã¦ã解æ¾*/\n cPPAllocator_dealloc_all();"413 ppallocator_dealloc_str = " /* PPAllocator のすべてを解放 */\n cPPAllocator_dealloc_all();" 437 414 else 438 415 ppallocator_dealloc_str = "" … … 442 419 file.print <<EOT 443 420 default: 444 #if 0 // deleted by ishikawa: tSysLogãæªå®è£ 445 421 #if 0 // deleted by ishikawa: tSysLogが未実装 446 422 syslog(LOG_INFO, "unmarshaler task: ERROR: unknown func_id: %d", func_id_ ); 447 423 #endif /* 0 */ … … 464 440 465 441 # 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 : アンマーシャラで出力引数送出 472 446 def print_params( params, file, nest, b_marshal, b_get, b_referenced, b_oneway = false ) 473 447 params.each{ |param| … … 480 454 type = param.get_type 481 455 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 の場合コピー 483 457 alloc_cp = "cPPAllocator_alloc" 484 458 alloc_cp_extra = nil … … 502 476 end 503 477 504 #=== ã³ãã¼ããªãå¼æ°æ¸¡ãã³ã¼ãã®åºå478 #=== コピーしない引数渡しコードの出力 505 479 def print_param_nc( name, type, file, nest, b_marshal, outer, outer2, b_get ) 506 480 indent = " " * ( nest + 1 ) … … 522 496 when :SIGNED 523 497 if bit_size == -1 || bit_size == -11 then 524 # signed char ã®å ´åãsigned ãæå®ãã498 # signed char の場合、signed を指定する 525 499 signC = "S" 526 500 sign = "s" … … 641 615 642 616 643 #=== PREAMBLE é¨ã®ã³ã¼ãçæ644 # ã¢ã³ãã¼ã·ã£ã©ã»ã«ã¿ã¤ãã®å ´åãã¢ã³ãã¼ã·ã£ã©é¢æ°ã®ãããã¿ã¤ã宣è¨ãçæ617 #=== PREAMBLE 部のコード生成 618 # アンマーシャラセルタイプの場合、アンマーシャラ関数のプロトタイプ宣言を生成 645 619 def gen_preamble file, b_singleton, ct_name, global_name 646 620 if ct_name != @unmarshaler_celltype_name.to_sym then … … 648 622 end 649 623 650 file.print "/* ã¢ã³ãã¼ã·ã£ã©é¢æ°ã®ãããã¿ã¤ã宣è¨*/\n"651 # signature ã«å«ã¾ãã ãã¹ã¦ã®é¢æ°ã«ã¤ãã¦624 file.print "/* アンマーシャラ関数のプロトタイプ宣言 */\n" 625 # signature に含まれる すべての関数について 652 626 @signature.get_function_head_array.each { |f| 653 627 f_name = f.get_name … … 661 635 end 662 636 663 #=== POSTAMBLE é¨ã®ã³ã¼ãçæ664 # ã¢ã³ãã¼ã·ã£ã©ã»ã«ã¿ã¤ãã®å ´åãã¢ã³ãã¼ã·ã£ã©é¢æ°ã®çæ637 #=== POSTAMBLE 部のコード生成 638 # アンマーシャラセルタイプの場合、アンマーシャラ関数の生成 665 639 def gen_postamble file, b_singleton, ct_name, global_name 666 640 if ct_name != @unmarshaler_celltype_name.to_sym then … … 668 642 end 669 643 670 file.print "\n/*** ã¢ã³ãã¼ã·ã£ã©é¢æ°***/\n\n"644 file.print "\n/*** アンマーシャラ関数 ***/\n\n" 671 645 @signature.get_function_head_array.each { |f| 672 646 f_name = f.get_name … … 674 648 id = @signature.get_id_from_func_name( f_name ) 675 649 676 # é¢æ°ã¯è¿ãå¤ãæã¤ã?650 # 関数は返り値を持つか? 677 651 if f_type.get_type.kind_of?( VoidType ) then 678 652 b_void = true … … 692 666 file.print " ER ercd_;\n" 693 667 694 # å¼æ°ãååãå¤æ°ã®å®ç¾©668 # 引数を受取る変数の定義 695 669 param_list = f.get_declarator.get_type.get_paramlist.get_items 696 670 # FuncHead-> Decl-> FuncType->ParamList … … 707 681 end 708 682 709 type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" ãå¤ã683 type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" を外す 710 684 711 685 file.printf( " %-12s %s%s%s%s;\n", type_str, aster, name, aster2, type.get_type_str_post ) 712 686 } 713 687 714 # æ»ãå¤ãåãåãå¤æ°ã®å®ç¾©688 # 戻り値を受け取る変数の定義 715 689 if ! b_void then 716 690 if f.is_oneway? then 717 retval_ptr = "" # oneway ã®å ´åãåãåããæ¨ã¦ããã691 retval_ptr = "" # oneway の場合、受け取るが捨てられる 718 692 else 719 693 # =begin ishikawa modified … … 725 699 end 726 700 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 733 704 b_marshal = false 734 705 @index = 2 … … 741 712 end 742 713 =end 743 # ãã±ããã®åä¿¡å®äº744 # mikan æ¬å½ã¯ã対象é¢æ°ãå¼åºãå¾ã«å®æ½ãããï¼å¼åºããã±ããã®ä½¿ç¨çµããã宣è¨ããç®çã¨ãã¦745 file.print " /* ãã±ããçµããããã§ãã¯*/\n"714 # パケットの受信完了 715 # mikan 本当は、対象関数を呼出す後に実施したい.呼出しパケットの使用終わりを宣言する目的として 716 file.print " /* パケット終わりをチェック */\n" 746 717 if ! f.is_oneway? then 747 718 b_continue = "true" … … 753 724 file.print " goto error_reset;\n\n" 754 725 =end 755 # 対象é¢æ°ãå¼åºã756 file.print " /* 対象é¢æ°ã®å¼åºã*/\n"726 # 対象関数を呼出す 727 file.print " /* 対象関数の呼出し */\n" 757 728 if b_void then 758 729 file.print( " cServerCall_#{f_name}(" ) … … 769 740 file.print( " );\n" ) 770 741 771 # æ»ãå¤ãåºåå¼æ°ã®ååã³ã¼ãã®çæ742 # 戻り値、出力引数の受取コードの生成 772 743 773 744 if ! b_void && ! f.is_oneway? then … … 776 747 777 748 end 778 # oneway ã®å ´ååºåãæ»ãå¤ãç¡ããååãå¾ 779 ããªãï¼éåæãªå¼åºãï¼ 749 # oneway の場合出力、戻り値が無く、受取を待たない(非同期な呼出し) 780 750 if ! f.is_oneway? then 781 751 file.print <<EOT 782 /* é¢æ°å¦çã®çµäºãéç¥*/752 /* 関数処理の終了を通知 */ 783 753 if( ( ercd_ = cEventflag_set( 0x01 ) ) != E_OK ){ 784 754 goto error_reset; -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/lib/GenOpaqueMarshaler.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2018 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 54 39 55 40 #== GenOpaqueMarshaler 56 # OpaqueRPCPlugin, sharedOpaqueRPCPlugin å 57 ±éã®è¦ç´ ãéããã¢ã¸ã¥ã¼ã« 41 # OpaqueRPCPlugin, sharedOpaqueRPCPlugin 共通の要素を集めたモジュール 58 42 module GenOpaqueMarshaler 59 43 60 # ãã©ã°ã¤ã³å¼æ°åã¨Proc44 # プラグイン引数名と Proc 61 45 RPCPluginArgProc = { 62 46 "clientChannelCelltype" => Proc.new { |obj,rhs| obj.set_clientChannelCelltype rhs }, … … 79 63 } 80 64 81 ##### ãã©ã°ã¤ã³å¼æ°ãã§ãã¯é¢æ°82 83 #=== ãã©ã°ã¤ã³å¼æ° taskPriority ã®ãã§ãã¯65 ##### プラグイン引数チェック関数 66 67 #=== プラグイン引数 taskPriority のチェック 84 68 def set_taskPriority( rhs ) 85 69 @taskPriority = rhs 86 70 end 87 71 88 #=== ãã©ã°ã¤ã³å¼æ° serverChannelCelltype ã®ãã§ãã¯72 #=== プラグイン引数 serverChannelCelltype のチェック 89 73 def set_serverChannelCelltype( rhs ) 90 74 @serverChannelCelltype = rhs.to_sym … … 98 82 end 99 83 100 #=== ãã©ã°ã¤ã³å¼æ° clientChannelCelltype ã®ãã§ãã¯84 #=== プラグイン引数 clientChannelCelltype のチェック 101 85 def set_clientChannelCelltype( rhs ) 102 86 @clientChannelCelltype = rhs.to_sym … … 110 94 end 111 95 112 #=== ãã©ã°ã¤ã³å¼æ° serverChannelCell ã®ãã§ãã¯96 #=== プラグイン引数 serverChannelCell のチェック 113 97 def set_serverChannelCell( rhs ) 114 98 @serverChannelCell = rhs.to_sym 115 # ChannelCell ã¯ãã©ã°ã¤ã³ã§çæããããããããã§ã¯ãã§ãã¯ã§ããªã99 # ChannelCell はプラグインで生成されるため、ここではチェックできない 116 100 # path = [ "::", @serverChannelCell ] 117 101 # obj = Namespace.find( path ) … … 121 105 end 122 106 123 #=== ãã©ã°ã¤ã³å¼æ° clientChannelCell ã®ãã§ãã¯107 #=== プラグイン引数 clientChannelCell のチェック 124 108 def set_clientChannelCell( rhs ) 125 109 @clientChannelCell = rhs.to_sym 126 # ChannelCell ã¯ãã©ã°ã¤ã³ã§çæããããããããã§ã¯ãã§ãã¯ã§ããªã110 # ChannelCell はプラグインで生成されるため、ここではチェックできない 127 111 # path = [ "::", @clientChannelCell ] 128 112 # obj = Namespace.find( path ) … … 132 116 end 133 117 134 #=== ãã©ã°ã¤ã³å¼æ° serverChannelInitializer ã®ãã§ãã¯118 #=== プラグイン引数 serverChannelInitializer のチェック 135 119 def set_serverChannelInitializer( rhs ) 136 120 @serverChannelInitializer = rhs.to_sym 137 121 end 138 122 139 #=== ãã©ã°ã¤ã³å¼æ° clientChannelInitializer ã®ãã§ãã¯123 #=== プラグイン引数 clientChannelInitializer のチェック 140 124 def set_clientChannelInitializer( rhs ) 141 125 @clientChannelInitializer = rhs.to_sym 142 126 end 143 127 144 #=== ã¿ã¹ã¯ã¿ã¤ã taskCellype ã®ãã§ãã¯128 #=== タスクタイプ taskCellype のチェック 145 129 def set_taskCelltype( rhs ) 146 130 @taskCelltype = rhs.to_sym … … 154 138 end 155 139 156 #=== ã¿ã¹ã¯ã¿ã¤ã stack\size ã®ãã§ãã¯140 #=== タスクタイプ stack\size のチェック 157 141 def set_stackSize( rhs ) 158 142 @stackSize = rhs 159 143 end 160 144 161 #=== ãã©ã°ã¤ã³å¼æ° PPAllocatorSize ã®ãã§ãã¯145 #=== プラグイン引数 PPAllocatorSize のチェック 162 146 def set_PPAllocatorSize( rhs ) 163 147 @PPAllocatorSize = rhs 164 148 end 165 149 166 #=== ãã©ã°ã¤ã³å¼æ° TDRCelltype ã®ãã§ãã¯150 #=== プラグイン引数 TDRCelltype のチェック 167 151 def set_TDRCelltype( rhs ) 168 152 @TDRCelltype = rhs.to_sym … … 176 160 end 177 161 178 #=== ãã©ã°ã¤ã³å¼æ° substituteAllocator ã®ãã§ãã¯179 # ãªãã·ã§ã³å¼æ°ãã以ä¸ã®å½¢å¼ã§ãããã¨ããã§ãã¯162 #=== プラグイン引数 substituteAllocator のチェック 163 # オプション引数が、以下の形式であることをチェック 180 164 # substituteAllocator(Alloc.eAlloc=>Subst.eAlloc,Alloc2.eAlloc=>Subst2.eAlloc) 181 165 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 が出現しなかった場合にエラーメッセージとして表示 187 169 def optparse (str,regexp,expected) 188 170 str.strip! … … 198 180 ident_rexpr = /\A(\w[\w\d]*)/ 199 181 200 # "Alloc.eAlloc=>CAlloc.eAlloc" ã®å½¢å¼ã«ãªã£ã¦ãããã¨ããã§ãã¯182 # "Alloc.eAlloc=>CAlloc.eAlloc" の形式になっていることをチェック 201 183 while true 202 184 lhs_alloc_cell = optparse( opt, ident_rexpr, "allocator cell name" ) … … 221 203 break if ! rhs_alloc_ent 222 204 223 # ããã§ã¯ãå³è¾ºã®ãã§ãã¯ã¯ã§ããªããå³è¾ºã®ã»ã«ã¯åæ¹åç 224 §ã¨ãªã 205 # ここでは、右辺のチェックはできない。右辺のセルは前方参照となる 225 206 # path = [ "::", rhs_alloc_cell.to_sym ] # mikan namespace 226 207 # obj = Namespace.find( path ) … … 229 210 # else 230 211 # ct = obj.get_celltype 231 # if ct # nil ãªãæ¢ã«ã¨ã©ã¼212 # if ct # nil なら既にエラー 232 213 # ent = ct.find rhs_alloc_ent 233 214 # if ! ent.instance_of? Port || ent.get_port_type != :ENTRY || ent.get_signature == nil || ! ent.get_signature.is_allocator? … … 250 231 end 251 232 252 #=== ãã©ã°ã¤ã³å¼æ° noServerChannelOpenerCode ã®ãã§ãã¯233 #=== プラグイン引数 noServerChannelOpenerCode のチェック 253 234 def set_noServerChannelOpenerCode( rhs ) 254 235 rhs = rhs.to_sym … … 262 243 end 263 244 264 #=== ãã©ã°ã¤ã³å¼æ° clientSemaphoreCelltype ã®ãã§ãã¯245 #=== プラグイン引数 clientSemaphoreCelltype のチェック 265 246 def set_clientSemaphoreCelltype rhs 266 247 @semaphoreCelltype = rhs.to_sym … … 272 253 end 273 254 274 #=== ãã©ã°ã¤ã³å¼æ° clientSemaphoreInitializer ã®ãã§ãã¯255 #=== プラグイン引数 clientSemaphoreInitializer のチェック 275 256 def set_clientSemaphoreInitializer rhs 276 257 @semaphoreInitializer = rhs.to_sym 277 258 end 278 259 279 #=== ãã©ã°ã¤ã³å¼æ° clientErrorHandler ã®ãã§ãã¯260 #=== プラグイン引数 clientErrorHandler のチェック 280 261 def set_clientErrorHandler rhs 281 262 @clientErrorHandler = rhs.to_sym 282 263 end 283 264 284 #=== ãã©ã°ã¤ã³å¼æ° serverErrorHandler ã®ãã§ãã¯265 #=== プラグイン引数 serverErrorHandler のチェック 285 266 def set_serverErrorHandler rhs 286 267 @serverErrorHandler = rhs.to_sym … … 288 269 289 270 290 #=== ã»ã«ã®ååãå¾ã291 # ThroughPlugin::get_cell_name plugin.rb ããªã¼ãã¼ã©ã¤ã271 #=== セルの名前を得る 272 # ThroughPlugin::get_cell_name plugin.rb をオーバーライド 292 273 def get_cell_name 293 274 @cell_name … … 295 276 end 296 277 297 #=== marshaler ã®ã»ã«ã¿ã¤ãåãè¨å®ãã278 #=== marshaler のセルタイプ名を設定する 298 279 def initialize_opaque_marshaler 299 280 300 # ãªãã·ã§ã³è¨å®ãããå¤æ°ã®ããã©ã«ããè¨å®281 # オプション設定される変数のデフォルトを設定 301 282 @taskPriority = 11 302 283 @stackSize = 4096 … … 309 290 @taskCelltype = :"tTask" 310 291 @PPAllocatorSize = nil 311 # @TDRCelltype = :"tTDR" # "tNBOTDR" ã«å¤æ´ã®äºå®292 # @TDRCelltype = :"tTDR" # "tNBOTDR" に変更の予定 312 293 @TDRCelltype = :"tNBOTDR" 313 294 @substituteAllocator = {} … … 324 305 @marshaler_celltype_file_name = "#{$gen}/#{@marshaler_celltype_name}.cdl" 325 306 326 # signature ã§å¯¾å¿ã§ããªããã®ããã§ãã¯307 # signature で対応できないものをチェック 327 308 @signature.each_param{ |func_decl, param_decl| 328 309 if param_decl.get_direction == :OUT then … … 337 318 end 338 319 339 #=== GenOpaqueMarshaler# Opener Code ã®çææã®ãã§ãã¯320 #=== GenOpaqueMarshaler# Opener Code の生成時のチェック 340 321 def check_opener_code 341 # ãµã¼ãã¼ãã£ã³ãã«ã»ã«ã¿ã¤ãã entry sServerChannelOpener eOpener ãæã¤ãã©ããããã§ãã¯342 # mikan entry ã (call ã§ãªãã) ããã§ãã¯ãã¦ããªã322 # サーバーチャンネルセルタイプが entry sServerChannelOpener eOpener を持つかどうかをチェック 323 # mikan entry か (call でないか) をチェックしていない 343 324 # scct = Namespace.find ["::", @serverChannelCelltype] # mikan namespace 344 325 nsp = NamespacePath.analyze( @serverChannelCelltype.to_s ) … … 360 341 end 361 342 362 #=== GenOpaqueMarshaler# PPAllocator ã®å¿ 363 è¦æ§ããã§ãã¯ãã 343 #=== GenOpaqueMarshaler# PPAllocator の必要性をチェックする 364 344 def check_PPAllocator 365 345 if @signature.need_PPAllocator?(true) then … … 374 354 def gen_marshaler_celltype 375 355 f = CFile.open( @marshaler_celltype_file_name, "w" ) 376 # åãå 377 容ãäºåº¦æ¸ãå¯è½æ§ãã (AppFile ã¯ä¸å¯) 356 # 同じ内容を二度書く可能性あり (AppFile は不可) 378 357 379 358 if @PPAllocatorSize then … … 404 383 end 405 384 406 #=== åãå£é¢æ°ã®æ¬ä½ã³ã¼ããçæï¼é é¨ã¨æ«å°¾ã¯å¥éåºåï¼407 #ct_name:: Symbol (through ãã©ã°ã¤ã³ã§çæããã) ã»ã«ã¿ã¤ãå ï¼Symbol ã¨ãã¦éããã¦ããï¼ãããï¼385 #=== 受け口関数の本体コードを生成(頭部と末尾は別途出力) 386 #ct_name:: Symbol (through プラグインで生成された) セルタイプ名 .Symbol として送られてくる(らしい) 408 387 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 ) 409 388 410 # unmarshaler ã¯ã©ã¹ã?389 # unmarshaler クラスか? 411 390 if ct_name == @unmarshaler_celltype_name.to_sym then 412 391 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 ) … … 416 395 end 417 396 418 #=== marshal ã³ã¼ãã®çæ397 #=== marshal コードの生成 419 398 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 ) 420 399 … … 422 401 b_ret_er = false 423 402 424 # é¢æ°ã®æ»ãå¤ã®å 425 ã®åãå¾ã(typedef ããã¦ããå ´å) 403 # 関数の戻り値の元の型を得る(typedef されている場合) 426 404 type = func_type.get_type.get_original_type 427 405 428 # æ»ãå¤è¨æ¶ç¨ã®å¤æ°ãåºåï¼void åã®é¢æ°ã§ã¯åºåããªãï¼406 # 戻り値記憶用の変数を出力(void 型の関数では出力しない) 429 407 if ! type.is_void? then 430 408 file.print( "\t#{func_type.get_type.get_type_str}\t\tretval_;\n" ) … … 439 417 file.print( "\tint16_t\tstate_;\n" ) 440 418 441 # é¢æ° ID ï¼æ´æ°å¤ï¼419 # 関数 ID (整数値) 442 420 func_id = "FUNCID_#{@signature.get_global_name}_#{func_name}".upcase 443 421 fid = @signature.get_id_from_func_name( func_name ) 444 422 file.print( "\tint16_t\tfunc_id_ = #{func_id}; /* (id of '#{func_name}') = #{fid}*/\n" ) 445 423 446 # ã·ã³ã°ã«ãã³ã§ãªããï¼424 # シングルトンでないか? 447 425 if ! b_singleton then 448 426 449 # singleton ã§ãªããã° p_cellcb åå¾ã³ã¼ããåºå427 # singleton でなければ p_cellcb 取得コードを出力 450 428 file.print <<EOT 451 429 #{ct_name}_CB *p_cellcb; … … 455 433 EOT 456 434 457 # ã¨ã©ã¼ãè¿ããï¼435 # エラーを返すか? 458 436 if b_ret_er then 459 437 file.print <<EOT … … 465 443 file.print <<EOT 466 444 }else{ 467 /* ã¨ã©ã¼å¦çã³ã¼ããããã«è¨è¿°*/445 /* エラー処理コードをここに記述 */ 468 446 } 469 447 … … 481 459 end 482 460 483 # channel lock ã³ã¼ã461 # channel lock コード 484 462 file.print <<EOT 485 463 … … 492 470 EOT 493 471 494 # SOP ãéä¿¡495 file.print " /* SOP ã®éåº*/\n"472 # SOP を送信 473 file.print " /* SOPの送出 */\n" 496 474 file.print " SET_RPC_STATE( state_, RPCSTATE_CLIENT_SEND_SOP );\n" 497 475 file.print " if( ( ercd_ = cTDR_sendSOP( true ) ) != E_OK )\n" 498 476 file.print " goto error_reset;\n" 499 477 500 # func_id ãéä¿¡501 file.print " /* é¢æ° id ã®éåº*/\n"478 # func_id を送信 479 file.print " /* 関数 id の送出 */\n" 502 480 file.print " if( ( ercd_ = cTDR_putInt16( func_id_ ) ) != E_OK )\n" 503 481 file.print " goto error_reset;\n" … … 506 484 # p "#{ct_name}, #{sig_name}, #{func_name}, #{func_global_name}" 507 485 508 b_get = false # marshal ãªãput486 b_get = false # marshal なら put 509 487 b_marshal = true # marshal 510 488 511 # in æ¹åã®å 512 ¥åºåãåºå 489 # in 方向の入出力を出力 513 490 if func_type.has_inward? then 514 file.print " /* å 515 ¥åå¼æ°éåº */\n" 491 file.print " /* 入力引数送出 */\n" 516 492 file.print " SET_RPC_STATE( state_, RPCSTATE_CLIENT_SEND_BODY );\n" 517 493 print_params( params, file, 1, b_marshal, b_get, true, "eClientEntry", func_name ) … … 525 501 b_continue = "false" 526 502 end 527 file.print " /* EOP ã®éåºï¼ãã±ããã®æãã ãï¼*/\n"503 file.print " /* EOPの送出(パケットの掃きだし) */\n" 528 504 file.print " SET_RPC_STATE( state_, RPCSTATE_CLIENT_SEND_EOP );\n" 529 505 file.print " if( (ercd_=cTDR_sendEOP(#{b_continue})) != E_OK )\n" 530 506 file.print " goto error_reset;\n\n" 531 507 532 # send ã®ã¡ã¢ãªããã¢ãã±ã¼ã508 # send のメモリをデアロケート 533 509 if func_type.has_send? then 534 510 file.print " /* dealloc send parameter while executing */\n" … … 541 517 if ! func_type.is_oneway? then 542 518 543 file.print " /* ãã±ããã®å§ã¾ãããã§ãã¯*/\n"519 file.print " /* パケットの始まりをチェック */\n" 544 520 file.print " SET_RPC_STATE( state_, RPCSTATE_CLIENT_RECV_SOP );\n" 545 521 file.print " if( (ercd_=cTDR_receiveSOP( true )) != E_OK )\n" 546 522 file.print " goto error_reset;\n" 547 523 548 b_get = true # marshaler ã¯get549 file.print " /* æ»ãå¤ã®åãåã*/\n"524 b_get = true # marshaler は get 525 file.print " /* 戻り値の受け取り */\n" 550 526 print_param( "retval_", func_type.get_type, file, 1, :RETURN, nil, nil, b_marshal, b_get ) 551 527 … … 559 535 indent = " " * indent_level 560 536 561 file.print "#{indent}/* åºåå¤ã®åãåã*/\n"537 file.print "#{indent}/* 出力値の受け取り */\n" 562 538 file.print "#{indent}SET_RPC_STATE( state_, RPCSTATE_CLIENT_RECV_BODY );\n" 563 539 print_params( params, file, indent_level, b_marshal, b_get, true, "eClientEntry", func_name ) … … 569 545 end 570 546 571 file.print "\n /* ãã±ããã®çµããããã§ãã¯*/\n"547 file.print "\n /* パケットの終わりをチェック */\n" 572 548 file.print " SET_RPC_STATE( state_, RPCSTATE_CLIENT_RECV_EOP );\n" 573 549 file.print " if( (ercd_=cTDR_receiveEOP(false)) != E_OK )\n" # b_continue = false … … 576 552 end # ! func_type.is_oneway? 577 553 578 # channel lock ã³ã¼ã554 # channel lock コード 579 555 file.print <<EOT 580 556 /* Channel Unlock */ … … 593 569 594 570 if( b_void == false )then 595 # å¼ã³å 596 ã«æ»ãå¤ããªã¿ã¼ã³ 571 # 呼び元に戻り値をリターン 597 572 file.print( " return retval_;\n" ) 598 573 else … … 604 579 error_reset: 605 580 EOT 606 # send ã®ã¡ã¢ãªããã¢ãã±ã¼ã581 # send のメモリをデアロケート 607 582 if func_type.has_send? then 608 583 file.print " /* dealloc send parameter */\n" … … 613 588 end 614 589 615 # receive ã®ã¡ã¢ãªããã¢ãã±ã¼ã590 # receive のメモリをデアロケート 616 591 if func_type.has_receive? then 617 592 file.print( " /* receive parameter */\n" ) … … 625 600 EOT 626 601 627 # channel lock ã³ã¼ã602 # channel lock コード 628 603 file.print <<EOT 629 604 /* Channel Unlock */ … … 636 611 637 612 if( b_ret_er != false )then 638 # å¼ã³å 639 ã«æ»ãå¤ããªã¿ã¼ã³ 613 # 呼び元に戻り値をリターン 640 614 file.print( " return ERCD( E_RPC, MERCD( ercd_ ) );\n" ) 641 615 else … … 645 619 end 646 620 647 #=== unmarshal ã³ã¼ãã®çæ621 #=== unmarshal コードの生成 648 622 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 ) 649 623 650 624 b_ret_er = true 651 625 652 # func_id ãå¾ãã³ã¼ããçæ626 # func_id を得るコードを生成 653 627 file.print <<EOT 654 628 … … 672 646 file.print <<EOT 673 647 }else{ 674 /* ã¨ã©ã¼å¦çã³ã¼ããããã«è¨è¿°*/648 /* エラー処理コードをここに記述 */ 675 649 } 676 650 EOT … … 683 657 #endif 684 658 685 /* SOP ã®ãã§ãã¯*/659 /* SOPのチェック */ 686 660 SET_RPC_STATE( state_, RPCSTATE_SERVER_RECV_SOP ); 687 661 if( (ercd_=cTDR_receiveSOP( false )) != E_OK ) 688 662 goto error_reset; 689 /* func_id ã®åå¾*/663 /* func_id の取得 */ 690 664 if( (ercd_=cTDR_getInt16( &func_id_ )) != E_OK ) 691 665 goto error_reset; … … 697 671 EOT 698 672 699 # signature ã«å«ã¾ãã ãã¹ã¦ã®é¢æ°ã«ã¤ãã¦673 # signature に含まれる すべての関数について 700 674 @signature.get_function_head_array.each { |f| 701 675 f_name = f.get_name … … 711 685 712 686 if @PPAllocatorSize then 713 ppallocator_dealloc_str = " /* PPAllocator ã®ãã¹ã¦ã解æ¾*/\n cPPAllocator_dealloc_all();"687 ppallocator_dealloc_str = " /* PPAllocator のすべてを解放 */\n cPPAllocator_dealloc_all();" 714 688 else 715 689 ppallocator_dealloc_str = "" … … 734 708 end 735 709 736 #=== PREAMBLE é¨ã®ã³ã¼ãçæ737 # ã¢ã³ãã¼ã·ã£ã©ã»ã«ã¿ã¤ãã®å ´åãã¢ã³ãã¼ã·ã£ã©é¢æ°ã®ãããã¿ã¤ã宣è¨ãçæ710 #=== PREAMBLE 部のコード生成 711 # アンマーシャラセルタイプの場合、アンマーシャラ関数のプロトタイプ宣言を生成 738 712 def gen_preamble file, b_singleton, ct_name, global_name 739 713 if ct_name != @unmarshaler_celltype_name.to_sym then … … 741 715 end 742 716 743 # string.h ã® include (memset, strlen ã®ãã)717 # string.h の include (memset, strlen のため) 744 718 file.print "/* header file (strlen, memset) */\n" 745 719 file.print "#include\t<string.h>\n\n" 746 720 747 file.print "/* ã¢ã³ãã¼ã·ã£ã©é¢æ°ã®ãããã¿ã¤ã宣è¨*/\n"748 # signature ã«å«ã¾ãã ãã¹ã¦ã®é¢æ°ã«ã¤ãã¦721 file.print "/* アンマーシャラ関数のプロトタイプ宣言 */\n" 722 # signature に含まれる すべての関数について 749 723 @signature.get_function_head_array.each { |f| 750 724 f_name = f.get_name … … 756 730 end 757 731 758 #=== POSTAMBLE é¨ã®ã³ã¼ãçæ 759 # ã¢ã³ãã¼ã·ã£ã©ã»ã«ã¿ã¤ãã®å ´åãåã 760 ã®ã¢ã³ãã¼ã·ã£ã©é¢æ°ã®çæ 732 #=== POSTAMBLE 部のコード生成 733 # アンマーシャラセルタイプの場合、個々のアンマーシャラ関数の生成 761 734 def gen_postamble file, b_singleton, ct_name, global_name 762 735 if ct_name != @unmarshaler_celltype_name.to_sym then … … 764 737 end 765 738 766 file.print "\n/*** ã¢ã³ãã¼ã·ã£ã©é¢æ°***/\n\n"739 file.print "\n/*** アンマーシャラ関数 ***/\n\n" 767 740 @signature.get_function_head_array.each { |f| 768 741 f_name = f.get_name … … 770 743 id = @signature.get_id_from_func_name( f_name ) 771 744 772 # é¢æ°ã¯è¿ãå¤ãæã¤ã?745 # 関数は返り値を持つか? 773 746 b_ret_er = false 774 747 init_retval = "" … … 794 767 file.print " ER ercd_;\n" 795 768 796 # å¼æ°ãååãå¤æ°ã®å®ç¾©769 # 引数を受取る変数の定義 797 770 params = f.get_declarator.get_type.get_paramlist.get_items 798 771 # FuncHead-> Decl-> FuncType->ParamList … … 803 776 dir = par.get_direction 804 777 if( dir == :RECEIVE )then 805 # type 㯠PtrType ã§ããããåãé¤ããå778 # type は PtrType で、それを取り除いた型 806 779 type = type.get_type 807 780 end … … 821 794 end 822 795 823 type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" ãå¤ã796 type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" を外す 824 797 file.printf( " %-12s %s%s%s%s%s;\n", type_str, aster, name, aster2, type.get_type_str_post, init ) 825 798 … … 833 806 end 834 807 835 # in æ¹åã®å 836 ¥åºåãå 837 ¥å 838 file.print "\n /* å 839 ¥åå¼æ°åå */\n" 808 # in 方向の入出力を入力 809 file.print "\n /* 入力引数受取 */\n" 840 810 file.print " SET_RPC_STATE( *state_, RPCSTATE_SERVER_RECV_BODY );\n" 841 b_get = true # unmarshal ã§ã¯get811 b_get = true # unmarshal では get 842 812 b_marshal = false 843 813 print_params( params, file, 1, b_marshal, b_get, true, "cServerCall", f_name ) … … 846 816 847 817 848 # ãã±ããã®åä¿¡å®äº849 file.print " /* ãã±ããçµããããã§ãã¯*/\n"818 # パケットの受信完了 819 file.print " /* パケット終わりをチェック */\n" 850 820 file.print " SET_RPC_STATE( *state_, RPCSTATE_SERVER_RECV_EOP );\n" 851 821 if ! f_type.is_oneway? then … … 857 827 file.print " goto error_reset;\n\n" 858 828 859 # out ã®ã¡ã¢ãªãã¢ãã±ã¼ã829 # out のメモリをアロケート 860 830 dir = :OUT; alloc_cp = "cPPAllocator_alloc"; alloc_cp_extra = nil; nest = 1 861 831 alloc_for_out_params( params, file, nest, dir, alloc_cp, alloc_cp_extra ) 862 832 863 # 対象é¢æ°ãå¼åºã864 file.print " /* 対象é¢æ°ã®å¼åºã*/\n"833 # 対象関数を呼出す 834 file.print " /* 対象関数の呼出し */\n" 865 835 file.print " SET_RPC_STATE( *state_, RPCSTATE_SERVER_EXEC );\n" 866 836 if b_void then … … 881 851 file.print( " );\n" ) 882 852 883 # æ»ãå¤ãåºåå¼æ°ã®ååã³ã¼ãã®çæ 884 885 # oneway ã®å ´ååºåãæ»ãå¤ãç¡ããååãå¾ 886 ããªãï¼éåæãªå¼åºãï¼ 853 # 戻り値、出力引数の受取コードの生成 854 855 # oneway の場合出力、戻り値が無く、受取を待たない(非同期な呼出し) 887 856 if ! f.is_oneway? then 888 857 889 file.print "\n /* SOP ã®éåº*/\n"858 file.print "\n /* SOPの送出 */\n" 890 859 file.print " SET_RPC_STATE( *state_, RPCSTATE_SERVER_SEND_SOP );\n" 891 860 … … 893 862 file.print " goto error_reset;\n" 894 863 895 b_get = false # unmarshaler ã¯put864 b_get = false # unmarshaler は put 896 865 if( ! b_void )then 897 file.print " /* æ»ãå¤ã®éåº*/\n"866 file.print " /* 戻り値の送出 */\n" 898 867 print_param( "retval_", f_type.get_type, file, 1, :RETURN, nil, nil, b_marshal, b_get ) 899 868 end … … 908 877 indent = " " * indent_level 909 878 910 file.print "#{indent}/* åºåå¤ã®éåº*/\n"879 file.print "#{indent}/* 出力値の送出 */\n" 911 880 file.print "#{indent}SET_RPC_STATE( *state_, RPCSTATE_SERVER_SEND_BODY );\n" 912 881 print_params( params, file, indent_level, b_marshal, b_get, true, "cServerCall", f_name ) 913 882 print_params( params, file, indent_level, b_marshal, b_get, false, "cServerCall", f_name ) 914 883 915 # receive ã®ã¡ã¢ãªããã¢ãã±ã¼ã884 # receive のメモリをデアロケート 916 885 if f_type.has_receive? then 917 886 file.print "#{indent}/* dealloc receive parameter */\n" … … 925 894 end 926 895 927 file.print " /* ãã±ããã®çµããï¼æãã ãï¼*/\n"896 file.print " /* パケットの終わり(掃きだし) */\n" 928 897 file.print " SET_RPC_STATE( *state_, RPCSTATE_SERVER_SEND_EOP );\n" 929 898 file.print " if( (ercd_=cTDR_sendEOP(false)) != E_OK )\n" # b_continue = false … … 936 905 error_reset: 937 906 EOT 938 # send ã®ãªã»ããç¨ãã¢ãã±ã¼ã907 # send のリセット用デアロケート 939 908 if f_type.has_send? then 940 909 file.print " /* dealloc send parameter */\n" … … 945 914 end 946 915 947 # receive ã®ã¡ã¢ãªããã¢ãã±ã¼ã916 # receive のメモリをデアロケート 948 917 if f_type.has_receive? && b_ret_er then 949 918 file.print " /* dealloc receive parameter */\n" … … 957 926 file.print "}\n\n" 958 927 959 # ããï¼åã 960 ã®é¢æ°ï¼ã§ã¯ã¨ã©ã¼ãã³ãã©ã¼ã¯å¼ã³åºããªããå¼ã³å 961 ï¼ãµã¼ãã¼ã®ã¡ã¤ã³é¢æ°ï¼ã§å¼ã³åºãã 928 # ここ(個々の関数)ではエラーハンドラーは呼び出さない。呼び元(サーバーのメイン関数)で呼び出す。 962 929 } 963 930 end … … 966 933 #b_marshal:: bool 967 934 #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 で参照されているものを出力 976 940 def print_params( params, file, nest, b_marshal, b_get, b_referenced, port_name, func_name ) 977 941 params.each{ |param| … … 996 960 case dir 997 961 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 のときアロケータコードは不用 999 963 alloc_cp_extra = nil 1000 964 print_param( param.get_name, param.get_type, file, nest, dir, nil, nil, b_marshal, b_get, alloc_cp, alloc_cp_extra ) … … 1003 967 alloc_cp_extra = nil 1004 968 if b_get then 1005 outer = "(*" # ãã¼ã·ã£ã©å´ã§ã¯ããã¤ã³ã¿ã (send ã¨æ¯ã¹) ä¸ã¤å¤ã969 outer = "(*" # マーシャラ側では、ポインタが (send と比べ) 一つ多い 1006 970 outer2 = ")" 1007 971 else 1008 outer = nil # ã¢ã³ãã¼ã·ã£ã©å´ã§ã¯ããã¤ã³ã¿ãä¸ã¤å¤ããã¦ãã972 outer = nil # アンマーシャラ側では、ポインタが一つ外されている 1009 973 outer2 = nil 1010 974 end … … 1016 980 end 1017 981 1018 #=== ã¢ãã±ã¼ã¿ã³ã¼ããçæ (out ã®ã¢ã³ãã¼ã·ã£ã©ç¨)982 #=== アロケータコードを生成 (out のアンマーシャラ用) 1019 983 def alloc_for_out_params( params, file, nest, dir, alloc_cp, alloc_cp_extra ) 1020 984 params.each{ |param| … … 1026 990 end 1027 991 1028 #=== ã¢ãã±ã¼ã¿ã³ã¼ããçæ (out ã®ã¢ã³ãã¼ã·ã£ã©ç¨åå¥ãã©ã¡ã¼ã¿ã®çæ)992 #=== アロケータコードを生成 (out のアンマーシャラ用個別パラメータの生成) 1029 993 def alloc_for_out_param( name, type, file, nest, outer, outer2, alloc_cp, alloc_cp_extra ) 1030 994 org_type = type.get_original_type … … 1039 1003 count = type.get_count; size = type.get_size; string = type.get_string 1040 1004 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 の引数の型とする 1042 1006 if count then 1043 1007 len = type.get_count.to_s … … 1052 1016 end 1053 1017 1054 # size_is ã« max æå®ãããå ´åãlength ã max ãè¶ 1055 ãã¦ããããã§ãã¯ããã³ã¼ããçæ 1018 # size_is に max 指定がある場合、length が max を超えているかチェックするコードを生成 1056 1019 if org_type.get_max != nil && string == nil then 1057 1020 file.print "#{indent}if( #{len} > #{type.get_max} ){\t/* GenOpaqueMarshaler max check 2 */\n" … … 1092 1055 end 1093 1056 1094 #=== å¼æ°ã®ä¸æ¬ãã¢ãã±ã¼ãã³ã¼ãã®çæ1095 # send ï¼ãã¼ã·ã£ã©ã®æå¾ãreceiveï¼ã¢ã³ãã¼ã·ã£ã©ã®æå¾ã§ä¸æ¬ãã¦å¼æ°ããã¢ãã±ã¼ããã1057 #=== 引数の一括デアロケートコードの生成 1058 # send:マーシャラの最後、receive:アンマーシャラの最後で一括して引数をデアロケートする 1096 1059 def dealloc_for_params( params, file, nest, dir, dealloc_cp, b_reset = false ) 1097 1060 if b_reset then … … 1107 1070 aster = "" 1108 1071 if dir == :RECEIVE then 1109 type = type.get_type.get_original_type # ãã¤ã³ã¿ãä¸ã¤å¤ã1072 type = type.get_type.get_original_type # ポインタを一つ外す 1110 1073 if b_reset then 1111 1074 aster = "*" … … 1128 1091 end 1129 1092 1130 #== out 㧠nullable ãªå¼æ°ã®æ 1131 å ±ã渡ã 1132 # out nullable ã®å ´åãin, send, receive ã®ããã«ãå¤ã渡ãç´åã§ã¯ãªããå¼åºãæã«æ¸¡ã 1093 #== out で nullable な引数の情報を渡す 1094 # out nullable の場合、in, send, receive のように、値を渡す直前ではなく、呼出し時に渡す 1133 1095 def print_out_nullable( params, file, nest, b_marshal ); 1134 1096 indent = "\t" * nest … … 1140 1102 file.print "#{indent}\tgoto error_reset;\n" 1141 1103 else 1142 # å¼ã³å 1143 㯠alloc_for_out_param 㧠nullable ã®å¯¾å¿ãã 1104 # 呼び先は alloc_for_out_param で nullable の対応する 1144 1105 file.print "#{indent}if( (ercd_=cTDR_getInt8( &b_#{param.get_name}_null_)) != E_OK )\n" 1145 1106 file.print "#{indent}\tgoto error_reset;\n" -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/lib/GenParamCopy.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 55 40 #= ParamCopy 56 41 # 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 が用いられる. 60 45 # 61 46 module GenParamCopy 62 47 63 #=== å¼æ°ã®è»¢éã³ã¼ããçæ48 #=== 引数の転送コードを生成 64 49 65 50 def print_param( name, type, file, nest, dir, outer, outer2, b_marshal, b_get, alloc_cp = nil, alloc_cp_extra = nil, name_list = nil ) … … 76 61 EOT 77 62 if ( dir == :SEND || dir == :RECEIVE ) && type.get_type.has_pointer? then 78 # send, receive ã®å ´åã¯ãã¨ã©ã¼ãªã»ããã«åã NULL ã«ãã63 # send, receive の場合は、エラーリセットに備え NULL にする 79 64 file.print <<EOT 80 65 #{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 */ … … 103 88 when :SIGNED 104 89 if bit_size == -1 || bit_size == -11 then 105 sign = "S" # signed char ã®å ´åã®ã¿ S ãã¤ã90 sign = "S" # signed char の場合のみ S がつく 106 91 else 107 92 sign = "" … … 156 141 nest = print_nullable_pre( name, type, file, nest, dir, outer, outer2, b_marshal, b_get ) 157 142 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 の引数の型とする 159 144 file.print "#{indent}{\t/* GenParamCopy 4 */\n" 160 145 file.print "#{indent} #{loop_counter_type.get_type_str} i__#{nest}, length__#{nest};\n" … … 168 153 count_str = count.to_str( name_list, outer, outer2 ) 169 154 else 170 # size_is ã¯å¿ 171 é . count_is ã¯ãªãã·ã§ã³ 155 # size_is は必須. count_is はオプション 172 156 count_str = size_str 173 157 end 174 158 file.print "#{indent} length__#{nest} = #{count_str};\t/* GenParamCopy 5 */\n" 175 159 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 のはず (条件が冗長)。試験が終わっているので、次回見直し時に外す 179 162 if b_get && type.get_max != nil && ! ( ( dir == :INOUT || dir == :OUT ) && alloc_cp == nil ) then 180 163 file.print "#{indent} if( length__#{nest} > #{type.get_max.to_s} ){\t/* GenParamCopy max check 1 */\n" … … 202 185 file.print "#{indent} length__#{nest} = STRLEN#{b_size}(#{outer}#{name}#{outer2})+1;\t/* GenParamCopy 7 */\n" 203 186 end 204 size_str = "length__#{nest}" # string ã®å ´åãstrnlen 以ä¸ã®é åã確ä¿ããªã187 size_str = "length__#{nest}" # string の場合、strnlen 以上の領域を確保しない 205 188 else 206 189 if ( dir == :INOUT ) then 207 190 if ( string.instance_of? Expression ) then 208 191 len = string.to_str( name_list, outer, outer2 ) 209 size_str = "#{len}" # string(len) ã®å ´å len ã確ä¿ãã192 size_str = "#{len}" # string(len) の場合 len を確保する 210 193 else 211 194 raise "unsuscripted string used for inout parameter #{name}" 212 195 end 213 196 else 214 size_str = "length__#{nest}" # string ã®å ´åãstrnlen 以ä¸ã®é åã確ä¿ããªã197 size_str = "length__#{nest}" # string の場合、strnlen 以上の領域を確保しない 215 198 end 216 199 end … … 224 207 EOT 225 208 if ( dir == :SEND || dir == :RECEIVE ) && type.get_type.has_pointer? then 226 # send, receive ã®å ´åã¯ãã¨ã©ã¼ãªã»ããã«åã NULL ã«ãã209 # send, receive の場合は、エラーリセットに備え NULL にする 227 210 file.print <<EOT 228 211 #{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 */ … … 251 234 EOT 252 235 if ( dir == :SEND || dir == :RECEIVE ) && type.get_type.has_pointer? then 253 # send, receive ã®å ´åã¯ãã¨ã©ã¼ãªã»ããã«åã NULL ã«ãã236 # send, receive の場合は、エラーリセットに備え NULL にする 254 237 file.print <<EOT 255 238 #{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 */ … … 286 269 size_str = subsc.to_str( name_list, outer, outer2 ) 287 270 288 loop_counter_type = IntType.new(32) # mikan åã size_is, count_is ã®å¼æ°ã®åã¨ãã271 loop_counter_type = IntType.new(32) # mikan 型を size_is, count_is の引数の型とする 289 272 file.print "#{indent}{\t/* GenParamCopy 11 */\n" 290 273 file.print "#{indent} #{loop_counter_type.get_type_str} i__#{nest}, length__#{nest} = #{size_str};\n" … … 302 285 if type.is_nullable? then 303 286 indent = " " * nest 304 if dir == :OUT then # OUT ã®å ´å print_out_nullable 㧠NULL ãã©ããã®æ 305 å ±ã渡ã 287 if dir == :OUT then # OUT の場合 print_out_nullable で NULL かどうかの情報を渡す 306 288 # 'null or not' is sent in the function 'print_out_nullable' 307 289 if b_get then … … 321 303 #{indent} if( ! b_null_ ){ 322 304 EOT 323 else # dir = :INOUT, b_marshal = true, b_get = true ã®å ´åãNULL ãã©ããã®æ 324 å ±ã渡ããªã 305 else # dir = :INOUT, b_marshal = true, b_get = true の場合、NULL かどうかの情報を渡さない 325 306 file.print <<EOT 326 307 #{indent} int8_t b_null_ = (#{outer}#{name}#{outer2} == NULL);\t/* GenParamCopy Null 21 */ … … 335 316 336 317 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 の場合 338 319 file.print <<EOT 339 320 #{indent} if((ercd_=cTDR_putInt8( b_null_ )) != E_OK )\t/* GenParamCopy Null 32 */ … … 355 336 def print_nullable_post( name, type, file, nest, dir, outer, outer2, b_marshal, b_get ) 356 337 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 かどうかの情報を渡す 359 339 nest -= 1 360 340 indent = " " * nest … … 371 351 #{indent} } /* ! b_null_ */ 372 352 EOT 373 else # dir = :INOUT, b_marshal = true # inout ã® out æ¹å353 else # dir = :INOUT, b_marshal = true # inout の out 方向 374 354 file.print "#{indent} } /* ! b_null_ GenParamCopy Null 52 */\n" 375 355 end -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/lib/GenTransparentMarshaler.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ 53 38 #++ 54 39 55 # ãã©ã°ã¤ã³ãªãã·ã§ã³ç¨å¤æ°40 #プラグインオプション用変数 56 41 #@task_priority:: Integer 57 42 #@channelCelltype:: String … … 60 45 module GenTransparentMarshaler 61 46 62 # ãã©ã°ã¤ã³å¼æ°åã¨Proc47 # プラグイン引数名と Proc 63 48 RPCPluginArgProc = { 64 49 "taskPriority" => Proc.new { |obj,rhs| obj.set_taskPriority rhs }, … … 69 54 } 70 55 71 #=== ãã©ã°ã¤ã³å¼æ° taskPriority ã®ãã§ãã¯56 #=== プラグイン引数 taskPriority のチェック 72 57 def set_taskPriority( rhs ) 73 58 @task_priority = rhs 74 59 end 75 60 76 #=== ãã©ã°ã¤ã³å¼æ° channelCelltype ã®ãã§ãã¯61 #=== プラグイン引数 channelCelltype のチェック 77 62 def set_channelCelltype( rhs ) 78 63 @channelCelltype = rhs.to_sym … … 86 71 end 87 72 88 #=== ãã©ã°ã¤ã³å¼æ° TDRCelltype ã®ãã§ãã¯73 #=== プラグイン引数 TDRCelltype のチェック 89 74 def set_TDRCelltype( rhs ) 90 75 @TDRCelltype = rhs.to_sym … … 98 83 end 99 84 100 #=== ãã©ã°ã¤ã³å¼æ° channelCellName ã®ãã§ãã¯85 #=== プラグイン引数 channelCellName のチェック 101 86 def set_channelCellName( rhs ) 102 87 @channelCellName = rhs … … 108 93 end 109 94 110 #=== ãã©ã°ã¤ã³å¼æ° PPAllocatorSize ã®ãã§ãã¯95 #=== プラグイン引数 PPAllocatorSize のチェック 111 96 def set_PPAllocatorSize( rhs ) 112 97 @PPAllocatorSize = rhs 113 98 end 114 99 115 #=== marshaler ã®ã»ã«ã¿ã¤ãåãè¨å®ãã100 #=== marshaler のセルタイプ名を設定する 116 101 def initialize_transparent_marshaler cell_name 117 102 @task_priority = 8 … … 135 120 136 121 f = CFile.open( @marshaler_celltype_file_name, "w" ) 137 # åãå 138 容ãäºåº¦æ¸ãå¯è½æ§ãã (AppFile ã¯ä¸å¯) 122 # 同じ内容を二度書く可能性あり (AppFile は不可) 139 123 140 124 f.print <<EOT … … 157 141 end 158 142 159 #=== åãå£é¢æ°ã®æ¬ä½ã³ã¼ããçæï¼é é¨ã¨æ«å°¾ã¯å¥éåºåï¼160 #ct_name:: Symbol (through ãã©ã°ã¤ã³ã§çæããã) ã»ã«ã¿ã¤ãå ï¼Symbol ã¨ãã¦éããã¦ããï¼ãããï¼143 #=== 受け口関数の本体コードを生成(頭部と末尾は別途出力) 144 #ct_name:: Symbol (through プラグインで生成された) セルタイプ名 .Symbol として送られてくる(らしい) 161 145 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 ) 162 146 163 # unmarshaler ã¯ã©ã¹ã?147 # unmarshaler クラスか? 164 148 if ct_name == @unmarshaler_celltype_name.to_sym then 165 149 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 ) … … 169 153 end 170 154 171 #=== marshal ã³ã¼ãã®çæ155 #=== marshal コードの生成 172 156 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 ) 173 157 … … 175 159 b_ret_er = false 176 160 177 # é¢æ°ã®æ»ãå¤ã®å 178 ã®åãå¾ã(typedef ããã¦ããå ´å) 161 # 関数の戻り値の元の型を得る(typedef されている場合) 179 162 type = func_type.get_type.get_original_type 180 163 181 # æ»ãå¤è¨æ¶ç¨ã®å¤æ°ãåºåï¼void åã®é¢æ°ã§ã¯åºåããªãï¼164 # 戻り値記憶用の変数を出力(void 型の関数では出力しない) 182 165 if ! type.is_void? then 183 166 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 … … 194 177 file.print( " FLGPTN flgptn;\n" ) 195 178 196 # å¼ã³å 197 ã® signature ãåãåºã 179 # 呼び先の signature を取り出す 198 180 signature = @signature 199 181 200 # é¢æ° ID ï¼æ´æ°å¤ï¼182 # 関数 ID (整数値) 201 183 func_id = signature.get_id_from_func_name( func_name ) 202 184 file.print( " int16_t func_id_ = #{func_id}; /* id of #{func_name}: #{func_id} */\n" ) 203 185 204 # ã·ã³ã°ã«ãã³ã§ãªããï¼186 # シングルトンでないか? 205 187 if ! b_singleton then 206 188 207 # singleton ã§ãªããã° p_cellcb åå¾ã³ã¼ããåºå189 # singleton でなければ p_cellcb 取得コードを出力 208 190 file.print <<EOT 209 191 #{ct_name}_CB *p_cellcb; … … 213 195 EOT 214 196 215 # ã¨ã©ã¼ãè¿ããï¼197 # エラーを返すか? 216 198 if b_ret_er then 217 199 file.print <<EOT … … 223 205 file.print <<EOT 224 206 }else{ 225 /* ã¨ã©ã¼å¦çã³ã¼ããããã«è¨è¿°*/226 } 227 EOT 228 end 229 end 230 231 # channel lock ã³ã¼ã207 /* エラー処理コードをここに記述 */ 208 } 209 EOT 210 end 211 end 212 213 # channel lock コード 232 214 file.print <<EOT 233 215 /* Channel Lock */ … … 237 219 EOT 238 220 239 # SOP ãéä¿¡240 file.print " /* SOP ã®éåº*/\n"221 # SOP を送信 222 file.print " /* SOPの送出 */\n" 241 223 file.print " if( ( ercd_ = cTDR_sendSOP( true ) ) != E_OK )\n" 242 224 file.print " goto error_reset;\n" 243 225 244 # func_id ãéä¿¡245 file.print " /* é¢æ° id ã®éåº*/\n"226 # func_id を送信 227 file.print " /* 関数 id の送出 */\n" 246 228 file.print " if( ( ercd_ = cTDR_putInt16( func_id_ ) ) != E_OK )\n" 247 229 file.print " goto error_reset;\n" … … 250 232 # p "#{ct_name}, #{sig_name}, #{func_name}, #{func_global_name}" 251 233 252 b_get = false # marshal ãªãput234 b_get = false # marshal なら put 253 235 b_marshal = true # marshal 254 236 255 # in æ¹åã®å 256 ¥åºåãåºå 257 file.print " /* å 258 ¥åå¼æ°éåº */\n" 237 # in 方向の入出力を出力 238 file.print " /* 入力引数送出 */\n" 259 239 print_params( params, file, 1, b_marshal, b_get, true, func_type.is_oneway? ) 260 240 print_params( params, file, 1, b_marshal, b_get, false, func_type.is_oneway? ) … … 264 244 end 265 245 266 file.print " /* EOP ã®éåºï¼ãã±ããã®æãã ãï¼*/\n"246 file.print " /* EOPの送出(パケットの掃きだし) */\n" 267 247 if ! func_type.is_oneway? then 268 248 b_continue = "true" … … 293 273 294 274 if( b_void == false )then 295 # å¼ã³å 296 ã«æ»ãå¤ããªã¿ã¼ã³ 275 # 呼び元に戻り値をリターン 297 276 file.print( " return retval_;\n" ) 298 277 else … … 307 286 EOT 308 287 309 # channel lock ã³ã¼ã288 # channel lock コード 310 289 file.print <<EOT 311 290 /* Channel Lock */ … … 316 295 317 296 if( b_ret_er != false )then 318 # å¼ã³å 319 ã«æ»ãå¤ããªã¿ã¼ã³ 297 # 呼び元に戻り値をリターン 320 298 file.print( " return ercd_;\n" ) 321 299 else … … 325 303 end 326 304 327 #=== unmarshal ã³ã¼ãã®çæ305 #=== unmarshal コードの生成 328 306 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 ) 329 307 … … 331 309 b_ret_er = false 332 310 333 # func_id ãå¾ãã³ã¼ããçæ311 # func_id を得るコードを生成 334 312 file.print <<EOT 335 313 … … 352 330 file.print <<EOT 353 331 }else{ 354 /* ã¨ã©ã¼å¦çã³ã¼ããããã«è¨è¿°*/332 /* エラー処理コードをここに記述 */ 355 333 } 356 334 EOT … … 359 337 file.print <<EOT 360 338 361 /* SOP ã®ãã§ãã¯*/339 /* SOPのチェック */ 362 340 if( (ercd_=cTDR_receiveSOP( false )) != E_OK ) 363 341 goto error_reset; 364 /* func_id ã®åå¾*/342 /* func_id の取得 */ 365 343 if( (ercd_=cTDR_getInt16( &func_id_ )) != E_OK ) 366 344 goto error_reset; … … 372 350 EOT 373 351 374 # å¼ã³å 375 ã® signature ãåãåºã 352 # 呼び先の signature を取り出す 376 353 # port = @celltype.find( @next_cell_port_name ) 377 354 # signature = port.get_signature 378 355 signature = @signature 379 356 380 # through ã® signature ã«å«ã¾ãã ãã¹ã¦ã®é¢æ°ã«ã¤ãã¦357 # through の signature に含まれる すべての関数について 381 358 signature.get_function_head_array.each { |f| 382 359 f_name = f.get_name … … 384 361 id = signature.get_id_from_func_name( f_name ) 385 362 386 # é¢æ°ã¯è¿ãå¤ãæã¤ã?363 # 関数は返り値を持つか? 387 364 if f_type.get_type.is_void? then 388 365 b_void = true … … 391 368 end 392 369 393 # ãã±ããã®çµããããã§ãã¯ï¼æªåãåãã®ãã¼ã¿ãæ®ã£ã¦ããªãããã§ãã¯ï¼370 # パケットの終わりをチェック(未受け取りのデータが残っていないかチェック) 394 371 file.print " case #{id}: /*** #{f_name} ***/ \n" 395 372 file.print " if( tTransparentUnmarshaler_#{@signature.get_global_name}_#{f_name}() != E_OK )\n" … … 400 377 401 378 if @PPAllocatorSize then 402 ppallocator_dealloc_str = " /* PPAllocator ã®ãã¹ã¦ã解æ¾*/\n cPPAllocator_dealloc_all();"379 ppallocator_dealloc_str = " /* PPAllocator のすべてを解放 */\n cPPAllocator_dealloc_all();" 403 380 else 404 381 ppallocator_dealloc_str = "" … … 423 400 424 401 # 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 : アンマーシャラで出力引数送出 431 406 def print_params( params, file, nest, b_marshal, b_get, b_referenced, b_oneway = false ) 432 407 params.each{ |param| … … 439 414 type = param.get_type 440 415 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 の場合コピー 442 417 alloc_cp = "cPPAllocator_alloc" 443 418 alloc_cp_extra = nil … … 461 436 end 462 437 463 #=== ã³ãã¼ããªãå¼æ°æ¸¡ãã³ã¼ãã®åºå438 #=== コピーしない引数渡しコードの出力 464 439 def print_param_nc( name, type, file, nest, b_marshal, outer, outer2, b_get ) 465 440 indent = " " * ( nest + 1 ) … … 481 456 when :SIGNED 482 457 if bit_size == -1 || bit_size == -11 then 483 # signed char ã®å ´åãsigned ãæå®ãã458 # signed char の場合、signed を指定する 484 459 signC = "S" 485 460 sign = "s" … … 574 549 575 550 576 #=== PREAMBLE é¨ã®ã³ã¼ãçæ577 # ã¢ã³ãã¼ã·ã£ã©ã»ã«ã¿ã¤ãã®å ´åãã¢ã³ãã¼ã·ã£ã©é¢æ°ã®ãããã¿ã¤ã宣è¨ãçæ551 #=== PREAMBLE 部のコード生成 552 # アンマーシャラセルタイプの場合、アンマーシャラ関数のプロトタイプ宣言を生成 578 553 def gen_preamble file, b_singleton, ct_name, global_name 579 554 if ct_name != @unmarshaler_celltype_name.to_sym then … … 581 556 end 582 557 583 file.print "/* ã¢ã³ãã¼ã·ã£ã©é¢æ°ã®ãããã¿ã¤ã宣è¨*/\n"584 # signature ã«å«ã¾ãã ãã¹ã¦ã®é¢æ°ã«ã¤ãã¦558 file.print "/* アンマーシャラ関数のプロトタイプ宣言 */\n" 559 # signature に含まれる すべての関数について 585 560 @signature.get_function_head_array.each { |f| 586 561 f_name = f.get_name … … 592 567 end 593 568 594 #=== POSTAMBLE é¨ã®ã³ã¼ãçæ595 # ã¢ã³ãã¼ã·ã£ã©ã»ã«ã¿ã¤ãã®å ´åãã¢ã³ãã¼ã·ã£ã©é¢æ°ã®çæ569 #=== POSTAMBLE 部のコード生成 570 # アンマーシャラセルタイプの場合、アンマーシャラ関数の生成 596 571 def gen_postamble file, b_singleton, ct_name, global_name 597 572 if ct_name != @unmarshaler_celltype_name.to_sym then … … 599 574 end 600 575 601 file.print "\n/*** ã¢ã³ãã¼ã·ã£ã©é¢æ°***/\n\n"576 file.print "\n/*** アンマーシャラ関数 ***/\n\n" 602 577 @signature.get_function_head_array.each { |f| 603 578 f_name = f.get_name … … 605 580 id = @signature.get_id_from_func_name( f_name ) 606 581 607 # é¢æ°ã¯è¿ãå¤ãæã¤ã?582 # 関数は返り値を持つか? 608 583 if f_type.get_type.is_void? then 609 584 b_void = true … … 624 599 file.print " CELLCB *p_cellcb;\n" 625 600 626 # å¼æ°ãååãå¤æ°ã®å®ç¾©601 # 引数を受取る変数の定義 627 602 param_list = f.get_declarator.get_type.get_paramlist.get_items 628 603 # FuncHead-> Decl-> FuncType->ParamList … … 639 614 end 640 615 641 type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" ãå¤ã616 type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" を外す 642 617 643 618 file.printf( " %-12s %s%s%s%s;\n", type_str, aster, name, aster2, type.get_type_str_post ) 644 619 } 645 620 646 # æ»ãå¤ãåãåãå¤æ°ã®å®ç¾©621 # 戻り値を受け取る変数の定義 647 622 if ! b_void then 648 623 if f.is_oneway? then 649 retval_ptr = "" # oneway ã®å ´åãåãåããæ¨ã¦ããã624 retval_ptr = "" # oneway の場合、受け取るが捨てられる 650 625 else 651 626 retval_ptr = "*" … … 654 629 end 655 630 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 662 634 b_marshal = false 663 635 print_params( param_list, file, 1, b_marshal, b_get, true, f.is_oneway? ) … … 668 640 end 669 641 670 # ãã±ããã®åä¿¡å®äº671 # mikan æ¬å½ã¯ã対象é¢æ°ãå¼åºãå¾ã«å®æ½ãããï¼å¼åºããã±ããã®ä½¿ç¨çµããã宣è¨ããç®çã¨ãã¦672 file.print " /* ãã±ããçµããããã§ãã¯*/\n"642 # パケットの受信完了 643 # mikan 本当は、対象関数を呼出す後に実施したい.呼出しパケットの使用終わりを宣言する目的として 644 file.print " /* パケット終わりをチェック */\n" 673 645 if ! f.is_oneway? then 674 646 b_continue = "true" … … 679 651 file.print " goto error_reset;\n\n" 680 652 681 # 対象é¢æ°ãå¼åºã682 file.print " /* 対象é¢æ°ã®å¼åºã*/\n"653 # 対象関数を呼出す 654 file.print " /* 対象関数の呼出し */\n" 683 655 if b_void then 684 656 file.print( " cServerCall_#{f_name}(" ) … … 695 667 file.print( " );\n" ) 696 668 697 # æ»ãå¤ãåºåå¼æ°ã®ååã³ã¼ãã®çæ 698 699 # oneway ã®å ´ååºåãæ»ãå¤ãç¡ããååãå¾ 700 ããªãï¼éåæãªå¼åºãï¼ 669 # 戻り値、出力引数の受取コードの生成 670 671 # oneway の場合出力、戻り値が無く、受取を待たない(非同期な呼出し) 701 672 if ! f.is_oneway? then 702 673 file.print <<EOT 703 /* é¢æ°å¦çã®çµäºãéç¥*/674 /* 関数処理の終了を通知 */ 704 675 if( ( ercd_ = cEventflag_set( 0x01 ) ) != E_OK ){ 705 676 goto error_reset; -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/lib/MrubyBridgeCelltypePluginModule.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2011 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ 53 38 #++ 54 39 55 #== celltype ãã©ã°ã¤ã³ã®å 56 ±éã®è¦ªã¯ã©ã¹ 40 #== celltype プラグインの共通の親クラス 57 41 module MrubyBridgeCelltypePluginModule 58 42 59 # ãã©ã°ã¤ã³å¼æ°å=> Proc43 # プラグイン引数名 => Proc 60 44 MrubyBridgePluginArgProc = { 61 45 "ignoreUnsigned" => Proc.new { |obj,rhs| obj.set_ignoreUnsigned rhs }, … … 71 55 @@count = 1 72 56 73 #celltype:: Celltype ã»ã«ã¿ã¤ãï¼ã¤ã³ã¹ã¿ã³ã¹ï¼57 #celltype:: Celltype セルタイプ(インスタンス) 74 58 def initialize( celltype, option ) 75 59 dbgPrint "#{self.class.name}: initialzie: #{celltype.get_name}\n" … … 93 77 end 94 78 95 #=== æ°ããã»ã«96 #cell:: Cell ã»ã«79 #=== 新しいセル 80 #cell:: Cell セル 97 81 # 98 # celltype ãã©ã°ã¤ã³ãæå®ãããã»ã«ã¿ã¤ãã®ã»ã«ãçæããã99 # ã»ã«ã¿ã¤ããã©ã°ã¤ã³ã«å¯¾ããæ°ããã»ã«ã®å ±å100 # generate æã«ããå¼ã³åºãããå ´åãããã¾ã§ã«å®ç¾©ããã cell ã«ã¤ãã¦ã¯ãinitialize ã®ã¿ã¤ãã³ã°ã§å¼ã³åºããã82 # celltype プラグインを指定されたセルタイプのセルが生成された 83 # セルタイププラグインに対する新しいセルの報告 84 # generate 文により呼び出された場合、それまでに定義された cell については、initialize のタイミングで呼び出される 101 85 def new_cell( cell ) 102 86 dbgPrint "MrubyBridgeCelltypePluginModule: new_cell: #{cell.get_name}\n" 103 87 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 以降のセルは対象から外す 106 90 cdl_info( "I9999 MrubyBridgeCelltypePlugin: $1 is excluded because cell generated after post_coded", cell.get_name ) 107 91 return … … 146 130 end 147 131 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 生成するファイル 155 139 def gen_cdl_file file 156 # ãã®æ®µéã§å¼ã³ã ã㨠generate æãå¼ã³åºãããåã®ã»ã«ã®ã¿ã®åºåã¨ãªã140 # この段階で呼びだすと generate 文が呼び出される前のセルのみの出力となる 157 141 158 142 # dbgPrint "MrubyBridgeCelltypePlugin: gen_cdl_file: #{@celltype.get_name}\n" … … 175 159 end 176 160 177 #=== tCelltype_factory.h ã«æ¿å 178 ¥ããã³ã¼ããçæãã 179 # file 以å¤ã®ä»ã®ãã¡ã¤ã«ã«ãã¡ã¯ããªã³ã¼ããçæãã¦ããã 180 # ã»ã«ã¿ã¤ããã©ã°ã¤ã³ãæå®ãããã»ã«ã¿ã¤ãã®ã¿å¼ã³åºããã 161 #=== tCelltype_factory.h に挿入するコードを生成する 162 # file 以外の他のファイルにファクトリコードを生成してもよい 163 # セルタイププラグインが指定されたセルタイプのみ呼び出される 181 164 def gen_factory file 182 165 end … … 187 170 188 171 @@b_gen_post_code_called = false 189 #=== å¾ãã® CDL ã³ã¼ããçæ190 # ãã©ã°ã¤ã³ã®å¾ãã® CDL ã³ã¼ããçæ172 #=== 後ろの CDL コードを生成 173 #プラグインの後ろの CDL コードを生成 191 174 #file:: File: 192 175 def self.gen_post_code( file ) … … 198 181 end 199 182 200 # ãã®æ®µéã§çæããã¨ãåããã¹ãã³ã¼ãã§åºåããã mruby ã®åæåã³ã¼ãã«åæ ãããªã183 # この段階で生成すると、同じポストコードで出力される mruby の初期化コードに反映されない 201 184 202 # # MrubyBridgeCelltypePlugin ã®çæãã generate æã¯ã185 # # MrubyBridgeCelltypePlugin の生成する generate 文は、 203 186 # fn2 = "#{$gen}/tmp_MrubyBridgeCelltypePlugin_post.cdl" 204 187 # f2 = File.open( fn2, "w" ) 205 # # è¤æ°ã®ãã©ã°ã¤ã³ã® post_code ãä¸ã¤ã®ãã¡ã¤ã«ã«å«ã¾ããããã以ä¸ã®ãããªè¦åºããã¤ãããã¨188 # # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること 206 189 # dbgPrint "MrubyBridgeCelltypePlugin: gen_post_code\n" 207 190 # f2.print "/* '#{self.name}' post code */\n" … … 219 202 end 220 203 221 #=== ãã©ã°ã¤ã³å¼æ°222 223 #=== ãã©ã°ã¤ã³å¼æ°ignoreUnsigned204 #=== プラグイン引数 205 206 #=== プラグイン引数 ignoreUnsigned 224 207 def set_ignoreUnsigned rhs 225 208 if rhs == "true" || rhs == nil then … … 256 239 end 257 240 258 #=== ãã©ã°ã¤ã³å¼æ°exclude_port_func241 #=== プラグイン引数 exclude_port_func 259 242 def set_exclude_port_func rhs 260 243 port_funcs = rhs.split ',' … … 287 270 end 288 271 289 #=== ãã©ã°ã¤ã³å¼æ°auto_exclude272 #=== プラグイン引数 auto_exclude 290 273 def set_auto_exclude rhs 291 274 # print "MrubyBridgeCellPlugin: auto_exclude=#{rhs}\n" -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.