source: EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/Mruby2CBridgePlugin.rb@ 270

Last change on this file since 270 was 270, checked in by coas-nagasima, 7 years ago

mruby版ECNLプロトタイピング・ツールを追加

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-ruby
File size: 4.2 KB
Line 
1# -*- coding: utf-8 -*-
2#
3# mruby => TECS bridge
4#
5# Copyright (C) 2008-2014 by TOPPERS Project
6#
7# 上記著作権者
8は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
9# ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
10# 変・再é…
11å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
12# (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
13# 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
14# スコード中に含まれていること.
15# (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
16# 用できる形で再é…
17å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
18å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
19# 者
20マニュアルなど)に,上記の著作権表示,この利用条件および下記
21# の無保証規定を掲載すること.
22# (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
23# 用できない形で再é…
24å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
25# と.
26# (a) 再é…
27å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
28マニュアルなど)に,上記の著
29# 作権表示,この利用条件および下記の無保証規定を掲載すること.
30# (b) 再é…
31å¸ƒã®å½¢æ…
32‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
33# 報告すること.
34# (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
35# 害からも,上記著作権者
36およびTOPPERSプロジェクトをå…
37è²¬ã™ã‚‹ã“と.
38# また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
39# 由に基づく請求からも,上記著作権者
40およびTOPPERSプロジェクトを
41# å…
42è²¬ã™ã‚‹ã“と.
43#
44# 本ソフトウェアは,無保証で提供されているものである.上記著作権者
45お
46# よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
47# に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
48# アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
49# の責任を負わない.
50#
51# $Id: Mruby2CBridgePlugin.rb 1011 2016-07-11 02:20:01Z coas-nagasima $
52#
53
54class Mruby2CBridgePlugin < SignaturePlugin
55 @@signature_list = { }
56
57 def initialize( signature, option )
58 super
59
60 @celltype_name = :"t#{@signature.get_global_name}"
61 @class_name = :"T#{@signature.get_global_name}"
62
63 parse_plugin_arg
64 end
65
66 def gen_cdl_file( file )
67 if( @@signature_list.length == 0 )then
68 print_msg " Mruby2CBridgePlugin: [initialize function] 'void initializeBridge( mrb_state *mrb )' must be called from VM.\n"
69 c2tecs = "generate( C2TECSBridgePlugin, nMruby::sInitializeBridge, \"silent=true\" );\n"
70 end
71
72 if @@signature_list[ @signature.get_global_name ] then
73 @@signature_list[ @signature.get_global_name ] << self
74 cdl_warning( "MRCW001 signature '$1' duplicate. ignored current one", @signature.get_namespace_path )
75 return
76 end
77
78 @@signature_list[ @signature.get_global_name ] = [self]
79 print_msg " Mruby2CBridgePlugin: [object creattion] object = TECS::#{@class_name}.new( 'C#{@signature.get_global_name}' )\n"
80 print_msg " Mruby2CBridgePlugin: [function call] result = object.function( params ) # substitute 'function' and params \n"
81
82 cf = CFile.open( "#{$gen}/Mruby2C_tsInitializerBridge.cdl", "w")
83 cf.print <<EOT
84cell nC2TECS::tnMruby_sInitializeBridge C2TECS_tsInitializeBridge{
85 cCall = VM_TECSInitializer.eInitialize;
86};
87EOT
88 cf.close
89
90 file.print <<EOT
91generate( MrubyBridgePlugin, #{@signature.get_namespace_path}, "silent=true" );
92generate( TECS2CBridgePlugin, #{@signature.get_namespace_path}, "silent=true" );
93#{c2tecs}
94cell nMruby::t#{@signature.get_name} C#{@signature.get_name}{
95 cTECS = TECS2C_#{@signature.get_name}.eEnt;
96};
97cell nTECS2C::t#{@signature.get_name} TECS2C_#{@signature.get_name}{};
98
99import( "Mruby2C_tsInitializerBridge.cdl" );
100EOT
101
102 end
103end
Note: See TracBrowser for help on using the repository browser.