Changeset 318 for asp3_gr_sakura/trunk/tecsgen/tecslib/plugin
- Timestamp:
- Aug 3, 2017, 10:46:41 PM (7 years ago)
- Location:
- asp3_gr_sakura/trunk/tecsgen/tecslib/plugin
- Files:
-
- 43 edited
Legend:
- Unmodified
- Added
- Removed
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/ATK1AlarmPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/ATK1DelayTaskPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/ATK1EventPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/ATK1ISRPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/ATK1KernelPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/ATK1ResourcePlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/ATK1TaskPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/C2TECSBridgePlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 # $Id : C2TECSBridgePlugin.rb 2278 2015-11-01 20:10:07Z okuma-top$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
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/CellPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 # $Id : celltypePlugin.rb 1540 2011-08-12 14:04:37Z okuma-top$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
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/CelltypePlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 # $Id : CelltypePlugin.rb 2061 2014-05-31 22:15:33Z okuma-top$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
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/DomainPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 # $Id : TracePlugin.rb 2032 2014-03-16 12:10:58Z okuma-top$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 end 64 49 65 #== çµå join ã«ãã©ã°ã¤ã³ãæ¿å 66 ¥ãã 67 #join::Join : çµåã«é¢ããæ 68 å ± 69 #return::[ plugin_name::String, option::String ]: æ¿å 70 ¥ãããã©ã°ã¤ã³ã æ¿å 71 ¥ãããã®ããªããã° nil ãè¿ã 50 #== 結合 join にプラグインを挿入する 51 #join::Join : 結合に関する情報 52 #return::[ plugin_name::String, option::String ]: 挿入するプラグイン。 挿入するものがなければ nil を返す 72 53 #return::(1) [ plugin_name, option ] or (2) [[ plugin_name, option ], ...], or [] or nil: (2): not supported now 73 # nil: region éã®çµåç¦æ¢, []: region éã®çµåå¯(ãã©ã°ã¤ã³æ¿å 74 ¥ç¡ã) 75 # [ plugin_name, option ]: *_through( plugin_name, option ) æå®ããã®ã¨åç 54 # nil: region 間の結合禁止, []: region 間の結合可(プラグイン挿入無し) 55 # [ plugin_name, option ]: *_through( plugin_name, option ) 指定したのと同等 76 56 # 77 # region éã® through ãæå®ããã¦ããå ´åãout_through, to_through 78 # ã§ã¯ããããã«ãã£ã¦æå®ããããã©ã°ã¤ã³ã®å¾ãã«ãin_through ã®å ´å 79 # in_through ãã©ã°ã¤ã³ã®åã«æ¿å 80 ¥ããã 57 # region 間の through が指定されている場合、out_through, to_through 58 # では、それらによって指定されたプラグインの後ろに、in_through の場合 59 # in_through プラグインの前に挿入される 81 60 # 82 # ãã®ã¡ã½ãããå¼åºãããæç¹ã§ã¯ Join#get_rhs_cell ãªã©æå³è§£æå¾83 # ã«ããå¼ã³åºããªãã¡ã½ãããå¼åºãã¦ããæå¹ãªå¤ã¯å¾ãããªã61 # このメソッドが呼出された時点では Join#get_rhs_cell など意味解析後 62 # にしか呼び出せないメソッドを呼出しても、有効な値は得られない 84 63 # 85 64 def add_through_plugin( join, current_region, next_region, through_type ) 86 # join.get_owner:Cell 左辺ã®ã»ã« 87 # join.get_definition:Port å¼ã³å£ 88 # join.get_subscript:Integer or nil å¼ã³å£é 89 åã®æ·»æ° (Join::@subscript ã®èª¬æåç 90 §) 91 # join.get_cell:Cell å³è¾ºã®ã»ã« 92 # join.get_port_name:Symbol åãå£ 93 # get_rhs_subscript:Integer or nil åãå£é 94 åã®æ·»æ° (Join::@rhs_subscript ã®èª¬æåç 95 §) 65 # join.get_owner:Cell 左辺のセル 66 # join.get_definition:Port 呼び口 67 # join.get_subscript:Integer or nil 呼び口配列の添数 (Join::@subscript の説明参照) 68 # join.get_cell:Cell 右辺のセル 69 # join.get_port_name:Symbol 受け口 70 # get_rhs_subscript:Integer or nil 受け口配列の添数 (Join::@rhs_subscript の説明参照) 96 71 # return [] 97 72 return nil 98 73 end 99 74 100 #== require ãçµåå¯è½ãï¼75 #== require が結合可能か? 101 76 def joinable?(current_region, next_region, through_type ) 102 77 return false -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/HRP2AlarmHandlerPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 #++ … … 54 39 #require "HRP2KernelObjectPlugin" 55 40 require_tecsgen_lib "HRP2KernelObjectPlugin.rb" 56 #== celltype ãã©ã°ã¤ã³ã®å 57 ±éã®è¦ªã¯ã©ã¹ 41 #== celltype プラグインの共通の親クラス 58 42 class HRP2AlarmHandlerPlugin < HRP2KernelObjectPlugin 59 43 @@ep = [:eStartAlarm, :eStopAlarm, :eManageAlarm, :eReferAlarm ] … … 66 50 def print_cfg_cre(file, cell, val, tab) 67 51 val[:id] = val[:id].gsub( /(^|[^\$])\$id\$/, "\\1#{@celltype.get_name.to_s}_#{cell.get_name.to_s}" ) 68 # $cbp$ ã®ä»£ãã52 # $cbp$の代わり 69 53 index = cell.get_id - @celltype.get_id_base 70 54 cell_CB_name = "#{@celltype.get_global_name}_CB_tab[#{index}]" 71 # CRE_XXX ã®çæ55 # CRE_XXXの生成 72 56 if (cell.get_region.get_region_type != :DOMAIN) || (cell.get_region.get_param != :KERNEL_DOMAIN) 73 # ç¡æå± or ã¦ã¼ã¶ãã¡ã¤ã³ã«å±ããå ´å57 # 無所属 or ユーザドメインに属する場合 74 58 raise "alarm handler #{val[:id]} must belong to kernel domain." 75 59 else … … 84 68 end 85 69 86 #tAlarm ã®åãå£ãªã¹ã70 #tAlarmの受け口リスト 87 71 def get_entry_ports_name_list() 88 72 @@ep -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/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
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/HRP2CyclicHandlerPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 #++ … … 55 40 require_tecsgen_lib "HRP2KernelObjectPlugin.rb" 56 41 57 #== celltype ãã©ã°ã¤ã³ã®å 58 ±éã®è¦ªã¯ã©ã¹ 42 #== celltype プラグインの共通の親クラス 59 43 class HRP2CyclicHandlerPlugin < HRP2KernelObjectPlugin 60 44 @@ep = [:eStartCyclic, :eStopCyclic, :eManageCyclic, :eReferCyclic ] … … 67 51 def print_cfg_cre(file, cell, val, tab) 68 52 val[:id] = val[:id].gsub( /(^|[^\$])\$id\$/, "\\1#{@celltype.get_name.to_s}_#{cell.get_name.to_s}" ) 69 # $cbp$ ã®ä»£ãã53 # $cbp$の代わり 70 54 index = cell.get_id - @celltype.get_id_base 71 55 cell_CB_name = "#{@celltype.get_global_name}_CB_tab[#{index}]" 72 # CRE_XXX ã®çæ56 # CRE_XXXの生成 73 57 if (cell.get_region.get_region_type != :DOMAIN) || (cell.get_region.get_param != :KERNEL_DOMAIN) 74 # ç¡æå± or ã¦ã¼ã¶ãã¡ã¤ã³ã«å±ããå ´å58 # 無所属 or ユーザドメインに属する場合 75 59 raise "cyclic handler #{val[:id]} must belong to kernel domain." 76 60 else … … 85 69 end 86 70 87 #tCyclicHandler ã®åãå£ãªã¹ã71 #tCyclicHandlerの受け口リスト 88 72 def get_entry_ports_name_list() 89 73 @@ep -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/HRP2DataqueuePlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 #++ … … 59 44 @@ep = [:eSendDataqueue, :eReceiveDataqueue, :eManageDataqueue, :eReferDataqueue ] 60 45 #=== HRP2DataqueuePlugin#print_cfg_cre 61 # CRE_DTQã®åºå 62 # file:: FILE: åºåå 63 ãã¡ã¤ã« 64 # val :: string: ã«ã¼ãã«ãªãã¸ã§ã¯ãã®å±æ§ã®è§£æçµæ 65 # tab :: string: ã¤ã³ãã³ãç¨ã®tab 46 # CRE_DTQの出力 47 # file:: FILE: 出力先ファイル 48 # val :: string: カーネルオブジェクトの属性の解析結果 49 # tab :: string: インデント用のtab 66 50 def print_cfg_cre(file, cell, val, tab) 67 51 file.print tab … … 69 53 end 70 54 #=== HRP2DataqueuePlugin#print_cfg_sac 71 # SAC_DTQã®åºå 72 # file:: FILE: åºåå 73 ãã¡ã¤ã« 74 # val :: string: ã«ã¼ãã«ãªãã¸ã§ã¯ãã®å±æ§ã®è§£æçµæ 75 # acv :: string: ã¢ã¯ã»ã¹ãã¯ã¿ 55 # SAC_DTQの出力 56 # file:: FILE: 出力先ファイル 57 # val :: string: カーネルオブジェクトの属性の解析結果 58 # acv :: string: アクセスベクタ 76 59 def print_cfg_sac(file, val, acv) 77 60 file.puts "SAC_DTQ(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});" 78 61 end 79 #tDataqueue ã®åãå£ãªã¹ã62 #tDataqueueの受け口リスト 80 63 def get_entry_ports_name_list() 81 64 @@ep -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/HRP2EventflagPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 #++ … … 59 44 @@ep = [:eSetEventflag, :eWaitEventflag, :eManageEventflag, :eReferEventflag ] 60 45 #=== HRP2EventflagPlugin#print_cfg_cre 61 # CRE_FLGã®åºå 62 # file:: FILE: åºåå 63 ãã¡ã¤ã« 64 # val :: string: ã«ã¼ãã«ãªãã¸ã§ã¯ãã®å±æ§ã®è§£æçµæ 65 # tab :: string: ã¤ã³ãã³ãç¨ã®tab 46 # CRE_FLGの出力 47 # file:: FILE: 出力先ファイル 48 # val :: string: カーネルオブジェクトの属性の解析結果 49 # tab :: string: インデント用のtab 66 50 def print_cfg_cre(file, cell, val, tab) 67 51 file.print tab … … 69 53 end 70 54 #=== HRP2EventflagPlugin#print_cfg_sac 71 # SAC_FLGã®åºå 72 # file:: FILE: åºåå 73 ãã¡ã¤ã« 74 # val :: string: ã«ã¼ãã«ãªãã¸ã§ã¯ãã®å±æ§ã®è§£æçµæ 75 # acv :: string: ã¢ã¯ã»ã¹ãã¯ã¿ 55 # SAC_FLGの出力 56 # file:: FILE: 出力先ファイル 57 # val :: string: カーネルオブジェクトの属性の解析結果 58 # acv :: string: アクセスベクタ 76 59 def print_cfg_sac(file, val, acv) 77 60 file.puts "SAC_FLG(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});" 78 61 end 79 #tEventflag ã®åãå£ãªã¹ã62 #tEventflagの受け口リスト 80 63 def get_entry_ports_name_list() 81 64 @@ep -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/HRP2FixedSizeMemoryPoolPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 #++ … … 59 44 @@ep = [:eSendFixedSizeMemoryPool, :eReceiveFixedSizeMemoryPool, :eManageFixedSizeMemoryPool, :eReferFixedSizeMemoryPool ] 60 45 #=== HRP2FixedSizeMemoryPoolPlugin#print_cfg_cre 61 # CRE_MPFã®åºå 62 # file:: FILE: åºåå 63 ãã¡ã¤ã« 64 # val :: string: ã«ã¼ãã«ãªãã¸ã§ã¯ãã®å±æ§ã®è§£æçµæ 65 # tab :: string: ã¤ã³ãã³ãç¨ã®tab 46 # CRE_MPFの出力 47 # file:: FILE: 出力先ファイル 48 # val :: string: カーネルオブジェクトの属性の解析結果 49 # tab :: string: インデント用のtab 66 50 def print_cfg_cre(file, cell, val, tab) 67 51 file.print tab … … 69 53 end 70 54 #=== HRP2FixedSizeMemoryPoolPlugin#print_cfg_sac 71 # SAC_MPFã®åºå 72 # file:: FILE: åºåå 73 ãã¡ã¤ã« 74 # val :: string: ã«ã¼ãã«ãªãã¸ã§ã¯ãã®å±æ§ã®è§£æçµæ 75 # acv :: string: ã¢ã¯ã»ã¹ãã¯ã¿ 55 # SAC_MPFの出力 56 # file:: FILE: 出力先ファイル 57 # val :: string: カーネルオブジェクトの属性の解析結果 58 # acv :: string: アクセスベクタ 76 59 def print_cfg_sac(file, val, acv) 77 60 file.puts "SAC_MPF(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});" 78 61 end 79 #tFixedSizeMemoryPool ã®åãå£ãªã¹ã62 #tFixedSizeMemoryPoolの受け口リスト 80 63 def get_entry_ports_name_list() 81 64 @@ep -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/HRP2HandlerPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 #++ … … 56 41 57 42 58 #== celltype ãã©ã°ã¤ã³ã®å 59 ±éã®è¦ªã¯ã©ã¹ 43 #== celltype プラグインの共通の親クラス 60 44 class HRP2HandlerPlugin < HRP2KernelObjectPlugin 61 45 @@ep = [:eStartAlarm, :eStopAlarm, :eManageAlarm, :eReferAlarm ] … … 68 52 def print_cfg_cre(file, cell, val, tab) 69 53 val[:id] = val[:id].gsub( /(^|[^\$])\$id\$/, "\\1#{@celltype.get_name.to_s}_#{cell.get_name.to_s}" ) 70 # $cbp$ ã®ä»£ãã54 # $cbp$の代わり 71 55 index = cell.get_id - @celltype.get_id_base 72 56 cell_CB_name = "#{@celltype.get_global_name}_CB_tab[#{index}]" 73 # CRE_XXX ã®çæ57 # CRE_XXXの生成 74 58 domainOption = cell.get_region.get_domain_root.get_domain_type.get_option 75 59 # if (cell.get_region.get_region_type != :DOMAIN) || (cell.get_region.get_param != :KERNEL_DOMAIN) 76 60 if (domainOption == "OutOfDomain") || (domainOption != "trusted") 77 # ç¡æå± or ã¦ã¼ã¶ãã¡ã¤ã³ã«å±ããå ´å61 # 無所属 or ユーザドメインに属する場合 78 62 raise "#{@plugin_arg_str.to_s.downcase} handler #{val[:id]} must belong to kernel domain." 79 63 elsif @plugin_arg_str == "ALARM" … … 101 85 102 86 =begin 103 #tAlarm ã®åãå£ãªã¹ã87 #tAlarmの受け口リスト 104 88 def get_entry_ports_name_list() 105 89 @@ep -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/HRP2KernelObjectPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 #++ 53 38 54 # Region ã¯ã©ã¹ã«ã¡ã½ããã追å39 # Regionクラスにメソッドを追加 55 40 =begin 56 41 class Region … … 69 54 =end 70 55 71 # Cell ã¯ã©ã¹ã«ã¤ã³ã¹ã¿ã³ã¹å¤æ°ã¨ã¡ã½ããã追å56 # Cellクラスにインスタンス変数とメソッドを追加 72 57 =begin 73 58 class Cell … … 85 70 end 86 71 87 # set_referenced_cell ã«ããã»ãããã72 # set_referenced_cellにしたほうがよい 88 73 # def set_referenced_region( region, port_name ) 89 74 def set_referenced_cell( cell, port_name ) … … 139 124 =end 140 125 141 #== celltype ãã©ã°ã¤ã³ã®å 142 ±éã®è¦ªã¯ã©ã¹ 126 #== celltype プラグインの共通の親クラス 143 127 class HRP2KernelObjectPlugin < CelltypePlugin 144 128 # @@obj_hash = {} 145 129 146 130 #@celltype:: Celltype 147 #@option:: String : ãªãã·ã§ã³æåå131 #@option:: String :オプション文字列 148 132 def initialize( celltype, option ) 149 133 super 150 # ããããã®ã«ã¼ãã«ãªãã¸ã§ã¯ãã解æ対象ã»ã«ã¿ã¤ãã«è¿½å134 # それぞれのカーネルオブジェクトを解析対象セルタイプに追加 151 135 HRP2KernelObjectPlugin.set_celltype(celltype) 152 136 end 153 137 154 138 #=== HRP2KernelObjectPlugin#print_cfg_cre 155 # å種ã«ã¼ãã«ãªãã¸ã§ã¯ãã®CRE_*ã®åºå 156 # file:: FILE: åºåå 157 ãã¡ã¤ã« 158 # val :: string: ã«ã¼ãã«ãªãã¸ã§ã¯ãã®å±æ§ã®è§£æçµæ 159 # tab :: string: ã¤ã³ãã³ãç¨ã®tab 139 # 各種カーネルオブジェクトのCRE_*の出力 140 # file:: FILE: 出力先ファイル 141 # val :: string: カーネルオブジェクトの属性の解析結果 142 # tab :: string: インデント用のtab 160 143 def print_cfg_cre(file, cell, val, tab) 161 144 raise "called virtual method print_cfg_cre in #{@celltype.get_name} plugin" … … 163 146 164 147 #=== HRP2KernelObjectPlugin#print_cfg_sac 165 # å種ã«ã¼ãã«ãªãã¸ã§ã¯ãã®SAC_*ã®åºå 166 # file:: FILE: åºåå 167 ãã¡ã¤ã« 168 # val :: string: ã«ã¼ãã«ãªãã¸ã§ã¯ãã®å±æ§ã®è§£æçµæ 169 # acv :: string: ã¢ã¯ã»ã¹ãã¯ã¿ 148 # 各種カーネルオブジェクトのSAC_*の出力 149 # file:: FILE: 出力先ファイル 150 # val :: string: カーネルオブジェクトの属性の解析結果 151 # acv :: string: アクセスベクタ 170 152 def print_cfg_sac(file, val, acv) 171 153 raise "called virtual method print_cfg_sac in #{@celltype.get_name} plugin" … … 173 155 174 156 #=== HRP2KernelObjectPlugin#get_entry_ports_name_list 175 # ã«ã¼ãã«ãªãã¸ã§ã¯ãã®å種ã¢ã¯ã»ã¹ã®ç¨®å¥ã®åãå£åãåå¾157 # カーネルオブジェクトの各種アクセスの種別の受け口名を取得 176 158 def get_entry_ports_name_list() 177 159 raise "called virtual method get_entry_ports_name_list in #{@celltype.get_name} plugin" … … 185 167 puts "===== begin #{@celltype.get_name.to_s} plugin =====" 186 168 187 # 対象ã¨ãªããã¹ã¦ã®ã»ã«ã«ã¤ãã¦ãåãå£ã«çµåããã¦ãã188 # ã»ã«ã®æå±ãã¡ã¤ã³ã解æ169 # 対象となるすべてのセルについて、受け口に結合されている 170 # セルの所属ドメインを解析 189 171 if !HRP2KernelObjectPlugin.isChecked() 190 172 HRP2KernelObjectPlugin.check_referenced_cells() … … 193 175 end 194 176 195 # 追è¨ããããã« AppFile ã使ãï¼æåã³ã¼ãå¤æãããªãï¼177 # 追記するために AppFile を使う(文字コード変換されない) 196 178 file2 = AppFile.open( "#{$gen}/tecsgen.cfg" ) 197 179 file2.print "\n/* Generated by #{self.class.name} */\n\n" … … 200 182 if cell.is_generate? 201 183 puts "===== begin check my domain #{cell.get_name} =====" 202 # attrã®å¤ãããã·ã¥ã«å 203 ¥ãã 184 # attrの値をハッシュに入れる 204 185 val = {} 205 186 @celltype.get_attribute_list.each{ |a| … … 208 189 val[a.get_name] = [] 209 190 if j = cell.get_join_list.get_item(a.get_name) 210 # ã»ã«çææã«åæåããå ´å191 # セル生成時に初期化する場合 211 192 j.get_rhs.each { |elem| 212 193 val[a.get_name] << elem.to_s 213 194 } 214 195 elsif i = a.get_initializer 215 # ã»ã«ã¿ã¤ãã®åæåå¤ã使ãå ´å196 # セルタイプの初期化値を使う場合 216 197 i.each { |elem| 217 198 val[a.get_name] << elem.to_s … … 222 203 else 223 204 if j = cell.get_join_list.get_item(a.get_name) 224 # ã»ã«çææã«åæåããå ´å205 # セル生成時に初期化する場合 225 206 val[a.get_name] = j.get_rhs.to_s 226 207 elsif i = a.get_initializer 227 # ã»ã«ã¿ã¤ãã®åæåå¤ã使ãå ´å208 # セルタイプの初期化値を使う場合 228 209 val[a.get_name] = i.to_s 229 210 else … … 232 213 end 233 214 } 234 # generate.rb ãåèã«235 # $id$ ãç½®æ215 # generate.rbを参考に 216 # $id$を置換 236 217 if val[:id].nil? != true 237 218 puts val[:id] 238 219 val[:id] = val[:id].gsub( /(^|[^\$])\$id\$/, "\\1#{@celltype.get_name.to_s}_#{cell.get_name.to_s}" ) 239 220 end 240 # $cbp$ ã®ä»£ãã221 # $cbp$の代わり 241 222 index = cell.get_id - @celltype.get_id_base 242 223 cell_CB_name = "#{@celltype.get_global_name}_CB_tab[#{index}]" … … 244 225 cell_domain_type = cell.get_region.get_domain_root.get_domain_type 245 226 246 # CRE_XXX/DEF_XXX ã®çæ227 # CRE_XXX/DEF_XXXの生成 247 228 if cell_domain_type.get_option.to_s != "OutOfDomain" 248 # ä¿è·ãã¡ã¤ã³ã«å±ããå ´å229 # 保護ドメインに属する場合 249 230 if !HRP2KernelObjectPlugin.include_region(cell_domain_root.get_name.to_s) 250 # ãã®ä¿è·ãã¡ã¤ã³ã®.cfgãçæããã¦ããªãå ´å231 # その保護ドメインの.cfgが生成されていない場合 251 232 HRP2KernelObjectPlugin.set_region_list(cell_domain_root.get_name.to_s) 252 233 puts "~~~~~ #{cell_domain_root.get_name.to_s} is registered!" … … 269 250 file3.close 270 251 else 271 # ç¡æå±ã®å ´å252 # 無所属の場合 272 253 puts "~~~~~ #{cell_domain_root.get_name.to_s} is OutOfDomain" 273 254 print_cfg_cre(file2, cell, val, "") … … 275 256 276 257 puts "===== end check my domain #{cell.get_name} =====" 277 # SAC_XXX ã®çæ258 # SAC_XXXの生成 278 259 puts "===== begin check regions #{cell.get_name} =====" 279 260 p val[:accessPattern] … … 281 262 282 263 #ep = [ :eTaskActivate, :eTaskControl, :eTaskManage, :eTaskRefer ] 283 # åã«ã¼ãã«ãªãã¸ã§ã¯ãã®åãå£åãåå¾264 #各カーネルオブジェクトの受け口名を取得 284 265 # ep = get_entry_ports_name_list() 285 266 i = 0 286 267 acv = [] 287 # ã¢ã¯ã»ã¹è¨±å¯ãã¯ã¿ã®çæ268 # アクセス許可ベクタの生成 288 269 val[:accessPattern].each { |acptnx| 289 # ã¢ã¯ã»ã¹è¨±å¯ãã¿ã¼ã³ã®çæ270 # アクセス許可パターンの生成 290 271 if acptnx != "OMIT" 291 272 acv << acptnx … … 306 287 p acv 307 288 308 # å種SACã®çæ289 #各種SACの生成 309 290 domainOption = cell_domain_type.get_option 310 291 # if cell.get_region.get_region_type == :DOMAIN 311 292 if domainOption != "OutOfDomain" 312 # ä¿è·ãã¡ã¤ã³ã«å±ããå ´å293 # 保護ドメインに属する場合 313 294 file3 = AppFile.open( "#{$gen}/tecsgen_#{cell.get_region.get_name.to_s}.cfg" ) 314 295 print_cfg_sac(file3, val, acv) 315 296 file3.close 316 297 else 317 # ç¡æå±ã®å ´å298 # 無所属の場合 318 299 print_cfg_sac(file2, val, acv) 319 300 end … … 327 308 end 328 309 329 # ã«ã¼ãã«ãªãã¸ã§ã¯ãã»ã«ã¿ã¤ãã®ç®¡ç330 # HRP2KernelObjectPlugin ã¯ã©ã¹ã«å¯¾ãã¦ã¡ã½ããå¼åºããè¡ããã¨ãæ³å®310 # カーネルオブジェクトセルタイプの管理 311 # HRP2KernelObjectPluginクラスに対してメソッド呼出しを行うことを想定 331 312 @@checked = false 332 313 @@celltype_list = [] … … 351 332 printf "===== check call port : " 352 333 p p.get_name.to_s 353 next if j.nil? # æªçµåã®å ´å334 next if j.nil? # 未結合の場合 354 335 if @@celltype_list.include?(j.get_celltype) 355 336 # j.get_cell.set_referenced_region(cell.get_region) -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/HRP2ObjectPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 #++ … … 69 54 70 55 #=== HRP2SemaphorePlugin#print_cfg_cre 71 # CRE_SEMã®åºå 72 # file:: FILE: åºåå 73 ãã¡ã¤ã« 74 # val :: string: ã«ã¼ãã«ãªãã¸ã§ã¯ãã®å±æ§ã®è§£æçµæ 75 # tab :: string: ã¤ã³ãã³ãç¨ã®tab 56 # CRE_SEMの出力 57 # file:: FILE: 出力先ファイル 58 # val :: string: カーネルオブジェクトの属性の解析結果 59 # tab :: string: インデント用のtab 76 60 def print_cfg_cre(file, cell, val, tab) 77 61 if @@api.has_key?(@plugin_arg_str) == false … … 87 71 end 88 72 #=== HRP2SemaphorePlugin#print_cfg_sac 89 # SAC_SEMã®åºå 90 # file:: FILE: åºåå 91 ãã¡ã¤ã« 92 # val :: string: ã«ã¼ãã«ãªãã¸ã§ã¯ãã®å±æ§ã®è§£æçµæ 93 # acv :: string: ã¢ã¯ã»ã¹ãã¯ã¿ 73 # SAC_SEMの出力 74 # file:: FILE: 出力先ファイル 75 # val :: string: カーネルオブジェクトの属性の解析結果 76 # acv :: string: アクセスベクタ 94 77 def print_cfg_sac(file, val, acv) 95 78 if @@api.has_key?(@plugin_arg_str) == false … … 103 86 104 87 =begin 105 #tSemaphore ã®åãå£ãªã¹ã88 #tSemaphoreの受け口リスト 106 89 def get_entry_ports_name_list() 107 90 @@ep -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/HRP2Plugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 6 6 # Copyright (C) 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 #++ 53 38 54 39 # 55 # åã¡ã½ããã®å½¹å²ãã¯ãDomainPlugin.rb ãåç 56 §ã®ã㨠57 # HRP2ã«ã¼ãã«ç¨ãã¡ã¤ã³ãã©ã°ã¤ã³ 40 # 各メソッドの役割りは、DomainPlugin.rb を参照のこと 41 # HRP2カーネル用ドメインプラグイン 58 42 class HRP2Plugin < DomainPlugin 59 43 … … 63 47 64 48 def add_through_plugin( join, current_region, next_region, through_type ) 65 # join.get_owner:Cell 左辺ã®ã»ã« 66 # join.get_definition:Port å¼ã³å£ 67 # join.get_subscript:Integer or nil å¼ã³å£é 68 åã®æ·»æ° (Join::@subscript ã®èª¬æåç 69 §) 70 # join.get_cell:Cell å³è¾ºã®ã»ã« 71 # join.get_port_name:Symbol åãå£ 72 # get_rhs_subscript:Integer or nil åãå£é 73 åã®æ·»æ° (Join::@rhs_subscript ã®èª¬æåç 74 §) 49 # join.get_owner:Cell 左辺のセル 50 # join.get_definition:Port 呼び口 51 # join.get_subscript:Integer or nil 呼び口配列の添数 (Join::@subscript の説明参照) 52 # join.get_cell:Cell 右辺のセル 53 # join.get_port_name:Symbol 受け口 54 # get_rhs_subscript:Integer or nil 受け口配列の添数 (Join::@rhs_subscript の説明参照) 75 55 # return [] 76 56 print "MyDomainPlugin: add_through_plugin: #{current_region.get_name}=>#{next_region.get_name}, #{join.get_owner.get_name}.#{join.get_definition.get_name}=>#{join.get_cell.get_name}.#{join.get_port_name}, #{through_type}\n" … … 89 69 90 70 if HRP2KernelObjectPlugin.include_celltype?(join.get_cell.get_celltype) 91 # çµåå 92 ãã«ã¼ãã«ãªãã¸ã§ã¯ãã»ã« 71 # 結合先がカーネルオブジェクトセル 93 72 # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell) 94 # ä½ãããªãthrough73 # 何もしないthrough 95 74 puts "***** #{join.get_cell.get_celltype.get_name} is kernel object" 96 75 return [] … … 100 79 # elsif next_domain.nil? 101 80 elsif next_domain.get_option.to_s == "OutOfDomain" 102 # # çµåå 103 ãç¡æå± 104 # # ä½ãããªãthrough 81 # # 結合先が無所属 82 # # 何もしないthrough 105 83 # # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell) 106 84 puts "***** nil" … … 109 87 #elsif @start_region.get_param != :KERNEL_DOMAIN && @end_region.get_param == :KERNEL_DOMAIN 110 88 elsif current_domain.get_option.to_s != "trusted" && next_domain.get_option.to_s == "trusted" 111 # ã¦ã¼ã¶ãã¡ã¤ã³ããã«ã¼ãã«ãã¡ã¤ã³ã¸ã®çµå89 # ユーザドメインからカーネルドメインへの結合 112 90 # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell) 113 91 puts "***** svc" 114 92 return [ :HRP2SVCPlugin, "" ] 115 93 elsif current_domain != next_domain 116 # ã¦ã¼ã¶ãã¡ã¤ã³ããå¥ã®ã¦ã¼ã¶ãã¡ã¤ã³ã¸ã®çµå94 # ユーザドメインから別のユーザドメインへの結合 117 95 # @plugin_body = HRP2RPCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell) 118 96 puts "***** rpc" 119 97 return [ :HRP2RPCPlugin, "channelCelltype=tMessagebufferChannel,noClientSemaphore=true" ] 120 98 else 121 # ãã®ä»122 # ä½ãããªãthrough99 # その他 100 # 何もしないthrough 123 101 # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell) 124 102 print "warning: at HRP2 Join Check" -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/HRP2PostHook.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 6 6 # Copyright (C) 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 #++ … … 63 48 64 49 def generate 65 # ã«ã¼ãã«ãªãã¸ã§ã¯ãã®ã»ã«ã¿ã¤ãã¯ã¡ã¢ãªä¿è·ããªã50 # カーネルオブジェクトのセルタイプはメモリ保護しない 66 51 #=begin 67 # TODO: ãã¹ãã®ããã«ç¡å¹å52 # TODO: テストのために無効化 68 53 if HRP2KernelObjectPlugin.include_celltype?( @celltype ) 69 54 puts "nothing is generated for kernel object component" … … 74 59 rlist = @celltype.get_region_list 75 60 if @celltype.is_singleton? 76 # singleton ã®å ´å61 # singletonの場合 77 62 puts "<singleton>" 78 63 … … 82 67 file = AppFile.open( "#{$gen}/tecsgen_#{rlist[0].get_param.to_s}.cfg" ) 83 68 end 84 # ã»ã«ç®¡çãããã¯ã¨ã¹ã±ã«ãã³ã®ã¡ã¢ãªä¿è·69 # セル管理ブロックとスケルトンのメモリ保護 85 70 file.print "ATT_MOD(\"#{@celltype.get_global_name}_tecsgen.o\");\n" 86 71 if !@celltype.is_all_entry_inline? 87 # ã»ã«ã¿ã¤ãã³ã¼ãã®ã¡ã¢ãªä¿è·72 # セルタイプコードのメモリ保護 88 73 file.print "ATT_MOD(\"#{@celltype.get_global_name}.o\");\n" 89 74 end … … 92 77 93 78 else 94 # singleton ã§ãªãå ´å79 # singletonでない場合 95 80 puts "<non-singleton>" 96 81 97 # ã¹ã±ã«ãã³ã¨ã»ã«ã¿ã¤ãã³ã¼ãã®ä¿è·82 # スケルトンとセルタイプコードの保護 98 83 if (rlist.length == 1) && 99 84 (@celltype.get_n_cell_gen == @celltype.get_n_cell_gen_r( rlist[0] )) 100 # æå±ããä¿è·ãã¡ã¤ã³ã1ã¤ã®å ´å85 # 所属する保護ドメインが1つの場合 101 86 puts "<private celltype>" 102 87 file = AppFile.open( "#{$gen}/tecsgen_#{rlist[0].get_param.to_s}.cfg" ) 103 88 else 104 # ç¡æå± or æå±ããä¿è·ãã¡ã¤ã³ãè¤æ°ã®å ´å89 # 無所属 or 所属する保護ドメインが複数の場合 105 90 puts "<shared celltype>" 106 91 file = AppFile.open( "#{$gen}/tecsgen.cfg" ) 107 92 end 108 93 109 # ã¹ã±ã«ãã³ã®ã¡ã¢ãªä¿è·94 # スケルトンのメモリ保護 110 95 file.print "ATT_MOD(\"#{@celltype.get_global_name}_tecsgen.o\");\n" 111 96 if !@celltype.is_all_entry_inline? 112 # ã»ã«ã¿ã¤ãã³ã¼ãã®ã¡ã¢ãªä¿è·97 # セルタイプコードのメモリ保護 113 98 file.print "ATT_MOD(\"#{@celltype.get_global_name}.o\");\n" 114 99 end 115 100 file.close 116 101 117 # ã»ã«ç®¡çãããã¯ã®ä¿è·102 # セル管理ブロックの保護 118 103 rlist.each { |reg| 119 104 file = AppFile.open( "#{$gen}/tecsgen_#{reg.get_param.to_s}.cfg" ) -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/HRP2PriorityDataqueuePlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 #++ … … 57 42 @@ep = [:eSendPriorityDataqueue, :eReceivePriorityDataqueue, :eManagePriorityDataqueue, :eReferPriorityDataqueue ] 58 43 #=== HRP2PriorityDataqueuePlugin#print_cfg_cre 59 # CRE_PDQã®åºå 60 # file:: FILE: åºåå 61 ãã¡ã¤ã« 62 # val :: string: ã«ã¼ãã«ãªãã¸ã§ã¯ãã®å±æ§ã®è§£æçµæ 63 # tab :: string: ã¤ã³ãã³ãç¨ã®tab 44 # CRE_PDQの出力 45 # file:: FILE: 出力先ファイル 46 # val :: string: カーネルオブジェクトの属性の解析結果 47 # tab :: string: インデント用のtab 64 48 def print_cfg_cre(file, cell, val, tab) 65 49 file.print tab … … 67 51 end 68 52 #=== HRP2PriorityDataqueuePlugin#print_cfg_sac 69 # SAC_PDQã®åºå 70 # file:: FILE: åºåå 71 ãã¡ã¤ã« 72 # val :: string: ã«ã¼ãã«ãªãã¸ã§ã¯ãã®å±æ§ã®è§£æçµæ 73 # acv :: string: ã¢ã¯ã»ã¹ãã¯ã¿ 53 # SAC_PDQの出力 54 # file:: FILE: 出力先ファイル 55 # val :: string: カーネルオブジェクトの属性の解析結果 56 # acv :: string: アクセスベクタ 74 57 def print_cfg_sac(file, val, acv) 75 58 file.puts "SAC_PDQ(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});" 76 59 end 77 #tPriorityDataqueue ã®åãå£ãªã¹ã60 #tPriorityDataqueueの受け口リスト 78 61 def get_entry_ports_name_list() 79 62 @@ep -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/HRP2RPCPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 #++ … … 56 41 # require_tecsgen_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 # 77 # RPCãç¨ãããã¡ã¤ã³ééä¿¡ã® 78 # throughãã©ã°ã¤ã³ 79 # HRP2ãã¡ã¤ã³ãã©ã°ã¤ã³ã«ãã£ã¦æ¿å 80 ¥ããã 56 # RPCを用いたドメイン間通信の 57 # throughプラグイン 58 # HRP2ドメインプラグインによって挿入される 81 59 # 82 60 class HRP2RPCPlugin < ThroughPlugin … … 85 63 # include GenParamCopy 86 64 87 # RPCPlugin å°ç¨ã®ãªãã·ã§ã³ 88 TransparentRPCPluginArgProc = RPCPluginArgProc.dup # è¤è£½ãä½ã£ã¦å 89 ãå¤æ´ããªãããã«ãã 65 # RPCPlugin 専用のオプション 66 TransparentRPCPluginArgProc = RPCPluginArgProc.dup # 複製を作って元を変更しないようにする 90 67 TransparentRPCPluginArgProc[ "noClientSemaphore" ] = Proc.new { |obj,rhs| obj.set_noClientSemaphore rhs } 91 68 TransparentRPCPluginArgProc[ "semaphoreCelltype" ] = Proc.new { |obj,rhs| obj.set_semaphoreCelltype rhs } 92 69 93 #=== RPCPlugin ã® initialize 94 # 説æ㯠ThroughPlugin (plugin.rb) ãåç 95 § 70 #=== RPCPlugin の initialize 71 # 説明は ThroughPlugin (plugin.rb) を参照 96 72 def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell ) 97 73 super … … 100 76 initialize_transparent_marshaler cell_name 101 77 102 # ãªãã·ã§ã³ï¼GenTransparentMarshaler åç 103 § 78 # オプション:GenTransparentMarshaler 参照 104 79 @plugin_arg_check_proc_tab = TransparentRPCPluginArgProc 105 80 parse_plugin_arg … … 111 86 if @PPAllocatorSize == nil then 112 87 cdl_error( "PPAllocatorSize must be speicified for oneway [in] array" ) 113 # @PPAllocatorSize = 0 # 仮㫠0 ã¨ãã¦ãã (cdl ã®æ§æã¨ã©ã¼ãé¿ãããã)88 # @PPAllocatorSize = 0 # 仮に 0 としておく (cdl の構文エラーを避けるため) 114 89 end 115 90 end … … 118 93 # if func_decl.get_type.is_oneway? then 119 94 # if ( param_decl.get_size || param_decl.get_count ) && param_decl.get_string then 120 # cdl_error( "array of string not supported for oneway function in Transparent RPC" ) # mikan æååã®é 121 å 95 # cdl_error( "array of string not supported for oneway function in Transparent RPC" ) # mikan 文字列の配列 122 96 # elsif param_decl.get_string == -1 then 123 # cdl_error( "length unspecified string is not permited for oneway function in Transparent RPC" ) # mikan é·ãæªæå®æåå97 # cdl_error( "length unspecified string is not permited for oneway function in Transparent RPC" ) # mikan 長さ未指定文字列 124 98 # end 125 99 # end … … 127 101 end 128 102 129 #=== plugin ã®å®£è¨ã³ã¼ã (celltype ã®å®ç¾©) çæ103 #=== plugin の宣言コード (celltype の定義) 生成 130 104 def gen_plugin_decl_code( file ) 131 105 132 106 ct_name = "#{@ct_name}_#{@channelCelltype}" 133 107 134 # ãã®ã»ã«ã¿ã¤ãï¼åãã·ã°ããã£ï¼ã¯æ¢ã«çæããã¦ãããï¼108 # このセルタイプ(同じシグニチャ)は既に生成されているか? 135 109 if @@generated_celltype[ ct_name ] == nil then 136 110 @@generated_celltype[ ct_name ] = [ self ] … … 165 139 166 140 f = CFile.open( @rpc_channel_celltype_file_name, "w" ) 167 # åãå 168 容ãäºåº¦æ¸ãå¯è½æ§ãã (AppFile ã¯ä¸å¯) 141 # 同じ内容を二度書く可能性あり (AppFile は不可) 169 142 170 143 f.print <<EOT … … 222 195 }; 223 196 EOT 224 # mikan stackSize option & ææ° tecs_package 対å¿197 # mikan stackSize option & 最新 tecs_package 対応 225 198 226 199 f.close 227 200 end 228 201 229 #=== through cell ã³ã¼ããçæ202 #=== through cell コードを生成 230 203 # 231 204 # … … 234 207 gen_plugin_decl_code( file ) 235 208 236 # ã»ã«ãæ¢ã209 # セルを探す 237 210 # path =["::",@next_cell.get_name] 238 211 # cell = Namespace.find( path ) … … 257 230 indent_str = " " * nest 258 231 259 # #473 ã解決ãããå ´åãcomposite ãªã¬ã¼ã¢ãã±ã¼ã¿ã«å¤æ´ãã¹ã260 # ã¢ãã±ã¼ã¿ã®æå®ããããï¼232 # #473 が解決された場合、composite リレーアロケータに変更すべき 233 # アロケータの指定があるか? 261 234 if cell.get_allocator_list.length > 0 then 262 235 … … 268 241 269 242 file.print delim 270 delim = ",\n#{indent_str} " # æçµè¡ã«ã¯åºããªã 271 272 if subsc then # é 273 åæ·»æ° 243 delim = ",\n#{indent_str} " # 最終行には出さない 244 245 if subsc then # 配列添数 274 246 subsc_str = '[#{subsc}]' 275 247 else … … 277 249 end 278 250 279 eport = "eThroughEntry" #RPC ã®åãå£åã«å¤æ´251 eport = "eThroughEntry" #RPCの受け口名に変更 280 252 file.print "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc}" 281 253 end … … 314 286 315 287 316 #=== ãã©ã°ã¤ã³å¼æ° noClientSemaphore ã®ãã§ãã¯288 #=== プラグイン引数 noClientSemaphore のチェック 317 289 def set_noClientSemaphore rhs 318 290 rhs = rhs.to_sym … … 326 298 end 327 299 328 #=== ãã©ã°ã¤ã³å¼æ° semaphoreCelltype ã®ãã§ãã¯300 #=== プラグイン引数 semaphoreCelltype のチェック 329 301 def set_semaphoreCelltype rhs 330 302 @semaphoreCelltype = rhs.to_sym … … 336 308 end 337 309 338 #=== NamespacePath ãå¾ã339 # çæããã»ã«ã® namespace path ãçæãã310 #=== NamespacePath を得る 311 # 生成するセルの namespace path を生成する 340 312 def get_cell_namespace_path 341 313 # nsp = @region.get_namespace.get_namespace_path -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/HRP2SVCPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 #++ 53 38 54 # mikan through plugin: namespace ãèæ 55 ®ããã¦ããªã 56 # ãããå©ç¨ããå ´åã以ä¸ã®ããã« toppers_jsp.cdl sChannel.cdl ãæå®ããå¿ 57 è¦ããã 39 # mikan through plugin: namespace が考慮されていない 40 # これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定する必要がある 58 41 # tecsgen toppers_jsp.cdl sChannel.cdl your_description.cdl 59 42 60 # 以ä¸ãä»®å®ï¼å¶éäºé 61 ï¼ 62 # å¼ã³å 63 ãå¼ã³å 64 ã®ã¨ã³ãã£ã¢ã³ãchar, short, int_t, long_t, intptr_t ã®ãµã¤ãºãåã 65 # æ符å·ãç¡ç¬¦å·ã§ãµã¤ãºãåã 43 # 以下を仮定(制限事項) 44 # 呼び元、呼び先のエンディアン、char, short, int_t, long_t, intptr_t のサイズが同じ 45 # 有符号、無符号でサイズが同じ 66 46 67 47 class SVCManage 68 # TODO: ããã©ã«ãã®æ¡å¼µãµã¼ãã¹ã³ã¼ã«åãäºç´ãã¦ãã69 # ããã©ã«ãã®æ¡å¼µãµã¼ãã¹ã³ã¼ã«ï¼syslogãªã©ï¼ãã³ã³ãã¼ãã³ãåããã¾ã§48 # TODO: デフォルトの拡張サービスコール分を予約しておく 49 # デフォルトの拡張サービスコール(syslogなど)もコンポーネント化するまで 70 50 @@id = 20 71 51 @@func_ids = {} … … 93 73 94 74 # 95 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«ãç¨ãããã¡ã¤ã³ééä¿¡ã® 96 # throughãã©ã°ã¤ã³ 97 # HRP2ãã¡ã¤ã³ãã©ã°ã¤ã³ã«ãã£ã¦æ¿å 98 ¥ããã 75 # 拡張サービスコールを用いたドメイン間通信の 76 # throughプラグイン 77 # HRP2ドメインプラグインによって挿入される 99 78 # 100 79 class HRP2SVCPlugin < ThroughPlugin 101 80 102 #=== RPCPlugin ã® initialize 103 # 説æ㯠ThroughPlugin (plugin.rb) ãåç 104 § 81 #=== RPCPlugin の initialize 82 # 説明は ThroughPlugin (plugin.rb) を参照 105 83 @@generated_celltype_header = {} 106 84 … … 116 94 end 117 95 118 #=== NamespacePath ãå¾ã119 # çæããã»ã«ã® namespace path ãçæãã96 #=== NamespacePath を得る 97 # 生成するセルの namespace path を生成する 120 98 def get_cell_namespace_path 121 99 # nsp = @region.get_namespace.get_namespace_path … … 126 104 def gen_plugin_decl_code( file ) 127 105 128 # ãã®ã»ã«ã¿ã¤ãï¼åãã·ã°ããã£ï¼ã¯æ¢ã«çæããã¦ãããï¼106 # このセルタイプ(同じシグニチャ)は既に生成されているか? 129 107 if !HRP2KernelObjectPlugin.include_celltype?(@next_cell.get_celltype) 130 108 if @@generated_celltype[ @ct_name_body ] == nil then … … 144 122 end 145 123 146 # ãã®ã»ã«ã¿ã¤ãï¼åãã·ã°ããã£ï¼ã¯æ¢ã«çæããã¦ãããï¼124 # このセルタイプ(同じシグニチャ)は既に生成されているか? 147 125 if @@generated_celltype[ @ct_name ] == nil then 148 126 @@generated_celltype[ @ct_name ] = [ self ] … … 155 133 EOT 156 134 else 157 # TODO inline ã«ããæ¹ãå¹çããããï¼tecsgenã®çæããããããã¡ã¤ã«ã®158 # èªè¾¼é ã®ããã«ã¨ã©ã¼ã¨ãªã135 # TODO inlineにした方が効率がよいが,tecsgenの生成したヘッダファイルの 136 # 読込順のためにエラーとなる 159 137 file2.print <<EOT 160 138 celltype #{@ct_name} { … … 173 151 174 152 =begin 175 # TODO: send. receive 対å¿153 # TODO: send. receive 対応 176 154 send_receive = [] 177 155 if @signature != nil then … … 205 183 end 206 184 207 #=== through cell ã³ã¼ããçæ185 #=== through cell コードを生成 208 186 # 209 187 # … … 214 192 215 193 if !HRP2KernelObjectPlugin.include_celltype?(@next_cell.get_celltype) 216 # ã»ã«ãæ¢ã194 # セルを探す 217 195 # path =["::",@next_cell.get_name] # mikan namespace 218 196 # cell = Namespace.find( path ) 219 197 # cell = Namespace.find( @next_cell.get_namespace_path ) 220 198 221 ##### ã¯ã©ã¤ã¢ã³ãå´ã®ã»ã«ã®çæ#####199 ##### クライアント側のセルの生成 ##### 222 200 # file.print "[domain(HRP2, \"trusted\")]" 223 201 nest = @start_region.gen_region_str_pre file 224 202 nest_str = " " * nest 225 203 226 # ã¯ã©ã¤ã¢ã³ãå´ãã£ã³ãã«ã®çæ227 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«å¼åºã204 # クライアント側チャンネルの生成 205 # 拡張サービスコール呼出し 228 206 file.print <<EOT 229 207 #{nest_str} // Client Side Channel … … 236 214 file.print "\n\n" 237 215 238 ##### ãµã¼ãã¼å´ã®ã»ã«ã®çæ#####216 ##### サーバー側のセルの生成 ##### 239 217 nest = @end_region.gen_region_str_pre file 240 218 nest_str = " " * nest 241 219 242 # ãµã¼ãã¼å´ãã£ã³ãã«ã®çæ243 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«æ¬ä½220 # サーバー側チャンネルの生成 221 # 拡張サービスコール本体 244 222 file.print <<EOT 245 223 … … 260 238 else 261 239 262 ##### ã¯ã©ã¤ã¢ã³ãå´ã®ã»ã«ã®çæ#####240 ##### クライアント側のセルの生成 ##### 263 241 nest = @start_region.gen_region_str_pre file 264 242 nest_str = " " * nest 265 243 266 # ã¯ã©ã¤ã¢ã³ãå´ãã£ã³ãã«ã®çæ267 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«å¼åºã244 # クライアント側チャンネルの生成 245 # 拡張サービスコール呼出し 268 246 file.print <<EOT 269 247 #{nest_str} // Client Side Channel … … 280 258 end 281 259 282 #=== åãå£é¢æ°ã®æ¬ä½(Cè¨èª)ãçæãã 283 # é常ã§ããã°ãã¸ã§ãã¬ã¼ã¿ã¯åãå£é¢æ°ã®ãã³ãã¬ã¼ããçæãã 284 # ãã©ã°ã¤ã³ã®å ´åãå¤æ´ããå¿ 285 è¦ã®ãªãã»ã«ã¿ã¤ãã³ã¼ããçæãã 286 #file:: FILE åºåå 287 ãã¡ã¤ã« 260 #=== 受け口関数の本体(C言語)を生成する 261 # 通常であれば、ジェネレータは受け口関数のテンプレートを生成する 262 # プラグインの場合、変更する必要のないセルタイプコードを生成する 263 #file:: FILE 出力先ファイル 288 264 #b_singleton:: bool true if singleton 289 265 #ct_name:: Symbol … … 298 274 299 275 if !HRP2KernelObjectPlugin.include_celltype?(@next_cell.get_celltype) 300 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«å¼åºã276 # 拡張サービスコール呼出し 301 277 if ! func_type.get_type.kind_of?( VoidType ) then 302 278 file.print( " #{func_type.get_type_str} retval;\n" ) … … 310 286 p_cellcb = #{global_ct_name}_GET_CELLCB(idx); 311 287 }else{ 312 /* ã¨ã©ã¼å¦çã³ã¼ããããã«è¨è¿°*/288 /* エラー処理コードをここに記述 */ 313 289 } 314 290 … … 361 337 end 362 338 363 # æ¡å¼µãµã¼ãã¹ã³ã¼ã«æ¬ä½339 # 拡張サービスコール本体 364 340 if new_func 365 341 file2 = AppFile.open( "#{$gen}/#{@ct_name_body}.c" ) … … 370 346 # file2.print <<EOT 371 347 # /* 372 # * ãã®ãã¡ã¤ã«ã¯ tecsgen ã«ããèªåçæããã¾ãã373 # * ãã®ãã¡ã¤ã«ãç·¨éãã¦ä½¿ç¨ãããã¨ã¯ãæå³ããã¦ãã¾ãã348 # * このファイルは tecsgen により自動生成されました 349 # * このファイルを編集して使用することは、意図されていません 374 350 # */ 375 351 # /* #[<PREAMBLE>]# 376 # * #[<...>]# ãã #[</...>]# ã§å²ã¾ããã³ã¡ã³ãã¯ç·¨éããªãã§ãã ãã377 # * tecsmerge ã«ãããã¼ã¸ã«ä½¿ç¨ããã¾ã352 # * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください 353 # * tecsmerge によるマージに使用されます 378 354 # * 379 355 # * #[</PREAMBLE>]# */ 380 356 # 381 # /* ãããã¿ã¤ã宣è¨ãå¤æ°ã®å®ç¾©ãããã«æ¸ãã¾ã#_PAC_# */357 # /* プロトタイプ宣言や変数の定義をここに書きます #_PAC_# */ 382 358 # #include "#{@ct_name_body}_tecsgen.h" 383 359 # … … 407 383 p_cellcb = #{@ct_name_body}_GET_CELLCB(idx); 408 384 }else{ 409 /* ã¨ã©ã¼å¦çã³ã¼ããããã«è¨è¿°*/385 /* エラー処理コードをここに記述 */ 410 386 } 411 387 #else … … 463 439 file2 = AppFile.open( "#{$gen}/tecsgen.cfg" ) 464 440 file2.print "\n/* Generated by HRP2SVCPlugin */\n\n" 465 # TODO: ã¹ã¿ãã¯ãµã¤ãºã¯é©å½441 # TODO: スタックサイズは適当 466 442 file2.print <<EOT 467 443 KERNEL_DOMAIN{ … … 479 455 end 480 456 else 481 # ã«ã¼ãã«ãã¡ã¤ã³ã®ã»ã«ã¯ç¹å¥ãªãã¨ã¯ä½ãããï¼æ®éã«å¼ã³åºã457 # カーネルドメインのセルは特別なことは何もせず,普通に呼び出す 482 458 super 483 459 end -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/HRP2SemaphorePlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 #++ … … 58 43 @@ep = [:eSignalSemaphore, :eWaitSemaphore, :eManageSemaphore, :eReferSemaphore ] 59 44 #=== HRP2SemaphorePlugin#print_cfg_cre 60 # CRE_SEMã®åºå 61 # file:: FILE: åºåå 62 ãã¡ã¤ã« 63 # val :: string: ã«ã¼ãã«ãªãã¸ã§ã¯ãã®å±æ§ã®è§£æçµæ 64 # tab :: string: ã¤ã³ãã³ãç¨ã®tab 45 # CRE_SEMの出力 46 # file:: FILE: 出力先ファイル 47 # val :: string: カーネルオブジェクトの属性の解析結果 48 # tab :: string: インデント用のtab 65 49 def print_cfg_cre(file, cell, val, tab) 66 50 file.print tab … … 68 52 end 69 53 #=== HRP2SemaphorePlugin#print_cfg_sac 70 # SAC_SEMã®åºå 71 # file:: FILE: åºåå 72 ãã¡ã¤ã« 73 # val :: string: ã«ã¼ãã«ãªãã¸ã§ã¯ãã®å±æ§ã®è§£æçµæ 74 # acv :: string: ã¢ã¯ã»ã¹ãã¯ã¿ 54 # SAC_SEMの出力 55 # file:: FILE: 出力先ファイル 56 # val :: string: カーネルオブジェクトの属性の解析結果 57 # acv :: string: アクセスベクタ 75 58 def print_cfg_sac(file, val, acv) 76 59 file.puts "SAC_SEM(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});" 77 60 end 78 #tSemaphore ã®åãå£ãªã¹ã61 #tSemaphoreの受け口リスト 79 62 def get_entry_ports_name_list() 80 63 @@ep -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/HRP2TaskPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 #++ … … 54 39 #require "HRP2KernelObjectPlugin" 55 40 require_tecsgen_lib "HRP2KernelObjectPlugin.rb" 56 #== celltype ãã©ã°ã¤ã³ã®å 57 ±éã®è¦ªã¯ã©ã¹ 41 #== celltype プラグインの共通の親クラス 58 42 class HRP2TaskPlugin < HRP2KernelObjectPlugin 59 43 # @@ep = [:eActivateTask, :eControlTask, :eManageTask, :eReferTask ] 60 # ATT_MOD ãçææ¸ã¿ãã©ãã44 # ATT_MODを生成済みかどうか 61 45 @@generate_memory_module = false 62 46 … … 69 53 def print_cfg_cre(file, cell, val, tab) 70 54 val[:id] = val[:id].gsub( /(^|[^\$])\$id\$/, "\\1#{@celltype.get_name.to_s}_#{cell.get_name.to_s}" ) 71 # $cbp$ ã®ä»£ãã55 # $cbp$の代わり 72 56 index = cell.get_id - @celltype.get_id_base 73 57 #cell_CB_name = "#{@celltype.get_global_name}_pCB_tab[#{index}]" 74 58 cell_CB_name = "#{index}" 75 # CRE_XXX/DEF_XXX ã®çæ59 # CRE_XXX/DEF_XXXの生成 76 60 print "assign task plugin\n" 77 61 domainOption = cell.get_region.get_domain_root.get_domain_type.get_option 78 62 # if cell.get_region.get_region_type == :DOMAIN 79 63 if domainOption != "OutOfDomain" 80 # ä¿è·ãã¡ã¤ã³ã«å±ããå ´å64 # 保護ドメインに属する場合 81 65 if domainOption == "trusted" 82 # ã«ã¼ãã«ãã¡ã¤ã³66 # カーネルドメイン 83 67 if val[:userStackSize] != "OMIT" 84 68 raise "system task cannot have user stack." … … 88 72 EOT 89 73 else 90 # ã¦ã¼ã¶ãã¡ã¤ã³74 # ユーザドメイン 91 75 if val[:userStackSize] == "OMIT" 92 76 raise "user task must have user stack." … … 103 87 end 104 88 else 105 # ç¡æå±ã®å ´å89 # 無所属の場合 106 90 raise "task #{val[:id]} must belong to a domain." 107 91 end 108 92 109 # ä¾å¤ç¨ã®ãçæ93 # 例外用のを生成 110 94 file.print <<EOT 111 95 #{tab}DEF_TEX(#{val[:id]}, { #{val[:exceptionAttribute]}, tTask_start_exception }); … … 118 102 119 103 =begin 120 #tTask ã®åãå£ãªã¹ã104 #tTaskの受け口リスト 121 105 def get_entry_ports_name_list() 122 106 @@ep … … 124 108 =end 125 109 # 126 # ATT_MOD ã®çæ127 # gen_factory å®è¡æã«ã¯ï¼ãã¹ã¦ã®ã»ã«ã¿ã¤ããã©ã°ã¤ã³ãçææ¸ã¿ã®ã¯ããªã®ã§ï¼128 # ã«ã¼ãã«APIã³ã¼ãã®ã¡ã¢ãªä¿è·ãçç¥ã§ããï¼110 # ATT_MODの生成 111 # gen_factory実行時には,すべてのセルタイププラグインを生成済みのはずなので, 112 # カーネルAPIコードのメモリ保護を省略できる. 129 113 # 130 114 def gen_factory file … … 134 118 135 119 Cell.get_cell_list2.each { |cell| 136 # ãã¹ã¦ã®ã»ã«ãèµ°æ»ãã¦ã»ã«ã¿ã¤ãããã§ãã¯120 # すべてのセルを走査してセルタイプをチェック 137 121 ct = cell.get_celltype 138 122 if ct.class == Celltype && check_celltype_list.include?( ct ) == false 139 # æªãã§ãã¯ã®ã»ã«ã¿ã¤ãã ã£ãå ´å123 # 未チェックのセルタイプだった場合 140 124 # puts "check for ATT_MOD : #{ct.classget_global_name}" 141 125 puts "check for ATT_MOD : #{ct.get_global_name}" 142 126 143 # ã«ã¼ãã«APIã®ã³ã¼ãï¼ãã¼ã¿ã¯ã¡ã¢ãªä¿è·ããªã127 # カーネルAPIのコード,データはメモリ保護しない 144 128 next if HRP2KernelObjectPlugin.include_celltype?( ct ) 145 129 146 # å¿ 147 è¦ã®ãªãã»ã«ã¿ã¤ãã®ã³ã¼ãï¼ãã¼ã¿ã¯ã¡ã¢ãªä¿è·ããªã 130 # 必要のないセルタイプのコード,データはメモリ保護しない 148 131 next if ! ct.need_generate? 149 132 150 # HRP2 ã®ãã¡ã¤ã³ãªã¼ã¸ã§ã³ãåå¾133 # HRP2のドメインリージョンを取得 151 134 regions = ct.get_domain_roots 152 135 regions_hrp2 = regions[ :HRP2 ] … … 157 140 puts "" 158 141 159 # ã»ã«ç®¡çãããã¯ã¨ã¹ã±ã«ãã³ã®ã¡ã¢ãªä¿è·160 # gen_celltype_names_domain ç¸å½ã®å¦ç142 # セル管理ブロックとスケルトンのメモリ保護 143 # gen_celltype_names_domain 相当の処理 161 144 if regions_hrp2.include?( Region.get_root ) == false && regions_hrp2.length > 1 162 # ãã¡ã¤ã³ãè¤æ°ã§ï¼OutOfDomainã«ã»ã«ãåå¨ããªãã»ã«ã¿ã¤ãã®å ´å 163 # å 164 ±æã®ã»ã«ç®¡çãããã¯ã¨ã¹ã±ã«ãã³ã³ã¼ããç»é²ãã 145 # ドメインが複数で,OutOfDomainにセルが存在しないセルタイプの場合 146 # 共有のセル管理ブロックとスケルトンコードを登録する 165 147 file = AppFile.open( "#{$gen}/tecsgen.cfg" ) 166 148 file.print "ATT_MOD(\"#{ct.get_global_name}_tecsgen.o\");\n" … … 179 161 } 180 162 181 # ã»ã«ã¿ã¤ãã³ã¼ãããªãå ´åã¯ã¹ããã163 # セルタイプコードがない場合はスキップ 182 164 next if ct.is_all_entry_inline? && ! ct.is_active? 183 165 184 # ã»ã«ã¿ã¤ãã³ã¼ãã®ã¡ã¢ãªä¿è·185 # gen_celltype_names_domain2 ç¸å½ã®å¦ç166 # セルタイプコードのメモリ保護 167 # gen_celltype_names_domain2 相当の処理 186 168 if regions_hrp2.include?( Region.get_root ) == true || regions_hrp2.length > 1 187 # OutOfDomainã«ã»ã«ãåå¨ããã»ã«ã¿ã¤ãã®å ´å 188 # ã¾ãã¯ï¼è¤æ°ã®ãã¡ã¤ã³ã«ã»ã«ãåå¨ããã»ã«ã¿ã¤ãã®å ´å 189 # ã»ã«ã¿ã¤ãã³ã¼ããå 190 ±æããããã«ç»é²ãã 169 # OutOfDomainにセルが存在するセルタイプの場合 170 # または,複数のドメインにセルが存在するセルタイプの場合 171 # セルタイプコードを共有するように登録する 191 172 file = AppFile.open( "#{$gen}/tecsgen.cfg" ) 192 173 else 193 # OutOfDomain ã§ãªãåä¸ã®ãã¡ã¤ã³ã«ã»ã«ãåå¨ããã»ã«ã¿ã¤ãã®å ´å194 # ã»ã«ã¿ã¤ãã³ã¼ããå°æããããã«ç»é²ãã174 # OutOfDomainでない単一のドメインにセルが存在するセルタイプの場合 175 # セルタイプコードを専有するように登録する 195 176 file = AppFile.open( "#{$gen}/tecsgen_#{regions_hrp2[0].get_namespace_path.get_global_name}.cfg" ) 196 177 end … … 201 182 check_celltype_list << ct 202 183 else 203 # ä½ãããªã184 # 何もしない 204 185 end 205 186 } … … 207 188 @@generate_memory_module = true 208 189 else 209 # ä½ãããªã190 # 何もしない 210 191 end 211 192 end -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/Mruby2CBridgePlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 # $Id : Mruby2CBridgePlugin.rb 2061 2014-05-31 22:15:33Z okuma-top$36 # $Id$ 52 37 # 53 38 -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/MrubyBridgePlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 5 5 # Copyright (C) 2008-2015 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 # $Id : MrubyBridgePlugin.rb 2554 2016-02-27 06:11:34Z okuma-top$36 # $Id$ 52 37 # 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 MrubyBridgePlugin < SignaturePlugin 83 68 84 # ãã©ã°ã¤ã³å¼æ°å=> Proc69 # プラグイン引数名 => Proc 85 70 MrubyBridgePluginArgProc = { 86 71 "ignoreUnsigned" => Proc.new { |obj,rhs| obj.set_ignoreUnsigned rhs }, … … 89 74 } 90 75 91 @@celltypes = { } # {celltype_name => [ BridgePlugin ã®ã¤ã³ã¹ã¿ã³ã¹ã®é 92 å } 93 @@init_celltypes = { } # {celltype_name => [ BridgePlugin ã®ã¤ã³ã¹ã¿ã³ã¹ã®é 94 å } 76 @@celltypes = { } # {celltype_name => [ BridgePlugin のインスタンスの配列 } 77 @@init_celltypes = { } # {celltype_name => [ BridgePlugin のインスタンスの配列 } 95 78 @@struct_list = { } # {struct_name=>StructType} 96 @@ptr_list = { } # {ptr_celltype_name=> @@TYPE_MAP ã®å¯¾å¿ãããã®}79 @@ptr_list = { } # {ptr_celltype_name=> @@TYPE_MAP の対応するもの} 97 80 @@VM_list = { } # VM_name => true 98 @@VM_celltypes = { } # VM_name => { @celltype_name => ã»ã«ã®é 99 å } 81 @@VM_celltypes = { } # VM_name => { @celltype_name => セルの配列 } 100 82 @@VM_struct_list = { } # {name=>StructType} 101 @@VM_ptr_list = { } # { VM_name => {name=> @@TYPE_MAP ã®å¯¾å¿ãããã®} }83 @@VM_ptr_list = { } # { VM_name => {name=> @@TYPE_MAP の対応するもの} } 102 84 @@TYPE_MAP = { # type_str class GET_SET 103 85 :char_t => [:char_t, "Char", :Char, :INT ], … … 116 98 117 99 :int => [:int, "Int", :Int, :INT ], 118 :char => [:char, "Char", :Char, :INT ], # char 㯠char_t ã¨ãã¦æ±ã100 :char => [:char, "Char", :Char, :INT ], # char は char_t として扱う 119 101 :short => [:short, "Short", :Int, :INT ], 120 102 :long => [:long, "Long", :Int, :INT ], … … 138 120 # included or excluded functions 139 121 140 ### ãã¼ããããæç¹ã§å®è¡ããã###141 142 # -I ã« $(TECSPATH)/mruby ã追å122 ### ロードされた時点で実行される ### 123 124 # -I に $(TECSPATH)/mruby を追加 143 125 # TECSGEN::Makefile.add_obj "$(MRUBY_MAIN_OBJ)" 144 126 TECSGEN::Makefile.add_ldflag "-lmruby -L$(MRUBYPATH)/lib -lm" … … 148 130 149 131 150 #=== ãã©ã°ã¤ã³ã¤ã³ã¹ã¿ã³ã¹ã®åæå151 # æ»ãå¤ãå¼æ°ã®åã使ç¨å¯è½ãªãã®ããã§ãã¯ãã132 #=== プラグインインスタンスの初期化 133 # 戻り値、引数の型が使用可能なものかチェックする 152 134 # 153 135 def initialize( signature, option ) … … 178 160 179 161 if signature.get_function_head_array == nil then 180 return # 以åã«ææ³ã¨ã©ã¼çºç162 return # 以前に文法エラー発生 181 163 end 182 164 … … 257 239 when FloatType 258 240 when PtrType 259 ttype_org = type_org.get_type # ãã¤ã³ã¿ã®æãã¦ããå 260 ã®å 261 ttype = ttype_org.get_original_type # ä¸è¨ã® typedef ããã¦ããå ´åãå 262 ã®å 241 ttype_org = type_org.get_type # ポインタの指している先の型 242 ttype = ttype_org.get_original_type # 上記の typedef されている場合、元の型 263 243 register_ptr_type ttype_org 264 244 … … 298 278 end 299 279 300 #=== æ§é ä½ã®ã¡ã³ãã¼ã®åã®ãã§ãã¯280 #=== 構造体のメンバーの型のチェック 301 281 def check_struct_member struct_type 302 282 #p "tag name:#{struct_type.get_name}" … … 345 325 return 346 326 end 347 tstr = ttype.get_type_str.sub( /const /, "" ) # const ã¯ç¡è¦348 tstr = tstr.sub( /volatile /, "" ) # volatile ãç¡è¦327 tstr = ttype.get_type_str.sub( /const /, "" ) # const は無視 328 tstr = tstr.sub( /volatile /, "" ) # volatile も無視 349 329 if @b_ignoreUnsigned then 350 tstr = tstr.sub( /unsigned /, "" ) # volatile ãç¡è¦351 tstr = tstr.sub( /uint/, "int" ) # volatile ãç¡è¦352 tstr = tstr.sub( /[cs]char/, "char" ) # volatile ãç¡è¦330 tstr = tstr.sub( /unsigned /, "" ) # volatile も無視 331 tstr = tstr.sub( /uint/, "int" ) # volatile も無視 332 tstr = tstr.sub( /[cs]char/, "char" ) # volatile も無視 353 333 end 354 334 return @@TYPE_MAP[ tstr.to_sym ] 355 335 end 356 336 357 #=== CDL ãã¡ã¤ã«ã®çæ358 # typedef, signature, celltype, cell ã³ã¼ããçæ359 #file:: FILE çæãããã¡ã¤ã«337 #=== CDL ファイルの生成 338 # typedef, signature, celltype, cell コードを生成 339 #file:: FILE 生成するファイル 360 340 def gen_cdl_file(file) 361 341 362 # ããªãã¸ã»ã«ã¿ã¤ãã®çæ342 # ブリッジセルタイプの生成 363 343 if @@celltypes[ @celltype_name ] == nil then 364 344 @@celltypes[ @celltype_name ] = [ self ] … … 389 369 EOT 390 370 391 # æ§é ä½ã»ã«ã¿ã¤ãã®çæ371 # 構造体セルタイプの生成 392 372 @struct_list.each{ |name, sttype| 393 373 if @@struct_list[ name ] == nil then … … 410 390 end 411 391 412 #=== gen_cdl_file ã§å®ç¾©ããã»ã«ã¿ã¤ãã« æ°ããã»ã«ãå®ç¾©ããã413 # cell ã®ã»ã«ã¿ã¤ãã®ååã¯@celltype_name392 #=== gen_cdl_file で定義したセルタイプに 新しいセルが定義された 393 # cell のセルタイプの名前は @celltype_name 414 394 def new_cell cell 415 395 if cell.get_celltype.get_name != @celltype_name then … … 430 410 file = CFile.open( initializer_celltype_cdl, "w" ) 431 411 432 # TECS åæåã»ã«(ãããã¿ã¤ã宣è¨)412 # TECS 初期化セル(プロトタイプ宣言) 433 413 print_msg " MrubyBridgePlugin: join your VM's cInitialize to #{vm_name}_TECSInitializer.eInitialize\n" 434 414 … … 475 455 end 476 456 477 #=== ãã©ã°ã¤ã³ã CDL ã® POST ã³ã¼ããçæ478 # tmp_plugin_post_code.cdl ã¸ã®åºå457 #=== プラグインが CDL の POST コードを生成 458 # tmp_plugin_post_code.cdl への出力 479 459 def self.gen_post_code file 480 460 … … 498 478 # EOT 499 479 500 # gen_post_code ã§çæãã celltype 㯠gen_ep_func ãå¼ã³åºãããªã#847480 # gen_post_code で生成した celltype は gen_ep_func が呼び出されない #847 501 481 # @@struct_list.each{ |name,sttype| 502 482 # file.print <<EOT … … 566 546 end 567 547 568 ####### 以ä¸ã³ã¼ãçæ段é######569 570 #=== åãå£é¢æ°ã®æ¬ä½ã³ã¼ããçæï¼é é¨ã¨æ«å°¾ã¯å¥éåºåï¼571 #ct_name:: Symbol ( ãã©ã°ã¤ã³ã§çæããã) ã»ã«ã¿ã¤ãå ï¼Symbol ã¨ãã¦éããã¦ãã548 ####### 以下コード生成段階 ###### 549 550 #=== 受け口関数の本体コードを生成(頭部と末尾は別途出力) 551 #ct_name:: Symbol (プラグインで生成された) セルタイプ名 .Symbol として送られてくる 572 552 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 ) 573 553 if @@celltypes[ ct_name ] then … … 673 653 end 674 654 675 #=== åãå£é¢æ°ã® preamble (Cè¨èª)ãçæãã 676 # å¿ 677 è¦ãªã preamble é¨ã«åºåãã 678 #file:: FILE åºåå 679 ãã¡ã¤ã« 655 #=== 受け口関数の preamble (C言語)を生成する 656 # 必要なら preamble 部に出力する 657 #file:: FILE 出力先ファイル 680 658 #b_singleton:: bool true if singleton 681 659 #ct_name:: Symbol … … 1135 1113 if( param.get_size ) then 1136 1114 sz_str = param.get_size.to_s 1137 elsif param.get_string then # mikan ã¨ãããã size_is 㨠string ã®åææå® (äºéãã¤ã³ã¿) ã¯ãªã1115 elsif param.get_string then # mikan とりあえず size_is と string の同時指定 (二重ポインタ) はなし 1138 1116 sz_str = param.get_string.to_s 1139 1117 else 1140 1118 sz_str = "1" 1141 1119 end 1142 # unsigned åã®å ´åã«ã¯ cast ãå¿ 1143 è¦ 1120 # unsigned 型の場合には cast が必要 1144 1121 if ttype.get_original_type.get_type_str != param.get_type.get_type.get_type_str then 1145 1122 cast_str = "(#{param.get_type.get_type_str})" … … 1171 1148 end 1172 1149 1173 #=== ãã©ã°ã¤ã³å¼æ°ignoreUnsigned1150 #=== プラグイン引数 ignoreUnsigned 1174 1151 def set_ignoreUnsigned rhs 1175 1152 if rhs == "true" || rhs == nil then … … 1177 1154 end 1178 1155 end 1179 #=== ãã©ã°ã¤ã³å¼æ°include1156 #=== プラグイン引数 include 1180 1157 def set_include rhs 1181 1158 funcs = rhs.split ',' … … 1195 1172 } 1196 1173 end 1197 #=== ãã©ã°ã¤ã³å¼æ°exclude1174 #=== プラグイン引数 exclude 1198 1175 def set_exclude rhs 1199 1176 funcs = rhs.split ',' -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/NotifierPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 14 14 class NotifierPlugin < CelltypePlugin 15 15 16 # ---------- ã¢ããã¿é¢æ°ã®çæ-------------16 # ---------- アダプタ関数の生成 ------------- 17 17 # 18 # siHandlerBodyã®åãå£é¢æ°ã¯ï¼ã¿ã¤ã ã¤ãã³ãéç¥ã®éç¥å 19 ã¨ãã¦ç´æ¥æå®ãã 20 # ãã¨ã¯ã§ããªãï¼ã·ã°ããã£ãä¸è´ãã¦ããªããã¨ãçç±ã§ããï¼ãã®ããï¼ã¢ã 21 # ãã¿ã¨ãã¦åä½ããé¢æ°ãçæãï¼ã«ã¼ãã«ããã®å¼åºããTECSã®å¼åºãã«å¤æ㧠22 # ããããã«ããå¿ 23 è¦ãããï¼ 18 # siHandlerBodyの受け口関数は,タイムイベント通知の通知先として直接指定する 19 # ことはできない.シグネチャが一致していないことが理由である.このため,アダ 20 # プタとして動作する関数を生成し,カーネルからの呼出しをTECSの呼出しに変換で 21 # きるようにする必要がある. 24 22 # 25 # åºæ¬çã«ã¯ï¼åãå£æ¯ã«ã¢ããã¿é¢æ°ãçæããã°ååã§ããï¼ãããï¼ããã§ã¯ 26 # ã¡ã¢ãªæ¶è²»éãä¸å¿ 27 è¦ã«å¢å ãã¦ãã¾ãï¼ããã§ï¼éç¥å 28 é¢æ°ã«intptr_tåã®å¼æ° 29 # ã渡ãããã¨ã«çç®ãï¼é¢æ°ã®"ä¸è¬å"ãå³ãï¼ããªãã¡åãå£ã®ããå±æ§(ãã 30 # ã§ã¯ï¼çµåå 31 ã®ã»ã«ï¼æ·»åãªã©ãæã)ãï¼ã¢ããã¿é¢æ°ã®å¼æ°ã¨ãã¦åãåãã 32 # ããã«ãï¼1åã®ã¢ããã¿é¢æ°ã2å以ä¸ã®çµåã«å¯¾ãç¨ãããã¨ãã§ããããã« 33 # ããï¼ 23 # 基本的には,受け口毎にアダプタ関数を生成すれば十分である.しかし,これでは 24 # メモリ消費量が不必要に増加してしまう.そこで,通知先関数にintptr_t型の引数 25 # を渡せることに着目し,関数の"一般化"を図る.すなわち受け口のある属性(ここ 26 # では,結合先のセル,添字などを指す)を,アダプタ関数の引数として受け取れる 27 # ようにし,1個のアダプタ関数を2個以上の結合に対し用いることができるように 28 # する. 34 29 # 35 # ã¢ããã¿é¢æ°ã®å±æ§ã«ã¤ãã¦æ´çããã¨ï¼ 36 # - åãå£é¢æ° - ä¸è¬åãè¡ãã¨ï¼å®è¡æã³ã¹ãã大ããå¢å¤§ãã¦ãã¾ããã¨ã 37 # 確èªããã¦ããï¼ãã®ããï¼ä¸è¬åã¯è¡ããªãï¼EntryPropertyã«ãå«ããªãï¼ 38 # - ã»ã«ã¤ã³ããã¯ã¹ - CELLIDXåã§ï¼åã®è¦å®ã¯ãªããï¼"ãã¤ã³ã¿å¤ã§ãã£ãã 39 # æ´æ°å¤ã§ãã£ããããã" (TECS 5.3.6) ããï¼ã¤ã³ããã¯ã¹ããã¤ã³ã¿ãã 40 # ãã¨ãåããï¼ã¤ã³ããã¯ã¹ã ã¨ããã¨ï¼ãã®å¤ã¯ã»ã«CBã®ã¢ãã¬ãã·ã³ã°ã« 41 # 使ç¨ãããã®ã§ï¼intptr_tã«åã¾ãçã§ããï¼ãã¤ã³ã¿ã®å ´åï¼å½ç¶intptr_t 42 # ã«åã¾ãï¼ 43 # - åãå£é 44 åã®æ·»å - int_tï¼åæ§ã«intptr_tã«åã¾ãçã§ããï¼ 45 # ãããã®ãã¡ï¼ã»ã«ã¤ã³ããã¯ã¹ã¨åãå£é 46 åã®æ·»åã¯ãã©ã¡ã¼ã¿ã«å«ãããã¨ã 47 # ã§ãããã§ãããï¼ä¸¡æ¹ã¯ç¡çã§ããï¼ 48 # 両æ¹ãæ ¼ç´ããé 49 åãçæãï¼ãã®é 50 åã®è¦ç´ ã¸ã®ãã¤ã³ã¿ã渡ãããã«ããã¨ã 51 # ãé¸æè¢ãå¯è½ã§ãããï¼å®è¡é度ãåªå 52 ããããã«ï¼ãã®æ¹æ³ã¯ã¨ããªãã£ãï¼ 30 # アダプタ関数の属性について整理すると, 31 # - 受け口関数 - 一般化を行うと,実行時コストが大きく増大してしまうことが 32 # 確認されている.このため,一般化は行わない.EntryPropertyにも含めない. 33 # - セルインデックス - CELLIDX型で,型の規定はないが,"ポインタ値であったり 34 # 整数値であったりする。" (TECS 5.3.6) より,インデックスかポインタある 35 # ことが分かる.インデックスだとすると,この値はセルCBのアドレッシングに 36 # 使用されるので,intptr_tに収まる筈である.ポインタの場合,当然intptr_t 37 # に収まる. 38 # - 受け口配列の添字 - int_t.同様にintptr_tに収まる筈である. 39 # これらのうち,セルインデックスと受け口配列の添字はパラメータに含めることが 40 # できそうであるが,両方は無理である. 41 # 両方を格納した配列を生成し,その配列の要素へのポインタを渡すようにするとい 42 # う選択肢も可能であるが,実行速度を優先するために,この方法はとらなかった. 53 43 # 54 # ãã®ããï¼ä¸è¬åã¯ä»¥ä¸ã®ãã¿ã¼ã³ã«åé¡ãã¦è¡ãï¼44 # このため,一般化は以下のパターンに分類して行う. 55 45 # 56 # 1. ã»ã«ã¤ã³ããã¯ã¹ã®ã¿ä¸è¬åï¼ã»ã«ã¤ã³ããã¯ã¹ã®ãã¿ã¼ã³æ°ãåãå£é 57 åã® 58 # æ·»åã®ãã¿ã¼ã³æ°ããå¤ããï¼ãããã¯åãå£ãé 59 åã§ãªãå ´åã«è¡ãããï¼ 60 # 2. åãå£é 61 åã®æ·»åã®ã¿ä¸è¬åï¼ãã®å ´åï¼ã»ã«ãã¨ã«ç°ãªãé¢æ°ãç¨ããï¼ 46 # 1. セルインデックスのみ一般化.セルインデックスのパターン数が受け口配列の 47 # 添字のパターン数より多いか,あるいは受け口が配列でない場合に行われる. 48 # 2. 受け口配列の添字のみ一般化.この場合,セルごとに異なる関数を用いる. 62 49 # 63 # ããããï¼ååãå£é¢æ°ã«ã¤ãã¦ï¼ã¢ããã¿é¢æ°ã®çæåæ°ã¯ï¼64 # O(min{ ã»ã«ã¤ã³ããã¯ã¹ã®ãã¿ã¼ã³æ°, æ·»åã®ãã¿ã¼ã³æ°})65 # ã¨ãªãï¼50 # これより,各受け口関数について,アダプタ関数の生成個数は, 51 # O(min{セルインデックスのパターン数, 添字のパターン数}) 52 # となる. 66 53 # 67 # ãã©ã°ã¤ã³ã§ã®å¦çãã¯ã³ãã¹ã§è¡ãããã«ï¼tecsgen.cfgã§ã¯ã¢ããã¿é¢æ°ãç´68 # æ¥æå®ããã®ã§ã¯ãªãï¼ä»£ããã«ã¢ããã¿é¢æ°ã表ããã¯ãã使ç¨ããï¼ãã®69 # ãã¯ãã¯ã¢ããã¿é¢æ°ãã³ãã«ã¨å¼ã¶ãã¨ã«ããï¼70 # ã¢ããã¿é¢æ°ãã³ãã«ã¯ï¼æ¬¡ã®2åã®è¦ç´ ããæãï¼71 # - ã¢ããã¿é¢æ°ã¸ã®ã®ãã¤ã³ã¿72 # - ã¢ããã¿é¢æ°ã®å¼æ°54 # プラグインでの処理をワンパスで行うために,tecsgen.cfgではアダプタ関数を直 55 # 接指定するのではなく,代わりにアダプタ関数を表すマクロを使用する.この 56 # マクロはアダプタ関数ハンドルと呼ぶことにする. 57 # アダプタ関数ハンドルは,次の2個の要素から成る. 58 # - アダプタ関数へののポインタ 59 # - アダプタ関数の引数 73 60 74 61 # @private 75 62 class AdapterGenerator 76 63 77 # çµåå 78 ã«é¢ããå±æ§ãå«ãï¼ã»ã«ï¼åãå£é 79 åã®æ·»åããæãï¼ 80 # åä¸ã®EntryPropertyã¨ãªãçµåã¯ï¼å 81 ¨ãåãæ¹æ³ã§ãã®åãå£é¢æ°ãå¼ã³ 82 # åºããï¼ 64 # 結合先に関する属性を含む.セル,受け口配列の添字から成る. 65 # 同一のEntryPropertyとなる結合は,全く同じ方法でその受け口関数を呼び 66 # 出せる. 83 67 # @private 84 68 class EntryProperty 85 # @return [Cell] åãå£å´ã®ã»ã«ï¼69 # @return [Cell] 受け口側のセル. 86 70 attr_reader :cell 87 71 88 # @return [Integer, nil] åãå£é 89 åã®æ·»åï¼é 90 åã§ãªãå ´åã¯nilï¼ 72 # @return [Integer, nil] 受け口配列の添字.配列でない場合はnil. 91 73 attr_reader :subscript 92 74 … … 100 82 end 101 83 102 # åå¤æ§ã®å®ç¾©ï¼Hashã®ãã¼ã¨ãã¦ä½¿ç¨ããã®ã«å¿ 103 è¦ï¼ 84 # 同値性の定義.Hashのキーとして使用するのに必要. 104 85 def eql?(o) @cell == o.cell && @subscript == o.subscript end 105 86 def hash() @cell.hash ^ @subscript.hash end … … 108 89 # @private 109 90 class EntryPort 110 # @param [Port] port çµåå 111 ã®ã»ã«ã®ã»ã«ã¿ã¤ãã®åãå£ï¼ 91 # @param [Port] port 結合先のセルのセルタイプの受け口. 112 92 def initialize(port, prefix) 113 93 @port = port 114 94 @global_name = "#{prefix}_#{@port.get_celltype.get_global_name}_#{@port.get_name}" 115 95 116 # åãå£é¢æ°åï¼siHandlerBodyãæ³å®ãã¦ããã®ã§ï¼é¢æ°åã¯mainã§åºå®ã§ããï¼96 # 受け口関数名.siHandlerBodyを想定しているので,関数名はmainで固定である. 117 97 @entry_fn_name = "#{@port.get_celltype.get_global_name}_#{@port.get_name}_main" 118 98 … … 121 101 end 122 102 123 # @return [String] ã°ãã¼ãã«ã«ä¸æ(ãªãã®ã¨ãã¦æ±ãããã)ãªèå¥åï¼103 # @return [String] グローバルに一意(なものとして扱えるよう)な識別子. 124 104 attr_reader :global_name 125 105 … … 127 107 attr_reader :port 128 108 129 # æå®ããEntryPropertyã«å¯¾å¿ããã¢ããã¿é¢æ°ãã³ãã«ãåå¾ããï¼109 # 指定したEntryPropertyに対応するアダプタ関数ハンドルを取得する. 130 110 # @param [EntryProperty] ep 131 # @return [String] ã¢ããã¿é¢æ°ãã³ãã«ï¼111 # @return [String] アダプタ関数ハンドル. 132 112 # @private 133 113 def adapter_handle_for_entry_property(ep) … … 139 119 end 140 120 141 # çµåå 142 ã®æ 143 å ±ã«å¿ããã¢ããã¿é¢æ°ãã½ã¼ã¹ã»ãããã¼ã«åºåããï¼ 144 # ä¸è¬åæå®ã¯ï¼`cell`ã¾ãã¯`subscript`ã®ä¸æ¹ã®ã¿è¡ããã¨ãã§ããï¼ 121 # 結合先の情報に応じたアダプタ関数をソース・ヘッダーに出力する. 122 # 一般化指定は,`cell`または`subscript`の一方のみ行うことができる. 145 123 # 146 124 # @param [AdapterGenerator] context 147 # @param [String] fn_name é¢æ°åï¼148 # @param [Cell, Symbol] cell ã»ã«ï¼ã»ã«ã«ã¤ãã¦ä¸è¬åããå ´åã¯`:generic`149 # @param [Integer, Symbol, nil] subscript æ·»åï¼æ·»åã«ã¤ãã¦ä¸è¬åããå ´åã¯`:generic`125 # @param [String] fn_name 関数名. 126 # @param [Cell, Symbol] cell セル.セルについて一般化する場合は `:generic` 127 # @param [Integer, Symbol, nil] subscript 添字.添字について一般化する場合は `:generic` 150 128 # @private 151 129 def generate_inner(context, fn_name, cell, subscript) … … 158 136 ct = @port.get_celltype 159 137 160 # ã·ã³ã°ã«ãã³ã»ã«ã¿ã¤ã以å¤ã§ã¯ï¼CELLIDXã®æå®ãå¿ 161 è¦ï¼ 138 # シングルトンセルタイプ以外では,CELLIDXの指定が必要. 162 139 unless ct.is_singleton? 163 140 if cell == :generic 164 141 params << "(CELLIDX)extinf" 165 142 else 166 # ã»ã«ã®CELLIDXãå¾ã143 # セルのCELLIDXを得る 167 144 if ct.has_INIB? || ct.has_CB? 168 145 params << ct.get_name_array(cell)[7] … … 173 150 end 174 151 175 # åãå£é 176 åã®æ·»åï¼ 152 # 受け口配列の添字. 177 153 if @port.get_array_size 178 154 if subscript == :generic … … 192 168 end 193 169 194 # æå®ããJoinã«å¯¾å¿ããã¢ããã¿é¢æ°ãã³ãã«ãåå¾ããï¼195 # @return [Array] ã¢ããã¿é¢æ°ãã³ãã«ï¼170 # 指定したJoinに対応するアダプタ関数ハンドルを取得する. 171 # @return [Array] アダプタ関数ハンドル. 196 172 def make_adapter_handle(join) 197 173 prop = EntryProperty.from_join(join) … … 203 179 end 204 180 205 # ã½ã¼ã¹ã»ãããã¼ã®è¨è¿°ãçæããï¼181 # ソース・ヘッダーの記述を生成する. 206 182 # @param [AdapterGenerator] context 207 183 def generate(context) … … 217 193 no_cellidx = false 218 194 if !(ct.has_INIB? || ct.has_CB?) 219 # CB, INIB æé©åã«ããï¼CB, INIBã両æ¹ä¸è¦ã«ãªã£ãã±ã¼ã¹ï¼220 # CELLIDX ãä¸è¦ã§ããã®ã§ï¼ã»ã«ã«ã¤ãã¦ä¸è¬åãã¦ãæå³221 # ã¯ãªãã®ã§ï¼æ·»åã«ããä¸è¬åãé¸æããï¼195 # CB, INIB最適化により,CB, INIBが両方不要になったケース. 196 # CELLIDXが不要であるので,セルについて一般化しても意味 197 # はないので,添字による一般化を選択する. 222 198 generalize_by_cell_idx = false 223 199 no_cellidx = true 224 200 225 # å 226 ¨ã¦ã®ã»ã«ãåä¸è¦ããï¼ 201 # 全てのセルを同一視する. 227 202 cells = { @props[0].cell => @props } 228 203 229 204 header_file.print " * No INIB & CB: generalized by subscript\n" 230 205 elsif @port.get_array_size 231 # ä¸è¬åãã¿ã¼ã³ã®åé¡ãè¡ãããã«ï¼åãå£å´ã»ã«ãæ·»åã®232 # ãã¿ã¼ã³æ°ãåæãã¦ï¼æé©ãªæ¹ãé¸æããï¼206 # 一般化パターンの分類を行うために,受け口側セルや添字の 207 # パターン数を分析して,最適な方を選択する. 233 208 generalize_by_cell_idx = cells.length >= subscripts.length 234 209 if generalize_by_cell_idx … … 238 213 end 239 214 else 240 # 常ã«CELLIDXã§ä¸è¬å215 # 常にCELLIDXで一般化 241 216 generalize_by_cell_idx = true 242 217 header_file.print " * non-array entry port: generalized by cell\n" … … 246 221 247 222 if generalize_by_cell_idx 248 # CELLIDX ã«ã¤ãã¦ä¸è¬å223 # CELLIDXについて一般化 249 224 subscripts.each { |subscript, props| 250 225 if subscript 251 226 fn_name = "#{@global_name}_adap_#{subscript}" 252 227 else 253 # åãå£é 254 åã§ãªãå ´å 228 # 受け口配列でない場合 255 229 fn_name = "#{@global_name}_adap" 256 230 end … … 262 236 handle = adapter_handle_for_entry_property(prop) 263 237 264 # ã»ã«ã®CELLIDXãå¾ã238 # セルのCELLIDXを得る 265 239 if ct.has_INIB? || ct.has_CB? 266 240 idx = ct.get_name_array(prop.cell)[7] … … 273 247 } 274 248 else 275 # æ·»åã«ã¤ãã¦ä¸è¬å249 # 添字について一般化 276 250 cells.each { |cell, props| 277 251 if no_cellidx 278 # CB/INIB ãªã252 # CB/INIB なし 279 253 fn_name = "#{@global_name}_adap" 280 254 else … … 302 276 attr :header_file 303 277 304 # @param [String] celltype_name ãã³ãã©é¢æ°ã®ã»ã«ã¿ã¤ãï¼305 # @param [String] prefix ååè¡çªãé²ãããã®ãã¬ãã£ãã¯ã¹ï¼278 # @param [String] celltype_name ハンドラ関数のセルタイプ. 279 # @param [String] prefix 名前衝突を防ぐためのプレフィックス. 306 280 def initialize(celltype_name, prefix) 307 281 @celltype_name = celltype_name … … 313 287 314 288 # ===AdapterGenerator#make_adapter_handle=== 315 # æå®ããçµåã®å¼åºããè¡ãããã®ã¢ããã¿é¢æ°ãã³ãã«ãçæããï¼316 # @return [Array] ã¢ããã¿é¢æ°ãã³ãã«ï¼289 # 指定した結合の呼出しを行うためのアダプタ関数ハンドルを生成する. 290 # @return [Array] アダプタ関数ハンドル. 317 291 def make_adapter_handle(join) 318 292 entry_port = @entry_ports[join.get_rhs_port] … … 326 300 327 301 # ===AdapterGenerator#finish=== 328 # ååãå£ã«å¯¾ãï¼ã¢ããã¿é¢æ°ãçæããï¼302 # 各受け口に対し,アダプタ関数を生成する. 329 303 def finish 330 304 @source_file = AppFile.open( "#{$gen}/#{@celltype_name}.c" ) … … 336 310 @header_file.print "\n/* Generated by #{self.class.name} */\n\n" 337 311 338 # NotifierPlugin ã使ç¨ããã»ã«ã¿ã¤ããè¤æ°ããå ´åï¼ããããã«339 # 対ãAdapterGenerator#finishãå¼ã³åºãããï¼tTimeEventHandler.hã«340 # ç¶ãã¦æ¸ãè¾¼ãã§ãã¾ãã¨ï¼ãããã¼ã¬ã¼ãã®é¢ä¿ã§2åç®ä»¥éã®è¨è¿°341 # ãèªã¿è¾¼ã¾ããªããªã£ã¦ãã¾ãï¼ãã®ããï¼ãã¡ã¤ã«å + ã»ã«ã¿ã¤ãå342 # ã¨ããå°ãç¹æ®ãªãããã¼ã¬ã¼ããç¨ããï¼312 # NotifierPluginを使用するセルタイプが複数ある場合,それぞれに 313 # 対しAdapterGenerator#finishが呼び出される.tTimeEventHandler.hに 314 # 続けて書き込んでしまうと,ヘッダーガードの関係で2回目以降の記述 315 # が読み込まれなくなってしまう.このため,ファイル名 + セルタイプ名 316 # という少し特殊なヘッダーガードを用いる. 343 317 header_guard = "#{@celltype_name}_H_#{@prefix}" 344 318 … … 346 320 @header_file.print "\#define #{header_guard}\n\n" 347 321 348 # ã«ã¼ãã«ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ãå®è¡ããéï¼ãã³ãã©åãå£ã®ã»ã«ã¿ã¤ã 349 # ã®ã»ã«CBã®å®ç¾©ãå¿ 350 è¦ãªå ´åãããï¼ 322 # カーネルコンフィギュレータを実行する際,ハンドラ受け口のセルタイプ 323 # のセルCBの定義が必要な場合がある. 351 324 @header_file.print "\#include \"#{@celltype_name}_aux.h\"\n\n" 352 325 353 # çµåå 354 ã®ã»ã«ã¿ã¤ãã®å®ç¾©ã¯ï¼èªåã®ã»ã«ã®tecsgen.hãããå 355 ã« 356 # èªã¿è¾¼ã¾ãªããã°ãªããªããï¼ãã®ãã©ã°ã¤ã³ãè¤æ°å®è¡ãããã¨ï¼ 357 # é åºãå´©ãã¦ãã¾ãï¼ããã§ï¼çµåå 358 ã®ã»ã«ã¿ã¤ãã®å®ç¾©ã¯ããä¸ã¤ã® 359 # ãããã¼ãã¡ã¤ã«(tCelltypeName_aux.h)ããèªã¿è¾¼ãããã«ããï¼ 326 # 結合先のセルタイプの定義は,自分のセルのtecsgen.hよりも先に 327 # 読み込まなければならないが,このプラグインが複数実行されると, 328 # 順序が崩れてしまう.そこで,結合先のセルタイプの定義はもう一つの 329 # ヘッダーファイル(tCelltypeName_aux.h)から読み込むようにする. 360 330 aux_header_file = AppFile.open( "#{$gen}/#{@celltype_name}_aux.h" ) 361 331 aux_header_file.print "\n/* Generated by #{self.class.name} */\n\n" … … 368 338 cb_type_only_guard = "#{@celltype_name}_AUX_H_#{@prefix}_CB_TYPE_ONLY" 369 339 370 # çµåå 371 ã®ã»ã«ã¿ã¤ãã®å®ç¾©ãèªã¿è¾¼ã 340 # 結合先のセルタイプの定義を読み込む 372 341 aux_header_file.print "#ifndef TOPPERS_CB_TYPE_ONLY\n" 373 342 aux_header_file.print "#define TOPPERS_CB_TYPE_ONLY\n" … … 400 369 end 401 370 402 # ------ éç¥ã®ãã³ãã©ã®ç¨®é¡ã®å®ç¾©-------371 # ------ 通知のハンドラの種類の定義 ------- 403 372 404 373 class Handler … … 410 379 end 411 380 412 # é常ã®ãã³ãã©381 # 通常のハンドラ 413 382 EVENT_HANDLER = Handler::new("ciNotificationHandler") 414 383 415 # ã¨ã©ã¼ãã³ãã© (é常ã®ãã³ãã©ã失æããå ´åã«å¼ã³åºããã)384 # エラーハンドラ (通常のハンドラが失敗した場合に呼び出される) 416 385 ERROR_HANDLER = Handler::new("ciErrorNotificationHandler") 417 386 … … 436 405 end 437 406 438 # ------ éç¥ã®å±æ§ã®å®ç¾©-------407 # ------ 通知の属性の定義 ------- 439 408 # 440 # ãã³ãã©ã¿ã¤ãã«åè´ããªãå±æ§ãæå®ãããå ´åã« 441 # ã¨ã©ã¼ãåºåã§ãããããå 442 ¨ã¦ã®å±æ§ãããã§åæããã 409 # ハンドラタイプに合致しない属性が指定された場合に 410 # エラーを出力できるよう、全ての属性をここで列挙する。 443 411 444 412 SETVAR_ADDR_ATTR = HandlerAttribute::new("setVariableAddress") … … 456 424 ] 457 425 458 # ------ ãã³ãã©ã¿ã¤ãã®å®ç¾©-------426 # ------ ハンドラタイプの定義 ------- 459 427 460 428 class BaseHandlerType … … 470 438 471 439 #=== NotifierPlugin#BaseHandlerType#validate_join 472 # æå®ããã»ã«ã®çµåå 473 ãããã®ãã³ãã©ã¿ã¤ãã«è©²å½ããããæ¤è¨¼ 474 # handler:: Handler : ãã³ãã© 475 # cell:: Cell : ã»ã« 476 # join:: Join : çµå (declarationãPortã§ãããã®) 440 # 指定したセルの結合先が、このハンドラタイプに該当するかを検証 441 # handler:: Handler : ハンドラ 442 # cell:: Cell : セル 443 # join:: Join : 結合 (declarationがPortであるもの) 477 444 def validate_join(handler, cell, join) 478 445 return !generate_attr_map(handler, cell).nil? … … 480 447 481 448 #=== NotifierPlugin#BaseHandlerType#generate_attr_map 482 # æå®ããã»ã«ã®å±æ§ã¨ãæ¢ç¥ã®HandlerAttributeã®ãããã³ã°ã483 # çæããHash<HandlerAttribute, Join> (åå±æ§ã¨ããã«å¯¾å¿ãã484 # Join(declaration ãDeclã®ãã®)ã表ãHash)ããããã¯ã485 # ãããã³ã°ãè¡ããªãå ´å(å±æ§ã®ä¸è¶³ãéå°)ã¯nilãè¿ãã449 # 指定したセルの属性と、既知のHandlerAttributeのマッピングを 450 # 生成し、Hash<HandlerAttribute, Join> (各属性とそれに対応する 451 # Join(declarationがDeclのもの)を表すHash)、あるいは、 452 # マッピングが行えない場合(属性の不足、過剰)はnilを返す。 486 453 # 487 # handler:: Handler : ãã³ãã©488 # cell:: Cell : ã»ã«454 # handler:: Handler : ハンドラ 455 # cell:: Cell : セル 489 456 def generate_attr_map(handler, cell) 490 457 map = {} … … 496 463 join = join_list.get_item(attr_name.to_sym) 497 464 498 # ãã®ã»ã«ã¿ã¤ãã«ããã¦å¿ 499 é ã®å±æ§ã? 465 # このセルタイプにおいて必須の属性か? 500 466 is_required = @required_attributes.include?(known_attr) 501 467 502 # å±æ§ã®æå®ãä¸è¶³ãã¦ãã? or éå°? 503 # 注: ãã³ãã©ã¿ã¤ãã®å¤å¥ã«ã¯ãã»ã«ã§å¤ãæå®ããã¦ããã 504 # ãèæ 505 ®ããããã»ã«ã¿ã¤ãã§åæå¤ãæå®ããã¦ãã¦ãã 506 # ããã¯ãã³ãã©ã¿ã¤ãã®æ±ºå®ã«å½±é¿ããªãã 468 # 属性の指定が不足している? or 過剰? 469 # 注: ハンドラタイプの判別には、セルで値が指定されているか 470 # が考慮される。セルタイプで初期値が指定されていても、 471 # それはハンドラタイプの決定に影響しない。 507 472 return nil if join.nil? != !is_required 508 473 509 # å¿ 510 è¦ã®ãªãå±æ§ã§ãããæå®ãããã¦ããªãã®ã§é£ã°ã 474 # 必要のない属性であり、指定もされていないので飛ばす 511 475 next if join.nil? 512 476 513 # TODO: attr ã®çµåã§ãããã¨ãæ¤è¨¼477 # TODO: attrの結合であることを検証 514 478 515 479 map[known_attr] = join … … 520 484 521 485 #=== NotifierPlugin#BaseHandlerType#gen_cfg_handler_type 522 # ã¿ã¤ã ã¤ãã³ãã®éç¥ã®ç¨®é¡ã表ãã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã®è¨è¿°ãçæããStringã¾ãã¯nilãè¿ã523 # handler:: Handler : ãã³ãã©486 # タイムイベントの通知の種類を表すコンフィギュレータの記述を生成し、Stringまたはnilを返す 487 # handler:: Handler : ハンドラ 524 488 def gen_cfg_handler_type(handler) 525 489 raise "called abstract method gen_cfg_handler_type" … … 527 491 528 492 #=== NotifierPlugin#BaseHandlerType#gen_cfg_handler_parameters 529 # ã¿ã¤ã ã¤ãã³ãã®éç¥ã®å¼æ°ã表ãã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã®è¨è¿°ãçæããString[]ãè¿ã530 # handler:: Handler : ãã³ãã©531 # join:: Join : çµå (declarationãPortã§ãããã®)493 # タイムイベントの通知の引数を表すコンフィギュレータの記述を生成し、String[]を返す 494 # handler:: Handler : ハンドラ 495 # join:: Join : 結合 (declarationがPortであるもの) 532 496 # attrMap:: Hash<HandlerAttribute, Join> : 533 # åå±æ§ã¨ããã«å¯¾å¿ããJoin (declarationãDeclã®ãã®)534 # cell:: Cell : ã»ã«535 # adpt_gen:: AdapterGenerator : ã¢ããã¿é¢æ°ãçæãããªãã¸ã§ã¯ã497 # 各属性とそれに対応するJoin (declarationがDeclのもの) 498 # cell:: Cell : セル 499 # adpt_gen:: AdapterGenerator : アダプタ関数を生成するオブジェクト 536 500 def gen_cfg_handler_parameters(handler, join, attrMap, cell, adpt_gen) 537 501 return nil … … 539 503 540 504 #=== NotifierPlugin#BaseHandlerType#might_fail 541 # éç¥ã®éãã¨ã©ã¼ãçºçãããã®çµæã¨ã©ã¼éç¥ãå¼ã¶å¿ 542 è¦ãçãã 543 # ãã©ãããè¿ãã 505 # 通知の際、エラーが発生し、その結果エラー通知を呼ぶ必要が生じる 506 # かどうかを返す。 544 507 def might_fail 545 508 return false … … 557 520 id_attr = join.get_rhs_cell.get_celltype.find(:id) 558 521 if id_attr_join 559 # ã»ã«çææã«åæåããå ´å522 # セル生成時に初期化する場合 560 523 id = id_attr_join.get_rhs.to_s 561 524 else 562 # ã»ã«ã¿ã¤ãã®åæåå¤ã使ãå ´å525 # セルタイプの初期化値を使う場合 563 526 id = id_attr.get_initializer.to_s 564 527 end 565 528 566 # $id$ çã®ç½®æ529 # $id$等の置換 567 530 name_array = taskCell.get_celltype.get_name_array(taskCell) 568 531 id = taskCell.get_celltype.subst_name(id, name_array) … … 617 580 var_value = attrMap[SETVAR_VALUE_ATTR].get_rhs.to_s 618 581 619 # $id$ çã®ç½®æ582 # $id$等の置換 620 583 name_array = cell.get_celltype.get_name_array(cell) 621 584 var_addr = cell.get_celltype.subst_name(var_addr, name_array) … … 646 609 var_addr = attrMap[SETVAR_ADDR_ATTR].get_rhs.to_s 647 610 648 # $id$ çã®ç½®æ611 # $id$等の置換 649 612 name_array = cell.get_celltype.get_name_array(cell) 650 613 var_addr = cell.get_celltype.subst_name(var_addr, name_array) … … 673 636 var_addr = attrMap[INCVAR_ADDR_ATTR].get_rhs.to_s 674 637 675 # $id$ çã®ç½®æ638 # $id$等の置換 676 639 name_array = cell.get_celltype.get_name_array(cell) 677 640 var_addr = cell.get_celltype.subst_name(var_addr, name_array) … … 697 660 id_attr = join.get_rhs_cell.get_celltype.find(:id) 698 661 if id_attr_join 699 # ã»ã«çææã«åæåããå ´å662 # セル生成時に初期化する場合 700 663 id = id_attr_join.get_rhs.to_s 701 664 else 702 # ã»ã«ã¿ã¤ãã®åæåå¤ã使ãå ´å665 # セルタイプの初期化値を使う場合 703 666 id = id_attr.get_initializer.to_s 704 667 end 705 668 706 # $id$ çã®ç½®æ669 # $id$等の置換 707 670 name_array = semaphoreCell.get_celltype.get_name_array(semaphoreCell) 708 671 id = semaphoreCell.get_celltype.subst_name(id, name_array) … … 737 700 id_attr = join.get_rhs_cell.get_celltype.find(:id) 738 701 if id_attr_join 739 # ã»ã«çææã«åæåããå ´å702 # セル生成時に初期化する場合 740 703 id = id_attr_join.get_rhs.to_s 741 704 else 742 # ã»ã«ã¿ã¤ãã®åæåå¤ã使ãå ´å705 # セルタイプの初期化値を使う場合 743 706 id = id_attr.get_initializer.to_s 744 707 end 745 708 flg_pattern = attrMap[SETFLG_FLAG_ATTR].get_rhs.to_s 746 709 747 # $id$ çã®ç½®æ710 # $id$等の置換 748 711 name_array = eventflagCell.get_celltype.get_name_array(eventflagCell) 749 712 id = eventflagCell.get_celltype.subst_name(id, name_array) … … 778 741 id_attr = join.get_rhs_cell.get_celltype.find(:id) 779 742 if id_attr_join 780 # ã»ã«çææã«åæåããå ´å743 # セル生成時に初期化する場合 781 744 id = id_attr_join.get_rhs.to_s 782 745 else 783 # ã»ã«ã¿ã¤ãã®åæåå¤ã使ãå ´å746 # セルタイプの初期化値を使う場合 784 747 id = id_attr.get_initializer.to_s 785 748 end 786 749 787 # $id$ çã®ç½®æ750 # $id$等の置換 788 751 name_array = dataqueueCell.get_celltype.get_name_array(dataqueueCell) 789 752 id = dataqueueCell.get_celltype.subst_name(id, name_array) … … 812 775 sent_value = attrMap[SNDDTQ_VALUE_ATTR].get_rhs.to_s 813 776 814 # $id$ çã®ç½®æ777 # $id$等の置換 815 778 name_array = cell.get_celltype.get_name_array(cell) 816 779 sent_value = cell.get_celltype.subst_name(sent_value, name_array) … … 854 817 end 855 818 def gen_cfg_handler_parameters(handler, join, attrMap, cell, adpt_gen) 856 # tTimeEventHandlerã®çµåå 857 ãåå¾ 819 # tTimeEventHandlerの結合先を取得 858 820 handler_cell = join.get_rhs_cell 859 821 call_join = handler_cell.get_join_list.get_item(:ciHandlerBody) 860 822 861 # çµåããã¦ããªãå ´åã¯tecsgenãã¨ã©ã¼ãåºãã¯ããªã®ã§ããã§ã¯862 # ã¨ã©ã¼ã«ããç¡è¦ããï¼823 # 結合されていない場合はtecsgenがエラーを出すはずなのでここでは 824 # エラーにせず無視する. 863 825 return [] unless call_join 864 826 865 # ã¢ããã¿é¢æ°ãã³ãã«ãåå¾827 # アダプタ関数ハンドルを取得 866 828 adapter_handle = adpt_gen.make_adapter_handle(call_join) 867 829 return [adapter_handle[1], adapter_handle[0]] … … 897 859 898 860 #@celltype:: Celltype 899 #@option:: String : ãªãã·ã§ã³æåå861 #@option:: String :オプション文字列 900 862 def initialize( celltype, option ) 901 863 super 902 864 @plugin_arg_check_proc_tab = NotifierPluginArgProc 903 865 @plugin_arg_str = option 904 @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' ) # åå¾ã® "" ãåãé¤ã866 @plugin_arg_str = option.gsub( /\A"(.*)/, '\1' ) # 前後の "" を取り除く 905 867 @plugin_arg_str.sub!( /(.*)"\z/, '\1' ) 906 868 @factory = nil … … 940 902 kernelCfg.print "\#include \"tTimeEventHandler.h\"\n" 941 903 942 # ã¢ããã¿é¢æ°ãçæããæºå904 # アダプタ関数を生成する準備 943 905 @adpt_gen = AdapterGenerator.new("tTimeEventHandler", @celltype.get_global_name) 944 906 945 # å±æ§ç½®æãè¡ãããã¨ãæ¤è¨¼ããã946 # ããã§è¡ãã®ã¯ãfactoryã§æå®ãããå±æ§åã947 # åå¨ãããã¨ã確èªããããªããã°ã¨ã©ã¼ãåºåãããã¨ã®ã¿ã§ããã948 # ã»ã«ãã¨ã®å¦çã®æä¸ã«ã¨ã©ã¼ãåºåãããã¨ãå¯è½ã§ã¯ãããã949 # ããããã¨ã»ã«ã¿ã¤ãå´ã®åé¡ã§ããã®ã«ãããããããã»ã«ãã¨ã«950 # ã¨ã©ã¼ã表示ããã¦ãã¾ãã907 # 属性置換が行えることを検証する。 908 # ここで行うのは、factoryで指定された属性名が 909 # 存在することを確認し、しなければエラーを出力することのみである。 910 # セルごとの処理の最中にエラーを出力することも可能ではあるが、 911 # そうするとセルタイプ側の問題であるのにもかかわらず、セルごとに 912 # エラーが表示されてしまう。 951 913 # {{attribute_name}} -> attribute_value 952 914 @factory.scan(/\{\{([a-zA-Z0-9_]*?)\}\}/) { |match| 953 915 name = $1.to_sym 954 916 955 # {{_handler_params_}} ã¯ãã³ãã©ã«é¢ããæå®ããã©ã°ã¤ã³å 956 ã§å¤ãçæããã 917 # {{_handler_params_}} はハンドラに関する指定。プラグイン内で値が生成される 957 918 next if name == :_handler_params_ 958 919 … … 968 929 } 969 930 970 # ã¢ããã¿é¢æ°ã®çæãå®äºããã931 # アダプタ関数の生成を完了させる 971 932 @adpt_gen.finish 972 933 … … 982 943 handler_flag = nil 983 944 984 # ignoreErrors ãåå¾945 # ignoreErrorsを取得 985 946 ignoreErrors_attr_join = cell.get_join_list.get_item(:ignoreErrors) 986 947 ignoreErrors_attr = cell.get_celltype.find(:ignoreErrors) 987 948 if ignoreErrors_attr_join 988 # ã»ã«çææã«åæåããå ´å949 # セル生成時に初期化する場合 989 950 ignoreErrors = ignoreErrors_attr_join.get_rhs.to_s 990 951 else 991 # ã»ã«ã¿ã¤ãã®åæåå¤ã使ãå ´å952 # セルタイプの初期化値を使う場合 992 953 ignoreErrors = ignoreErrors_attr.get_initializer.to_s 993 954 end … … 1002 963 1003 964 [EVENT_HANDLER, ERROR_HANDLER].each { |handler| 1004 # å¼ã³å£ã®çµåãåå¾965 # 呼び口の結合を取得 1005 966 call_join = cell.get_join_list.get_item(handler.call_port_name.to_sym) 1006 967 1007 # ãã³ãã©ã¿ã¤ããå¤å¥ãã968 # ハンドラタイプを判別する 1008 969 matches = HANDLER_TYPES.select { |handler_type| 1009 970 handler_type.validate_join(handler, cell, call_join) … … 1015 976 end 1016 977 1017 # æåã«è¦ã¤ãã£ãæå¹ãªãã³ãã©ã¿ã¤ãã使ç¨978 # 最初に見つかった有効なハンドラタイプを使用 1018 979 ht = matches[0] 1019 980 1020 # éç¥ãã³ãã©ã§ãã¨ã©ã¼ãçºçããã¯ãããªããã®ã«ãã¨ã©ã¼ãã³ãã©ãæå®ããã¦ããã1021 # ãããã¯ãã®éã®ãã¿ã¼ã³ãæ¤åºããã1022 # (handler_flag ãnilã§ããå ´åããã³ãã©ã¿ã¤ããä¸æã§ãããã¨ã©ã¼ãçºçãããä¸æ1023 # ãªãããæ¤åºã¯è¡ããªãã)981 # 通知ハンドラで「エラーが発生するはずがない」のに「エラーハンドラが指定されている」 982 # もしくはその逆のパターンを検出する。 983 # (handler_flagがnilである場合、ハンドラタイプが不明であり、エラーが発生するか不明 984 # なため、検出は行わない。) 1024 985 if handler == ERROR_HANDLER && !ht.is_a?(NullHandlerType) && !event_handler_might_fail 1025 986 cdl_error( "ASP1004 cell $1: handler type $2 which never raises an error was inferred for the normal notification handler, but an error notification handler was specified.", … … 1036 997 end 1037 998 1038 # éç¥æ¹æ³ã®éçAPIè¨è¿°ãçæãã999 # 通知方法の静的API記述を生成する 1039 1000 handler_flag = ht.gen_cfg_handler_type(handler) 1040 1001 handler_flags << handler_flag if handler_flag … … 1050 1011 } 1051 1012 1052 # $id$ çã®ç½®æ1013 # $id$等の置換 1053 1014 name_array = cell.get_celltype.get_name_array(cell) 1054 1015 handler_args.collect! { |e| … … 1060 1021 } 1061 1022 1062 # tecsgen.cfg ã®è¨è¿°ãçæããã1063 # factory ã«å¯¾ãããã©ã¡ã¼ã¿ç½®æãè¡ãã1023 # tecsgen.cfgの記述を生成する。 1024 # factoryに対し、パラメータ置換を行う。 1064 1025 # {{attribute_name}} -> attribute_value 1065 1026 text = @factory.gsub(/\{\{([a-zA-Z0-9_]*?)\}\}/) { |match| … … 1067 1028 subst_attr = cell.get_celltype.find(name) 1068 1029 1069 # {{_handler_params_}} ã¯ãã³ãã©ã®æå®ã«ç½®æããã1030 # {{_handler_params_}} はハンドラの指定に置換する。 1070 1031 if name == :_handler_params_ 1071 1032 args_joined = handler_flags.join(' | ') … … 1078 1039 1079 1040 unless subst_attr 1080 # å±æ§ãè¦ã¤ãããªãã¨ããã¨ã©ã¼ã¯ãã§ã«å ±åããã¦ããã®ã§1081 # ããã§ã¯ããã¼å¤ãè¿ãã¦ããã ãã§ããã1041 # 属性が見つからないというエラーはすでに報告されているので 1042 # ここではダミー値を返しておくだけである。 1082 1043 next "" 1083 1044 end … … 1085 1046 subst_attr_join = cell.get_join_list.get_item(name) 1086 1047 if subst_attr_join 1087 # ã»ã«çææã«åæåããå ´å1048 # セル生成時に初期化する場合 1088 1049 subst = subst_attr_join.get_rhs.to_s 1089 1050 else 1090 # ã»ã«ã¿ã¤ãã®åæåå¤ã使ãå ´å1051 # セルタイプの初期化値を使う場合 1091 1052 subst = subst_attr.get_initializer.to_s 1092 1053 end 1093 1054 1094 # $id$ çã®ç½®æ1055 # $id$等の置換 1095 1056 cell.get_celltype.subst_name(subst, name_array) 1096 1057 } 1097 1058 1098 # åºå1059 # 出力 1099 1060 kernelCfg.puts text 1100 1061 -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/OpaqueMarshalerPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 # $Id : OpaqueMarshalerPlugin.rb 2061 2014-05-31 22:15:33Z okuma-top$37 # $Id$ 53 38 #++ 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
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/OpaqueRPCPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 # $Id : OpaqueRPCPlugin.rb 2061 2014-05-31 22:15:33Z okuma-top$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, 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 … … 290 267 end 291 268 292 # ãµã¼ãã¼å´ãã£ã³ãã« (TINET, Socket ãªã©)269 # サーバー側チャンネル (TINET, Socket など) 293 270 file.print <<EOT 294 271 … … 299 276 EOT 300 277 301 # ãµã¼ãã¼å´ãã£ã³ãã« (ã¢ã³ãã¼ã·ã£ã©+TDR)278 # サーバー側チャンネル (アンマーシャラ+TDR) 302 279 file.print <<EOT 303 280 … … 309 286 EOT 310 287 311 # ãµã¼ãã¼å´ã¿ã¹ã¯ã¡ã¤ã³288 # サーバー側タスクメイン 312 289 file.print <<EOT 313 290 … … 318 295 EOT 319 296 320 # ãµã¼ãã¼å´ã¿ã¹ã¯297 # サーバー側タスク 321 298 file.print <<EOT 322 299 … … 332 309 end 333 310 334 #=== ãã©ã°ã¤ã³å¼æ° noClientSemaphore ã®ãã§ãã¯311 #=== プラグイン引数 noClientSemaphore のチェック 335 312 def set_noClientSemaphore rhs 336 313 rhs = rhs.to_sym -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/RPCPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 # $Id : RPCPlugin.rb 2061 2014-05-31 22:15:33Z okuma-top$37 # $Id$ 53 38 #++ 54 39 … … 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, 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 ) … … 225 199 226 200 file.print <<EOT 227 #{indent_str}// ä¸æ¹åãã£ã³ãã«ã»ã«201 #{indent_str}// 一方向チャンネルセル 228 202 #{indent_str}cell #{@channelCelltype} #{@channelCellName} { 229 203 #{indent_str}}; 230 204 231 #{indent_str}// RPC ãã£ã³ãã«ã»ã«232 EOT 233 234 # #473 ã解決ãããå ´åãcomposite ãªã¬ã¼ã¢ãã±ã¼ã¿ã«å¤æ´ãã¹ã235 # ã¢ãã±ã¼ã¿ã®æå®ããããï¼205 #{indent_str}// RPC チャンネルセル 206 EOT 207 208 # #473 が解決された場合、composite リレーアロケータに変更すべき 209 # アロケータの指定があるか? 236 210 if cell.get_allocator_list.length > 0 then 237 211 … … 242 216 243 217 file.print delim 244 delim = ",\n#{indent_str} " # æçµè¡ã«ã¯åºããªã 245 246 if subsc then # é 247 åæ·»æ° 218 delim = ",\n#{indent_str} " # 最終行には出さない 219 220 if subsc then # 配列添数 248 221 subsc_str = '[#{subsc}]' 249 222 else … … 251 224 end 252 225 253 eport = "eThroughEntry" #RPC ã®åãå£åã«å¤æ´226 eport = "eThroughEntry" #RPCの受け口名に変更 254 227 file.print "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc}" 255 228 end … … 270 243 271 244 272 #=== ãã©ã°ã¤ã³å¼æ° noClientSemaphore ã®ãã§ãã¯245 #=== プラグイン引数 noClientSemaphore のチェック 273 246 def set_noClientSemaphore rhs 274 247 rhs = rhs.to_sym … … 282 255 end 283 256 284 #=== ãã©ã°ã¤ã³å¼æ° semaphoreCelltype ã®ãã§ãã¯257 #=== プラグイン引数 semaphoreCelltype のチェック 285 258 def set_semaphoreCelltype rhs 286 259 @semaphoreCelltype = rhs.to_sym -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/SharedOpaqueRPCPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 # $Id : SharedOpaqueRPCPlugin.rb 2061 2014-05-31 22:15:33Z okuma-top$37 # $Id$ 53 38 #++ 54 39 … … 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, 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 # … … 250 222 indent_str = " " * nest 251 223 252 # ã»ã«ãæ¢ã224 # セルを探す 253 225 # path =["::",@next_cell.get_name] 254 226 # cell = Namespace.find( path ) 255 227 cell = Namespace.find( @next_cell.get_namespace_path ) 256 228 257 # å 258 ±æãããéä¿¡ãã£ã³ãã«ã®çæã®ãããã¿ã¤ãå®£è¨ 229 # 共有される通信チャンネルの生成のプロトタイプ宣言 259 230 file.print <<EOT 260 231 #{indent_str}cell #{@shared_channel_client_ct_name} #{@shared_channel_cell}; 261 232 EOT 262 233 263 # ãã¼ã·ã£ã©ã»ã«ã®çæï¼ã¢ãã±ã¼ã¿ã³ã¼ãã®çæããï¼264 # ã¢ãã±ã¼ã¿ã®æå®ããããï¼234 # マーシャラセルの生成(アロケータコードの生成から) 235 # アロケータの指定があるか? 265 236 if cell.get_allocator_list.length > 0 then 266 237 … … 278 249 279 250 file.print delim 280 delim = ",\n#{indent_str} " # æçµè¡ã«ã¯åºããªã 281 282 if subsc then # é 283 åæ·»æ° 251 delim = ",\n#{indent_str} " # 最終行には出さない 252 253 if subsc then # 配列添数 284 254 subsc_str = '[#{subsc}]' 285 255 else … … 287 257 end 288 258 289 eport = @entry_port_name #RPC ã®åãå£åã«å¤æ´259 eport = @entry_port_name #RPCの受け口名に変更 290 260 file.print "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc_str}" 291 261 end … … 294 264 end 295 265 296 # ãã¼ã·ã£ã©ã»ã«æ¬ä½çæ266 # マーシャラセル本体生成 297 267 file.print <<EOT 298 268 /* OpaqueRPC Marshaler Cell */ … … 305 275 @start_region.gen_region_str_post file 306 276 307 # ã¢ã³ãã¼ã·ã£ã©ã»ã«ã®åºå308 # ã»ã«æ¬ä½ã®çæ277 # アンマーシャラセルの出力 278 # セル本体の生成 309 279 nest = @end_region.gen_region_str_pre file 310 280 … … 315 285 EOT 316 286 317 # PPAllocator ãå¿ 318 è¦ã? 287 # PPAllocator が必要か? 319 288 if @PPAllocatorSize then 320 289 if @sub_channel_no == 0 then … … 341 310 end 342 311 343 #=== post ã³ã¼ã(CDL) ãçæ344 # ãã©ã°ã¤ã³ã®å¾ã®ã³ã¼ããçæ312 #=== post コード(CDL) を生成 313 # プラグインの後のコードを生成 345 314 #file:: File: 346 315 def self.gen_post_code( file ) … … 355 324 end 356 325 357 #=== post ã³ã¼ã(CDL) ãçæ 358 # å 359 ±æãã£ã³ãã«ãçæãã 360 # ãã®ã¡ã½ããã¯ããã£ã³ãã«ãå 361 ±æããæåã®ãã©ã°ã¤ã³ãªãã¸ã§ã¯ãã®ã¿å¼ã³åºããã 326 #=== post コード(CDL) を生成 327 # 共有チャンネルを生成する 328 # このメソッドは、チャンネルを共有する最初のプラグインオブジェクトのみ呼び出される 362 329 def gen_post_code( file, plugin_obj_array ) 363 330 364 # å 365 ±æããã¦ããéä¿¡ãã£ã³ãã«ã®çæ 366 # åãã©ã°ã¤ã³ã¤ã³ã¹ã¿ã³ã¹ã§ã¯ @shared_channel_ct_name ã¨ãã¦è¨æ¶ãã¦ãã 331 # 共有されている通信チャンネルの生成 332 # 各プラグインインスタンスでは @shared_channel_ct_name として記憶している 367 333 # region = @caller_cell.get_region 368 334 nest = @start_region.gen_region_str_pre file -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/SharedRPCPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 # $Id : SharedRPCPlugin.rb 2061 2014-05-31 22:15:33Z okuma-top$37 # $Id$ 53 38 #++ 54 39 … … 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, 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 # … … 263 237 indent_str = " " * nest 264 238 265 # ã»ã«ãæ¢ã239 # セルを探す 266 240 # path =["::",@next_cell.get_name] 267 241 # cell = Namespace.find( path ) 268 242 cell = Namespace.find( @next_cell.get_namespace_path ) 269 243 270 # PPAllocator ãå¿ 271 è¦ã? 244 # PPAllocator が必要か? 272 245 if @signature.need_PPAllocator? then 273 246 if @sub_channel_no == 0 then … … 284 257 end 285 258 286 # å 287 ±æãããéä¿¡ãã£ã³ãã«ã®çæã®ãããã¿ã¤ãå®£è¨ 259 # 共有される通信チャンネルの生成のプロトタイプ宣言 288 260 file.print <<EOT 289 261 #{indent_str}cell #{@shared_channel_ct_name} #{@shared_channel_cell}; 290 262 EOT 291 263 292 # ããããåçµåãã¨ã®ã»ã«ãçæ293 294 # ã¢ãã±ã¼ã¿ã®æå®ããããï¼264 # ここから各結合ごとのセルを生成 265 266 # アロケータの指定があるか? 295 267 if cell.get_allocator_list.length > 0 then 296 268 … … 301 273 302 274 file.print delim 303 delim = ",\n#{indent_str} " # æçµè¡ã«ã¯åºããªã 304 305 if subsc then # é 306 åæ·»æ° 275 delim = ",\n#{indent_str} " # 最終行には出さない 276 277 if subsc then # 配列添数 307 278 subsc_str = '[#{subsc}]' 308 279 else … … 310 281 end 311 282 312 eport = "eThroughEntry" #RPC ã®åãå£åã«å¤æ´283 eport = "eThroughEntry" #RPCの受け口名に変更 313 284 file.print "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc}" 314 285 end … … 317 288 end 318 289 319 # ã»ã«æ¬ä½ã®çæ290 # セル本体の生成 320 291 file.print <<EOT 321 292 #{indent_str}cell #{@rpc_channel_celltype_name} #{@cell_name} { … … 329 300 end 330 301 331 #=== å¾ãã®ã³ã¼ããçæ332 # ãã©ã°ã¤ã³ã®å¾ãã®ã³ã¼ããçæ302 #=== 後ろのコードを生成 303 #プラグインの後ろのコードを生成 333 304 #file:: File: 334 305 def self.gen_post_code( file ) … … 339 310 end 340 311 341 #=== å¾ãã®ã³ã¼ããçæ342 # plugin_obj[0] ã代表ãã¦åºåããï¼ã¤ã³ã¹ã¿ã³ã¹å¤æ°ã«ã¢ã¯ã»ã¹ãããããï¼312 #=== 後ろのコードを生成 313 # plugin_obj[0] が代表して出力する(インスタンス変数にアクセスしたいため) 343 314 def gen_post_code( file, plugin_obj ) 344 315 … … 348 319 indent_str = " " * nest 349 320 350 # å 351 ±æããã¦ããéä¿¡ãã£ã³ãã«ã®çæ 352 # åãã©ã°ã¤ã³ã¤ã³ã¹ã¿ã³ã¹ã§ã¯ @shared_channel_ct_name ã¨ãã¦è¨æ¶ãã¦ãã 321 # 共有されている通信チャンネルの生成 322 # 各プラグインインスタンスでは @shared_channel_ct_name として記憶している 353 323 file.print "#{indent_str}cell tSharedRPCPlugin_#{@channelCelltype} #{chan_name} {\n" 354 324 plugin_obj.each{ |po| -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/SignaturePlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 # $Id : SignaturePlugin.rb 2061 2014-05-31 22:15:33Z okuma-top$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
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/TECS2CBridgePlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 # $Id : TECS2CBridgePlugin.rb 2068 2014-06-21 07:04:08Z okuma-top$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
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/ThroughPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 # $Id : ThroughPlugin.rb 2061 2014-05-31 22:15:33Z okuma-top$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 #@signature:: Signature ã·ã°ãã㣠68 #@celltype:: Celltype å¼ã³å 69 ã®ã»ã«ã®ã»ã«ã¿ã¤ã. through ãé£æ¥ããå ´åãæçµçãªå¼ã³å 70 ã®ã»ã«ã®ã»ã«ã¿ã¤ã 71 #@entry_port_name::Symbol çæããã»ã«ã®åãå£å "eThroughEntry" 72 #@call_port_name:: Symbol çæããã»ã«ã®å¼ã³å£å "cCall" 73 #@ct_name:: Symbol çæããã»ã«ã®ã»ã«ã¿ã¤ãå "t#{self.class.name}_#{@signature.get_global_name}" 74 #@plugin_arg_list:: Hash ãã©ã°ã¤ã³å¼æ°ããã¼ã¹ããçµæã®ããã·ã¥å¤æ° 75 #@caller_cell:: Cell å¼ã³å 76 ã®ã»ã«ï¼through ãã©ã°ã¤ã³ãé£æ¥ããå ´åã§ã¯ãæãå¼ã³å 77 ã®ã»ã«ï¼($source$) 78 # through ãã©ã°ã¤ã³ãåæµããã±ã¼ã¹ã§ã¯ã1ã¤ç®ã®å¼ã³å 79 ã»ã«ã®ã¿å¼æ°ã¨ãã¦ä¸ãããã 80 # å¾ã£ã¦ TracePlugin ã®å¼ã³å 81 ã®å¤å¥ã«å©ç¨ããå ´åã¯ãç°ãªãå¼ã³å 82 ããå¼ã°ããå¯è½æ§ããããã¨ã«æ³¨æããªãã¦ã¯ãªããªã 83 #@callee_cell:: Cell å¼ã³å 84 ã®ã»ã«($destination$) 85 #@plugin_arg_check_proc_tab:: [string => Proc] ãã©ã°ã¤ã³å¼æ°åâãã§ãã¯é¢æ° 86 # 以ä¸ã®å¤æ°ã¯ãinitialize ã§ã¯ãªããå¾ããè¨å®ããã 87 #@start_@region:: Region å§ã¾ãã®ãªã¼ã¸ã§ã³ï¼ caller_cell ã®ãªã¼ã¸ã§ã³ã¨ã¯ç°ãªãå¯è½æ§ããã ($start_region$) 88 #@end_region:: Region çµããã®ãªã¼ã¸ã§ã³ï¼ next_cell ã®ãªã¼ã¸ã§ã³ã¨ã¯ç°ãªãå¯è½æ§ããã ($end_region$) 89 #@region:: Region @start_region 㨠@end_region ã®ããããã§ãcell ãç½®ãã®ã好ã¾ãããªã¼ã¸ã§ã³ ($preferred_region$) 90 #@through_type:: Symbol :THROUGH, :TO_THROUGH, :IN_THROUGH, :OUT_THROUGH ã®ãããã 91 92 # ãã® Plugin ãçæããã»ã«ã¿ã¤ãã®ãªã¹ã 45 #@cell_name:: Symbol 生成するセル名(複数セルを生成する場合、受け口側のセル) 46 #@plugin_arg_str:: string through で指定された引数 47 #@next_cell:: Cell 呼び口を結合するセル 48 #@next_cell_port_name:: Symbol 呼び口を結合する受口の名前 49 #@signature:: Signature シグニチャ 50 #@celltype:: Celltype 呼び先のセルのセルタイプ. through が連接する場合、最終的な呼び先のセルのセルタイプ 51 #@entry_port_name::Symbol 生成するセルの受け口名 "eThroughEntry" 52 #@call_port_name:: Symbol 生成するセルの呼び口名 "cCall" 53 #@ct_name:: Symbol 生成するセルのセルタイプ名 "t#{self.class.name}_#{@signature.get_global_name}" 54 #@plugin_arg_list:: Hash プラグイン引数をパースした結果のハッシュ変数 55 #@caller_cell:: Cell 呼び元のセル.through プラグインが連接する場合では、最も呼び元のセル.($source$) 56 # through プラグインが合流するケースでは、1つ目の呼び元セルのみ引数として与えられる 57 # 従って TracePlugin の呼び元の判別に利用する場合は、異なる呼び元から呼ばれる可能性があることに注意しなくてはならない 58 #@callee_cell:: Cell 呼び先のセル($destination$) 59 #@plugin_arg_check_proc_tab:: [string => Proc] プラグイン引数名⇒チェック関数 60 # 以下の変数は、initialize ではなく、後から設定される 61 #@start_@region:: Region 始まりのリージョン: caller_cell のリージョンとは異なる可能性がある ($start_region$) 62 #@end_region:: Region 終わりのリージョン: next_cell のリージョンとは異なる可能性がある ($end_region$) 63 #@region:: Region @start_region と @end_region のいずれかで、cell を置くのが好ましいリージョン ($preferred_region$) 64 #@through_type:: Symbol :THROUGH, :TO_THROUGH, :IN_THROUGH, :OUT_THROUGH のいずれか 65 66 # この Plugin が生成したセルタイプのリスト 93 67 @@generated_celltype = {} 94 68 95 #=== ThroughPlugin ã®åæå 96 # through ãæå®ãããæç¹ã§çæãè¡ããã 97 # åæåã§ã¯ãæå®ãããå¼æ°ãè¨é²ããã«çãã 98 #cell_name:: Symbol çæãã¹ãã»ã«åï¼åå£å´ï¼ 99 #plugin_arg:: string through ã§æå®ãããå¼æ° 100 #next_cell:: Cell å¼ã³å£ãæ¥ç¶ããã»ã« 101 #next_cell_port_name:: Symbol å¼ã³å£ãæ¥ç¶ããåå£ã®åå 102 #signature:: Signature ã·ã°ãã㣠103 #celltype:: Celltype ã»ã«ã¿ã¤ã (å¼ã³å 104 ã®ã»ã«ã®ã»ã«ã¿ã¤ã) 105 #caller_cell:: Cell å¼ã³å 106 ã®ã»ã«ï¼@caller_cell ã®é 107 ãåç 108 § 69 #=== ThroughPlugin の初期化 70 # through が指定された時点で生成が行われる 71 # 初期化では、指定された引数を記録するに留める 72 #cell_name:: Symbol 生成すべきセル名(受口側) 73 #plugin_arg:: string through で指定された引数 74 #next_cell:: Cell 呼び口を接続するセル 75 #next_cell_port_name:: Symbol 呼び口を接続する受口の名前 76 #signature:: Signature シグニチャ 77 #celltype:: Celltype セルタイプ (呼び先のセルのセルタイプ) 78 #caller_cell:: Cell 呼び元のセル.@caller_cell の項を参照 109 79 def initialize( cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell ) 110 80 super() 111 @cell_name = cell_name # çæãã¹ãã»ã«åï¼åãå£å´ã®ã»ã«åï¼ 112 # ãã®å¼ã³å 113 ã«å¥ã»ã«ãçæããå ´åããã®ååãæ¥é è¾ã¨ãã¹ã 114 @next_cell = next_cell # å¼ã³å 115 ã®ã»ã« 81 @cell_name = cell_name # 生成すべきセル名(受け口側のセル名) 82 # この呼び先に別セルを生成する場合、この名前を接頭辞とすべき 83 @next_cell = next_cell # 呼び先のセル 116 84 @next_cell_port_name = next_cell_port_name 117 85 @signature = signature … … 121 89 @celltype = celltype 122 90 @plugin_arg_str = plugin_arg 123 @plugin_arg_list = {} # ãã©ã°ã¤ã³å¼æ°ããã¼ã¹ããçµæã®ããã·ã¥å¤æ°91 @plugin_arg_list = {} # プラグイン引数をパースした結果のハッシュ変数 124 92 @caller_cell = caller_cell 125 Join.set_through_info self # å¼æ°ã§æ¸¡ããªã(å¾ãã追å ããã)ãã®ã¯ set_through_info ã§è¨å®ããã93 Join.set_through_info self # 引数で渡らない(後から追加された)ものは set_through_info で設定される 126 94 print( "#{self.class.name}.new( '#{cell_name}', '#{plugin_arg}', '#{next_cell.get_name}', '#{next_cell_port_name}', #{celltype.get_name} )\n" ) 127 95 end 128 96 129 #=== æ 130 å ±ãè¨å®ãã 131 # å 132 ±æãã£ã³ãã«ã®å ´å caller_cell, next_cell ã®ãããã® region ã§ããªãã±ã¼ã¹ããã 133 # å¾ãã追å ããã®ã§ initialize ã®å¼æ°ã§ã¯ãªããå¥ã¡ã½ããã§è¨å® 134 # ãã®ã¡ã½ããã¯ããªã¼ãã¼ã©ã¤ãããªãã§ãã ãã 135 # Join 㨠ThrougPlugin ã®éã®é£çµ¡ç¨ã§ãä»å¾ã¨ãå¼æ°ã追å ãããå¯è½æ§ããããã 136 # ãã®ã¡ã½ãã㯠V1.C.0.34 ã§ä½ç½®ã移åãããThroughPlugin#initialize ã§å¼ã³åºããã 97 #=== 情報を設定する 98 # 共有チャンネルの場合 caller_cell, next_cell のいずれの region でもないケースがある 99 # 後から追加したので initialize の引数ではなく、別メソッドで設定 100 # このメソッドは、オーバーライドしないでください 101 # Join と ThrougPlugin の間の連絡用で、今後とも引数が追加される可能性があるため 102 # このメソッドは V1.C.0.34 で位置が移動され、ThroughPlugin#initialize で呼び出される 137 103 def set_through_info( start_region, end_region, through_type, join, callee_cell, count ) 138 104 @start_region = start_region … … 143 109 @count = count 144 110 145 # preferred_region ã®è¨å®111 # preferred_region の設定 146 112 case through_type 147 113 when :IN_THROUGH, :THROUGH … … 154 120 end 155 121 156 #=== ã»ã«ã®ååãå¾ã122 #=== セルの名前を得る 157 123 def get_cell_name 158 124 @cell_name 159 125 end 160 126 161 #=== NamespacePath ãå¾ã162 # çæããã»ã«ã® namespace path ãçæãã127 #=== NamespacePath を得る 128 # 生成するセルの namespace path を生成する 163 129 def get_cell_namespace_path 164 130 # nsp = @region.get_namespace.get_namespace_path … … 167 133 end 168 134 169 #=== çæãããã»ã«ã®åãå£ã®ååãå¾ã135 #=== 生成されたセルの受け口の名前を得る 170 136 def get_through_entry_port_name 171 137 @entry_port_name 172 138 end 173 139 174 #=== 宣è¨ã³ã¼ãã®çæ175 # typedef, signature, celltype ãªã©ï¼cell 以å¤ï¼ã®ã³ã¼ããçæ176 # éè¤ãã¦çæãã¦ã¯ãªããªãï¼ãã§ã«çæããã¦ããå ´åã¯åºåããªããã¨ï¼177 #file:: FILE çæãããã¡ã¤ã«140 #=== 宣言コードの生成 141 # typedef, signature, celltype など(cell 以外)のコードを生成 142 # 重複して生成してはならない(すでに生成されている場合は出力しないこと) 143 #file:: FILE 生成するファイル 178 144 def gen_plugin_decl_code( file ) 179 145 180 # ãã®ã»ã«ã¿ã¤ãï¼åãã·ã°ããã£ï¼ã¯æ¢ã«çæããã¦ãããï¼146 # このセルタイプ(同じシグニチャ)は既に生成されているか? 181 147 if @@generated_celltype[ @ct_name ] == nil then 182 148 @@generated_celltype[ @ct_name ] = [ self ] … … 223 189 end 224 190 225 #=== CDL ãã¡ã¤ã«ã®çæ226 #file:: FILE çæãããã¡ã¤ã«191 #=== CDL ファイルの生成 192 #file:: FILE 生成するファイル 227 193 def gen_cdl_file( file ) 228 194 gen_plugin_decl_code( file ) … … 230 196 end 231 197 232 #=== ã»ã«ã³ã¼ãã®çæ233 # through æå®ã«ããçããã»ã«ã³ã¼ã(CDL)ãçæãã234 #file:: FILE çæãããã¡ã¤ã«198 #=== セルコードの生成 199 # through 指定により生じるセルコード(CDL)を生成する 200 #file:: FILE 生成するファイル 235 201 def gen_through_cell_code( file ) 236 202 … … 247 213 end 248 214 249 #=== å¾ãã®ã³ã¼ããçæ250 # ãã©ã°ã¤ã³ã®å¾ãã®ã³ã¼ã (CDL) ãçæ215 #=== 後ろのコードを生成 216 #プラグインの後ろのコード (CDL) を生成 251 217 #file:: File: 252 218 def self.gen_post_code( file ) 253 # è¤æ°ã®ãã©ã°ã¤ã³ã® post_code ãä¸ã¤ã®ãã¡ã¤ã«ã«å«ã¾ããããã以ä¸ã®ãããªè¦åºããã¤ãããã¨219 # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること 254 220 # file.print "/* '#{self.class.name}' post code */\n" 255 221 end 256 222 257 #=== åãå£é¢æ°ã®æ¬ä½(Cè¨èª)ãçæãã 258 # é常ã§ããã°ãã¸ã§ãã¬ã¼ã¿ã¯åãå£é¢æ°ã®ãã³ãã¬ã¼ããçæãã 259 # ãã©ã°ã¤ã³ã®å ´åãå¤æ´ããå¿ 260 è¦ã®ãªãã»ã«ã¿ã¤ãã³ã¼ããçæãã 261 #file:: FILE åºåå 262 ãã¡ã¤ã« 223 #=== 受け口関数の本体(C言語)を生成する 224 # 通常であれば、ジェネレータは受け口関数のテンプレートを生成する 225 # プラグインの場合、変更する必要のないセルタイプコードを生成する 226 #file:: FILE 出力先ファイル 263 227 #b_singleton:: bool true if singleton 264 228 #ct_name:: Symbol … … 285 249 p_cellcb = #{global_ct_name}_GET_CELLCB(idx); 286 250 }else{ 287 /* ã¨ã©ã¼å¦çã³ã¼ããããã«è¨è¿°*/251 /* エラー処理コードをここに記述 */ 288 252 } 289 253 … … 318 282 end 319 283 320 #=== Through ãã©ã°ã¤ã³ã®å¼æ°ã®ååãç½®æãã284 #=== Through プラグインの引数の名前を置換する 321 285 def check_plugin_arg( ident, rhs ) 322 286 rhs = subst_name rhs … … 324 288 end 325 289 326 #=== ThroughPlugin#ååã®ç½®æ 327 # ãã©ã°ã¤ã³ãªãã·ã§ã³å¼æ°å 328 ã®æååãç½®æãã 329 # $source$ ⦠å¼ã³å 330 ã®ã»ã«å 331 # $destination$ ⦠å¼ã³å 332 ã®ã»ã«å 333 # $SOURCE$ ⦠å¼ã³å 334 ã®ã»ã«å (ãªã¼ã¸ã§ã³åã '_' ã§é£çµãã global_name) 335 # $DESTINATION$ ⦠å¼ã³å 336 ã®ã»ã«å (ãªã¼ã¸ã§ã³åã '_' ã§é£çµãã global_name) 337 # $next$ ⦠次ã®ã»ã«å 338 # è¤æ°ã® through ãã¤ãªãã£ã¦ããå ´åãããå¾ãã«æ¥ããã® 339 # $NEXT$ ⦠次ã®ã»ã«å (ãªã¼ã¸ã§ã³åã '_' ã§é£çµãã global_name) 340 # è¤æ°ã® through ãã¤ãªãã£ã¦ããå ´åãããå¾ãã«æ¥ããã® 341 # $start_region$ ⦠$source$ ã®ã»ã«ã®åå¨ãã region (global_name) 342 # $end_region$ ⦠$destination$ ã®ã»ã«ã®åå¨ãã region (global_name) 343 # $preferred_region$ ⦠é©å㪠region (global_name), start_region ã¾ã㯠end_region 344 # $count$ ⦠region éã® through ã®é©ç¨æ° 345 # $$ ⦠$ ã«ç½®æ 290 #=== ThroughPlugin#名前の置換 291 # プラグインオプション引数内の文字列を置換する 292 # $source$ … 呼び元のセル名 293 # $destination$ … 呼び先のセル名 294 # $SOURCE$ … 呼び元のセル名 (リージョン名を '_' で連結した global_name) 295 # $DESTINATION$ … 呼び先のセル名 (リージョン名を '_' で連結した global_name) 296 # $next$ … 次のセル名 297 # 複数の through がつながっている場合、すぐ後ろに来るもの 298 # $NEXT$ … 次のセル名 (リージョン名を '_' で連結した global_name) 299 # 複数の through がつながっている場合、すぐ後ろに来るもの 300 # $start_region$ … $source$ のセルの存在する region (global_name) 301 # $end_region$ … $destination$ のセルの存在する region (global_name) 302 # $preferred_region$ … 適切な region (global_name), start_region または end_region 303 # $count$ … region 間の through の適用数 304 # $$ … $ に置換 346 305 def subst_name( str ) 347 # ã»ã«åã®ç½®æ306 # セル名の置換 348 307 str = str.gsub( /(^|[^\$])\$source\$/, "\\1#{@caller_cell.get_name}" ) 349 308 str = str.gsub( /(^|[^\$])\$destination\$/, "\\1#{@callee_cell.get_name}" ) … … 352 311 str = str.gsub( /(^|[^\$])\$next\$/, "\\1#{@next_cell.get_name}" ) 353 312 str = str.gsub( /(^|[^\$])\$NEXT\$/, "\\1#{@next_cell.get_global_name}" ) 354 # region åã®ç½®æ313 # region 名の置換 355 314 str = str.gsub( /(^|[^\$])\$start_region\$/, "\\1#{@start_region.get_global_name}" ) 356 315 str = str.gsub( /(^|[^\$])\$end_region\$/, "\\1#{@end_region.get_global_name}" ) … … 358 317 str = str.gsub( /(^|[^\$])\$count\$/, "\\1#{@count}" ) 359 318 360 str = str.gsub( /\$\$/, "\$" ) # $$ ã $ ã«ç½®æ319 str = str.gsub( /\$\$/, "\$" ) # $$ を $ に置換 361 320 362 321 return str -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/TracePlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 # $Id : TracePlugin.rb 2270 2015-10-25 12:08:44Z okuma-top$37 # $Id$ 53 38 #++ 54 39 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, 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 ] … … 439 420 end 440 421 441 # ãã©ã°ã¤ã³å¼æ°åã¨Proc422 # プラグイン引数名と Proc 442 423 TracePluginArgProc = { 443 424 "maxArrayDisplay" => Proc.new { |obj,rhs| obj.set_maxArrayDisplay rhs }, … … 479 460 end 480 461 481 #=== ãã©ã°ã¤ã³å¼æ° tKernel ã®ãã§ãã¯462 #=== プラグイン引数 tKernel のチェック 482 463 def set_kernelCelltype( rhs ) 483 464 @kernelCelltype = rhs.to_sym … … 489 470 end 490 471 491 #=== ãã©ã°ã¤ã³å¼æ° tSyslog ã®ãã§ãã¯472 #=== プラグイン引数 tSyslog のチェック 492 473 def set_syslogCelltype( rhs ) 493 474 @syslogCelltype = rhs.to_sym -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/lib/GenHRP2Marshaler.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 #++ 53 38 54 # ãã©ã°ã¤ã³ãªãã·ã§ã³ç¨å¤æ°39 #プラグインオプション用変数 55 40 #@task_priority:: Integer 56 41 #@channelCelltype:: String … … 59 44 module GenTransparentMarshaler 60 45 61 # ãã©ã°ã¤ã³å¼æ°åã¨Proc46 # プラグイン引数名と Proc 62 47 RPCPluginArgProc = { 63 48 "taskPriority" => Proc.new { |obj,rhs| obj.set_taskPriority rhs }, … … 68 53 } 69 54 70 #=== ãã©ã°ã¤ã³å¼æ° taskPriority ã®ãã§ãã¯55 #=== プラグイン引数 taskPriority のチェック 71 56 def set_taskPriority( rhs ) 72 57 @task_priority = rhs 73 58 end 74 59 75 #=== ãã©ã°ã¤ã³å¼æ° channelCelltype ã®ãã§ãã¯60 #=== プラグイン引数 channelCelltype のチェック 76 61 def set_channelCelltype( rhs ) 77 62 @channelCelltype = rhs.to_sym … … 85 70 end 86 71 87 #=== ãã©ã°ã¤ã³å¼æ° TDRCelltype ã®ãã§ãã¯72 #=== プラグイン引数 TDRCelltype のチェック 88 73 def set_TDRCelltype( rhs ) 89 74 @TDRCelltype = rhs.to_sym … … 97 82 end 98 83 99 #=== ãã©ã°ã¤ã³å¼æ° channelCellName ã®ãã§ãã¯84 #=== プラグイン引数 channelCellName のチェック 100 85 def set_channelCellName( rhs ) 101 86 @channelCellName = rhs … … 107 92 end 108 93 109 #=== ãã©ã°ã¤ã³å¼æ° PPAllocatorSize ã®ãã§ãã¯94 #=== プラグイン引数 PPAllocatorSize のチェック 110 95 def set_PPAllocatorSize( rhs ) 111 96 @PPAllocatorSize = rhs 112 97 end 113 98 114 #=== marshaler ã®ã»ã«ã¿ã¤ãåãè¨å®ãã99 #=== marshaler のセルタイプ名を設定する 115 100 def initialize_transparent_marshaler cell_name 116 101 @task_priority = 8 … … 134 119 135 120 f = CFile.open( @marshaler_celltype_file_name, "w" ) 136 # åãå 137 容ãäºåº¦æ¸ãå¯è½æ§ãã (AppFile ã¯ä¸å¯) 121 # 同じ内容を二度書く可能性あり (AppFile は不可) 138 122 139 123 # modified by ishikawa … … 163 147 end 164 148 165 #=== åãå£é¢æ°ã®æ¬ä½ã³ã¼ããçæï¼é é¨ã¨æ«å°¾ã¯å¥éåºåï¼166 #ct_name:: Symbol (through ãã©ã°ã¤ã³ã§çæããã) ã»ã«ã¿ã¤ãå ï¼Symbol ã¨ãã¦éããã¦ããï¼ãããï¼149 #=== 受け口関数の本体コードを生成(頭部と末尾は別途出力) 150 #ct_name:: Symbol (through プラグインで生成された) セルタイプ名 .Symbol として送られてくる(らしい) 167 151 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 ) 168 152 169 # unmarshaler ã¯ã©ã¹ã?153 # unmarshaler クラスか? 170 154 if ct_name == @unmarshaler_celltype_name.to_sym then 171 155 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 ) … … 175 159 end 176 160 177 #=== marshal ã³ã¼ãã®çæ161 #=== marshal コードの生成 178 162 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 ) 179 163 … … 181 165 b_ret_er = false 182 166 183 # é¢æ°ã®æ»ãå¤ã®å 184 ã®åãå¾ã(typedef ããã¦ããå ´å) 167 # 関数の戻り値の元の型を得る(typedef されている場合) 185 168 type = func_type.get_type.get_original_type 186 169 187 # æ»ãå¤è¨æ¶ç¨ã®å¤æ°ãåºåï¼void åã®é¢æ°ã§ã¯åºåããªãï¼170 # 戻り値記憶用の変数を出力(void 型の関数では出力しない) 188 171 if ! type.kind_of?( VoidType ) then 189 172 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 … … 200 183 file.print( " FLGPTN flgptn;\n" ) 201 184 202 # å¼ã³å 203 ã® signature ãåãåºã 185 # 呼び先の signature を取り出す 204 186 signature = @signature 205 187 206 # é¢æ° ID ï¼æ´æ°å¤ï¼188 # 関数 ID (整数値) 207 189 func_id = signature.get_id_from_func_name( func_name ) 208 190 file.print( " int16_t func_id_ = #{func_id}; /* id of #{func_name}: #{func_id} */\n" ) … … 210 192 file.print( " uint8_t msg[256];\n" ) 211 193 212 # ã·ã³ã°ã«ãã³ã§ãªããï¼194 # シングルトンでないか? 213 195 if ! b_singleton then 214 196 215 # singleton ã§ãªããã° p_cellcb åå¾ã³ã¼ããåºå197 # singleton でなければ p_cellcb 取得コードを出力 216 198 file.print <<EOT 217 199 #{ct_name}_CB *p_cellcb; … … 221 203 EOT 222 204 223 # ã¨ã©ã¼ãè¿ããï¼205 # エラーを返すか? 224 206 if b_ret_er then 225 207 file.print <<EOT … … 231 213 file.print <<EOT 232 214 }else{ 233 /* ã¨ã©ã¼å¦çã³ã¼ããããã«è¨è¿°*/234 } 235 EOT 236 end 237 end 238 239 # channel lock ã³ã¼ã215 /* エラー処理コードをここに記述 */ 216 } 217 EOT 218 end 219 end 220 221 # channel lock コード 240 222 file.print <<EOT 241 223 ///* Channel Lock */ … … 246 228 247 229 =begin 248 # SOP ãéä¿¡249 file.print " /* SOP ã®éåº*/\n"230 # SOP を送信 231 file.print " /* SOPの送出 */\n" 250 232 file.print " if( ( ercd_ = cTDR_sendSOP( true ) ) != E_OK )\n" 251 233 file.print " goto error_reset;\n" 252 234 =end 253 235 254 # func_id ãéä¿¡255 file.print " /* é¢æ° id ã®éåº*/\n"236 # func_id を送信 237 file.print " /* 関数 id の送出 */\n" 256 238 =begin 257 239 file.print " if( ( ercd_ = cTDR_putInt16( func_id_ ) ) != E_OK )\n" … … 263 245 # p "#{ct_name}, #{sig_name}, #{func_name}, #{func_global_name}" 264 246 265 b_get = false # marshal ãªãput247 b_get = false # marshal なら put 266 248 b_marshal = true # marshal 267 249 268 # in æ¹åã®å 269 ¥åºåãåºå 250 # in 方向の入出力を出力 270 251 @index = 2 271 file.print " /* å 272 ¥åå¼æ°éåº */\n" 252 file.print " /* 入力引数送出 */\n" 273 253 print_params( params, file, 1, b_marshal, b_get, true, func_type.is_oneway? ) 274 254 print_params( params, file, 1, b_marshal, b_get, false, func_type.is_oneway? ) … … 280 260 =end 281 261 282 file.print " /* EOP ã®éåºï¼ãã±ããã®æãã ãï¼*/\n"262 file.print " /* EOPの送出(パケットの掃きだし) */\n" 283 263 if ! func_type.is_oneway? then 284 264 b_continue = "true" … … 315 295 316 296 if( b_void == false )then 317 # å¼ã³å 318 ã«æ»ãå¤ããªã¿ã¼ã³ 297 # 呼び元に戻り値をリターン 319 298 file.print( " cMessageBuffer_receive(&retval_);\n" ) 320 299 file.print( " return retval_;\n" ) … … 332 311 EOT 333 312 334 # channel lock ã³ã¼ã313 # channel lock コード 335 314 file.print <<EOT 336 315 ///* Channel Lock */ … … 341 320 342 321 if( b_ret_er != false )then 343 # å¼ã³å 344 ã«æ»ãå¤ããªã¿ã¼ã³ 322 # 呼び元に戻り値をリターン 345 323 file.print( " return ercd_;\n" ) 346 324 else … … 350 328 end 351 329 352 #=== unmarshal ã³ã¼ãã®çæ330 #=== unmarshal コードの生成 353 331 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 ) 354 332 … … 356 334 b_ret_er = false 357 335 358 # func_id ãå¾ãã³ã¼ããçæ336 # func_id を得るコードを生成 359 337 file.print <<EOT 360 338 … … 377 355 file.print <<EOT 378 356 }else{ 379 /* ã¨ã©ã¼å¦çã³ã¼ããããã«è¨è¿°*/357 /* エラー処理コードをここに記述 */ 380 358 } 381 359 EOT … … 387 365 388 366 #if 0 389 /* SOP ã®ãã§ãã¯*/367 /* SOPのチェック */ 390 368 if( (ercd_=cTDR_receiveSOP( false )) != E_OK ) 391 369 goto error_reset; 392 /* func_id ã®åå¾*/370 /* func_id の取得 */ 393 371 if( (ercd_=cTDR_getInt16( &func_id_ )) != E_OK ) 394 372 goto error_reset; … … 405 383 EOT 406 384 407 # å¼ã³å 408 ã® signature ãåãåºã 385 # 呼び先の signature を取り出す 409 386 # port = @celltype.find( @next_cell_port_name ) 410 387 # signature = port.get_signature 411 388 signature = @signature 412 389 413 # through ã® signature ã«å«ã¾ãã ãã¹ã¦ã®é¢æ°ã«ã¤ãã¦390 # through の signature に含まれる すべての関数について 414 391 signature.get_function_head_array.each { |f| 415 392 f_name = f.get_name … … 417 394 id = signature.get_id_from_func_name( f_name ) 418 395 419 # é¢æ°ã¯è¿ãå¤ãæã¤ã?396 # 関数は返り値を持つか? 420 397 if f_type.get_type.kind_of?( VoidType ) then 421 398 b_void = true … … 424 401 end 425 402 426 # ãã±ããã®çµããããã§ãã¯ï¼æªåãåãã®ãã¼ã¿ãæ®ã£ã¦ããªãããã§ãã¯ï¼403 # パケットの終わりをチェック(未受け取りのデータが残っていないかチェック) 427 404 file.print " case #{id}: /*** #{f_name} ***/ \n" 428 405 file.print " if( tTransparentUnmarshaler_#{@signature.get_name}_#{f_name}() != E_OK )\n" … … 433 410 434 411 if @PPAllocatorSize then 435 ppallocator_dealloc_str = " /* PPAllocator ã®ãã¹ã¦ã解æ¾*/\n cPPAllocator_dealloc_all();"412 ppallocator_dealloc_str = " /* PPAllocator のすべてを解放 */\n cPPAllocator_dealloc_all();" 436 413 else 437 414 ppallocator_dealloc_str = "" … … 441 418 file.print <<EOT 442 419 default: 443 #if 0 // deleted by ishikawa: tSysLogãæªå®è£ 444 420 #if 0 // deleted by ishikawa: tSysLogが未実装 445 421 syslog(LOG_INFO, "unmarshaler task: ERROR: unknown func_id: %d", func_id_ ); 446 422 #endif /* 0 */ … … 463 439 464 440 # IN b_marshal, b_get 465 # b_marshal = true && b_get == false : ãã¼ã·ã£ã©ã§å 466 ¥åå¼æ°éåº 467 # b_marshal = true && b_get == true : ãã¼ã·ã£ã©ã§åºåå¼æ°åå 468 # b_marshal = false && b_get == true : ã¢ã³ãã¼ã·ã£ã©ã§å 469 ¥åå¼æ°åå 470 # b_marshal = false && b_get == get : ã¢ã³ãã¼ã·ã£ã©ã§åºåå¼æ°éåº 441 # b_marshal = true && b_get == false : マーシャラで入力引数送出 442 # b_marshal = true && b_get == true : マーシャラで出力引数受取 443 # b_marshal = false && b_get == true : アンマーシャラで入力引数受取 444 # b_marshal = false && b_get == get : アンマーシャラで出力引数送出 471 445 def print_params( params, file, nest, b_marshal, b_get, b_referenced, b_oneway = false ) 472 446 params.each{ |param| … … 479 453 type = param.get_type 480 454 if b_oneway && dir == :IN && type.get_original_type.kind_of?( PtrType ) || type.get_original_type.kind_of?( ArrayType ) then 481 # oneway, in, PtrType ã®å ´åã³ãã¼455 # oneway, in, PtrType の場合コピー 482 456 alloc_cp = "cPPAllocator_alloc" 483 457 alloc_cp_extra = nil … … 501 475 end 502 476 503 #=== ã³ãã¼ããªãå¼æ°æ¸¡ãã³ã¼ãã®åºå477 #=== コピーしない引数渡しコードの出力 504 478 def print_param_nc( name, type, file, nest, b_marshal, outer, outer2, b_get ) 505 479 indent = " " * ( nest + 1 ) … … 521 495 when :SIGNED 522 496 if bit_size == -1 || bit_size == -11 then 523 # signed char ã®å ´åãsigned ãæå®ãã497 # signed char の場合、signed を指定する 524 498 signC = "S" 525 499 sign = "s" … … 640 614 641 615 642 #=== PREAMBLE é¨ã®ã³ã¼ãçæ643 # ã¢ã³ãã¼ã·ã£ã©ã»ã«ã¿ã¤ãã®å ´åãã¢ã³ãã¼ã·ã£ã©é¢æ°ã®ãããã¿ã¤ã宣è¨ãçæ616 #=== PREAMBLE 部のコード生成 617 # アンマーシャラセルタイプの場合、アンマーシャラ関数のプロトタイプ宣言を生成 644 618 def gen_preamble file, b_singleton, ct_name, global_name 645 619 if ct_name != @unmarshaler_celltype_name.to_sym then … … 647 621 end 648 622 649 file.print "/* ã¢ã³ãã¼ã·ã£ã©é¢æ°ã®ãããã¿ã¤ã宣è¨*/\n"650 # signature ã«å«ã¾ãã ãã¹ã¦ã®é¢æ°ã«ã¤ãã¦623 file.print "/* アンマーシャラ関数のプロトタイプ宣言 */\n" 624 # signature に含まれる すべての関数について 651 625 @signature.get_function_head_array.each { |f| 652 626 f_name = f.get_name … … 660 634 end 661 635 662 #=== POSTAMBLE é¨ã®ã³ã¼ãçæ663 # ã¢ã³ãã¼ã·ã£ã©ã»ã«ã¿ã¤ãã®å ´åãã¢ã³ãã¼ã·ã£ã©é¢æ°ã®çæ636 #=== POSTAMBLE 部のコード生成 637 # アンマーシャラセルタイプの場合、アンマーシャラ関数の生成 664 638 def gen_postamble file, b_singleton, ct_name, global_name 665 639 if ct_name != @unmarshaler_celltype_name.to_sym then … … 667 641 end 668 642 669 file.print "\n/*** ã¢ã³ãã¼ã·ã£ã©é¢æ°***/\n\n"643 file.print "\n/*** アンマーシャラ関数 ***/\n\n" 670 644 @signature.get_function_head_array.each { |f| 671 645 f_name = f.get_name … … 673 647 id = @signature.get_id_from_func_name( f_name ) 674 648 675 # é¢æ°ã¯è¿ãå¤ãæã¤ã?649 # 関数は返り値を持つか? 676 650 if f_type.get_type.kind_of?( VoidType ) then 677 651 b_void = true … … 691 665 file.print " ER ercd_;\n" 692 666 693 # å¼æ°ãååãå¤æ°ã®å®ç¾©667 # 引数を受取る変数の定義 694 668 param_list = f.get_declarator.get_type.get_paramlist.get_items 695 669 # FuncHead-> Decl-> FuncType->ParamList … … 706 680 end 707 681 708 type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" ãå¤ã682 type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" を外す 709 683 710 684 file.printf( " %-12s %s%s%s%s;\n", type_str, aster, name, aster2, type.get_type_str_post ) 711 685 } 712 686 713 # æ»ãå¤ãåãåãå¤æ°ã®å®ç¾©687 # 戻り値を受け取る変数の定義 714 688 if ! b_void then 715 689 if f.is_oneway? then 716 retval_ptr = "" # oneway ã®å ´åãåãåããæ¨ã¦ããã690 retval_ptr = "" # oneway の場合、受け取るが捨てられる 717 691 else 718 692 # =begin ishikawa modified … … 724 698 end 725 699 726 # in æ¹åã®å 727 ¥åºåãå 728 ¥å 729 file.print "\n /* å 730 ¥åå¼æ°åå */\n" 731 b_get = true # unmarshal ã§ã¯ get 700 # in 方向の入出力を入力 701 file.print "\n /* 入力引数受取 */\n" 702 b_get = true # unmarshal では get 732 703 b_marshal = false 733 704 @index = 2 … … 740 711 end 741 712 =end 742 # ãã±ããã®åä¿¡å®äº743 # mikan æ¬å½ã¯ã対象é¢æ°ãå¼åºãå¾ã«å®æ½ãããï¼å¼åºããã±ããã®ä½¿ç¨çµããã宣è¨ããç®çã¨ãã¦744 file.print " /* ãã±ããçµããããã§ãã¯*/\n"713 # パケットの受信完了 714 # mikan 本当は、対象関数を呼出す後に実施したい.呼出しパケットの使用終わりを宣言する目的として 715 file.print " /* パケット終わりをチェック */\n" 745 716 if ! f.is_oneway? then 746 717 b_continue = "true" … … 752 723 file.print " goto error_reset;\n\n" 753 724 =end 754 # 対象é¢æ°ãå¼åºã755 file.print " /* 対象é¢æ°ã®å¼åºã*/\n"725 # 対象関数を呼出す 726 file.print " /* 対象関数の呼出し */\n" 756 727 if b_void then 757 728 file.print( " cServerCall_#{f_name}(" ) … … 768 739 file.print( " );\n" ) 769 740 770 # æ»ãå¤ãåºåå¼æ°ã®ååã³ã¼ãã®çæ741 # 戻り値、出力引数の受取コードの生成 771 742 772 743 if ! b_void && ! f.is_oneway? then … … 775 746 776 747 end 777 # oneway ã®å ´ååºåãæ»ãå¤ãç¡ããååãå¾ 778 ããªãï¼éåæãªå¼åºãï¼ 748 # oneway の場合出力、戻り値が無く、受取を待たない(非同期な呼出し) 779 749 if ! f.is_oneway? then 780 750 file.print <<EOT 781 /* é¢æ°å¦çã®çµäºãéç¥*/751 /* 関数処理の終了を通知 */ 782 752 if( ( ercd_ = cEventflag_set( 0x01 ) ) != E_OK ){ 783 753 goto error_reset; -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/lib/GenOpaqueMarshaler.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 # $Id : GenOpaqueMarshaler.rb 2061 2014-05-31 22:15:33Z okuma-top$37 # $Id$ 53 38 #++ 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 … … 490 468 EOT 491 469 492 # SOP ãéä¿¡493 file.print " /* SOP ã®éåº*/\n"470 # SOP を送信 471 file.print " /* SOPの送出 */\n" 494 472 file.print " SET_RPC_STATE( state_, RPCSTATE_CLIENT_SEND_SOP );\n" 495 473 file.print " if( ( ercd_ = cTDR_sendSOP( true ) ) != E_OK )\n" 496 474 file.print " goto error_reset;\n" 497 475 498 # func_id ãéä¿¡499 file.print " /* é¢æ° id ã®éåº*/\n"476 # func_id を送信 477 file.print " /* 関数 id の送出 */\n" 500 478 file.print " if( ( ercd_ = cTDR_putInt16( func_id_ ) ) != E_OK )\n" 501 479 file.print " goto error_reset;\n" … … 504 482 # p "#{ct_name}, #{sig_name}, #{func_name}, #{func_global_name}" 505 483 506 b_get = false # marshal ãªãput484 b_get = false # marshal なら put 507 485 b_marshal = true # marshal 508 486 509 # in æ¹åã®å 510 ¥åºåãåºå 487 # in 方向の入出力を出力 511 488 if func_type.has_inward? then 512 file.print " /* å 513 ¥åå¼æ°éåº */\n" 489 file.print " /* 入力引数送出 */\n" 514 490 file.print " SET_RPC_STATE( state_, RPCSTATE_CLIENT_SEND_BODY );\n" 515 491 print_params( params, file, 1, b_marshal, b_get, true, "eClientEntry", func_name ) … … 523 499 b_continue = "false" 524 500 end 525 file.print " /* EOP ã®éåºï¼ãã±ããã®æãã ãï¼*/\n"501 file.print " /* EOPの送出(パケットの掃きだし) */\n" 526 502 file.print " SET_RPC_STATE( state_, RPCSTATE_CLIENT_SEND_EOP );\n" 527 503 file.print " if( (ercd_=cTDR_sendEOP(#{b_continue})) != E_OK )\n" 528 504 file.print " goto error_reset;\n\n" 529 505 530 # send ã®ã¡ã¢ãªããã¢ãã±ã¼ã506 # send のメモリをデアロケート 531 507 if func_type.has_send? then 532 508 file.print " /* dealloc send parameter while executing */\n" … … 539 515 if ! func_type.is_oneway? then 540 516 541 file.print " /* ãã±ããã®å§ã¾ãããã§ãã¯*/\n"517 file.print " /* パケットの始まりをチェック */\n" 542 518 file.print " SET_RPC_STATE( state_, RPCSTATE_CLIENT_RECV_SOP );\n" 543 519 file.print " if( (ercd_=cTDR_receiveSOP( true )) != E_OK )\n" 544 520 file.print " goto error_reset;\n" 545 521 546 b_get = true # marshaler ã¯get547 file.print " /* æ»ãå¤ã®åãåã*/\n"522 b_get = true # marshaler は get 523 file.print " /* 戻り値の受け取り */\n" 548 524 print_param( "retval_", func_type.get_type, file, 1, :RETURN, nil, nil, b_marshal, b_get ) 549 525 … … 557 533 indent = " " * indent_level 558 534 559 file.print "#{indent}/* åºåå¤ã®åãåã*/\n"535 file.print "#{indent}/* 出力値の受け取り */\n" 560 536 file.print "#{indent}SET_RPC_STATE( state_, RPCSTATE_CLIENT_RECV_BODY );\n" 561 537 print_params( params, file, indent_level, b_marshal, b_get, true, "eClientEntry", func_name ) … … 567 543 end 568 544 569 file.print "\n /* ãã±ããã®çµããããã§ãã¯*/\n"545 file.print "\n /* パケットの終わりをチェック */\n" 570 546 file.print " SET_RPC_STATE( state_, RPCSTATE_CLIENT_RECV_EOP );\n" 571 547 file.print " if( (ercd_=cTDR_receiveEOP(false)) != E_OK )\n" # b_continue = false … … 574 550 end # ! func_type.is_oneway? 575 551 576 # channel lock ã³ã¼ã552 # channel lock コード 577 553 file.print <<EOT 578 554 /* Channel Unlock */ … … 583 559 584 560 if( b_void == false )then 585 # å¼ã³å 586 ã«æ»ãå¤ããªã¿ã¼ã³ 561 # 呼び元に戻り値をリターン 587 562 file.print( " return retval_;\n" ) 588 563 else … … 594 569 error_reset: 595 570 EOT 596 # send ã®ã¡ã¢ãªããã¢ãã±ã¼ã571 # send のメモリをデアロケート 597 572 if func_type.has_send? then 598 573 file.print " /* dealloc send parameter */\n" … … 603 578 end 604 579 605 # receive ã®ã¡ã¢ãªããã¢ãã±ã¼ã580 # receive のメモリをデアロケート 606 581 if func_type.has_receive? then 607 582 file.print( " /* receive parameter */\n" ) … … 615 590 EOT 616 591 617 # channel lock ã³ã¼ã592 # channel lock コード 618 593 file.print <<EOT 619 594 /* Channel Unlock */ … … 626 601 627 602 if( b_ret_er != false )then 628 # å¼ã³å 629 ã«æ»ãå¤ããªã¿ã¼ã³ 603 # 呼び元に戻り値をリターン 630 604 file.print( " return ERCD( E_RPC, MERCD( ercd_ ) );\n" ) 631 605 else … … 635 609 end 636 610 637 #=== unmarshal ã³ã¼ãã®çæ611 #=== unmarshal コードの生成 638 612 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 ) 639 613 640 614 b_ret_er = true 641 615 642 # func_id ãå¾ãã³ã¼ããçæ616 # func_id を得るコードを生成 643 617 file.print <<EOT 644 618 … … 662 636 file.print <<EOT 663 637 }else{ 664 /* ã¨ã©ã¼å¦çã³ã¼ããããã«è¨è¿°*/638 /* エラー処理コードをここに記述 */ 665 639 } 666 640 EOT … … 673 647 #endif 674 648 675 /* SOP ã®ãã§ãã¯*/649 /* SOPのチェック */ 676 650 SET_RPC_STATE( state_, RPCSTATE_SERVER_RECV_SOP ); 677 651 if( (ercd_=cTDR_receiveSOP( false )) != E_OK ) 678 652 goto error_reset; 679 /* func_id ã®åå¾*/653 /* func_id の取得 */ 680 654 if( (ercd_=cTDR_getInt16( &func_id_ )) != E_OK ) 681 655 goto error_reset; … … 687 661 EOT 688 662 689 # signature ã«å«ã¾ãã ãã¹ã¦ã®é¢æ°ã«ã¤ãã¦663 # signature に含まれる すべての関数について 690 664 @signature.get_function_head_array.each { |f| 691 665 f_name = f.get_name … … 701 675 702 676 if @PPAllocatorSize then 703 ppallocator_dealloc_str = " /* PPAllocator ã®ãã¹ã¦ã解æ¾*/\n cPPAllocator_dealloc_all();"677 ppallocator_dealloc_str = " /* PPAllocator のすべてを解放 */\n cPPAllocator_dealloc_all();" 704 678 else 705 679 ppallocator_dealloc_str = "" … … 724 698 end 725 699 726 #=== PREAMBLE é¨ã®ã³ã¼ãçæ727 # ã¢ã³ãã¼ã·ã£ã©ã»ã«ã¿ã¤ãã®å ´åãã¢ã³ãã¼ã·ã£ã©é¢æ°ã®ãããã¿ã¤ã宣è¨ãçæ700 #=== PREAMBLE 部のコード生成 701 # アンマーシャラセルタイプの場合、アンマーシャラ関数のプロトタイプ宣言を生成 728 702 def gen_preamble file, b_singleton, ct_name, global_name 729 703 if ct_name != @unmarshaler_celltype_name.to_sym then … … 731 705 end 732 706 733 # string.h ã® include (memset, strlen ã®ãã)707 # string.h の include (memset, strlen のため) 734 708 file.print "/* header file (strlen, memset) */\n" 735 709 file.print "#include\t<string.h>\n\n" 736 710 737 file.print "/* ã¢ã³ãã¼ã·ã£ã©é¢æ°ã®ãããã¿ã¤ã宣è¨*/\n"738 # signature ã«å«ã¾ãã ãã¹ã¦ã®é¢æ°ã«ã¤ãã¦711 file.print "/* アンマーシャラ関数のプロトタイプ宣言 */\n" 712 # signature に含まれる すべての関数について 739 713 @signature.get_function_head_array.each { |f| 740 714 f_name = f.get_name … … 746 720 end 747 721 748 #=== POSTAMBLE é¨ã®ã³ã¼ãçæ 749 # ã¢ã³ãã¼ã·ã£ã©ã»ã«ã¿ã¤ãã®å ´åãåã 750 ã®ã¢ã³ãã¼ã·ã£ã©é¢æ°ã®çæ 722 #=== POSTAMBLE 部のコード生成 723 # アンマーシャラセルタイプの場合、個々のアンマーシャラ関数の生成 751 724 def gen_postamble file, b_singleton, ct_name, global_name 752 725 if ct_name != @unmarshaler_celltype_name.to_sym then … … 754 727 end 755 728 756 file.print "\n/*** ã¢ã³ãã¼ã·ã£ã©é¢æ°***/\n\n"729 file.print "\n/*** アンマーシャラ関数 ***/\n\n" 757 730 @signature.get_function_head_array.each { |f| 758 731 f_name = f.get_name … … 760 733 id = @signature.get_id_from_func_name( f_name ) 761 734 762 # é¢æ°ã¯è¿ãå¤ãæã¤ã?735 # 関数は返り値を持つか? 763 736 b_ret_er = false 764 737 init_retval = "" … … 784 757 file.print " ER ercd_;\n" 785 758 786 # å¼æ°ãååãå¤æ°ã®å®ç¾©759 # 引数を受取る変数の定義 787 760 params = f.get_declarator.get_type.get_paramlist.get_items 788 761 # FuncHead-> Decl-> FuncType->ParamList … … 793 766 dir = par.get_direction 794 767 if( dir == :RECEIVE )then 795 # type 㯠PtrType ã§ããããåãé¤ããå768 # type は PtrType で、それを取り除いた型 796 769 type = type.get_type 797 770 end … … 811 784 end 812 785 813 type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" ãå¤ã786 type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" を外す 814 787 file.printf( " %-12s %s%s%s%s%s;\n", type_str, aster, name, aster2, type.get_type_str_post, init ) 815 788 … … 823 796 end 824 797 825 # in æ¹åã®å 826 ¥åºåãå 827 ¥å 828 file.print "\n /* å 829 ¥åå¼æ°åå */\n" 798 # in 方向の入出力を入力 799 file.print "\n /* 入力引数受取 */\n" 830 800 file.print " SET_RPC_STATE( *state_, RPCSTATE_SERVER_RECV_BODY );\n" 831 b_get = true # unmarshal ã§ã¯get801 b_get = true # unmarshal では get 832 802 b_marshal = false 833 803 print_params( params, file, 1, b_marshal, b_get, true, "cServerCall", f_name ) … … 836 806 837 807 838 # ãã±ããã®åä¿¡å®äº839 file.print " /* ãã±ããçµããããã§ãã¯*/\n"808 # パケットの受信完了 809 file.print " /* パケット終わりをチェック */\n" 840 810 file.print " SET_RPC_STATE( *state_, RPCSTATE_SERVER_RECV_EOP );\n" 841 811 if ! f_type.is_oneway? then … … 847 817 file.print " goto error_reset;\n\n" 848 818 849 # out ã®ã¡ã¢ãªãã¢ãã±ã¼ã819 # out のメモリをアロケート 850 820 dir = :OUT; alloc_cp = "cPPAllocator_alloc"; alloc_cp_extra = nil; nest = 1 851 821 alloc_for_out_params( params, file, nest, dir, alloc_cp, alloc_cp_extra ) 852 822 853 # 対象é¢æ°ãå¼åºã854 file.print " /* 対象é¢æ°ã®å¼åºã*/\n"823 # 対象関数を呼出す 824 file.print " /* 対象関数の呼出し */\n" 855 825 file.print " SET_RPC_STATE( *state_, RPCSTATE_SERVER_EXEC );\n" 856 826 if b_void then … … 871 841 file.print( " );\n" ) 872 842 873 # æ»ãå¤ãåºåå¼æ°ã®ååã³ã¼ãã®çæ 874 875 # oneway ã®å ´ååºåãæ»ãå¤ãç¡ããååãå¾ 876 ããªãï¼éåæãªå¼åºãï¼ 843 # 戻り値、出力引数の受取コードの生成 844 845 # oneway の場合出力、戻り値が無く、受取を待たない(非同期な呼出し) 877 846 if ! f.is_oneway? then 878 847 879 file.print "\n /* SOP ã®éåº*/\n"848 file.print "\n /* SOPの送出 */\n" 880 849 file.print " SET_RPC_STATE( *state_, RPCSTATE_SERVER_SEND_SOP );\n" 881 850 … … 883 852 file.print " goto error_reset;\n" 884 853 885 b_get = false # unmarshaler ã¯put854 b_get = false # unmarshaler は put 886 855 if( ! b_void )then 887 file.print " /* æ»ãå¤ã®éåº*/\n"856 file.print " /* 戻り値の送出 */\n" 888 857 print_param( "retval_", f_type.get_type, file, 1, :RETURN, nil, nil, b_marshal, b_get ) 889 858 end … … 898 867 indent = " " * indent_level 899 868 900 file.print "#{indent}/* åºåå¤ã®éåº*/\n"869 file.print "#{indent}/* 出力値の送出 */\n" 901 870 file.print "#{indent}SET_RPC_STATE( *state_, RPCSTATE_SERVER_SEND_BODY );\n" 902 871 print_params( params, file, indent_level, b_marshal, b_get, true, "cServerCall", f_name ) 903 872 print_params( params, file, indent_level, b_marshal, b_get, false, "cServerCall", f_name ) 904 873 905 # receive ã®ã¡ã¢ãªããã¢ãã±ã¼ã874 # receive のメモリをデアロケート 906 875 if f_type.has_receive? then 907 876 file.print "#{indent}/* dealloc receive parameter */\n" … … 915 884 end 916 885 917 file.print " /* ãã±ããã®çµããï¼æãã ãï¼*/\n"886 file.print " /* パケットの終わり(掃きだし) */\n" 918 887 file.print " SET_RPC_STATE( *state_, RPCSTATE_SERVER_SEND_EOP );\n" 919 888 file.print " if( (ercd_=cTDR_sendEOP(false)) != E_OK )\n" # b_continue = false … … 926 895 error_reset: 927 896 EOT 928 # send ã®ãªã»ããç¨ãã¢ãã±ã¼ã897 # send のリセット用デアロケート 929 898 if f_type.has_send? then 930 899 file.print " /* dealloc send parameter */\n" … … 935 904 end 936 905 937 # receive ã®ã¡ã¢ãªããã¢ãã±ã¼ã906 # receive のメモリをデアロケート 938 907 if f_type.has_receive? && b_ret_er then 939 908 file.print " /* dealloc receive parameter */\n" … … 947 916 file.print "}\n\n" 948 917 949 # ããï¼åã 950 ã®é¢æ°ï¼ã§ã¯ã¨ã©ã¼ãã³ãã©ã¼ã¯å¼ã³åºããªããå¼ã³å 951 ï¼ãµã¼ãã¼ã®ã¡ã¤ã³é¢æ°ï¼ã§å¼ã³åºãã 918 # ここ(個々の関数)ではエラーハンドラーは呼び出さない。呼び元(サーバーのメイン関数)で呼び出す。 952 919 } 953 920 end … … 956 923 #b_marshal:: bool 957 924 #b_get:: bool 958 # b_marshal = true && b_get == false : ãã¼ã·ã£ã©ã§å 959 ¥åå¼æ°éåº 960 # b_marshal = true && b_get == true : ãã¼ã·ã£ã©ã§åºåå¼æ°åå 961 # b_marshal = false && b_get == false : ã¢ã³ãã¼ã·ã£ã©ã§å 962 ¥åå¼æ°åå 963 # b_marshal = false && b_get == true : ã¢ã³ãã¼ã·ã£ã©ã§åºåå¼æ°éåº 964 #b_referenced:: size_is, count_is, string ã§åç 965 §ããã¦ãããã®ãåºå 925 # b_marshal = true && b_get == false : マーシャラで入力引数送出 926 # b_marshal = true && b_get == true : マーシャラで出力引数受取 927 # b_marshal = false && b_get == false : アンマーシャラで入力引数受取 928 # b_marshal = false && b_get == true : アンマーシャラで出力引数送出 929 #b_referenced:: size_is, count_is, string で参照されているものを出力 966 930 def print_params( params, file, nest, b_marshal, b_get, b_referenced, port_name, func_name ) 967 931 params.each{ |param| … … 986 950 case dir 987 951 when :OUT, :INOUT 988 alloc_cp = nil # inout ã® b_get==true&&b_marsha==true ã®ã¨ãã¢ãã±ã¼ã¿ã³ã¼ãã¯ä¸ç¨952 alloc_cp = nil # inout の b_get==true&&b_marsha==true のときアロケータコードは不用 989 953 alloc_cp_extra = nil 990 954 print_param( param.get_name, param.get_type, file, nest, dir, nil, nil, b_marshal, b_get, alloc_cp, alloc_cp_extra ) … … 993 957 alloc_cp_extra = nil 994 958 if b_get then 995 outer = "(*" # ãã¼ã·ã£ã©å´ã§ã¯ããã¤ã³ã¿ã (send ã¨æ¯ã¹) ä¸ã¤å¤ã959 outer = "(*" # マーシャラ側では、ポインタが (send と比べ) 一つ多い 996 960 outer2 = ")" 997 961 else 998 outer = nil # ã¢ã³ãã¼ã·ã£ã©å´ã§ã¯ããã¤ã³ã¿ãä¸ã¤å¤ããã¦ãã962 outer = nil # アンマーシャラ側では、ポインタが一つ外されている 999 963 outer2 = nil 1000 964 end … … 1006 970 end 1007 971 1008 #=== ã¢ãã±ã¼ã¿ã³ã¼ããçæ (out ã®ã¢ã³ãã¼ã·ã£ã©ç¨)972 #=== アロケータコードを生成 (out のアンマーシャラ用) 1009 973 def alloc_for_out_params( params, file, nest, dir, alloc_cp, alloc_cp_extra ) 1010 974 params.each{ |param| … … 1016 980 end 1017 981 1018 #=== ã¢ãã±ã¼ã¿ã³ã¼ããçæ (out ã®ã¢ã³ãã¼ã·ã£ã©ç¨åå¥ãã©ã¡ã¼ã¿ã®çæ)982 #=== アロケータコードを生成 (out のアンマーシャラ用個別パラメータの生成) 1019 983 def alloc_for_out_param( name, type, file, nest, outer, outer2, alloc_cp, alloc_cp_extra ) 1020 984 org_type = type.get_original_type … … 1029 993 count = type.get_count; size = type.get_size; string = type.get_string 1030 994 if count || size || string then 1031 loop_counter_type = IntType.new(16) # mikan æ¹ã size_is, count_is ã®å¼æ°ã®åã¨ãã995 loop_counter_type = IntType.new(16) # mikan 方を size_is, count_is の引数の型とする 1032 996 if count then 1033 997 len = type.get_count.to_s … … 1042 1006 end 1043 1007 1044 # size_is ã« max æå®ãããå ´åãlength ã max ãè¶ 1045 ãã¦ããããã§ãã¯ããã³ã¼ããçæ 1008 # size_is に max 指定がある場合、length が max を超えているかチェックするコードを生成 1046 1009 if org_type.get_max != nil && string == nil then 1047 1010 file.print "#{indent}if( #{len} > #{type.get_max} ){\t/* GenOpaqueMarshaler max check 2 */\n" … … 1082 1045 end 1083 1046 1084 #=== å¼æ°ã®ä¸æ¬ãã¢ãã±ã¼ãã³ã¼ãã®çæ1085 # send ï¼ãã¼ã·ã£ã©ã®æå¾ãreceiveï¼ã¢ã³ãã¼ã·ã£ã©ã®æå¾ã§ä¸æ¬ãã¦å¼æ°ããã¢ãã±ã¼ããã1047 #=== 引数の一括デアロケートコードの生成 1048 # send:マーシャラの最後、receive:アンマーシャラの最後で一括して引数をデアロケートする 1086 1049 def dealloc_for_params( params, file, nest, dir, dealloc_cp, b_reset = false ) 1087 1050 if b_reset then … … 1097 1060 aster = "" 1098 1061 if dir == :RECEIVE then 1099 type = type.get_type.get_original_type # ãã¤ã³ã¿ãä¸ã¤å¤ã1062 type = type.get_type.get_original_type # ポインタを一つ外す 1100 1063 if b_reset then 1101 1064 aster = "*" … … 1118 1081 end 1119 1082 1120 #== out 㧠nullable ãªå¼æ°ã®æ 1121 å ±ã渡ã 1122 # out nullable ã®å ´åãin, send, receive ã®ããã«ãå¤ã渡ãç´åã§ã¯ãªããå¼åºãæã«æ¸¡ã 1083 #== out で nullable な引数の情報を渡す 1084 # out nullable の場合、in, send, receive のように、値を渡す直前ではなく、呼出し時に渡す 1123 1085 def print_out_nullable( params, file, nest, b_marshal ); 1124 1086 indent = "\t" * nest … … 1130 1092 file.print "#{indent}\tgoto error_reset;\n" 1131 1093 else 1132 # å¼ã³å 1133 㯠alloc_for_out_param 㧠nullable ã®å¯¾å¿ãã 1094 # 呼び先は alloc_for_out_param で nullable の対応する 1134 1095 file.print "#{indent}if( (ercd_=cTDR_getInt8( &b_#{param.get_name}_null_)) != E_OK )\n" 1135 1096 file.print "#{indent}\tgoto error_reset;\n" -
Property svn:mime-type
changed from
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/lib/GenParamCopy.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 # $Id : GenParamCopy.rb 2061 2014-05-31 22:15:33Z okuma-top$37 # $Id$ 53 38 #++ 54 39 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
-
asp3_gr_sakura/trunk/tecsgen/tecslib/plugin/lib/GenTransparentMarshaler.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r317 r318 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 # $Id : GenTransparentMarshaler.rb 2418 2016-01-04 12:17:36Z okuma-top$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 = "" … … 422 399 423 400 # IN b_marshal, b_get 424 # b_marshal = true && b_get == false : ãã¼ã·ã£ã©ã§å 425 ¥åå¼æ°éåº 426 # b_marshal = true && b_get == true : ãã¼ã·ã£ã©ã§åºåå¼æ°åå 427 # b_marshal = false && b_get == true : ã¢ã³ãã¼ã·ã£ã©ã§å 428 ¥åå¼æ°åå 429 # b_marshal = false && b_get == get : ã¢ã³ãã¼ã·ã£ã©ã§åºåå¼æ°éåº 401 # b_marshal = true && b_get == false : マーシャラで入力引数送出 402 # b_marshal = true && b_get == true : マーシャラで出力引数受取 403 # b_marshal = false && b_get == true : アンマーシャラで入力引数受取 404 # b_marshal = false && b_get == get : アンマーシャラで出力引数送出 430 405 def print_params( params, file, nest, b_marshal, b_get, b_referenced, b_oneway = false ) 431 406 params.each{ |param| … … 438 413 type = param.get_type 439 414 if b_oneway && dir == :IN && type.get_original_type.kind_of?( PtrType ) || type.get_original_type.kind_of?( ArrayType ) then 440 # oneway, in, PtrType ã®å ´åã³ãã¼415 # oneway, in, PtrType の場合コピー 441 416 alloc_cp = "cPPAllocator_alloc" 442 417 alloc_cp_extra = nil … … 460 435 end 461 436 462 #=== ã³ãã¼ããªãå¼æ°æ¸¡ãã³ã¼ãã®åºå437 #=== コピーしない引数渡しコードの出力 463 438 def print_param_nc( name, type, file, nest, b_marshal, outer, outer2, b_get ) 464 439 indent = " " * ( nest + 1 ) … … 480 455 when :SIGNED 481 456 if bit_size == -1 || bit_size == -11 then 482 # signed char ã®å ´åãsigned ãæå®ãã457 # signed char の場合、signed を指定する 483 458 signC = "S" 484 459 sign = "s" … … 573 548 574 549 575 #=== PREAMBLE é¨ã®ã³ã¼ãçæ576 # ã¢ã³ãã¼ã·ã£ã©ã»ã«ã¿ã¤ãã®å ´åãã¢ã³ãã¼ã·ã£ã©é¢æ°ã®ãããã¿ã¤ã宣è¨ãçæ550 #=== PREAMBLE 部のコード生成 551 # アンマーシャラセルタイプの場合、アンマーシャラ関数のプロトタイプ宣言を生成 577 552 def gen_preamble file, b_singleton, ct_name, global_name 578 553 if ct_name != @unmarshaler_celltype_name.to_sym then … … 580 555 end 581 556 582 file.print "/* ã¢ã³ãã¼ã·ã£ã©é¢æ°ã®ãããã¿ã¤ã宣è¨*/\n"583 # signature ã«å«ã¾ãã ãã¹ã¦ã®é¢æ°ã«ã¤ãã¦557 file.print "/* アンマーシャラ関数のプロトタイプ宣言 */\n" 558 # signature に含まれる すべての関数について 584 559 @signature.get_function_head_array.each { |f| 585 560 f_name = f.get_name … … 591 566 end 592 567 593 #=== POSTAMBLE é¨ã®ã³ã¼ãçæ594 # ã¢ã³ãã¼ã·ã£ã©ã»ã«ã¿ã¤ãã®å ´åãã¢ã³ãã¼ã·ã£ã©é¢æ°ã®çæ568 #=== POSTAMBLE 部のコード生成 569 # アンマーシャラセルタイプの場合、アンマーシャラ関数の生成 595 570 def gen_postamble file, b_singleton, ct_name, global_name 596 571 if ct_name != @unmarshaler_celltype_name.to_sym then … … 598 573 end 599 574 600 file.print "\n/*** ã¢ã³ãã¼ã·ã£ã©é¢æ°***/\n\n"575 file.print "\n/*** アンマーシャラ関数 ***/\n\n" 601 576 @signature.get_function_head_array.each { |f| 602 577 f_name = f.get_name … … 604 579 id = @signature.get_id_from_func_name( f_name ) 605 580 606 # é¢æ°ã¯è¿ãå¤ãæã¤ã?581 # 関数は返り値を持つか? 607 582 if f_type.get_type.is_void? then 608 583 b_void = true … … 623 598 file.print " CELLCB *p_cellcb;\n" 624 599 625 # å¼æ°ãååãå¤æ°ã®å®ç¾©600 # 引数を受取る変数の定義 626 601 param_list = f.get_declarator.get_type.get_paramlist.get_items 627 602 # FuncHead-> Decl-> FuncType->ParamList … … 638 613 end 639 614 640 type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" ãå¤ã615 type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" を外す 641 616 642 617 file.printf( " %-12s %s%s%s%s;\n", type_str, aster, name, aster2, type.get_type_str_post ) 643 618 } 644 619 645 # æ»ãå¤ãåãåãå¤æ°ã®å®ç¾©620 # 戻り値を受け取る変数の定義 646 621 if ! b_void then 647 622 if f.is_oneway? then 648 retval_ptr = "" # oneway ã®å ´åãåãåããæ¨ã¦ããã623 retval_ptr = "" # oneway の場合、受け取るが捨てられる 649 624 else 650 625 retval_ptr = "*" … … 653 628 end 654 629 655 # in æ¹åã®å 656 ¥åºåãå 657 ¥å 658 file.print "\n /* å 659 ¥åå¼æ°åå */\n" 660 b_get = true # unmarshal ã§ã¯ get 630 # in 方向の入出力を入力 631 file.print "\n /* 入力引数受取 */\n" 632 b_get = true # unmarshal では get 661 633 b_marshal = false 662 634 print_params( param_list, file, 1, b_marshal, b_get, true, f.is_oneway? ) … … 667 639 end 668 640 669 # ãã±ããã®åä¿¡å®äº670 # mikan æ¬å½ã¯ã対象é¢æ°ãå¼åºãå¾ã«å®æ½ãããï¼å¼åºããã±ããã®ä½¿ç¨çµããã宣è¨ããç®çã¨ãã¦671 file.print " /* ãã±ããçµããããã§ãã¯*/\n"641 # パケットの受信完了 642 # mikan 本当は、対象関数を呼出す後に実施したい.呼出しパケットの使用終わりを宣言する目的として 643 file.print " /* パケット終わりをチェック */\n" 672 644 if ! f.is_oneway? then 673 645 b_continue = "true" … … 678 650 file.print " goto error_reset;\n\n" 679 651 680 # 対象é¢æ°ãå¼åºã681 file.print " /* 対象é¢æ°ã®å¼åºã*/\n"652 # 対象関数を呼出す 653 file.print " /* 対象関数の呼出し */\n" 682 654 if b_void then 683 655 file.print( " cServerCall_#{f_name}(" ) … … 694 666 file.print( " );\n" ) 695 667 696 # æ»ãå¤ãåºåå¼æ°ã®ååã³ã¼ãã®çæ 697 698 # oneway ã®å ´ååºåãæ»ãå¤ãç¡ããååãå¾ 699 ããªãï¼éåæãªå¼åºãï¼ 668 # 戻り値、出力引数の受取コードの生成 669 670 # oneway の場合出力、戻り値が無く、受取を待たない(非同期な呼出し) 700 671 if ! f.is_oneway? then 701 672 file.print <<EOT 702 /* é¢æ°å¦çã®çµäºãéç¥*/673 /* 関数処理の終了を通知 */ 703 674 if( ( ercd_ = cEventflag_set( 0x01 ) ) != E_OK ){ 704 675 goto error_reset; -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.