[77] | 1 | /*
|
---|
| 2 | * HelloMruby.cdl
|
---|
| 3 | *
|
---|
| 4 | * +------------------------------------+ +-------------------+ +-----------+
|
---|
| 5 | * | mruby object | | TECS::TsHello | | |
|
---|
| 6 | * |buddyBridge= | sHello | nMruby::tsHello | sHello | tBuddy |
|
---|
| 7 | * | TECS::TsHello.new( "BuddyBridge" ) |=========>| BuddyBridge |----------|> Buddy |
|
---|
| 8 | * | | ã®é¢æ°ç¾¤ | |cTECS eEnt| |
|
---|
| 9 | * | | | | | |
|
---|
| 10 | * +------------------------------------+ +-------------------+ +-----------+
|
---|
| 11 | *
|
---|
| 12 | *ã»ã·ã°ããã£è¨è¿°
|
---|
| 13 | *
|
---|
| 14 | * sHello ⦠é¢æ°ã¤ã³ã¿ãã§ã¼ã¹ã®å®ç¾©
|
---|
| 15 | * æ
|
---|
| 16 | £ç¿ã¨ãã¦æ¥é æå s ãä»å ãã
|
---|
| 17 | *
|
---|
| 18 | * ã·ã°ãã㣠sHelloã«ã¯ 2 ã¤ã®é¢æ° myMessage 㨠yourMessage ãããã
|
---|
| 19 | *
|
---|
| 20 | *ã»ã»ã«ã¿ã¤ãè¨è¿°
|
---|
| 21 | *
|
---|
| 22 | * nMruby::tsHello ⦠ããªãã¸ã»ã«ã®ã»ã«ã¿ã¤ã (MrubyBridgePlugin ã«ããçæ)
|
---|
| 23 | * ã·ã°ãã㣠sHello ãããªãã¸ããã»ã«ã¿ã¤ã
|
---|
| 24 | * tBuddy ⦠å¼ã³å
|
---|
| 25 | ã®ã»ã«ã¿ã¤ã
|
---|
| 26 | *
|
---|
| 27 | */
|
---|
| 28 |
|
---|
| 29 | import( <cygwin_kernel.cdl> );
|
---|
| 30 | import( <tSysLog.cdl> );
|
---|
| 31 | import( "MyMrubyVM.cdl" );
|
---|
| 32 |
|
---|
| 33 | // TracePlugin ã使ç¨ããå ´åå¿
|
---|
| 34 | è¦
|
---|
| 35 | // cell tKernel Kernel{};
|
---|
| 36 | // cell tSysLog SysLog{};
|
---|
| 37 |
|
---|
| 38 | // ã·ã°ãã㣠sHello
|
---|
| 39 | signature sHello {
|
---|
| 40 | ER myMessage( [in,string]const char_t *buf );
|
---|
| 41 | ER yourMessage( [out,string(len)]char_t *buf, [in]int32_t len );
|
---|
| 42 | };
|
---|
| 43 |
|
---|
| 44 | // ã»ã«ã¿ã¤ã tBuddy
|
---|
| 45 | celltype tBuddy {
|
---|
| 46 | entry sHello eEnt;
|
---|
| 47 | };
|
---|
| 48 |
|
---|
| 49 | // ã»ã« Buddy
|
---|
| 50 | cell tBuddy Buddy
|
---|
| 51 | {
|
---|
| 52 | };
|
---|
| 53 |
|
---|
| 54 | /*
|
---|
| 55 | * ã·ã°ããã£ãã©ã°ã¤ã³ MrubyBridgePlugin ã®å¼ã³åºãã
|
---|
| 56 | *
|
---|
| 57 | * MrubyBridgePlugin ã«ãã
|
---|
| 58 | * ã»ããªãã¸ã®ã»ã«ã¿ã¤ã nMruby::tsHello ã®å®ç¾©ã
|
---|
| 59 | * gen/tmp_MrubyBridgePlugin_0.cdl ã«çæãããã
|
---|
| 60 | * sHello ã®é¨åã¯ãã·ã°ããã£åã
|
---|
| 61 | * ã»ã»ã«ã¿ã¤ãã³ã¼ã gen/nMruby_tsHello.c ã«ãmruby ã®
|
---|
| 62 | * TECS::TsHello ã¯ã©ã¹å®ç¾©ã³ã¼ããçæãããã
|
---|
| 63 | */
|
---|
| 64 | generate( MrubyBridgePlugin, sHello, "" );
|
---|
| 65 |
|
---|
| 66 | /*
|
---|
| 67 | * ããªãã¸ã»ã«ã®è¨ç½®
|
---|
| 68 | *
|
---|
| 69 | * mruby ãããTECS::TsHello ã¯ã©ã¹ã® Bridge ã¨ãã¦åç
|
---|
| 70 | §ãããã
|
---|
| 71 | * ex) bridge = TECS::TsHello.new( "BuddyBridge" )
|
---|
| 72 | *
|
---|
| 73 | * cTECS ã® signatureãããªãã¡ sHello ã®é¢æ°ããmruby ã®ã¯ã©ã¹ TECS::TsHello
|
---|
| 74 | * ã®ã¤ã³ã¹ã¿ã³ã¹ã¡ã½ããã¨ãã¦å®ç¾©ãããå¼ã³åºããã¨ãã§ããã
|
---|
| 75 | * ex) bridge.sayHello( 3 )
|
---|
| 76 | */
|
---|
| 77 | cell nMruby::tsHello BuddyBridge {
|
---|
[80] | 78 | // [through(TracePlugin,"")]
|
---|
[77] | 79 | cTECS = Buddy.eEnt;
|
---|
| 80 | };
|
---|
| 81 |
|
---|
| 82 | cell tPosixMrubyVmInTask MrubyVMTask{
|
---|
| 83 | cInit = VM_TECSInitializer.eInitialize;
|
---|
| 84 |
|
---|
| 85 | argc = 2;
|
---|
| 86 | argv = { "HelloMruby.exe", "HelloTECS.rb" };
|
---|
| 87 |
|
---|
| 88 | priority = 11;
|
---|
| 89 | stackSize = 4096;
|
---|
| 90 | taskAttribute = C_EXP( "TA_ACT" );
|
---|
| 91 | };
|
---|
| 92 |
|
---|