[388] | 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 |
|
---|