1 | MrubyBridgePlugin ã«é¢ããã¡ã¢
|
---|
2 | 2012å¹´11æ 7æ¥ãåçä½æ
|
---|
3 | 2013å¹´ 5æ26æ¥ãè¦ç´ã
|
---|
4 | 大山ãåå¸
|
---|
5 |
|
---|
6 | ãæ¦è¦ã
|
---|
7 |
|
---|
8 | MrubyBridgePlugin ã¯ãTECS CDL ã® signature è¨è¿°ã«åºã¥ããmruby 㨠TECS
|
---|
9 | ã³ã³ãã¼ãã³ããããªãã¸ãããmruby ã® C è¨èªå®è£
|
---|
10 | ã¯ã©ã¹ã§ãã TECS ã®ã»
|
---|
11 | ã«ã¿ã¤ãã¨ãªãã³ã³ãã¼ãã³ããçæãããTECS ã®ã·ã°ããã£ãã©ã°ã¤ã³ã§ã
|
---|
12 | ãã
|
---|
13 |
|
---|
14 | ãæ§é ã
|
---|
15 |
|
---|
16 | +--------------------------+ +-------------------+
|
---|
17 | | (ããªãã¸ã»ã«) | | (ç®çã»ã«) |
|
---|
18 | | | | |
|
---|
19 | mruby | nMruby::tsSignatureBridge| sSignature | tTargetCelltype |
|
---|
20 | - - - > | BridgeCell |--------------|> TargetCell |
|
---|
21 | | |cTECS eTest| |
|
---|
22 | | mruby ã¯ã©ã¹ï¼ | | |
|
---|
23 | | TECS::TSignatureBridge | | |
|
---|
24 | +--------------------------+ +-------------------+
|
---|
25 |
|
---|
26 | MrubyBridgePlugin ã¯ãmruby ãã TECS ã¸ããªãã¸ãããã»ã«ã¿ã¤ããçæ
|
---|
27 | ãããmruby=>TECS ãããªãã¸ããã»ã«ã¯ããã®ã»ã«ã¿ã¤ãã®ã»ã«ã¨ãã¦ãã
|
---|
28 | ã©ã°ã¤ã³ã®å©ç¨è
|
---|
29 | ã CDL å
|
---|
30 | ã«è¨ç½®ããmruby ããæä½ãããã»ã«ãããªãã¡
|
---|
31 | ç®çã»ã«ã«çµåããã
|
---|
32 |
|
---|
33 | ãã®ã»ã«ã¿ã¤ãã¯ãmruby ã®ã¯ã©ã¹ã®å®ç¾©ãè¡ããããªãã¸ã»ã«ã mruby ã®
|
---|
34 | ã¤ã³ã¹ã¿ã³ã¹ã¨ãã¦åãæ±ããããã«ããmruby ã®ã¤ã³ã¹ã¿ã³ã¹ã¡ã½ããã®å¼
|
---|
35 | ã³åºãã«å¿ãã¦ãç®çã»ã«ã®åãå£é¢æ°ãå¼ã³åºãåããæã¤ã
|
---|
36 |
|
---|
37 | ãç°¡åãªä½¿ç¨ä¾ã
|
---|
38 |
|
---|
39 | ç°¡åãªä½¿ç¨ä¾ã¯ãSimpleSample.cdl ããã³ SimpleSample.rb ã«ããã
|
---|
40 | MrubyBrigePlugin ã¯ã·ã°ããã£ãã©ã°ã¤ã³ã§ãããã·ã°ããã£ãã©ã°ã¤ã³ã®
|
---|
41 | 使ç¨æ¹æ³ãç解ãã¦ããã°ããããã®ã½ã¼ã¹ãã¡ã¤ã«ã®ã³ã¡ã³ããåç
|
---|
42 | §ããã
|
---|
43 | ã¨ã§ãMrubyBrigePlugin ã®å¤§ããã®ä½¿ãæ¹ã¯ç解ã§ããã¯ãã§ããã
|
---|
44 | 以ä¸ã®æ¹æ³ã§ããã«ãããã³å®è¡ã§ããã
|
---|
45 |
|
---|
46 | % make # mruby æ¬ä½ã®ãã«ã (.a ãä½æ)
|
---|
47 | % cd MrubyBridge # MrubyBridge ã¸ç§»å
|
---|
48 | % make # ãã«ã
|
---|
49 | % ./mruby-Sample SimpleSample.rb # å®è¡
|
---|
50 |
|
---|
51 | ãMakefile ã®æ§æã
|
---|
52 |
|
---|
53 | tecsgen ã«ããçæããã gen/Makefile.templ ã«å¯¾ãã以ä¸ã®å¤æ´ãå ããå¿
|
---|
54 | è¦ãã
|
---|
55 | ãã
|
---|
56 |
|
---|
57 | ã»gen/Makefile.temp ã¯ãä¸ã¤ä¸ã®ãã£ã¬ã¯ããªã¸ Makefile ã¨ããååã§ç½®
|
---|
58 | ãã°ãcygwin ãªã©ã® POSIX ç°å¢ã§è©¦é¨å®è¡ããå ´åã«ã¯ãç¡èª¿æ´ã§ä½¿ç¨ã§
|
---|
59 | ããããã«çæããã(ãã ã gnu make ã使ç¨ãã)
|
---|
60 | ã»tSysLog ã使ãå ´åããªãã±ã¼ã¿ãã«ãªãã¸ã§ã¯ãã追å (ä¸è¡åç
|
---|
61 | §)
|
---|
62 | OTHER_OBJS = $(_TECS_OBJ_DIR)vasyslog.o
|
---|
63 |
|
---|
64 | ããã¼ã¿åã
|
---|
65 |
|
---|
66 | MrubyBridgePlugin ã¯ã以ä¸ã® TECS ã®åãæ±ããã¨ãã§ãã (å¶éããã)ã
|
---|
67 | ãã®å¶éã¯ãMrubyBridgePlugin ãé©ç¨ãããã¨ããã·ã°ããã£ã«å¯¾ãããã®ã§ããã
|
---|
68 | ãã以å¤ã¸å¶éãããã¶ãã®ã§ã¯ãªãã
|
---|
69 |
|
---|
70 | ã¹ã«ã©ã¼å bool_t, char_t, intN_t, double64_t, float32_t
|
---|
71 | (N=8,16,32,64)
|
---|
72 | int, short, long, char (TECS éæ¨å¥¨ã®å)
|
---|
73 |
|
---|
74 | ãã¤ã³ã¿å bool_t*, char_t*, intN_t*, double64_t*, float32_t*
|
---|
75 | int*, short*, long*, char*
|
---|
76 | æ§é ä½åã¸ã®ãã¤ã³ã¿ï¼æ§é ä½åã¨åãå¶éããï¼
|
---|
77 |
|
---|
78 | ãããã¯ããã¤ã³ã¿ã®æãã¦ããå
|
---|
79 | ã®å¤ãæ±ãããã®ã
|
---|
80 | ã®ã§ããããã¤ã³ã¿å¤(ã¢ãã¬ã¹)ã渡ãããå ´åã«ã¯ã
|
---|
81 | ãããã使ç¨ã§ããªãã代ããã« intptr_t, uintptr_t
|
---|
82 | ã使ç¨ããã
|
---|
83 |
|
---|
84 | size_is, string æå®åãã/ãªãã®ããããæ±ããã
|
---|
85 | ãã ãæ§é ä½åã¸ã®ãã¤ã³ã¿ã« size_is æå®ãããã
|
---|
86 | ã®ã¯æ±ããªãã(ä»æ§æ¸ã«æè¨ããã¦ããªããæ§é ä½ã
|
---|
87 | ã¤ã³ã¿ã® string ã¯ãå
|
---|
88 | ã
|
---|
89 | ãµãã¼ããããªã)
|
---|
90 |
|
---|
91 | string ã®é·ãæå®ããªãå ´åãin å¼æ°ã«å¯¾ãã¦ã®ã¿ç¨
|
---|
92 | ãããã¨ãã§ããã
|
---|
93 |
|
---|
94 | æ§é ä½å ã¡ã³ãã¯ãã¹ã«ã©ã¼åã§ãªãã¦ã¯ãªããªã
|
---|
95 |
|
---|
96 | typedefå ä¸è¨ã®ã¹ã«ã©ã¼åãæ§é ä½åããã¤ã³ã¿åã® typedef
|
---|
97 | ãããåãæ±ããã¨ãã§ãããå
|
---|
98 | ã®åã¨ãã¦æ±ãããã
|
---|
99 | ãã®ãããã¤ã³ã¿åãæ§é ä½åã®å ´åãå
|
---|
100 | ã®ååã«ãã
|
---|
101 | ããããæ±ãããã® mruby ã¯ã©ã¹ãæå®ããã
|
---|
102 |
|
---|
103 | ã対å¿ãã mruby ã®å(ã¯ã©ã¹)ã
|
---|
104 |
|
---|
105 | bool_t true ã¾ã㯠falseã
|
---|
106 | mruby 㧠false ã¨è¦ãªããããã®(false ã¾ã㯠nil)
|
---|
107 | ã C ã® false ã¨ãã¦æ±ããmruby 㧠false ã¨è¦ãªã
|
---|
108 | ããªããã®ã C ã® true ã¨ãã¦æ±ããæ´æ°å¤ 0 ã¯ã
|
---|
109 | mruby ã§ã¯ false ã¨ã¯è¦ãªãããªãã
|
---|
110 | char_t FIXNUM (å¤ã¯ 0..255)
|
---|
111 | schar_t FIXNUM (å¤ã¯ -128..127)
|
---|
112 | uchar_t FIXNUM (å¤ã¯ 0..255)
|
---|
113 | intN_t FIXNUM
|
---|
114 | uintN_t FIXNUM
|
---|
115 | double64_t FLOAT (mruby ã® FLOAT ã double ã float ãã¯å®è£
|
---|
116 |
|
---|
117 | ã«ãã)
|
---|
118 | float32_t FLOAT
|
---|
119 | int FIXNUM
|
---|
120 | short FIXNUM
|
---|
121 | long FIXNUM
|
---|
122 | char FIXNUM (char_t ã¨åã)
|
---|
123 |
|
---|
124 | ã»TECS å°ç¨ã®ã¯ã©ã¹ãç¨ãããã®
|
---|
125 |
|
---|
126 | bool_t* TECS::BoolPointer
|
---|
127 | char_t* TECS::CharPointer
|
---|
128 | uchar_t* TECS::UCharPointer
|
---|
129 | schar_t* TECS::SCharPointer
|
---|
130 | intN_t* TECS::IntNPointer N:8,16,32,64
|
---|
131 | uintN_t* TECS::UIntNPointer N:8,16,32,64
|
---|
132 | float32_t* TECS::Float32Pointer
|
---|
133 | double64_t* TECS::Double64Pointer
|
---|
134 | int* TECS::IntPointer
|
---|
135 | short* TECS::ShortPointer
|
---|
136 | long* TECS::LongPointer
|
---|
137 | char* TECS::CharPointer (char_t* ã¨åã)
|
---|
138 |
|
---|
139 | struct TAG TECS:TECSStructTAG
|
---|
140 | struct TAG* TECS:TECSStructTAG
|
---|
141 | TAG ã®é¨åã¯ãæ§é ä½ã®ã¿ã°åã«ç½®ãæãããé¢æ°ã¸ã®
|
---|
142 | å¼æ°ã¨ãã¦ãæ§é ä½ã渡ãããæ§é ä½ã¸ã®ãã¤ã³ã¿ã渡
|
---|
143 | ããã¯ããã©ã°ã¤ã³ãèªåã§å¤å®ãããTAG åãä»ãã¦
|
---|
144 | ããªãæ§é ä½ãæ±ããã¨ã¯ã§ããªããtypedef ããåå
|
---|
145 | ã§æ§é ä½ãæ±ããã¨ã¯ã§ããªãã
|
---|
146 |
|
---|
147 | ã»ãã®ä»
|
---|
148 |
|
---|
149 | void * ã¯æ±ããªã
|
---|
150 | intptr_t ã¯ãé常 stdint.h 㧠typedef ããã¦ããããå
|
---|
151 | ã®åã¨ãã¦æ±ã
|
---|
152 |
|
---|
153 | ãã©ã°ã¤ã³å¼æ°ã¨ã㦠ignoreUnsigned=true ãæå®ããã¨ãç¡ç¬¦å·æ´æ°åã¸
|
---|
154 | ã®ãã¤ã³ã¿åãæ符å·æ´æ°åã®ãã¤ã³ã¿åã¨ãã¦æ±ãï¼å¤ã®ç¯å²ãã§ãã¯ãå«
|
---|
155 | ãï¼ããã¤ã³ã¿ãæ±ãã¯ã©ã¹ã®ã¡ã¢ãªä½¿ç¨éãæãããã¨ãæ符å·ãç¡ç¬¦å·ã®
|
---|
156 | 使ãåããã«ã¼ãºã«ãããã¨ãã§ããã
|
---|
157 |
|
---|
158 | ãã«ãæã®ãªãã·ã§ã³ (C è¨èªã®ãã¯ãå®ç¾©) TECS_NO_VAL_CHECK ãæå®ãã
|
---|
159 | ãã¨ã§ãå¤ã®ç¯å²ãã§ãã¯ãè¡ããªãããã«ãããã¨ãã§ããã
|
---|
160 |
|
---|
161 | ãé¢æ°åã
|
---|
162 |
|
---|
163 | ã»é¢æ°åã«é¢æ°ããå¶é
|
---|
164 |
|
---|
165 | é¢æ°å initialize 㯠ruby ã§æ¢å®ã®ã¡ã½ããåã¨éè¤ãããããinitialize_cell
|
---|
166 | ã«ç½®æãããã
|
---|
167 |
|
---|
168 | initialize 㨠initialize_cell ã®ä¸¡æ¹ã signature å
|
---|
169 | ã«åå¨ããå ´åãã¨ã©ã¼ã¨
|
---|
170 | ãªããã¨ã©ã¼ã解æ¶ããã«ã¯ãå°ãªãã¨ãä¸æ¹ã®ååãå¤æ´ããå¿
|
---|
171 | è¦ãããã
|
---|
172 |
|
---|
173 | ãæ»ãå¤ã
|
---|
174 |
|
---|
175 | æ»ãå¤ã§æ±ããã®ã¯ã以ä¸ã®åã«éãããã
|
---|
176 |
|
---|
177 | void, bool_t, char_t, intN_t, float32_t, double64_t
|
---|
178 | int, short, long, char
|
---|
179 | å
|
---|
180 | ã®åãããããã§ãã typedef ãããå
|
---|
181 |
|
---|
182 | ãå¼æ°ã
|
---|
183 |
|
---|
184 | ã»é åºã®éã対å¿ãã mruby ã®åï¼ã¯ã©ã¹ï¼ã®å¤ãå¼æ°ã¨ãã¦æ¸¡ã
|
---|
185 | ã»æå®å¯è½ãªåºæ¬æå®å in, inout, out (send/receive ã¯ä¸å¯)
|
---|
186 | ã»ä¾å¤ã®çºç
|
---|
187 | ã»æ´æ°ã®å¤ããå¼æ°ã®åã®ç¯å²ãè¶
|
---|
188 | ãã¦ããå ´åãä¾å¤ãçºçããã
|
---|
189 | ç¡ç¬¦å·åã®å ´åãè² ã®å¤ãåããã¨ã¯ã§ããªãããã ããmrb_int ã¨åã
|
---|
190 | ã¾ãã¯ãã以ä¸ã®ãµã¤ãºã®å ´åã«ã¯ãè² ã®å¤ãæå®ããã¦ãä¾å¤ã¨ã¯ããª
|
---|
191 | ãããããªãã¨æä¸ä½ãããã 1 ã®å¤ãå
|
---|
192 | ¥åã§ããªãããã
|
---|
193 | char_t (char) ã¯ç¡ç¬¦å·ã¨è¦ãªãããã
|
---|
194 | ãªã uintptr_t ã« 0x80000000 ã«ã渡ãéã« RangeError ä¾å¤ãçºçã
|
---|
195 | ããããã㯠mruby ã«ãããã®ã§ãããTECS ã«ããå¶éã§ã¯ãªã
|
---|
196 | ã»ãã¤ã³ã¿åãæ§é ä½åã«å¯¾å¿ãã mruby ã®å(ã¯ã©ã¹) ã¨ä¸è´ããªã
|
---|
197 | ã»size_is, string ã®ãµã¤ãºãå°ãã
|
---|
198 |
|
---|
199 | ãåèã
|
---|
200 |
|
---|
201 | TECSPointer.txt
|
---|
202 |
|
---|
203 | 以ä¸ã® mruby ã¯ã©ã¹ãããªãã¡ TECS ã®ãã¤ã³ã¿å¤ãæ±ãããã®ã¯ã©ã¹ã«
|
---|
204 | ã¤ãã¦ã®èª¬æã
|
---|
205 | ããããã®ã¯ã©ã¹ã¯å¿
|
---|
206 | è¦ã«å¿ãã¦çæããããå¼æ°ã¨ãã¦ä½¿ç¨ããã¦ããªãã¯
|
---|
207 | ã©ã¹ã¯çæãããªãã
|
---|
208 |
|
---|
209 | TECS::Int8Pointer, TECS::Int16Pointer, TECS::Int32Pointer
|
---|
210 | TECS::Int64Pointer, TECS::UInt64Pointer
|
---|
211 | TECS::UInt8Pointer, TECS::UInt16Pointer, TECS::UInt32Pointer
|
---|
212 | TECS::CharPointer, TECS::SCharPointer, TECS::UCharPointer
|
---|
213 | TECS::IntPointer, TECS::ShortPointer, TECS::LongPointer
|
---|
214 | TECS::UIntPointer, TECS::UShortPointer, TECS::ULongPointer
|
---|
215 | TECS::BoolPointer, TECS::Float32Pointer, TECS::Double64Pointer
|
---|
216 |
|
---|
217 | TECSStruct.txt
|
---|
218 |
|
---|
219 | 以ä¸ã® mruby ã¯ã©ã¹ãããªãã¡ TECS ã®æ§é ä½ï¼ãã¤ã³ã¿ï¼å¤ãæ±ããã
|
---|
220 | ã®ã¯ã©ã¹ã«ã¤ãã¦ã®èª¬æã
|
---|
221 |
|
---|
222 | TECS::StructTAG
|
---|
223 |
|
---|
224 | ãTECS CDLã«ããè¨è¿°ã
|
---|
225 |
|
---|
226 | ããªãã¸ãã©ã°ã¤ã³ã«ãããããªãã¸ã»ã«ã¿ã¤ããèªåçæãããã
|
---|
227 | ããªãã¸ã»ã«ã¯ãCDL ã«è¨è¿°ãã¦è¨ç½®ããå¿
|
---|
228 | è¦ããã
|
---|
229 |
|
---|
230 | ã»ããªãã¸ãã©ã°ã¤ã³ã®å¼åºã
|
---|
231 |
|
---|
232 | mruby=>TECS ããªãã¸ãã©ã°ã¤ã³ã¯ãã·ã°ããã£ãã©ã°ã¤ã³ã§ãããCDL ä¸ã®ä»¥ä¸ã®ã
|
---|
233 | ããªè¨è¿°ã«ãããmruby=>TECS ããªãã¸ãã©ã°ã¤ã³ãå¼ã³åºãã
|
---|
234 |
|
---|
235 | ex)
|
---|
236 | generate( MrubyBridgePlugin, sSignature, "" );
|
---|
237 |
|
---|
238 | ã·ã°ãã㣠sSignature ã¯ããã®è¨è¿°ãããåã«å®ç¾©ããã¦ããªãã¦ã¯ãªããªãã
|
---|
239 | ãã® generate ã®è¨è¿°ã«ããã次ã®ãããªããªãã¸ã»ã«ã¿ã¤ããçæãããã
|
---|
240 |
|
---|
241 | generate ã®ç¬¬3å¼æ°ã¯ããã©ã°ã¤ã³å¼æ°ï¼ãªãã·ã§ã³ï¼ã§ããã
|
---|
242 |
|
---|
243 | ignoreUnsigned true ãæå®ããã¨ç¡ç¬¦å·æ´æ°ã¸ã®ãã¤ã³ã¿åã«æ符å·ã®ã
|
---|
244 | ã¤ã³ã¿ã¯ã©ã¹ã使ç¨ããï¼ã¡ã¢ãªãç¯ç´ã§ããï¼
|
---|
245 | ããã©ã«ã㯠false ã§ããã
|
---|
246 | include ããªãã¸ã«å«ããé¢æ°ãæå®ãããexclude ã¨åææå®ä¸å¯ã
|
---|
247 | exclude ããªãã¸ã«å«ããé¢æ°ãæå®ãããinclude ã¨åææå®ä¸å¯ã
|
---|
248 |
|
---|
249 | ex)
|
---|
250 | generate( MrubyBridgePlugin, sSignature, "exclude=fun99" );
|
---|
251 |
|
---|
252 | å¤ãã®é¢æ°ãæå®ããå ´åã以ä¸ã®ããã«ãåå²ããæååã®é£æ¥ã¨ãã¦å¸«å®
|
---|
253 | ãããã¨ãã§ãã¾ãã
|
---|
254 |
|
---|
255 | ex)
|
---|
256 | generate( MrubyBridgePlugin, sSignature,
|
---|
257 | "ignoreUnsigned=true, "
|
---|
258 | "include='func1,func2', "
|
---|
259 | "include='func3,func4', "
|
---|
260 | );
|
---|
261 |
|
---|
262 | ã»ããªãã¸ã»ã«ã¿ã¤ã
|
---|
263 |
|
---|
264 | ããªãã¸ã»ã«ã¿ã¤ãã¯ããã¼ã ã¹ãã¼ã¹ nMruby ã®ä¸ã«ä½ããããããªãã¸
|
---|
265 | ã»ã«ã¿ã¤ãã®ååã¯ãã·ã°ããã£åã« 't' ãåç½®ããããã®ã§ããã以ä¸ã¯ã
|
---|
266 | ããªãã¸ãã©ã°ã¤ã³ã«ããèªåçæãããã»ã«ã¿ã¤ãã®ã³ã¼ãã®ä¾ã§ãããã·
|
---|
267 | ã°ãã㣠sSignature ã«å¯¾ããããªãã¸ã»ã«ã¿ã¤ãå㯠tsSignature ã§ããã
|
---|
268 | å¼ã³å£cTECS ãæã¤ã
|
---|
269 |
|
---|
270 | ex) èªåçæããã CDL ã³ã¼ãï¼å
|
---|
271 | é¨ã§çæããã解éãããï¼
|
---|
272 |
|
---|
273 | namespace nMruby {
|
---|
274 | celltype SSignature{
|
---|
275 | call sSignature cTECS;
|
---|
276 | };
|
---|
277 | };
|
---|
278 |
|
---|
279 | ã»ããªãã¸ã»ã«ã®è¨ç½®
|
---|
280 |
|
---|
281 | ããªãã¸ã»ã«ã¯ãããªãã¸ã»ã«ã¿ã¤ãã®ã»ã«ã¨ãã¦çæãããããªãã¸ã»ã«
|
---|
282 | ã®è¨ç½®ã¯ CDL ã®è¨è¿°è
|
---|
283 | ãè¡ããã®ã§ãããããªãã¸ã»ã«ã®å¼ã³å£ cTECS ã
|
---|
284 | mRuby ããå¼ã³åºãããã»ã«ã¸çµåããã
|
---|
285 |
|
---|
286 | ex) ããªãã¸ã»ã«ãè¨ç½®ãã CDL è¨è¿°
|
---|
287 |
|
---|
288 | cell nMruby::tsSignature BridgeCell {
|
---|
289 | cTECS = Cell.eEnt;
|
---|
290 | };
|
---|
291 |
|
---|
292 | ex) ããªãã¸ã»ã«ãè¨ç½®ãã CDL è¨è¿°(VM åæå®ãã)
|
---|
293 |
|
---|
294 | cell nMruby::tsSignature BridgeCell {
|
---|
295 | cTECS = Cell.eEnt;
|
---|
296 | VMname = "VM2";
|
---|
297 | };
|
---|
298 |
|
---|
299 | VMname 㯠mruby VM ã®ã»ã«ã®ååã®æå®ã§ãããVMname ãæå®ããªãå ´åã
|
---|
300 | "VM" ãä»®å®ããããVMname ã¯ãå®éã«ã¯ãVM_TECSInitializer ãªã©ã®ã
|
---|
301 | ãã«ãããªãã¸ãç»é²ããã»ã«ã®ãã»ã«åã«ç¨ãããããtecsgen å®è¡æã«
|
---|
302 | 以ä¸ã®ãããªã¡ãã»ã¼ã¸ãåºåããããåãå£
|
---|
303 | VM_TECSInitializer.eInitialize 㸠VM ã®åæåç¨å¼ã³å£ããçµåããã
|
---|
304 |
|
---|
305 | MrubyBridgePlugin: join your VMs cInitialize to VM_TECSInitializer.eInitialize
|
---|
306 |
|
---|
307 | ãmruby ã³ã¼ãã
|
---|
308 |
|
---|
309 | ããªãã¸ãã©ã°ã¤ã³ãé©ç¨ãããã·ã°ããã£ã«å¯¾å¿ãã mruby ã¯ã©ã¹ãçæ
|
---|
310 | ãããããããããªãã¸ã¯ã©ã¹ã¨å¼ã¶ã
|
---|
311 | ããªãã¸ã¯ã©ã¹ãéãã¦ã»ã«ã®åãå£é¢æ°ãå¼ã³åºããã¨ãã§ããã
|
---|
312 |
|
---|
313 | ã»ããªãã¸ã¯ã©ã¹
|
---|
314 |
|
---|
315 | ããªãã¸ã¯ã©ã¹ã¯ãã¢ã¸ã¥ã¼ã« TECS ã®ä¸ã«ä½æããããããªãã¸ã¯ã©ã¹ã®
|
---|
316 | ååã¯ãã·ã°ããã£åã« 'T' ãåç½®ããããã®ã¨ãªãã
|
---|
317 |
|
---|
318 | ex) TECS::TsSignature
|
---|
319 |
|
---|
320 | ã»ããªãã¸ã®ã¤ã³ã¹ã¿ã³ã¹
|
---|
321 |
|
---|
322 | ããªãã¸ã¯ã©ã¹ã«ã¦ãããªãã¸ã»ã«åãå¼æ°ã¨ã㦠new ãããã¨ã§ãããªã
|
---|
323 | ã¸ã¯ã©ã¹ã®ã¤ã³ã¹ã¿ã³ã¹ãçæããããããªãã¸ã¯ã©ã¹ã®ã¤ã³ã¹ã¿ã³ã¹ã®ã
|
---|
324 | ã¨ããçããããªãã¸ã®ã¤ã³ã¹ã³ã¿ã³ã¹ã¨ãå¼ã¶ãããªãã¸ã®ã¤ã³ã¹ã¿ã³ã¹
|
---|
325 | ã¯ãããªãã¸ã»ã«ã¸ã®ãã¤ã³ã¿æ
|
---|
326 | å ±ãä¿æããã ãã§ãããåä¸ã®ããªãã¸
|
---|
327 | ã®ã¤ã³ã¹ã¿ã³ã¹ã¯ä½åº¦ã§ãçæãããã¨ãã§ããã
|
---|
328 |
|
---|
329 | ex) brdige = TECS::TsSignature.new( "CellName" )
|
---|
330 |
|
---|
331 | ãæ®èª²é¡ã
|
---|
332 |
|
---|
333 | [æ¸] æ´æ°åã® unsigned ã®æ±ã
|
---|
334 | ãã£ã¹ãããã¦ããã®ã§ãã³ã³ãã¤ã«ã¯è¦åãªãéãã
|
---|
335 | å¤ã®ç¯å²ãã§ãã¯ã¨æ´åãã¦ããªãã
|
---|
336 | 以ä¸ãæ°ãã«è¨ãããã
|
---|
337 | UInt8Pointer, UInt16Pointer, UInt32Pointer, UInt64Pointer
|
---|
338 | UIntPointer, UShortPointer, ULongPointer, UCharPointer, SCharPointer,
|
---|
339 |
|
---|
340 | [æ¸] å¤ã®ç¯å²ã®ãã§ãã¯
|
---|
341 | TECSPointer, TECSStruct ã§ã¯æ´æ°å¤ãè¨å®ããéã«ãç¯å²ãã§ãã¯ãããã
|
---|
342 | ã¡ã½ããã¸ã®ç´æ¥ã®å¼æ°ã¯ãã§ãã¯ãããªãã
|
---|
343 |
|
---|
344 | [æ¸] ç¾ç¶ã® so ã¨ãã¦ã®å®è£
|
---|
345 | ã¯ãããã
|
---|
346 | éçã« mruby ã®æ¬ä½ãçµåããã¦ããã
|
---|
347 |
|
---|
348 | [æ¸] ãã¤ã³ã¿åãæ±ãã¯ã©ã¹ãå¤ããã
|
---|
349 | 使ç¨ããã¯ã©ã¹ã ããã¼ããããåæåãããä»çµã¿ã欲ããã
|
---|
350 |
|
---|
351 | ã»ä»¥ä¸ã®æ¹æ³ã§ããªãã¸ãå²ãä»ãã¦ãããã
|
---|
352 | bridge = TsSample.new( "SimpleBridge" )
|
---|
353 | ã以ä¸ã®ããã«ãå®æ°ã¨ãã¦æ±ããã¨ãã§ããæ¹ãã¹ãã¼ãã§ããã
|
---|
354 | bridge = TECS::SimpleBridge
|
---|
355 | (ç¾ç¶ã®æ¹ããããªãã¸ã®ã»ã«ã¿ã¤ãããããç¹ãåªãã¦ãã)
|
---|
356 | â ããå®æ°ã¨ãã¦æ±ãã¨ãã¦ãå²ä»ãã C ã§è¡ãã ruby ã³ã¼ãã§è¡ãã
|
---|
357 | ã®éãã§ãããªãã以ä¸ã«ããã©ããã¼ã¯ã©ã¹ã«ããå®æ°ã®åæåãè¡
|
---|
358 | ãã°ããã
|
---|
359 | â å®æ°ã¨ãã¦æ±ãã¨ããªãã¸ã§ã¯ããæåããæå¾ã¾ã§æ¶ããªãã¨ããå
|
---|
360 | é¡ããã(ããã§ãå°éã§ããã)
|
---|
361 |
|
---|
362 | ã»ä¸è¨ã«é¢é£ãã¦ãVM ãç°ãªãå ´åã«ãä»ã® VM ã«å²ãä»ããããªãã¸åã
|
---|
363 | è¦ãã¦ãã¾ããã¢ã¯ã»ã¹å¶éãååã§ãªãã
|
---|
364 | ããªãã¸åã®ã¢ã¯ã»ã¹å¶éãå®ç¾ããã«ã¯ãVM ãèå¥ããæ
|
---|
365 | å ±ãå¿
|
---|
366 | è¦ã«ãª
|
---|
367 | ããmrb_state ã« p_cellcb ãå ããæ¹æ³ãmrb_stateèªèº«ã§åºå¥ããæ¹æ³
|
---|
368 | ãèãããããè¦æ¤è¨ã
|
---|
369 | ãªããã»ã«ã¿ã¤ãåä½ã§ã®ã¢ã¯ã»ã¹å¶ éã¯ã§ãã¦ãã(ã¦ãã¦ããªãã®ã¯ã
|
---|
370 | åãã»ã«ã¿ã¤ãã§è¤æ°ã®ããªãã¸ã»ã«ãããå ´åã«ãããªãã¸åã®ã¢ã¯ã»ã¹
|
---|
371 | å¶é)ã
|
---|
372 |
|
---|
373 | ã»typedef ãããååã§ã¢ã¯ã»ã¹ã§ããã¨ä¾¿å©ã§ãã
|
---|
374 | TECSPointer ã TECSStruct ã®ã¯ã©ã¹ã«å¯¾ãã alias ã«ãããå¥åã¨ãã¦
|
---|
375 | ã¢ã¯ã»ã¹ã§ããã¨ããã
|
---|
376 | â ã¨ãããããMrubyBridgePlugin ã®ã¡ãã»ã¼ã¸ã¨ãã¦ãããããã«ããã
|
---|
377 |
|
---|
378 | ã»send/receive ã¸ã®å¯¾å¿
|
---|
379 | mruby ã¨å
|
---|
380 | ±éã®ã¢ãã±ã¼ã¿ãæå®å¯è½ã¨ãã (ã¢ãã±ã¼ã¿ã³ã³ãã¼ã¿ãã©ã°ã¤ã³ãæ°è¦ã«è¨ãã¦ã¯?)
|
---|
381 |
|
---|
382 | ã»æ§é ä½ã¡ã³ãã¼ã®åå¶éã®ç·©å
|
---|
383 | strign or size_is æå®ããã char* ãªã©
|
---|
384 |
|
---|
385 | ã»ruby ãããããã°ã©ã ãã mruby â TECS ããªãã¸ã®ã¯ã©ã¹ã¸ã®èªåå¤æããã©ããã¼ã¯ã©ã¹ã®çæ
|
---|
386 | (ruby's Array => TECS::Pointer, ruby's Struct => TECS::StructTAG)
|
---|
387 |
|
---|
388 | [æ¸]ããªãã¸ã¯ã©ã¹ã® new ã§ã»ã«ãè¦ã¤ãããªãã£ãå ´åãruby ä¾å¤ãçºçãããã
|
---|
389 | ããã free ãã段é㧠SEGV ãçºçãããã DATA_SET ãæ©ãã«è¡ãããã«å¤æ´ã
|
---|
390 | ãªããåã¡ã½ããã®é¢æ°ã§ DATA_PTR ã null ãã©ããããã§ãã¯ããªããã
|
---|
391 | ä¾å¤ãçºçãããã¨ã«ããä¸å®å
|
---|
392 | ¨ãªããªãã¸ã¯å¤æ°ã«è¨æ¶ãããªãï¼ã¯ãï¼
|
---|
393 | ãããåé¡ãªãã
|
---|
394 |
|
---|