tecscde 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.rubocop.yml +125 -0
  4. data/.rubocop_todo.yml +188 -0
  5. data/CHANGELOG.md +3 -0
  6. data/Gemfile +6 -0
  7. data/LICENSE +46 -0
  8. data/LICENSE.ja +32 -0
  9. data/README.ja.md +200 -0
  10. data/README.md +35 -0
  11. data/Rakefile +27 -0
  12. data/bin/tecscde +64 -0
  13. data/glade/tecscde-cell-property.glade +205 -0
  14. data/glade/tecscde-celltype-property.glade +172 -0
  15. data/glade/tecscde-celltype.glade +414 -0
  16. data/glade/tecscde-export.glade +161 -0
  17. data/glade/test-cell-plugin.rb +51 -0
  18. data/glade/test-cell-property.rb +35 -0
  19. data/glade/test-export.rb +35 -0
  20. data/glade/test-palette.rb +26 -0
  21. data/lib/tcflow.rb +148 -0
  22. data/lib/tecscde.rb +65 -0
  23. data/lib/tecscde/NewCell.png +0 -0
  24. data/lib/tecscde/SelectArrow.png +0 -0
  25. data/lib/tecscde/attr_tree_view.rb +253 -0
  26. data/lib/tecscde/cell_plugin_dialog.glade +294 -0
  27. data/lib/tecscde/cell_plugin_dialog.rb +89 -0
  28. data/lib/tecscde/celltype_tree_view.rb +105 -0
  29. data/lib/tecscde/change_set_control.rb +35 -0
  30. data/lib/tecscde/change_set_control/change_set.rb +32 -0
  31. data/lib/tecscde/change_set_control/change_set_manager.rb +62 -0
  32. data/lib/tecscde/command.rb +35 -0
  33. data/lib/tecscde/control.rb +491 -0
  34. data/lib/tecscde/highlighted_objects.rb +180 -0
  35. data/lib/tecscde/logger.rb +74 -0
  36. data/lib/tecscde/main_view_and_model.rb +80 -0
  37. data/lib/tecscde/palette.glade +553 -0
  38. data/lib/tecscde/palette.rb +174 -0
  39. data/lib/tecscde/preferences.glade +117 -0
  40. data/lib/tecscde/preferences.rb +44 -0
  41. data/lib/tecscde/tecs_model.rb +1137 -0
  42. data/lib/tecscde/tecs_model/hbar.rb +68 -0
  43. data/lib/tecscde/tecs_model/tm_c_port.rb +122 -0
  44. data/lib/tecscde/tecs_model/tm_c_port_array.rb +98 -0
  45. data/lib/tecscde/tecs_model/tm_cell.rb +496 -0
  46. data/lib/tecscde/tecs_model/tm_e_port.rb +126 -0
  47. data/lib/tecscde/tecs_model/tm_e_port_array.rb +78 -0
  48. data/lib/tecscde/tecs_model/tm_join.rb +293 -0
  49. data/lib/tecscde/tecs_model/tm_join_bar.rb +146 -0
  50. data/lib/tecscde/tecs_model/tm_port.rb +238 -0
  51. data/lib/tecscde/tecs_model/tm_port_array.rb +246 -0
  52. data/lib/tecscde/tecs_model/tm_region.rb +107 -0
  53. data/lib/tecscde/tecs_model/tm_uneditable.rb +68 -0
  54. data/lib/tecscde/tecs_model/vbar.rb +68 -0
  55. data/lib/tecscde/templates/_cell_info.cde.erb +15 -0
  56. data/lib/tecscde/templates/_join_info.cde.erb +28 -0
  57. data/lib/tecscde/templates/main.cde.erb +49 -0
  58. data/lib/tecscde/tm_object.rb +91 -0
  59. data/lib/tecscde/version.rb +4 -0
  60. data/lib/tecscde/view.rb +58 -0
  61. data/lib/tecscde/view/cairo_matrix.rb +90 -0
  62. data/lib/tecscde/view/canvas.rb +59 -0
  63. data/lib/tecscde/view/constants.rb +114 -0
  64. data/lib/tecscde/view/main_view.rb +1245 -0
  65. data/lib/tecsflow.rb +475 -0
  66. data/lib/tecsflow/C_parser.tab.rb +2471 -0
  67. data/lib/tecsflow/C_parser.y.rb +1087 -0
  68. data/lib/tecsflow/classes.rb +421 -0
  69. data/lib/tecsgen.rb +581 -0
  70. data/lib/tecsgen/core/C_parser.tab.rb +2477 -0
  71. data/lib/tecsgen/core/C_parser.y +1032 -0
  72. data/lib/tecsgen/core/bnf-deb.tab.rb +5193 -0
  73. data/lib/tecsgen/core/bnf.tab.rb +5193 -0
  74. data/lib/tecsgen/core/bnf.y +2211 -0
  75. data/lib/tecsgen/core/componentobj.rb +7901 -0
  76. data/lib/tecsgen/core/ctypes.rb +226 -0
  77. data/lib/tecsgen/core/expression.rb +1031 -0
  78. data/lib/tecsgen/core/gen_xml.rb +374 -0
  79. data/lib/tecsgen/core/generate.rb +5206 -0
  80. data/lib/tecsgen/core/location.rb +116 -0
  81. data/lib/tecsgen/core/messages.rb +101 -0
  82. data/lib/tecsgen/core/optimize.rb +456 -0
  83. data/lib/tecsgen/core/plugin.rb +332 -0
  84. data/lib/tecsgen/core/pluginModule.rb +165 -0
  85. data/lib/tecsgen/core/syntaxobj.rb +1234 -0
  86. data/lib/tecsgen/core/tecs_lang.rb +306 -0
  87. data/lib/tecsgen/core/tecsgen.rb +453 -0
  88. data/lib/tecsgen/core/tecsinfo.rb +860 -0
  89. data/lib/tecsgen/core/tool_info.rb +258 -0
  90. data/lib/tecsgen/core/types.rb +1632 -0
  91. data/lib/tecsgen/core/unjoin_plugin.rb +218 -0
  92. data/lib/tecsgen/core/value.rb +650 -0
  93. data/lib/tecsgen/messages/messages_console_en_US.rb +1171 -0
  94. data/lib/tecsgen/messages/messages_console_ja_JP.rb +1171 -0
  95. data/lib/tecsgen/messages/messages_file_en_US.rb +334 -0
  96. data/lib/tecsgen/messages/messages_file_ja_JP.rb +163 -0
  97. data/lib/tecsgen/plugin/ATK1AlarmPlugin.rb +196 -0
  98. data/lib/tecsgen/plugin/ATK1DelayTaskPlugin.rb +106 -0
  99. data/lib/tecsgen/plugin/ATK1EventPlugin.rb +147 -0
  100. data/lib/tecsgen/plugin/ATK1ISRPlugin.rb +174 -0
  101. data/lib/tecsgen/plugin/ATK1KernelPlugin.rb +287 -0
  102. data/lib/tecsgen/plugin/ATK1ResourcePlugin.rb +124 -0
  103. data/lib/tecsgen/plugin/ATK1TaskPlugin.rb +220 -0
  104. data/lib/tecsgen/plugin/C2TECSBridgePlugin.rb +210 -0
  105. data/lib/tecsgen/plugin/CellPlugin.rb +61 -0
  106. data/lib/tecsgen/plugin/CelltypePlugin.rb +72 -0
  107. data/lib/tecsgen/plugin/CompositePlugin.rb +66 -0
  108. data/lib/tecsgen/plugin/DomainPlugin.rb +89 -0
  109. data/lib/tecsgen/plugin/HRP2AlarmHandlerPlugin.rb +76 -0
  110. data/lib/tecsgen/plugin/HRP2Cache.rb +1 -0
  111. data/lib/tecsgen/plugin/HRP2CyclicHandlerPlugin.rb +75 -0
  112. data/lib/tecsgen/plugin/HRP2DataqueuePlugin.rb +68 -0
  113. data/lib/tecsgen/plugin/HRP2EventflagPlugin.rb +68 -0
  114. data/lib/tecsgen/plugin/HRP2FixedSizeMemoryPoolPlugin.rb +68 -0
  115. data/lib/tecsgen/plugin/HRP2HandlerPlugin.rb +117 -0
  116. data/lib/tecsgen/plugin/HRP2KernelObjectPlugin.rb +372 -0
  117. data/lib/tecsgen/plugin/HRP2ObjectPlugin.rb +94 -0
  118. data/lib/tecsgen/plugin/HRP2Plugin.rb +140 -0
  119. data/lib/tecsgen/plugin/HRP2PostHook.rb +111 -0
  120. data/lib/tecsgen/plugin/HRP2PriorityDataqueuePlugin.rb +66 -0
  121. data/lib/tecsgen/plugin/HRP2RPCPlugin.rb +319 -0
  122. data/lib/tecsgen/plugin/HRP2SVCPlugin.rb +473 -0
  123. data/lib/tecsgen/plugin/HRP2SemaphorePlugin.rb +67 -0
  124. data/lib/tecsgen/plugin/HRP2TaskPlugin.rb +200 -0
  125. data/lib/tecsgen/plugin/HRPHandlerPlugin.rb +125 -0
  126. data/lib/tecsgen/plugin/HRPKernelObjectManager.rb +72 -0
  127. data/lib/tecsgen/plugin/HRPKernelObjectPlugin.rb +333 -0
  128. data/lib/tecsgen/plugin/HRPObjectPlugin.rb +93 -0
  129. data/lib/tecsgen/plugin/HRPPlugin.rb +356 -0
  130. data/lib/tecsgen/plugin/HRPRPCPlugin.rb +407 -0
  131. data/lib/tecsgen/plugin/HRPSVCPlugin.rb +859 -0
  132. data/lib/tecsgen/plugin/HRPTaskPlugin.rb +107 -0
  133. data/lib/tecsgen/plugin/Mruby2CBridgePlugin.rb +86 -0
  134. data/lib/tecsgen/plugin/MrubyBridgeCellPlugin.rb +264 -0
  135. data/lib/tecsgen/plugin/MrubyBridgeCelltypePlugin.rb +293 -0
  136. data/lib/tecsgen/plugin/MrubyBridgeCompositePlugin.rb +49 -0
  137. data/lib/tecsgen/plugin/MrubyBridgePlugin.rb +67 -0
  138. data/lib/tecsgen/plugin/MrubyBridgeSignaturePlugin.rb +1307 -0
  139. data/lib/tecsgen/plugin/MrubyInfoBridgePlugin.rb +14 -0
  140. data/lib/tecsgen/plugin/MrubyInfoBridgeSignaturePlugin.rb +994 -0
  141. data/lib/tecsgen/plugin/MultiPlugin.rb +57 -0
  142. data/lib/tecsgen/plugin/NotifierPlugin.rb +1217 -0
  143. data/lib/tecsgen/plugin/OpaqueMarshalerPlugin.rb +81 -0
  144. data/lib/tecsgen/plugin/OpaqueRPCPlugin.rb +323 -0
  145. data/lib/tecsgen/plugin/RPCPlugin.rb +266 -0
  146. data/lib/tecsgen/plugin/RepeatCellPlugin.rb +166 -0
  147. data/lib/tecsgen/plugin/RepeatJoinPlugin.rb +130 -0
  148. data/lib/tecsgen/plugin/SharedOpaqueRPCPlugin.rb +357 -0
  149. data/lib/tecsgen/plugin/SharedRPCPlugin.rb +329 -0
  150. data/lib/tecsgen/plugin/SignaturePlugin.rb +77 -0
  151. data/lib/tecsgen/plugin/TECS2CBridgePlugin.rb +178 -0
  152. data/lib/tecsgen/plugin/TECSInfoPlugin.rb +280 -0
  153. data/lib/tecsgen/plugin/ThroughPlugin.rb +333 -0
  154. data/lib/tecsgen/plugin/TracePlugin.rb +484 -0
  155. data/lib/tecsgen/plugin/lib/GenHRP2Marshaler.rb +761 -0
  156. data/lib/tecsgen/plugin/lib/GenOpaqueMarshaler.rb +1107 -0
  157. data/lib/tecsgen/plugin/lib/GenParamCopy.rb +365 -0
  158. data/lib/tecsgen/plugin/lib/GenTransparentMarshaler.rb +683 -0
  159. data/lib/tecsgen/plugin/lib/MrubyBridgeCelltypePluginModule.rb +283 -0
  160. data/lib/tecsgen/plugin/lib/MrubyBridgeSignaturePluginModule.rb +277 -0
  161. data/lib/tecsgen/version.rb +6 -0
  162. data/samples/FigureSamples/active/active.cde +104 -0
  163. data/samples/FigureSamples/active/active.cdl +20 -0
  164. data/samples/FigureSamples/active/active.pdf +0 -0
  165. data/samples/FigureSamples/active/active.png +0 -0
  166. data/samples/FigureSamples/active/gen/tmp_C_src.c +36 -0
  167. data/samples/FigureSamples/active/gen/tmp_cygwin_tecs.h +1908 -0
  168. data/samples/FigureSamples/active/gen/tmp_plugin_post_code.cdl +0 -0
  169. data/samples/FigureSamples/allocator/allocator-internal.png +0 -0
  170. data/samples/FigureSamples/allocator/allocator.cde +171 -0
  171. data/samples/FigureSamples/allocator/allocator.cdl +58 -0
  172. data/samples/FigureSamples/allocator/allocator.png +0 -0
  173. data/samples/FigureSamples/basic/Makefile +87 -0
  174. data/samples/FigureSamples/basic/SimpleSample-trace.cdl +50 -0
  175. data/samples/FigureSamples/basic/SimpleSample.cde +91 -0
  176. data/samples/FigureSamples/basic/SimpleSample.cdl +47 -0
  177. data/samples/FigureSamples/basic/basic.cde +93 -0
  178. data/samples/FigureSamples/basic/basic.cdl +46 -0
  179. data/samples/FigureSamples/basic/basic.png +0 -0
  180. data/samples/FigureSamples/callback/callback.cde +130 -0
  181. data/samples/FigureSamples/callback/callback.cdl +29 -0
  182. data/samples/FigureSamples/callback/callback.png +0 -0
  183. data/samples/FigureSamples/carray/carray.cde +144 -0
  184. data/samples/FigureSamples/carray/carray.cdl +38 -0
  185. data/samples/FigureSamples/carray/carray.png +0 -0
  186. data/samples/FigureSamples/cearray/cearray.cde +314 -0
  187. data/samples/FigureSamples/cearray/cearray.cdl +60 -0
  188. data/samples/FigureSamples/cearray/cearray.png +0 -0
  189. data/samples/FigureSamples/composite/composite-internal.png +0 -0
  190. data/samples/FigureSamples/composite/composite.cde +216 -0
  191. data/samples/FigureSamples/composite/composite.cdl +95 -0
  192. data/samples/FigureSamples/composite/composite.png +0 -0
  193. data/samples/FigureSamples/earray/earray.cde +142 -0
  194. data/samples/FigureSamples/earray/earray.cdl +38 -0
  195. data/samples/FigureSamples/earray/earray.png +0 -0
  196. data/samples/FigureSamples/join/Makefile +87 -0
  197. data/samples/FigureSamples/join/join.cde +132 -0
  198. data/samples/FigureSamples/join/join.cdl +40 -0
  199. data/samples/FigureSamples/join/join.png +0 -0
  200. data/samples/FigureSamples/relay/Makefile +99 -0
  201. data/samples/FigureSamples/relay/relay-internal.png +0 -0
  202. data/samples/FigureSamples/relay/relay.cde +284 -0
  203. data/samples/FigureSamples/relay/relay.cdl +52 -0
  204. data/samples/FigureSamples/relay/relay.png +0 -0
  205. data/samples/FigureSamples/rpc/Makefile +123 -0
  206. data/samples/FigureSamples/rpc/rpc-expand.png +0 -0
  207. data/samples/FigureSamples/rpc/rpc.cde +245 -0
  208. data/samples/FigureSamples/rpc/rpc.png +0 -0
  209. data/samples/FigureSamples/rpc/rpc_sample.cdl +53 -0
  210. data/samples/SimpleSample/Makefile +25 -0
  211. data/samples/SimpleSample/SimpleSample/Makefile +86 -0
  212. data/samples/SimpleSample/SimpleSample/Makefile-trace +91 -0
  213. data/samples/SimpleSample/SimpleSample/README.txt +106 -0
  214. data/samples/SimpleSample/SimpleSample/SimpleSample-trace.cdl +50 -0
  215. data/samples/SimpleSample/SimpleSample/SimpleSample.cdl +45 -0
  216. data/samples/SimpleSample/SimpleSample/src/tSample.c +77 -0
  217. data/samples/SimpleSample/SimpleSample/src/tSimple.c +48 -0
  218. data/samples/SimpleSample/SimpleSample/src/tecs-types.h +27 -0
  219. data/samples/SimpleSample/SimpleSampleOpaqueRPC/Makefile +51 -0
  220. data/samples/SimpleSample/SimpleSampleOpaqueRPC/Makefile-trace +91 -0
  221. data/samples/SimpleSample/SimpleSampleOpaqueRPC/README.txt +106 -0
  222. data/samples/SimpleSample/SimpleSampleOpaqueRPC/SimpleSample-trace.cdl +80 -0
  223. data/samples/SimpleSample/SimpleSampleOpaqueRPC/SimpleSample.cdl +77 -0
  224. data/samples/SimpleSample/SimpleSampleOpaqueRPC/rSample/Makefile +112 -0
  225. data/samples/SimpleSample/SimpleSampleOpaqueRPC/rSimple/Makefile +109 -0
  226. data/samples/SimpleSample/SimpleSampleOpaqueRPC/src/tSample.c +80 -0
  227. data/samples/SimpleSample/SimpleSampleOpaqueRPC/src/tSimple.c +47 -0
  228. data/samples/SimpleSample/SimpleSampleOpaqueRPC/src/tTaskMain.c +66 -0
  229. data/samples/SimpleSample/SimpleSampleOpaqueRPC/src/tecs-types.h +27 -0
  230. data/samples/SimpleSample/SimpleSampleTransparentRPC/Makefile +125 -0
  231. data/samples/SimpleSample/SimpleSampleTransparentRPC/Makefile-trace +130 -0
  232. data/samples/SimpleSample/SimpleSampleTransparentRPC/SimpleSample-trace.cdl +54 -0
  233. data/samples/SimpleSample/SimpleSampleTransparentRPC/SimpleSample.cdl +53 -0
  234. data/samples/SimpleSample/SimpleSampleTransparentRPC/src/tSample.c +80 -0
  235. data/samples/SimpleSample/SimpleSampleTransparentRPC/src/tSimple.c +54 -0
  236. data/tecscde.gemspec +41 -0
  237. metadata +353 -0
