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.
- checksums.yaml +7 -0
- data/.gitignore +12 -0
- data/.rubocop.yml +125 -0
- data/.rubocop_todo.yml +188 -0
- data/CHANGELOG.md +3 -0
- data/Gemfile +6 -0
- data/LICENSE +46 -0
- data/LICENSE.ja +32 -0
- data/README.ja.md +200 -0
- data/README.md +35 -0
- data/Rakefile +27 -0
- data/bin/tecscde +64 -0
- data/glade/tecscde-cell-property.glade +205 -0
- data/glade/tecscde-celltype-property.glade +172 -0
- data/glade/tecscde-celltype.glade +414 -0
- data/glade/tecscde-export.glade +161 -0
- data/glade/test-cell-plugin.rb +51 -0
- data/glade/test-cell-property.rb +35 -0
- data/glade/test-export.rb +35 -0
- data/glade/test-palette.rb +26 -0
- data/lib/tcflow.rb +148 -0
- data/lib/tecscde.rb +65 -0
- data/lib/tecscde/NewCell.png +0 -0
- data/lib/tecscde/SelectArrow.png +0 -0
- data/lib/tecscde/attr_tree_view.rb +253 -0
- data/lib/tecscde/cell_plugin_dialog.glade +294 -0
- data/lib/tecscde/cell_plugin_dialog.rb +89 -0
- data/lib/tecscde/celltype_tree_view.rb +105 -0
- data/lib/tecscde/change_set_control.rb +35 -0
- data/lib/tecscde/change_set_control/change_set.rb +32 -0
- data/lib/tecscde/change_set_control/change_set_manager.rb +62 -0
- data/lib/tecscde/command.rb +35 -0
- data/lib/tecscde/control.rb +491 -0
- data/lib/tecscde/highlighted_objects.rb +180 -0
- data/lib/tecscde/logger.rb +74 -0
- data/lib/tecscde/main_view_and_model.rb +80 -0
- data/lib/tecscde/palette.glade +553 -0
- data/lib/tecscde/palette.rb +174 -0
- data/lib/tecscde/preferences.glade +117 -0
- data/lib/tecscde/preferences.rb +44 -0
- data/lib/tecscde/tecs_model.rb +1137 -0
- data/lib/tecscde/tecs_model/hbar.rb +68 -0
- data/lib/tecscde/tecs_model/tm_c_port.rb +122 -0
- data/lib/tecscde/tecs_model/tm_c_port_array.rb +98 -0
- data/lib/tecscde/tecs_model/tm_cell.rb +496 -0
- data/lib/tecscde/tecs_model/tm_e_port.rb +126 -0
- data/lib/tecscde/tecs_model/tm_e_port_array.rb +78 -0
- data/lib/tecscde/tecs_model/tm_join.rb +293 -0
- data/lib/tecscde/tecs_model/tm_join_bar.rb +146 -0
- data/lib/tecscde/tecs_model/tm_port.rb +238 -0
- data/lib/tecscde/tecs_model/tm_port_array.rb +246 -0
- data/lib/tecscde/tecs_model/tm_region.rb +107 -0
- data/lib/tecscde/tecs_model/tm_uneditable.rb +68 -0
- data/lib/tecscde/tecs_model/vbar.rb +68 -0
- data/lib/tecscde/templates/_cell_info.cde.erb +15 -0
- data/lib/tecscde/templates/_join_info.cde.erb +28 -0
- data/lib/tecscde/templates/main.cde.erb +49 -0
- data/lib/tecscde/tm_object.rb +91 -0
- data/lib/tecscde/version.rb +4 -0
- data/lib/tecscde/view.rb +58 -0
- data/lib/tecscde/view/cairo_matrix.rb +90 -0
- data/lib/tecscde/view/canvas.rb +59 -0
- data/lib/tecscde/view/constants.rb +114 -0
- data/lib/tecscde/view/main_view.rb +1245 -0
- data/lib/tecsflow.rb +475 -0
- data/lib/tecsflow/C_parser.tab.rb +2471 -0
- data/lib/tecsflow/C_parser.y.rb +1087 -0
- data/lib/tecsflow/classes.rb +421 -0
- data/lib/tecsgen.rb +581 -0
- data/lib/tecsgen/core/C_parser.tab.rb +2477 -0
- data/lib/tecsgen/core/C_parser.y +1032 -0
- data/lib/tecsgen/core/bnf-deb.tab.rb +5193 -0
- data/lib/tecsgen/core/bnf.tab.rb +5193 -0
- data/lib/tecsgen/core/bnf.y +2211 -0
- data/lib/tecsgen/core/componentobj.rb +7901 -0
- data/lib/tecsgen/core/ctypes.rb +226 -0
- data/lib/tecsgen/core/expression.rb +1031 -0
- data/lib/tecsgen/core/gen_xml.rb +374 -0
- data/lib/tecsgen/core/generate.rb +5206 -0
- data/lib/tecsgen/core/location.rb +116 -0
- data/lib/tecsgen/core/messages.rb +101 -0
- data/lib/tecsgen/core/optimize.rb +456 -0
- data/lib/tecsgen/core/plugin.rb +332 -0
- data/lib/tecsgen/core/pluginModule.rb +165 -0
- data/lib/tecsgen/core/syntaxobj.rb +1234 -0
- data/lib/tecsgen/core/tecs_lang.rb +306 -0
- data/lib/tecsgen/core/tecsgen.rb +453 -0
- data/lib/tecsgen/core/tecsinfo.rb +860 -0
- data/lib/tecsgen/core/tool_info.rb +258 -0
- data/lib/tecsgen/core/types.rb +1632 -0
- data/lib/tecsgen/core/unjoin_plugin.rb +218 -0
- data/lib/tecsgen/core/value.rb +650 -0
- data/lib/tecsgen/messages/messages_console_en_US.rb +1171 -0
- data/lib/tecsgen/messages/messages_console_ja_JP.rb +1171 -0
- data/lib/tecsgen/messages/messages_file_en_US.rb +334 -0
- data/lib/tecsgen/messages/messages_file_ja_JP.rb +163 -0
- data/lib/tecsgen/plugin/ATK1AlarmPlugin.rb +196 -0
- data/lib/tecsgen/plugin/ATK1DelayTaskPlugin.rb +106 -0
- data/lib/tecsgen/plugin/ATK1EventPlugin.rb +147 -0
- data/lib/tecsgen/plugin/ATK1ISRPlugin.rb +174 -0
- data/lib/tecsgen/plugin/ATK1KernelPlugin.rb +287 -0
- data/lib/tecsgen/plugin/ATK1ResourcePlugin.rb +124 -0
- data/lib/tecsgen/plugin/ATK1TaskPlugin.rb +220 -0
- data/lib/tecsgen/plugin/C2TECSBridgePlugin.rb +210 -0
- data/lib/tecsgen/plugin/CellPlugin.rb +61 -0
- data/lib/tecsgen/plugin/CelltypePlugin.rb +72 -0
- data/lib/tecsgen/plugin/CompositePlugin.rb +66 -0
- data/lib/tecsgen/plugin/DomainPlugin.rb +89 -0
- data/lib/tecsgen/plugin/HRP2AlarmHandlerPlugin.rb +76 -0
- data/lib/tecsgen/plugin/HRP2Cache.rb +1 -0
- data/lib/tecsgen/plugin/HRP2CyclicHandlerPlugin.rb +75 -0
- data/lib/tecsgen/plugin/HRP2DataqueuePlugin.rb +68 -0
- data/lib/tecsgen/plugin/HRP2EventflagPlugin.rb +68 -0
- data/lib/tecsgen/plugin/HRP2FixedSizeMemoryPoolPlugin.rb +68 -0
- data/lib/tecsgen/plugin/HRP2HandlerPlugin.rb +117 -0
- data/lib/tecsgen/plugin/HRP2KernelObjectPlugin.rb +372 -0
- data/lib/tecsgen/plugin/HRP2ObjectPlugin.rb +94 -0
- data/lib/tecsgen/plugin/HRP2Plugin.rb +140 -0
- data/lib/tecsgen/plugin/HRP2PostHook.rb +111 -0
- data/lib/tecsgen/plugin/HRP2PriorityDataqueuePlugin.rb +66 -0
- data/lib/tecsgen/plugin/HRP2RPCPlugin.rb +319 -0
- data/lib/tecsgen/plugin/HRP2SVCPlugin.rb +473 -0
- data/lib/tecsgen/plugin/HRP2SemaphorePlugin.rb +67 -0
- data/lib/tecsgen/plugin/HRP2TaskPlugin.rb +200 -0
- data/lib/tecsgen/plugin/HRPHandlerPlugin.rb +125 -0
- data/lib/tecsgen/plugin/HRPKernelObjectManager.rb +72 -0
- data/lib/tecsgen/plugin/HRPKernelObjectPlugin.rb +333 -0
- data/lib/tecsgen/plugin/HRPObjectPlugin.rb +93 -0
- data/lib/tecsgen/plugin/HRPPlugin.rb +356 -0
- data/lib/tecsgen/plugin/HRPRPCPlugin.rb +407 -0
- data/lib/tecsgen/plugin/HRPSVCPlugin.rb +859 -0
- data/lib/tecsgen/plugin/HRPTaskPlugin.rb +107 -0
- data/lib/tecsgen/plugin/Mruby2CBridgePlugin.rb +86 -0
- data/lib/tecsgen/plugin/MrubyBridgeCellPlugin.rb +264 -0
- data/lib/tecsgen/plugin/MrubyBridgeCelltypePlugin.rb +293 -0
- data/lib/tecsgen/plugin/MrubyBridgeCompositePlugin.rb +49 -0
- data/lib/tecsgen/plugin/MrubyBridgePlugin.rb +67 -0
- data/lib/tecsgen/plugin/MrubyBridgeSignaturePlugin.rb +1307 -0
- data/lib/tecsgen/plugin/MrubyInfoBridgePlugin.rb +14 -0
- data/lib/tecsgen/plugin/MrubyInfoBridgeSignaturePlugin.rb +994 -0
- data/lib/tecsgen/plugin/MultiPlugin.rb +57 -0
- data/lib/tecsgen/plugin/NotifierPlugin.rb +1217 -0
- data/lib/tecsgen/plugin/OpaqueMarshalerPlugin.rb +81 -0
- data/lib/tecsgen/plugin/OpaqueRPCPlugin.rb +323 -0
- data/lib/tecsgen/plugin/RPCPlugin.rb +266 -0
- data/lib/tecsgen/plugin/RepeatCellPlugin.rb +166 -0
- data/lib/tecsgen/plugin/RepeatJoinPlugin.rb +130 -0
- data/lib/tecsgen/plugin/SharedOpaqueRPCPlugin.rb +357 -0
- data/lib/tecsgen/plugin/SharedRPCPlugin.rb +329 -0
- data/lib/tecsgen/plugin/SignaturePlugin.rb +77 -0
- data/lib/tecsgen/plugin/TECS2CBridgePlugin.rb +178 -0
- data/lib/tecsgen/plugin/TECSInfoPlugin.rb +280 -0
- data/lib/tecsgen/plugin/ThroughPlugin.rb +333 -0
- data/lib/tecsgen/plugin/TracePlugin.rb +484 -0
- data/lib/tecsgen/plugin/lib/GenHRP2Marshaler.rb +761 -0
- data/lib/tecsgen/plugin/lib/GenOpaqueMarshaler.rb +1107 -0
- data/lib/tecsgen/plugin/lib/GenParamCopy.rb +365 -0
- data/lib/tecsgen/plugin/lib/GenTransparentMarshaler.rb +683 -0
- data/lib/tecsgen/plugin/lib/MrubyBridgeCelltypePluginModule.rb +283 -0
- data/lib/tecsgen/plugin/lib/MrubyBridgeSignaturePluginModule.rb +277 -0
- data/lib/tecsgen/version.rb +6 -0
- data/samples/FigureSamples/active/active.cde +104 -0
- data/samples/FigureSamples/active/active.cdl +20 -0
- data/samples/FigureSamples/active/active.pdf +0 -0
- data/samples/FigureSamples/active/active.png +0 -0
- data/samples/FigureSamples/active/gen/tmp_C_src.c +36 -0
- data/samples/FigureSamples/active/gen/tmp_cygwin_tecs.h +1908 -0
- data/samples/FigureSamples/active/gen/tmp_plugin_post_code.cdl +0 -0
- data/samples/FigureSamples/allocator/allocator-internal.png +0 -0
- data/samples/FigureSamples/allocator/allocator.cde +171 -0
- data/samples/FigureSamples/allocator/allocator.cdl +58 -0
- data/samples/FigureSamples/allocator/allocator.png +0 -0
- data/samples/FigureSamples/basic/Makefile +87 -0
- data/samples/FigureSamples/basic/SimpleSample-trace.cdl +50 -0
- data/samples/FigureSamples/basic/SimpleSample.cde +91 -0
- data/samples/FigureSamples/basic/SimpleSample.cdl +47 -0
- data/samples/FigureSamples/basic/basic.cde +93 -0
- data/samples/FigureSamples/basic/basic.cdl +46 -0
- data/samples/FigureSamples/basic/basic.png +0 -0
- data/samples/FigureSamples/callback/callback.cde +130 -0
- data/samples/FigureSamples/callback/callback.cdl +29 -0
- data/samples/FigureSamples/callback/callback.png +0 -0
- data/samples/FigureSamples/carray/carray.cde +144 -0
- data/samples/FigureSamples/carray/carray.cdl +38 -0
- data/samples/FigureSamples/carray/carray.png +0 -0
- data/samples/FigureSamples/cearray/cearray.cde +314 -0
- data/samples/FigureSamples/cearray/cearray.cdl +60 -0
- data/samples/FigureSamples/cearray/cearray.png +0 -0
- data/samples/FigureSamples/composite/composite-internal.png +0 -0
- data/samples/FigureSamples/composite/composite.cde +216 -0
- data/samples/FigureSamples/composite/composite.cdl +95 -0
- data/samples/FigureSamples/composite/composite.png +0 -0
- data/samples/FigureSamples/earray/earray.cde +142 -0
- data/samples/FigureSamples/earray/earray.cdl +38 -0
- data/samples/FigureSamples/earray/earray.png +0 -0
- data/samples/FigureSamples/join/Makefile +87 -0
- data/samples/FigureSamples/join/join.cde +132 -0
- data/samples/FigureSamples/join/join.cdl +40 -0
- data/samples/FigureSamples/join/join.png +0 -0
- data/samples/FigureSamples/relay/Makefile +99 -0
- data/samples/FigureSamples/relay/relay-internal.png +0 -0
- data/samples/FigureSamples/relay/relay.cde +284 -0
- data/samples/FigureSamples/relay/relay.cdl +52 -0
- data/samples/FigureSamples/relay/relay.png +0 -0
- data/samples/FigureSamples/rpc/Makefile +123 -0
- data/samples/FigureSamples/rpc/rpc-expand.png +0 -0
- data/samples/FigureSamples/rpc/rpc.cde +245 -0
- data/samples/FigureSamples/rpc/rpc.png +0 -0
- data/samples/FigureSamples/rpc/rpc_sample.cdl +53 -0
- data/samples/SimpleSample/Makefile +25 -0
- data/samples/SimpleSample/SimpleSample/Makefile +86 -0
- data/samples/SimpleSample/SimpleSample/Makefile-trace +91 -0
- data/samples/SimpleSample/SimpleSample/README.txt +106 -0
- data/samples/SimpleSample/SimpleSample/SimpleSample-trace.cdl +50 -0
- data/samples/SimpleSample/SimpleSample/SimpleSample.cdl +45 -0
- data/samples/SimpleSample/SimpleSample/src/tSample.c +77 -0
- data/samples/SimpleSample/SimpleSample/src/tSimple.c +48 -0
- data/samples/SimpleSample/SimpleSample/src/tecs-types.h +27 -0
- data/samples/SimpleSample/SimpleSampleOpaqueRPC/Makefile +51 -0
- data/samples/SimpleSample/SimpleSampleOpaqueRPC/Makefile-trace +91 -0
- data/samples/SimpleSample/SimpleSampleOpaqueRPC/README.txt +106 -0
- data/samples/SimpleSample/SimpleSampleOpaqueRPC/SimpleSample-trace.cdl +80 -0
- data/samples/SimpleSample/SimpleSampleOpaqueRPC/SimpleSample.cdl +77 -0
- data/samples/SimpleSample/SimpleSampleOpaqueRPC/rSample/Makefile +112 -0
- data/samples/SimpleSample/SimpleSampleOpaqueRPC/rSimple/Makefile +109 -0
- data/samples/SimpleSample/SimpleSampleOpaqueRPC/src/tSample.c +80 -0
- data/samples/SimpleSample/SimpleSampleOpaqueRPC/src/tSimple.c +47 -0
- data/samples/SimpleSample/SimpleSampleOpaqueRPC/src/tTaskMain.c +66 -0
- data/samples/SimpleSample/SimpleSampleOpaqueRPC/src/tecs-types.h +27 -0
- data/samples/SimpleSample/SimpleSampleTransparentRPC/Makefile +125 -0
- data/samples/SimpleSample/SimpleSampleTransparentRPC/Makefile-trace +130 -0
- data/samples/SimpleSample/SimpleSampleTransparentRPC/SimpleSample-trace.cdl +54 -0
- data/samples/SimpleSample/SimpleSampleTransparentRPC/SimpleSample.cdl +53 -0
- data/samples/SimpleSample/SimpleSampleTransparentRPC/src/tSample.c +80 -0
- data/samples/SimpleSample/SimpleSampleTransparentRPC/src/tSimple.c +54 -0
- data/tecscde.gemspec +41 -0
- metadata +353 -0
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
#
|
|
2
|
+
# TECS Generator
|
|
3
|
+
# Generator for TOPPERS Embedded Component System
|
|
4
|
+
#
|
|
5
|
+
# Copyright (C) 2008-2011 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: MrubyBridgeCelltypePluginModule.rb 2952 2018-05-07 10:19:07Z okuma-top $
|
|
37
|
+
#++
|
|
38
|
+
|
|
39
|
+
#== celltype プラグインの共通の親クラス
|
|
40
|
+
module MrubyBridgeCelltypePluginModule
|
|
41
|
+
|
|
42
|
+
# プラグイン引数名 => Proc
|
|
43
|
+
MrubyBridgePluginArgProc = {
|
|
44
|
+
"ignoreUnsigned" => Proc.new {|obj, rhs| obj.set_ignoreUnsigned rhs },
|
|
45
|
+
"include_inner_cell" => Proc.new {|obj, rhs| obj.set_include_inner_cell rhs },
|
|
46
|
+
"exclude_cell" => Proc.new {|obj, rhs| obj.set_exclude_cell rhs },
|
|
47
|
+
"exclude_port" => Proc.new {|obj, rhs| obj.set_exclude_port rhs },
|
|
48
|
+
"exclude_port_func" => Proc.new {|obj, rhs| obj.set_exclude_port_func rhs },
|
|
49
|
+
"auto_exclude" => Proc.new {|obj, rhs| obj.set_auto_exclude rhs },
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
require_tecsgen_lib("MrubyBridgeCellPlugin.rb")
|
|
53
|
+
@@plugin_list = []
|
|
54
|
+
@@count = 1
|
|
55
|
+
|
|
56
|
+
# celltype:: Celltype セルタイプ(インスタンス)
|
|
57
|
+
def initialize(celltype, option)
|
|
58
|
+
dbgPrint "#{self.class.name}: initialzie: #{celltype.get_name}\n"
|
|
59
|
+
|
|
60
|
+
super
|
|
61
|
+
@celltype = celltype
|
|
62
|
+
@cell_list = []
|
|
63
|
+
@include_inner_cell = false
|
|
64
|
+
@exclude_cells = []
|
|
65
|
+
@exclude_port = []
|
|
66
|
+
@exclude_port_func = {}
|
|
67
|
+
@b_ignoreUnsigned = false
|
|
68
|
+
@b_auto_exclude = true # auto_exclude = true by default
|
|
69
|
+
@@plugin_list << self
|
|
70
|
+
|
|
71
|
+
@plugin_arg_check_proc_tab = MrubyBridgePluginArgProc
|
|
72
|
+
@plugin_arg_str = CDLString.remove_dquote option
|
|
73
|
+
parse_plugin_arg
|
|
74
|
+
|
|
75
|
+
MrubyBridgeCellPlugin.set_gen_post_code_by_dependent
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
#=== 新しいセル
|
|
79
|
+
# cell:: Cell セル
|
|
80
|
+
#
|
|
81
|
+
# celltype プラグインを指定されたセルタイプのセルが生成された
|
|
82
|
+
# セルタイププラグインに対する新しいセルの報告
|
|
83
|
+
# generate 文により呼び出された場合、それまでに定義された cell については、initialize のタイミングで呼び出される
|
|
84
|
+
def new_cell(cell)
|
|
85
|
+
dbgPrint "MrubyBridgeCelltypePluginModule: new_cell: #{cell.get_name}\n"
|
|
86
|
+
|
|
87
|
+
return if @cell_list.include? cell # この行は、本来不要のはず
|
|
88
|
+
if TECSGEN.post_coded? # post_code 以降のセルは対象から外す
|
|
89
|
+
cdl_info("I9999 MrubyBridgeCelltypePlugin: $1 is excluded because cell generated after post_coded", cell.get_name)
|
|
90
|
+
return
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# include_inner_cell option
|
|
94
|
+
if cell.is_cloned? && @include_inner_cell == false
|
|
95
|
+
# p "#{cell.get_name} excluded"
|
|
96
|
+
cdl_info("I9999 MrubyBridgeCelltypePlugin: inner cell $1 is excluded", cell.get_name)
|
|
97
|
+
return
|
|
98
|
+
# else
|
|
99
|
+
# p "#{cell.get_name} included"
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
# exclude_cell option
|
|
103
|
+
if @exclude_cells.include?(cell.get_name)
|
|
104
|
+
return
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
opt_str = "ignoreUnsigned=#{@b_ignoreUnsigned}, auto_exclude=#{@b_auto_exclude}"
|
|
108
|
+
@exclude_port.each{|port|
|
|
109
|
+
opt_str += ",exclude_port=#{port}"
|
|
110
|
+
}
|
|
111
|
+
@exclude_port_func.each{|port, funcs|
|
|
112
|
+
funcs.each{|func|
|
|
113
|
+
opt_str += ",exclude_port_func=#{port}.#{func}"
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
# p "MrubyBridgeCelltypePlugin: opt_str=#{opt_str}"
|
|
118
|
+
|
|
119
|
+
fn2 = "#{$gen}/tmp_MrubyBridgeCelltypePluginModule_#{@celltype.get_name}_#{@@count}.cdl"
|
|
120
|
+
f2 = File.open(fn2, "w")
|
|
121
|
+
f2.print <<EOT
|
|
122
|
+
/* MrubyBridgeCelltypePluginModule: celltype=#{@celltype.get_name} */
|
|
123
|
+
generate( MrubyBridgeCellPlugin, #{cell.get_namespace_path}, "#{opt_str}" );
|
|
124
|
+
EOT
|
|
125
|
+
f2.close
|
|
126
|
+
dbgPrint "MrubyBridgeCelltypePluginModule new_cell: Import #{fn2}\n"
|
|
127
|
+
Import.new fn2.to_s
|
|
128
|
+
@@count += 1
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
### 意味解析段階で呼び出されるメソッド ###
|
|
132
|
+
#=== CDL ファイルの生成
|
|
133
|
+
# typedef, signature, celltype, cell のコードを生成
|
|
134
|
+
# 重複して生成してはならない
|
|
135
|
+
# すでに生成されている場合は出力しないこと。
|
|
136
|
+
# もしくは同名の import により、重複を避けること。
|
|
137
|
+
# file:: FILE 生成するファイル
|
|
138
|
+
def gen_cdl_file(file)
|
|
139
|
+
# この段階で呼びだすと generate 文が呼び出される前のセルのみの出力となる
|
|
140
|
+
|
|
141
|
+
# dbgPrint "MrubyBridgeCelltypePlugin: gen_cdl_file: #{@celltype.get_name}\n"
|
|
142
|
+
# file.print <<EOT
|
|
143
|
+
# /* MrubyBridgeCelltypePlugin: celltype=#{@celltype.get_name}
|
|
144
|
+
# *
|
|
145
|
+
# * cell's generate before celltype's generate
|
|
146
|
+
# */
|
|
147
|
+
#
|
|
148
|
+
# EOT
|
|
149
|
+
# @celltype.get_cell_list.each { |cell|
|
|
150
|
+
# @cell_list << cell
|
|
151
|
+
# # mikan option, region
|
|
152
|
+
# dbgPrint "MrubyBridgeCelltypePlugin: cell=#{cell.get_name}\n"
|
|
153
|
+
# file.print <<EOT
|
|
154
|
+
# generate( MrubyBridgeCellPlugin, #{cell.get_namespace_path}, "" );
|
|
155
|
+
# EOT
|
|
156
|
+
# }
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
#=== tCelltype_factory.h に挿入するコードを生成する
|
|
160
|
+
# file 以外の他のファイルにファクトリコードを生成してもよい
|
|
161
|
+
# セルタイププラグインが指定されたセルタイプのみ呼び出される
|
|
162
|
+
def gen_factory(file)
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
def get_celltype
|
|
166
|
+
@celltype
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
@@b_gen_post_code_called = false
|
|
171
|
+
#=== 後ろの CDL コードを生成
|
|
172
|
+
# プラグインの後ろの CDL コードを生成
|
|
173
|
+
# file:: File:
|
|
174
|
+
def self.gen_post_code(file)
|
|
175
|
+
dbgPrint "#{self.name}: gen_post_code_body\n"
|
|
176
|
+
|
|
177
|
+
if @@b_gen_post_code_called == false
|
|
178
|
+
@@b_gen_post_code_called = true
|
|
179
|
+
MrubyBridgeCellPlugin.gen_post_code_body file
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
# この段階で生成すると、同じポストコードで出力される mruby の初期化コードに反映されない
|
|
183
|
+
|
|
184
|
+
# # MrubyBridgeCelltypePlugin の生成する generate 文は、
|
|
185
|
+
# fn2 = "#{$gen}/tmp_MrubyBridgeCelltypePlugin_post.cdl"
|
|
186
|
+
# f2 = File.open( fn2, "w" )
|
|
187
|
+
# # 複数のプラグインの post_code が一つのファイルに含まれるため、以下のような見出しをつけること
|
|
188
|
+
# dbgPrint "MrubyBridgeCelltypePlugin: gen_post_code\n"
|
|
189
|
+
# f2.print "/* '#{self.name}' post code */\n"
|
|
190
|
+
# @@plugin_list.each{ |plugin|
|
|
191
|
+
# plugin.get_celltype.get_cell_list.each{ |cell|
|
|
192
|
+
# # mikan option, region
|
|
193
|
+
# f2.print <<EOT
|
|
194
|
+
# generate( MrubyBridgeCellPlugin, #{cell.get_namespace_path}, "" );
|
|
195
|
+
# EOT
|
|
196
|
+
# }
|
|
197
|
+
# }
|
|
198
|
+
# f2.close
|
|
199
|
+
# p Import
|
|
200
|
+
# Import.new "#{fn2}"
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
#=== プラグイン引数
|
|
204
|
+
|
|
205
|
+
#=== プラグイン引数 ignoreUnsigned
|
|
206
|
+
def set_ignoreUnsigned(rhs)
|
|
207
|
+
if rhs == "true" || rhs.nil?
|
|
208
|
+
@b_ignoreUnsigned = true
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
def set_include_inner_cell(rhs)
|
|
213
|
+
if rhs == "true" || rhs.nil?
|
|
214
|
+
@include_inner_cell = true
|
|
215
|
+
end
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
def set_exclude_cell(rhs)
|
|
219
|
+
cells = rhs.split ","
|
|
220
|
+
cells.each{|rhs_cell|
|
|
221
|
+
rhs_cell.gsub!(/\s/, "")
|
|
222
|
+
@exclude_cells << rhs_cell.to_sym
|
|
223
|
+
}
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
def set_exclude_port(rhs)
|
|
227
|
+
ports = rhs.split ","
|
|
228
|
+
ct = @cell.get_celltype
|
|
229
|
+
return if ct.nil? # error case
|
|
230
|
+
ports.each{|rhs_port|
|
|
231
|
+
obj = ct.find(rhs_port.to_sym)
|
|
232
|
+
if (!obj.instance_of? Port) || obj.get_port_type != :ENTRY
|
|
233
|
+
cdl_error("MRB9999 exclude_port '$1' not found or not entry in celltype '$2'", rhs_port, ct.get_name)
|
|
234
|
+
else
|
|
235
|
+
# print "MRBBridgeCellPlugin: exclude #{rhs_port}\n"
|
|
236
|
+
@exclude_port << rhs_port
|
|
237
|
+
end
|
|
238
|
+
}
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
#=== プラグイン引数 exclude_port_func
|
|
242
|
+
def set_exclude_port_func(rhs)
|
|
243
|
+
port_funcs = rhs.split ","
|
|
244
|
+
ct = @celltype
|
|
245
|
+
return if ct.nil? # error case
|
|
246
|
+
port_funcs.each{|rhs_port_func|
|
|
247
|
+
port_func = rhs_port_func.split(".")
|
|
248
|
+
if port_func.length != 2
|
|
249
|
+
cdl_error("MRB9999 exclude_port_func: '$1' not in 'port.func' form", rhs_port_func)
|
|
250
|
+
end
|
|
251
|
+
obj = ct.find(port_func[0].to_sym)
|
|
252
|
+
if (!obj.instance_of? Port) || obj.get_port_type != :ENTRY
|
|
253
|
+
cdl_error("MRB9999 exclude_port_func: port '$1' not found in celltype '$2'", rhs_port_func, ct.get_name)
|
|
254
|
+
else
|
|
255
|
+
signature = obj.get_signature
|
|
256
|
+
next if signature.nil? # error case
|
|
257
|
+
if signature.get_function_head port_func[1].to_sym
|
|
258
|
+
# print "MRBBridgeCellPlugin: #{port_func[0]}.#{port_func[1]} exclude\n"
|
|
259
|
+
if @exclude_port_func[port_func[0]]
|
|
260
|
+
@exclude_port_func[port_func[0]] << port_func[1]
|
|
261
|
+
else
|
|
262
|
+
@exclude_port_func[port_func[0]] = [port_func[1]]
|
|
263
|
+
end
|
|
264
|
+
else
|
|
265
|
+
cdl_error("MRB9999 include_port_func: func '$1' not found in port '$2' celltype $3",
|
|
266
|
+
port_func[1], port_func[0], ct.get_name)
|
|
267
|
+
end
|
|
268
|
+
end
|
|
269
|
+
}
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
#=== プラグイン引数 auto_exclude
|
|
273
|
+
def set_auto_exclude(rhs)
|
|
274
|
+
# print "MrubyBridgeCellPlugin: auto_exclude=#{rhs}\n"
|
|
275
|
+
if rhs == "false"
|
|
276
|
+
@b_auto_exclude = false
|
|
277
|
+
elsif rhs == "true"
|
|
278
|
+
@b_auto_exclude = true # auto_exclude = true by default
|
|
279
|
+
else
|
|
280
|
+
cdl_warning("MRB9999 auto_exclude: unknown rhs value ignored. specify true or false")
|
|
281
|
+
end
|
|
282
|
+
end
|
|
283
|
+
end
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
module MrubyBridgeSignaturePluginModule
|
|
3
|
+
|
|
4
|
+
# プラグイン引数名 => Proc
|
|
5
|
+
MrubyBridgePluginArgProc = {
|
|
6
|
+
"ignoreUnsigned" => Proc.new { |obj,rhs| obj.set_ignoreUnsigned rhs },
|
|
7
|
+
"include" => Proc.new { |obj,rhs| obj.set_include rhs },
|
|
8
|
+
"exclude" => Proc.new { |obj,rhs| obj.set_exclude rhs },
|
|
9
|
+
"auto_exclude" => Proc.new { |obj,rhs| obj.set_auto_exclude rhs },
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
@@celltypes = { } # {celltype_name => [ BridgePlugin のインスタンスの配列 }
|
|
13
|
+
@@init_celltypes = { } # {celltype_name => [ BridgePlugin のインスタンスの配列 }
|
|
14
|
+
@@struct_list = { } # {struct_name=>StructType}
|
|
15
|
+
@@ptr_list = { } # {ptr_celltype_name=> @@TYPE_MAP の対応するもの}
|
|
16
|
+
@@VM_list = { } # VM_name => true
|
|
17
|
+
@@VM_celltypes = { } # VM_name => { @celltype_name => セルの配列 }
|
|
18
|
+
@@VM_struct_list = { } # {name=>StructType}
|
|
19
|
+
@@VM_ptr_list = { } # { VM_name => {name=> @@TYPE_MAP の対応するもの} }
|
|
20
|
+
@@TYPE_MAP = { # type_str class GET_SET
|
|
21
|
+
:char_t => [:char_t, "Char", :Char, :INT ],
|
|
22
|
+
:uchar_t => [:uchar_t, "UChar", :Char, :INT ],
|
|
23
|
+
:schar_t => [:schar_t, "SChar", :Char, :INT ],
|
|
24
|
+
|
|
25
|
+
:bool_t => [:bool_t, "Bool", :Bool, :BOOL ],
|
|
26
|
+
:int8_t => [:int8_t, "Int8", :Int, :INT ],
|
|
27
|
+
:int16_t => [:int16_t, "Int16", :Int, :INT ],
|
|
28
|
+
:int32_t => [:int32_t, "Int32", :Int, :INT ],
|
|
29
|
+
:int64_t => [:int64_t, "Int64", :Int, :INT ],
|
|
30
|
+
:uint8_t => [:uint8_t, "UInt8", :Int, :INT ],
|
|
31
|
+
:uint16_t => [:uint16_t, "UInt16", :Int, :INT ],
|
|
32
|
+
:uint32_t => [:uint32_t, "UInt32", :Int, :INT ],
|
|
33
|
+
:uint64_t => [:uint64_t, "UInt64", :Int, :INT ],
|
|
34
|
+
|
|
35
|
+
:int => [:int, "Int", :Int, :INT ],
|
|
36
|
+
:char => [:char, "Char", :Char, :INT ], # char は char_t として扱う
|
|
37
|
+
:short => [:short, "Short", :Int, :INT ],
|
|
38
|
+
:long => [:long, "Long", :Int, :INT ],
|
|
39
|
+
|
|
40
|
+
:"unsigned char" => [:uchar_t, "UChar", :Char, :INT ],
|
|
41
|
+
:"unsigned int" => [:"unsigned int", "UInt", :Int, :INT ],
|
|
42
|
+
:"unsigned short" => [:"unsigned short", "UShort", :Int, :INT ],
|
|
43
|
+
:"unsigned long" => [:"unsigned long", "ULong", :Int, :INT ],
|
|
44
|
+
:"signed char" => [:schar_t, "SChar", :Char, :INT ],
|
|
45
|
+
:"signed int" => [:int, "Int", :Int, :INT ],
|
|
46
|
+
:"signed short" => [:short, "Short", :Int, :INT ],
|
|
47
|
+
:"signed long" => [:long, "Long", :Int, :INT ],
|
|
48
|
+
|
|
49
|
+
:float32_t => [:float32_t, "Float32", :Float, :FLOAT ],
|
|
50
|
+
:double64_t => [:double64_t,"Double64", :Float, :FLOAT ],
|
|
51
|
+
|
|
52
|
+
:float => [:float, "Float32", :Float, :FLOAT ],
|
|
53
|
+
:double => [:double, "Double64", :Float, :FLOAT ]
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
def gen_preamble_ptr( file, b_singleton, ct_name, global_ct_name )
|
|
57
|
+
tment = @@ptr_list[ ct_name ]
|
|
58
|
+
file.print <<EOT
|
|
59
|
+
|
|
60
|
+
GET_SET_#{tment[3]}( #{tment[1]}, #{tment[0]} )
|
|
61
|
+
POINTER_CLASS( #{tment[1]}, #{tment[0]} )
|
|
62
|
+
EOT
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def gen_preamble_struct( file, b_singleton, ct_name, global_ct_name )
|
|
66
|
+
tag = ct_name
|
|
67
|
+
structType = @@struct_list[ tag ]
|
|
68
|
+
file.print <<EOT
|
|
69
|
+
/* struct #{tag} */
|
|
70
|
+
STRUCT_CLASS( #{tag} )
|
|
71
|
+
EOT
|
|
72
|
+
structType.get_members_decl.get_items.each{ |d|
|
|
73
|
+
type = d.get_type.get_original_type
|
|
74
|
+
case type
|
|
75
|
+
when IntType, CIntType
|
|
76
|
+
bit_size = type.get_bit_size
|
|
77
|
+
case bit_size
|
|
78
|
+
when -11, -1
|
|
79
|
+
tType = "Char"
|
|
80
|
+
ttype = "char"
|
|
81
|
+
when -2
|
|
82
|
+
tType = "Short"
|
|
83
|
+
ttype = "short"
|
|
84
|
+
when -3
|
|
85
|
+
tType = "Int"
|
|
86
|
+
ttype = "int"
|
|
87
|
+
when -4
|
|
88
|
+
tType = "Long"
|
|
89
|
+
ttype = "long"
|
|
90
|
+
when -5
|
|
91
|
+
tType = "IntPtr"
|
|
92
|
+
ttype = "intptr"
|
|
93
|
+
when 8, 16, 32, 64
|
|
94
|
+
tType = "Int#{bit_size}"
|
|
95
|
+
ttype = "int#{bit_size}"
|
|
96
|
+
else
|
|
97
|
+
raise "MrubyBridgeSignaturePlugin: MrubyBridgeSignaturePlugin: cannot handle bit_size #{bit_size}"
|
|
98
|
+
end
|
|
99
|
+
file.print "MEMBER_GET_SET_INT( #{tag}, #{d.get_name}, #{tType}, #{ttype} )\n"
|
|
100
|
+
when FloatType, CFloatType
|
|
101
|
+
file.print "MEMBER_GET_SET_FLOAT( #{tag}, #{d.get_name} )\n"
|
|
102
|
+
else
|
|
103
|
+
raise "MrubyBridgeSignaturePlugin: MrubyBridgeSignaturePlugin: cannot handle type"
|
|
104
|
+
end
|
|
105
|
+
}
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def gen_ep_func_body_ptr( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
|
|
109
|
+
|
|
110
|
+
t = @@ptr_list[ct_name]
|
|
111
|
+
type = t[1]
|
|
112
|
+
file.print <<EOT
|
|
113
|
+
struct RClass *a; /* MBP710 */
|
|
114
|
+
|
|
115
|
+
a = mrb_define_class_under(mrb, TECS, "#{type}Pointer", mrb->object_class);
|
|
116
|
+
MRB_SET_INSTANCE_TT(a, MRB_TT_DATA);
|
|
117
|
+
|
|
118
|
+
mrb_define_method(mrb, a, "initialize", #{type}Pointer_initialize, MRB_ARGS_REQ(1));
|
|
119
|
+
mrb_define_method(mrb, a, "[]", #{type}Pointer_aget, MRB_ARGS_REQ(1));
|
|
120
|
+
mrb_define_method(mrb, a, "value", #{type}Pointer_get_val, MRB_ARGS_NONE());
|
|
121
|
+
mrb_define_method(mrb, a, "[]=", #{type}Pointer_aset, MRB_ARGS_REQ(2));
|
|
122
|
+
mrb_define_method(mrb, a, "value=", #{type}Pointer_set_val, MRB_ARGS_REQ(1));
|
|
123
|
+
mrb_define_method(mrb, a, "size", #{type}Pointer_size, MRB_ARGS_NONE());
|
|
124
|
+
mrb_define_method(mrb, a, "length", #{type}Pointer_size, MRB_ARGS_NONE());
|
|
125
|
+
EOT
|
|
126
|
+
|
|
127
|
+
if t[2] == :Char then
|
|
128
|
+
file.print <<EOT
|
|
129
|
+
mrb_define_method(mrb, a, "to_s", CharPointer_to_s, MRB_ARGS_NONE());
|
|
130
|
+
mrb_define_method(mrb, a, "from_s", CharPointer_from_s, MRB_ARGS_REQ(1));
|
|
131
|
+
EOT
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def gen_ep_func_body_struct( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
|
|
136
|
+
tag = ct_name
|
|
137
|
+
structType = @@struct_list[ tag ]
|
|
138
|
+
file.print <<EOT
|
|
139
|
+
struct RClass *a; /* MBP720 */
|
|
140
|
+
|
|
141
|
+
a = mrb_define_class_under(mrb, TECS, "Struct#{tag}", mrb->object_class);
|
|
142
|
+
MRB_SET_INSTANCE_TT(a, MRB_TT_DATA);
|
|
143
|
+
|
|
144
|
+
mrb_define_method(mrb, a, "initialize", Struct_#{tag}_initialize, MRB_ARGS_NONE());
|
|
145
|
+
EOT
|
|
146
|
+
|
|
147
|
+
structType.get_members_decl.get_items.each{ |d|
|
|
148
|
+
file.print " STRUCT_INIT_MEMBER( #{tag}, #{d.get_name} )\n"
|
|
149
|
+
}
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def ptrMrb2C file, type, param
|
|
153
|
+
ttype = type.get_type.get_original_type
|
|
154
|
+
tment = get_type_map_ent ttype
|
|
155
|
+
tstr = tment[1]
|
|
156
|
+
=begin
|
|
157
|
+
case ttype
|
|
158
|
+
when IntType
|
|
159
|
+
bit_size = ttype.get_bit_size
|
|
160
|
+
case bit_size
|
|
161
|
+
when -1, -11
|
|
162
|
+
tstr = "Char"
|
|
163
|
+
when 8, 16, 32, 64
|
|
164
|
+
tstr = "Int#{bit_size}"
|
|
165
|
+
when -2
|
|
166
|
+
tstr = "Short"
|
|
167
|
+
when -3
|
|
168
|
+
tstr = "Int"
|
|
169
|
+
when -4
|
|
170
|
+
tstr = "Long"
|
|
171
|
+
when -5
|
|
172
|
+
tstr = "IntPtr"
|
|
173
|
+
else
|
|
174
|
+
raise "MrubyBridgeSignaturePlugin: not handle type"
|
|
175
|
+
end
|
|
176
|
+
when FloatType
|
|
177
|
+
if ttype.get_bit_size == 32 then
|
|
178
|
+
tstr = "Float32"
|
|
179
|
+
else
|
|
180
|
+
tstr = "Double64"
|
|
181
|
+
end
|
|
182
|
+
when BoolType
|
|
183
|
+
tstr = "Bool"
|
|
184
|
+
when StructType
|
|
185
|
+
raise "MrubyBridgeSignaturePlugin: not handle type 2 #{ttype}"
|
|
186
|
+
else
|
|
187
|
+
raise "MrubyBridgeSignaturePlugin: not handle type 2 #{ttype}"
|
|
188
|
+
end
|
|
189
|
+
=end
|
|
190
|
+
if( param.get_size ) then
|
|
191
|
+
sz_str = param.get_size.to_s
|
|
192
|
+
elsif param.get_string then # mikan とりあえず size_is と string の同時指定 (二重ポインタ) はなし
|
|
193
|
+
sz_str = param.get_string.to_s
|
|
194
|
+
else
|
|
195
|
+
sz_str = "1"
|
|
196
|
+
end
|
|
197
|
+
# unsigned 型の場合には cast が必要
|
|
198
|
+
if ttype.get_original_type.get_type_str != param.get_type.get_type.get_type_str then
|
|
199
|
+
cast_str = "(#{param.get_type.get_type_str})"
|
|
200
|
+
else
|
|
201
|
+
cast_str = ""
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
modify = ""
|
|
205
|
+
case param.get_direction
|
|
206
|
+
when :OUT, :INOUT
|
|
207
|
+
case tstr
|
|
208
|
+
when "Char", "SChar", "UChar"
|
|
209
|
+
modify = "Mod"
|
|
210
|
+
end
|
|
211
|
+
end
|
|
212
|
+
if param.is_nullable? then
|
|
213
|
+
nullable = "Nullable"
|
|
214
|
+
else
|
|
215
|
+
nullable = ""
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
# file.print " CHECK_POINTER( #{tstr}, mrb_#{param.get_name}, #{sz_str} );\n"
|
|
219
|
+
# file.print " #{param.get_name} = #{cast_str}((struct #{tstr}PointerBody*)(DATA_PTR(mrb_#{param.get_name})))->buf;\n"
|
|
220
|
+
file.print " #{param.get_name} = CheckAndGet#{tstr}Pointer#{modify}#{nullable}( mrb, mrb_#{param.get_name}, #{sz_str} );\n"
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
def get_celltype_name
|
|
224
|
+
@celltype_name
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
#=== プラグイン引数 ignoreUnsigned
|
|
228
|
+
def set_ignoreUnsigned rhs
|
|
229
|
+
if rhs == "true" || rhs == nil then
|
|
230
|
+
@b_ignoreUnsigned = true
|
|
231
|
+
end
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
#=== プラグイン引数 include
|
|
235
|
+
def set_include rhs
|
|
236
|
+
funcs = rhs.split ','
|
|
237
|
+
funcs.each{ |rhs_func|
|
|
238
|
+
found = false
|
|
239
|
+
rhs_func.gsub!( /\s/, "" )
|
|
240
|
+
@signature.get_function_head_array.each{ |a|
|
|
241
|
+
if rhs_func.to_sym == a.get_name then
|
|
242
|
+
found = true
|
|
243
|
+
end
|
|
244
|
+
}
|
|
245
|
+
if found == false then
|
|
246
|
+
cdl_error( "MRB1009 include function '$1' not found in signagture '$2'", rhs, @signature.get_name )
|
|
247
|
+
else
|
|
248
|
+
@includes << rhs_func.to_sym
|
|
249
|
+
end
|
|
250
|
+
}
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
#=== プラグイン引数 exclude
|
|
254
|
+
def set_exclude rhs
|
|
255
|
+
funcs = rhs.split ','
|
|
256
|
+
funcs.each{ |rhs_func|
|
|
257
|
+
rhs_func.gsub!( /\s/, "" )
|
|
258
|
+
func_head = @signature.get_function_head rhs_func.to_sym
|
|
259
|
+
if func_head == false then
|
|
260
|
+
cdl_error( "MRB1010 exclude function '$1' not found in signagture '$2", rhs, @signature.get_name )
|
|
261
|
+
else
|
|
262
|
+
@excludes << rhs_func.to_sym
|
|
263
|
+
end
|
|
264
|
+
}
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
#=== プラグイン引数 auto_exclude
|
|
268
|
+
def set_auto_exclude rhs
|
|
269
|
+
if rhs == "false" then
|
|
270
|
+
@b_auto_exclude = false
|
|
271
|
+
elsif rhs == "true" then
|
|
272
|
+
@b_auto_exclude = true # auto_exclude = true by default
|
|
273
|
+
else
|
|
274
|
+
cdl_warning( "MRB9999 auto_exclude: unknown rhs value ignored. specify true or false" )
|
|
275
|
+
end
|
|
276
|
+
end
|
|
277
|
+
end
|