source: azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/Mruby2CBridgePlugin.rb@ 389

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

ビルドが通るよう更新

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-ruby;charset=UTF-8
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# 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
8# ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
9# 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
10# (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
11# 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
12# スコード中に含まれていること.
13# (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
14# 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
15# 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
16# の無保証規定を掲載すること.
17# (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
18# 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
19# と.
20# (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
21# 作権表示,この利用条件および下記の無保証規定を掲載すること.
22# (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
23# 報告すること.
24# (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
25# 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
26# また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
27# 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
28# 免責すること.
29#
30# 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
31# よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
32# に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
33# アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
34# の責任を負わない.
35#
36# $Id$
37#
38
39class Mruby2CBridgePlugin < SignaturePlugin
40 @@signature_list = { }
41
42 def initialize( signature, option )
43 super
44
45 @celltype_name = :"t#{@signature.get_global_name}"
46 @class_name = :"T#{@signature.get_global_name}"
47
48 parse_plugin_arg
49 end
50
51 def gen_cdl_file( file )
52 if( @@signature_list.length == 0 )then
53 print_msg " Mruby2CBridgePlugin: [initialize function] 'void initializeBridge( mrb_state *mrb )' must be called from VM.\n"
54 c2tecs = "generate( C2TECSBridgePlugin, nMruby::sInitializeBridge, \"silent=true\" );\n"
55 end
56
57 if @@signature_list[ @signature.get_global_name ] then
58 @@signature_list[ @signature.get_global_name ] << self
59 cdl_warning( "MRCW001 signature '$1' duplicate. ignored current one", @signature.get_namespace_path )
60 return
61 end
62
63 @@signature_list[ @signature.get_global_name ] = [self]
64 print_msg " Mruby2CBridgePlugin: [object creattion] object = TECS::#{@class_name}.new( 'C#{@signature.get_global_name}' )\n"
65 print_msg " Mruby2CBridgePlugin: [function call] result = object.function( params ) # substitute 'function' and params \n"
66
67 cf = CFile.open( "#{$gen}/Mruby2C_tsInitializerBridge.cdl", "w")
68 cf.print <<EOT
69cell nC2TECS::tnMruby_sInitializeBridge C2TECS_tsInitializeBridge{
70 cCall = VM_TECSInitializer.eInitialize;
71};
72EOT
73 cf.close
74
75 file.print <<EOT
76generate( MrubyBridgePlugin, #{@signature.get_namespace_path}, "silent=true" );
77generate( TECS2CBridgePlugin, #{@signature.get_namespace_path}, "silent=true" );
78#{c2tecs}
79cell nMruby::t#{@signature.get_name} C#{@signature.get_name}{
80 cTECS = TECS2C_#{@signature.get_name}.eEnt;
81};
82cell nTECS2C::t#{@signature.get_name} TECS2C_#{@signature.get_name}{};
83
84import( "Mruby2C_tsInitializerBridge.cdl" );
85EOT
86
87 end
88end
Note: See TracBrowser for help on using the repository browser.