source: HelloMruby/tags/HelloMruby-V1.0.0/HelloMruby.cdl

Last change on this file was 81, checked in by okuma-top, 10 years ago

change VM composite name

File size: 2.8 KB
Line 
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
29import( <cygwin_kernel.cdl> );
30import( <tSysLog.cdl> );
31import( "MyMrubyVM.cdl" );
32
33// TracePlugin を使用する場合必
34要
35// cell tKernel Kernel{};
36// cell tSysLog SysLog{};
37
38// シグニチャ sHello
39signature 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
45celltype tBuddy {
46 entry sHello eEnt;
47};
48
49// セル Buddy
50cell 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 */
64generate( 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 */
77cell nMruby::tsHello BuddyBridge {
78 // [through(TracePlugin,"")]
79 cTECS = Buddy.eEnt;
80};
81
82cell 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
Note: See TracBrowser for help on using the repository browser.