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 {
|
---|
78 | // [through(TracePlugin,"")]
|
---|
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 |
|
---|