@@ -0,0 +1,81 @@
1
+ #
2
+ # TECS Generator
3
+ # Generator for TOPPERS Embedded Component System
4
+ #
5
+ # Copyright (C) 2008-2014 by TOPPERS Project
6
+ #--
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
+ # 免責すること.
29
+ #
30
+ # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
31
+ # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
32
+ # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
33
+ # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
34
+ # の責任を負わない.
35
+ #
36
+ # $Id: OpaqueMarshalerPlugin.rb 2952 2018-05-07 10:19:07Z okuma-top $
37
+ #++
38
+
39
+ #== OpaqueMarshaler
40
+ # OpaqueRPC 用のマーシャラ、アンマーシャラセルタイプを生成するシグニチャプラグイン
41
+
42
+ require_tecsgen_lib "lib/GenOpaqueMarshaler.rb"
43
+ require_tecsgen_lib "lib/GenParamCopy.rb"
44
+
45
+ class OpaqueMarshalerPlugin < SignaturePlugin
46
+ OpaqueMarshalerPluginArgProc = { }
47
+
48
+ include GenOpaqueMarshaler
49
+ include GenParamCopy
50
+
51
+ def initialize(signature, option)
52
+ super
53
+ @b_noClientSemaphore = false
54
+ @noServerChannelOpenerCode = true
55
+ initialize_opaque_marshaler
56
+
57
+ @plugin_arg_check_proc_tab = OpaqueMarshalerPluginArgProc
58
+ parse_plugin_arg
59
+ # check_PPAllocator
60
+ if @signature.need_PPAllocator?(true)
61
+ @PPAllocatorSize = 1 # PPAllocatorの必要性有のために設定 (サイズは使われない)
62
+ necessity = "Necessary"
63
+ else
64
+ necessity = "Unnecessary"
65
+ end
66
+
67
+ print "OpaqueMarshalerPlugin: signature=#{signature.get_namespace_path}, PPAllocator=#{necessity}\n"
68
+ end
69
+
70
+ def gen_cdl_file(file)
71
+ gen_marshaler_celltype
72
+ file.print <<EOT
73
+ import( "#{@marshaler_celltype_file_name}" );
74
+ EOT
75
+ end
76
+
77
+ def subst_name(val)
78
+ return :_
79
+ # return nil
80
+ end
81
+ end
@@ -0,0 +1,323 @@
1
+ #
2
+ # TECS Generator
3
+ # Generator for TOPPERS Embedded Component System
4
+ #
5
+ # Copyright (C) 2008-2014 by TOPPERS Project
6
+ #--
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
+ # 免責すること.
29
+ #
30
+ # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
31
+ # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
32
+ # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
33
+ # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
34
+ # の責任を負わない.
35
+ #
36
+ # $Id: OpaqueRPCPlugin.rb 2952 2018-05-07 10:19:07Z okuma-top $
37
+ #++
38
+
39
+ # 以下を仮定(制限事項)
40
+ # 呼び元、呼び先のエンディアン、char, short, int_t, long_t, intptr_t のサイズが同じ
41
+ # 有符号、無符号でサイズが同じ
42
+
43
+ require_tecsgen_lib "lib/GenOpaqueMarshaler.rb"
44
+ require_tecsgen_lib "lib/GenParamCopy.rb"
45
+
46
+ class OpaqueRPCPlugin < ThroughPlugin
47
+ include GenOpaqueMarshaler
48
+ include GenParamCopy
49
+
50
+ # OpaqueRPCPlugin 専用のオプション
51
+ OpaqueRPCPluginArgProc = RPCPluginArgProc.dup # 複製を作って元を変更しないようにする
52
+ OpaqueRPCPluginArgProc["noClientSemaphore"] = Proc.new {|obj, rhs| obj.set_noClientSemaphore rhs }
53
+
54
+ #=== RPCPlugin の initialize
55
+ # 説明は ThroughPlugin (plugin.rb) を参照
56
+ def initialize(cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell)
57
+ super
58
+ @b_noClientSemaphore = false
59
+ initialize_opaque_marshaler
60
+
61
+ @plugin_arg_check_proc_tab = OpaqueRPCPluginArgProc
62
+ parse_plugin_arg
63
+ check_opener_code
64
+ check_PPAllocator
65
+
66
+ print "OpaqueRPCPlugin: #{@clientChannelCell}\n"
67
+
68
+ @rpc_server_channel_celltype_name = "tOpaqueRPCPlugin_#{@TDRCelltype}_#{@serverChannelCelltype}_#{@signature.get_global_name}"
69
+ @rpc_server_channel_celltype_file_name = "#{$gen}/#{@rpc_server_channel_celltype_name}.cdl"
70
+ @rpc_client_channel_celltype_name = "tOpaqueRPCPlugin_#{@TDRCelltype}_#{@clientChannelCelltype}_#{@signature.get_global_name}"
71
+ @rpc_client_channel_celltype_file_name = "#{$gen}/#{@rpc_client_channel_celltype_name}.cdl"
72
+ end
73
+
74
+ def gen_plugin_decl_code(file)
75
+ gen_marshaler_celltype
76
+
77
+ # チャンネル composite セルタイプの生成
78
+ # ここで生成された CDL ファイルは、tecsgen が直接 import するのではなく
79
+ # セルコードの CDL から import される
80
+
81
+ f = CFile.open(@rpc_client_channel_celltype_file_name, "w")
82
+ # 同じ内容を二度書く可能性あり (AppFile は不可)
83
+
84
+ f.print <<EOT
85
+ import( "#{@marshaler_celltype_file_name}" );
86
+
87
+ /* RPC Client side composite celltype */
88
+ composite #{@rpc_client_channel_celltype_name} {
89
+ /* marshaler entry port */
90
+ entry #{@signature.get_namespace_path} eThroughEntry;
91
+ call sChannel cChannel;
92
+ [optional]
93
+ call sRPCErrorHandler cErrorHandler;
94
+ [optional]
95
+ call sSemaphore cLockChannel;
96
+
97
+ cell #{@TDRCelltype} TDR {
98
+ cChannel => composite.cChannel;
99
+ };
100
+ cell #{@marshaler_celltype_name} Marshaler{
101
+ cTDR = TDR.eTDR;
102
+ cErrorHandler => composite.cErrorHandler;
103
+ cLockChannel => composite.cLockChannel;
104
+ };
105
+
106
+ composite.eThroughEntry => Marshaler.eClientEntry;
107
+ };
108
+ EOT
109
+ f.close
110
+
111
+ if @PPAllocatorSize
112
+ alloc_cell = " cell tPPAllocator PPAllocator {\n heapSize = #{@PPAllocatorSize};\n };\n"
113
+ alloc_call_port_join = " cPPAllocator = PPAllocator.ePPAllocator;\n"
114
+ else
115
+ alloc_cell = ""
116
+ alloc_call_port_join = ""
117
+ end
118
+
119
+ f = CFile.open(@rpc_server_channel_celltype_file_name, "w")
120
+ # 同じ内容を二度書く可能性あり (AppFile は不可)
121
+
122
+ f.print <<EOT
123
+ import( "#{@marshaler_celltype_file_name}" );
124
+
125
+ /* RPC Server side composite celltype */
126
+ composite #{@rpc_server_channel_celltype_name} {
127
+ /* Interface */
128
+ call #{@signature.get_namespace_path} #{@call_port_name};
129
+ call sChannel cChannel;
130
+ [optional]
131
+ call sRPCErrorHandler cErrorHandler;
132
+ entry sUnmarshalerMain eService;
133
+
134
+ /* Implementation */
135
+ cell #{@TDRCelltype} TDR {
136
+ cChannel => composite.cChannel;
137
+ };
138
+ #{alloc_cell} cell #{@unmarshaler_celltype_name} Unmarshaler{
139
+ cTDR = TDR.eTDR;
140
+ cErrorHandler => composite.cErrorHandler;
141
+ cServerCall => composite.#{@call_port_name};
142
+ #{alloc_call_port_join} };
143
+ composite.eService => Unmarshaler.eService;
144
+ };
145
+ EOT
146
+
147
+ f.close
148
+ end
149
+
150
+ #=== through cell コードを生成
151
+ #
152
+ #
153
+ def gen_through_cell_code(file)
154
+ gen_plugin_decl_code(file)
155
+
156
+ # セルを探す
157
+ # path =["::",@next_cell.get_name] # mikan namespace
158
+ # cell = Namespace.find( path )
159
+ cell = Namespace.find(@next_cell.get_namespace_path)
160
+
161
+ file.print <<EOT
162
+ import( "#{@rpc_client_channel_celltype_file_name}" );
163
+ import( "#{@rpc_server_channel_celltype_file_name}" );
164
+
165
+ EOT
166
+
167
+ ##### クライアント側のセルの生成 #####
168
+ nest = @start_region.gen_region_str_pre file
169
+ nest_str = " " * nest
170
+
171
+ # セマフォの生成
172
+ if @b_noClientSemaphore == false
173
+ file.print <<EOT
174
+
175
+ #{nest_str} // Semaphore for Multi-task use ("specify noClientSemaphore" option to delete this)
176
+ #{nest_str} cell #{@semaphoreCelltype} #{@serverChannelCell}_Semaphore{
177
+ #{nest_str} #{@semaphoreInitializer}
178
+ #{nest_str} };
179
+ EOT
180
+ end
181
+
182
+ # クライアント側チャンネル (TINET, Socket など)の生成
183
+ file.print <<EOT
184
+ #{nest_str} // Client Side Channel
185
+ #{nest_str} cell #{@clientChannelCelltype} #{@clientChannelCell}{
186
+ #{nest_str} #{@clientChannelInitializer}
187
+ #{nest_str} };
188
+
189
+ #{nest_str} // Marshaler
190
+ EOT
191
+
192
+ # セマフォの結合文
193
+ if @b_noClientSemaphore == false
194
+ semaphore = "#{nest_str} cLockChannel = #{@serverChannelCell}_Semaphore.eSemaphore;\n"
195
+ else
196
+ semaphore = ""
197
+ end
198
+
199
+ ### クライアント側チャンネル (マーシャラ+TDR)の生成 ###
200
+ # アロケータの指定があるか?
201
+ if cell.get_allocator_list.length > 0
202
+
203
+ file.print nest_str
204
+ file.print "[allocator("
205
+
206
+ delim = ""
207
+ cell.get_allocator_list.each do |type, eport, subsc, func, buf, alloc|
208
+
209
+ alloc_str = alloc.to_s
210
+ subst = @substituteAllocator[alloc_str.to_sym]
211
+ if subst
212
+ alloc_str = subst[2] + "." + subst[3]
213
+ end
214
+
215
+ file.print delim
216
+ delim = ",\n" # 最終行には出さない
217
+
218
+ if subsc # 配列添数
219
+ subsc_str = '[#{subsc}]'
220
+ else
221
+ subsc_str = ""
222
+ end
223
+
224
+ eport = "eThroughEntry" # RPCの受け口名に変更
225
+ file.print nest_str
226
+ file.print "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc_str}"
227
+ end
228
+
229
+ file.puts ")]"
230
+ end
231
+
232
+ if @clientErrorHandler
233
+ clientErrorHandler_str = "#{nest_str} cErrorHandler = #{@clientErrorHandler};\n"
234
+ else
235
+ clientErrorHandler_str = ""
236
+ end
237
+
238
+ file.print <<EOT
239
+ #{nest_str} cell #{@rpc_client_channel_celltype_name} #{@cell_name} {
240
+ #{nest_str} cChannel = #{@clientChannelCell}.eC0;
241
+ #{clientErrorHandler_str}#{semaphore}#{nest_str} };
242
+
243
+ EOT
244
+ ### END: クライアント側チャンネル (マーシャラ+TDR)の生成 ###
245
+
246
+ @start_region.gen_region_str_post file
247
+ file.print "\n\n"
248
+
249
+ ##### サーバー側のセルの生成 #####
250
+ nest = @end_region.gen_region_str_pre file
251
+ nest_str = " " * nest
252
+ if @next_cell_port_subscript
253
+ subscript = "[" + @next_cell_port_subscript.to_s + "]"
254
+ else
255
+ subscript = ""
256
+ end
257
+
258
+ if @serverErrorHandler
259
+ serverErrorHandler_str = "#{nest_str} cErrorHandler = #{@serverErrorHandler};\n"
260
+ else
261
+ serverErrorHandler_str = ""
262
+ end
263
+
264
+ if @b_genOpener
265
+ opener = "#{nest_str} cOpener = #{@serverChannelCell}.eOpener;\n"
266
+ else
267
+ opener = ""
268
+ end
269
+
270
+ # サーバー側チャンネル (TINET, Socket など)
271
+ file.print <<EOT
272
+
273
+ #{nest_str} // Server Side Channel
274
+ #{nest_str} cell #{@serverChannelCelltype} #{@serverChannelCell}{
275
+ #{nest_str} #{@serverChannelInitializer}
276
+ #{nest_str} };
277
+ EOT
278
+
279
+ # サーバー側チャンネル (アンマーシャラ+TDR)
280
+ file.print <<EOT
281
+
282
+ #{nest_str} // Unmarshaler
283
+ #{nest_str} cell #{@rpc_server_channel_celltype_name} #{@serverChannelCell}_Unmarshaler {
284
+ #{nest_str} cChannel = #{@serverChannelCell}.eC1;
285
+ #{nest_str} #{@call_port_name} = #{@next_cell.get_namespace_path.get_path_str}.#{@next_cell_port_name}#{subscript};
286
+ #{serverErrorHandler_str}#{nest_str} };
287
+ EOT
288
+
289
+ # サーバー側タスクメイン
290
+ file.print <<EOT
291
+
292
+ #{nest_str} // Unmarshaler Task Main
293
+ #{nest_str} cell #{@taskMainCelltype} #{@serverChannelCell}_TaskMain {
294
+ #{nest_str} cMain = #{@serverChannelCell}_Unmarshaler.eService;
295
+ #{opener}#{nest_str} };
296
+ EOT
297
+
298
+ # サーバー側タスク
299
+ file.print <<EOT
300
+
301
+ #{nest_str} // Unmarshaler Task
302
+ #{nest_str} cell #{@taskCelltype} #{@serverChannelCell}_Task {
303
+ #{nest_str} cBody = #{@serverChannelCell}_TaskMain.eMain;
304
+ #{nest_str} priority = #{@taskPriority};
305
+ #{nest_str} stackSize = #{@stackSize};
306
+ #{nest_str} taskAttribute = C_EXP( "TA_ACT" ); /* mikan : marshaler task starts at beginning */
307
+ #{nest_str} };
308
+ EOT
309
+ @end_region.gen_region_str_post file
310
+ end
311
+
312
+ #=== プラグイン引数 noClientSemaphore のチェック
313
+ def set_noClientSemaphore(rhs)
314
+ rhs = rhs.to_sym
315
+ if rhs == :true
316
+ @b_noClientSemaphore = true
317
+ elsif rhs == :false
318
+ @b_noClientSemaphore = false
319
+ else
320
+ cdl_error("RPCPlugin: specify true or false for noClientSemaphore")
321
+ end
322
+ end
323
+ end
@@ -0,0 +1,266 @@
1
+ #
2
+ # TECS Generator
3
+ # Generator for TOPPERS Embedded Component System
4
+ #
5
+ # Copyright (C) 2008-2014 by TOPPERS Project
6
+ #--
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
+ # 免責すること.
29
+ #
30
+ # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
31
+ # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
32
+ # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
33
+ # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
34
+ # の責任を負わない.
35
+ #
36
+ # $Id: RPCPlugin.rb 2952 2018-05-07 10:19:07Z okuma-top $
37
+ #++
38
+
39
+ require_tecsgen_lib "lib/GenTransparentMarshaler.rb"
40
+ require_tecsgen_lib "lib/GenParamCopy.rb"
41
+
42
+ #= Transparent RPC プラグイン
43
+ # Transparent RPC チャンネルを生成する
44
+ # プラグイン引数は以下の RPCPluginArgProc を参照
45
+
46
+ # mikan through plugin: namespace が考慮されていない
47
+ # これを利用する場合、以下のように toppers_jsp.cdl sChannel.cdl を指定する必要がある
48
+ # tecsgen toppers_jsp.cdl sChannel.cdl your_description.cdl
49
+
50
+ # 以下を仮定(制限事項)
51
+ # 呼び元、呼び先のエンディアン、char, short, int_t, long_t, intptr_t のサイズが同じ
52
+ # 有符号、無符号でサイズが同じ
53
+
54
+ class RPCPlugin < ThroughPlugin
55
+ include GenTransparentMarshaler
56
+ include GenParamCopy
57
+
58
+ # RPCPlugin 専用のオプション
59
+ TransparentRPCPluginArgProc = RPCPluginArgProc.dup # 複製を作って元を変更しないようにする
60
+ TransparentRPCPluginArgProc["noClientSemaphore"] = Proc.new {|obj, rhs| obj.set_noClientSemaphore rhs }
61
+ TransparentRPCPluginArgProc["semaphoreCelltype"] = Proc.new {|obj, rhs| obj.set_semaphoreCelltype rhs }
62
+
63
+ #=== RPCPlugin の initialize
64
+ # 説明は ThroughPlugin (plugin.rb) を参照
65
+ def initialize(cell_name, plugin_arg, next_cell, next_cell_port_name, next_cell_port_subscript, signature, celltype, caller_cell)
66
+ super
67
+ @b_noClientSemaphore = false
68
+ @semaphoreCelltype = "tSemaphore"
69
+ initialize_transparent_marshaler cell_name
70
+
71
+ # オプション:GenTransparentMarshaler 参照
72
+ @plugin_arg_check_proc_tab = TransparentRPCPluginArgProc
73
+ parse_plugin_arg
74
+
75
+ @rpc_channel_celltype_name = "tRPCPlugin_#{@TDRCelltype}_#{@channelCelltype}_#{@signature.get_global_name}"
76
+ @rpc_channel_celltype_file_name = "#{$gen}/#{@rpc_channel_celltype_name}.cdl"
77
+
78
+ if @signature.need_PPAllocator?
79
+ if @PPAllocatorSize.nil?
80
+ cdl_error("PPAllocatorSize must be speicified for oneway [in] array")
81
+ # @PPAllocatorSize = 0 # 仮に 0 としておく (cdl の構文エラーを避けるため)
82
+ end
83
+ end
84
+
85
+ # @signature.each_param{ |func_decl, param_decl|
86
+ # if func_decl.get_type.is_oneway? then
87
+ # if ( param_decl.get_size || param_decl.get_count ) && param_decl.get_string then
88
+ # cdl_error( "array of string not supported for oneway function in Transparent RPC" ) # mikan 文字列の配列
89
+ # elsif param_decl.get_string == -1 then
90
+ # cdl_error( "length unspecified string is not permited for oneway function in Transparent RPC" ) # mikan 長さ未指定文字列
91
+ # end
92
+ # end
93
+ # }
94
+ end
95
+
96
+ #=== plugin の宣言コード (celltype の定義) 生成
97
+ def gen_plugin_decl_code(file)
98
+ ct_name = "#{@ct_name}_#{@channelCelltype}"
99
+
100
+ # このセルタイプ(同じシグニチャ)は既に生成されているか?
101
+ if @@generated_celltype[ct_name].nil?
102
+ @@generated_celltype[ct_name] = [self]
103
+ else
104
+ @@generated_celltype[ct_name] << self
105
+ return
106
+ end
107
+
108
+ gen_marshaler_celltype
109
+
110
+ if @PPAllocatorSize
111
+ alloc_cell = " cell tPPAllocator PPAllocator {\n heapSize = #{@PPAllocatorSize};\n };\n"
112
+ alloc_call_port_join = " cPPAllocator = PPAllocator.ePPAllocator;\n"
113
+ else
114
+ alloc_cell = ""
115
+ alloc_call_port_join = ""
116
+ end
117
+
118
+ if @b_noClientSemaphore == false
119
+ semaphore1 = <<EOT
120
+ // Semaphore for Multi-task use ("specify noClientSemaphore" option to delete this)
121
+ cell #{@semaphoreCelltype} Semaphore {
122
+ count = 1;
123
+ attribute = C_EXP( "TA_NULL" );
124
+ };
125
+ EOT
126
+ semaphore2 = " cLockChannel = Semaphore.eSemaphore;\n"
127
+ else
128
+ semaphore1 = ""
129
+ semaphore2 = ""
130
+ end
131
+
132
+ f = CFile.open(@rpc_channel_celltype_file_name, "w")
133
+ # 同じ内容を二度書く可能性あり (AppFile は不可)
134
+
135
+ f.print <<EOT
136
+ import( "#{@marshaler_celltype_file_name}" );
137
+
138
+ [active]
139
+ composite #{@rpc_channel_celltype_name} {
140
+ /* Interface */
141
+ attr {
142
+ PRI taskPriority;
143
+ };
144
+ call #{@signature.get_namespace_path} #{@call_port_name};
145
+ entry #{@signature.get_namespace_path} eThroughEntry;
146
+ call sTDR cTDR;
147
+ call sEventflag cEventflag;
148
+
149
+ /* Implementation */
150
+ #{semaphore1}
151
+ cell #{@marshaler_celltype_name} #{@signature.get_global_name}_marshaler{
152
+ cTDR => composite.cTDR;
153
+ cEventflag => composite.cEventflag;
154
+ #{semaphore2} };
155
+ #{alloc_cell} cell #{@unmarshaler_celltype_name} #{@signature.get_global_name}_unmarshaler{
156
+ cTDR => composite.cTDR;
157
+ cEventflag => composite.cEventflag;
158
+ cServerCall => composite.#{@call_port_name};
159
+ #{alloc_call_port_join} };
160
+ cell tRPCDedicatedTaskMain RPCTaskMain{
161
+ cMain = #{@signature.get_global_name}_unmarshaler.eUnmarshalAndCallFunction;
162
+ };
163
+ cell tTask Task {
164
+ cBody = RPCTaskMain.eMain;
165
+ priority = taskPriority;
166
+ taskAttribute = C_EXP( "TA_ACT" ); /* mikan : marshaler starts at the beginning */
167
+ stackSize = 4096;
168
+ };
169
+ composite.eThroughEntry => #{@signature.get_global_name}_marshaler.eClientEntry;
170
+ };
171
+ EOT
172
+ # mikan stackSize option & 最新 tecs_package 対応
173
+
174
+ f.close
175
+ end
176
+
177
+ #=== through cell コードを生成
178
+ #
179
+ #
180
+ def gen_through_cell_code(file)
181
+ gen_plugin_decl_code(file)
182
+
183
+ # セルを探す
184
+ # path =["::",@next_cell.get_global_name]
185
+ # cell = Namespace.find( path )
186
+ cell = Namespace.find(@next_cell.get_namespace_path)
187
+
188
+ file.print <<EOT
189
+ import( "#{@rpc_channel_celltype_file_name}" );
190
+
191
+ EOT
192
+
193
+ nest = @region.gen_region_str_pre file
194
+ indent_str = " " * nest
195
+ if @next_cell_port_subscript
196
+ subscript = "[" + @next_cell_port_subscript.to_s + "]"
197
+ else
198
+ subscript = ""
199
+ end
200
+
201
+ file.print <<EOT
202
+ #{indent_str}// 一方向チャンネルセル
203
+ #{indent_str}cell #{@channelCelltype} #{@channelCellName} {
204
+ #{indent_str}};
205
+
206
+ #{indent_str}// RPC チャンネルセル
207
+ EOT
208
+
209
+ # #473 が解決された場合、composite リレーアロケータに変更すべき
210
+ # アロケータの指定があるか?
211
+ if cell.get_allocator_list.length > 0
212
+
213
+ file.print "#{indent_str}[allocator("
214
+
215
+ delim = ""
216
+ cell.get_allocator_list.each do |type, eport, subsc, func, buf, alloc|
217
+
218
+ file.print delim
219
+ delim = ",\n#{indent_str} " # 最終行には出さない
220
+
221
+ if subsc # 配列添数
222
+ subsc_str = '[#{subsc}]'
223
+ else
224
+ subsc_str = ""
225
+ end
226
+
227
+ eport = "eThroughEntry" # RPCの受け口名に変更
228
+ file.print "#{eport}#{subsc_str}.#{func}.#{buf} = #{alloc}"
229
+ end
230
+
231
+ file.puts ")]"
232
+ end
233
+
234
+ file.print <<EOT
235
+ #{indent_str}cell #{@rpc_channel_celltype_name} #{@cell_name} {
236
+ #{indent_str} #{@call_port_name} = #{@next_cell.get_name}.#{@next_cell_port_name}#{subscript};
237
+ #{indent_str} cTDR = #{@channelCellName}.eTDR;
238
+ #{indent_str} cEventflag = #{@channelCellName}.eEventflag;
239
+ #{indent_str} taskPriority = #{@task_priority};
240
+ #{indent_str}};
241
+ EOT
242
+ @region.gen_region_str_post file
243
+ end
244
+
245
+ #=== プラグイン引数 noClientSemaphore のチェック
246
+ def set_noClientSemaphore(rhs)
247
+ rhs = rhs.to_sym
248
+ if rhs == :true
249
+ @b_noClientSemaphore = true
250
+ elsif rhs == :false
251
+ @b_noClientSemaphore = false
252
+ else
253
+ cdl_error("RPCPlugin: specify true or false for noClientSemaphore")
254
+ end
255
+ end
256
+
257
+ #=== プラグイン引数 semaphoreCelltype のチェック
258
+ def set_semaphoreCelltype(rhs)
259
+ @semaphoreCelltype = rhs.to_sym
260
+ nsp = NamespacePath.analyze(@semaphoreCelltype.to_s)
261
+ obj = Namespace.find(nsp)
262
+ if !obj.instance_of?(Celltype) && !obj.instance_of?(CompositeCelltype)
263
+ cdl_error("RPCPlugin: semaphoreCelltype '#{rhs}' not celltype or not defined")
264
+ end
265
+ end
266
+ end