Top Level Namespace
Defined Under Namespace
Modules: CType, CelltypePluginModule, GenOpaqueMarshaler, GenParamCopy, GenTransparentMarshaler, HasType, Importable, MrubyBridgeCelltypePluginModule, MrubyBridgeSignaturePluginModule, PluginModule, TCFlow, TECSCDE, TECSFlow, TECSInfo Classes: ATK1AlarmPlugin, ATK1DelayTaskPlugin, ATK1EventPlugin, ATK1ISRPlugin, ATK1KernelPlugin, ATK1ResourcePlugin, ATK1TaskPlugin, AppFile, Array, ArrayType, BDNode, BaseVal, BoolType, BoolVal, C2TECSBridgePlugin, CArrayType, CBoolType, CDLInitializer, CDLString, CDefinedType, CEnumType, CFile, CFloatType, CFuncType, CIntType, CPtrType, CStructType, CVoidType, C_EXP, C_parser, Cell, CellPlugin, Celltype, CelltypePlugin, CompositeCelltype, CompositeCelltypeJoin, CompositePlugin, Console, Decl, DefinedType, DescriptorType, DomainPlugin, DomainType, EnumType, Expression, Factory, FloatType, FloatVal, FuncHead, FuncType, Generate, Generator, HRP2AlarmHandlerPlugin, HRP2CyclicHandlerPlugin, HRP2DataqueuePlugin, HRP2EventflagPlugin, HRP2FixedSizeMemoryPoolPlugin, HRP2HandlerPlugin, HRP2KernelObjectPlugin, HRP2ObjectPlugin, HRP2Plugin, HRP2PostHook, HRP2PriorityDataqueuePlugin, HRP2RPCPlugin, HRP2SVCPlugin, HRP2SemaphorePlugin, HRP2TaskPlugin, HRPHandlerPlugin, HRPKernelObjectManager, HRPKernelObjectPlugin, HRPObjectPlugin, HRPPlugin, HRPRPCPlugin, HRPSVCPlugin, HRPTaskPlugin, Import, Import_C, IntType, IntegerVal, Join, MemFile, Mruby2CBridgePlugin, MrubyBridgeCellPlugin, MrubyBridgeCelltypePlugin, MrubyBridgeCompositePlugin, MrubyBridgePlugin, MrubyBridgeSignaturePlugin, MrubyInfoBridgePlugin, MrubyInfoBridgeSignaturePlugin, MultiPlugin, NSBDNode, NamedList, Namespace, NamespacePath, Node, NotifierPlugin, Object, OpaqueMarshalerPlugin, OpaqueRPCPlugin, ParamDecl, ParamList, Plugin, PointerVal, Port, Proc, PtrType, RPCPlugin, Region, RepeatCellPlugin, RepeatJoinPlugin, ReverseJoin, SVCManage, SharedOpaqueRPCPlugin, SharedRPCPlugin, Signature, SignaturePlugin, StringVal, StructType, TCFLOW_Cparser, TECS2CBridgePlugin, TECSGEN, TECSIO, TECSInfoPlugin, TECSMsg, TECS_LANG, TOOL_INFO, ThroughPlugin, Token, TracePlugin, Type, Typedef, VoidType
Constant Summary collapse
- Include =
ファイル => INCLUDE("header")の配列
Hash.new {|hash, key| hash[key] = []}
- XML_INDENT =
TECS Generator Generator for TOPPERS Embedded Component System
Copyright (C) 2008-2014 by TOPPERS Project
上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 権表示,この利用条件および下記の無保証規定が,そのままの形でソー スコード中に含まれていること. (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 の無保証規定を掲載すること. (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 用できない形で再配布する場合には,次のいずれかの条件を満たすこ と. (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 作権表示,この利用条件および下記の無保証規定を掲載すること. (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 報告すること. (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 免責すること.
本ソフトウェアは,無保証で提供されているものである.上記著作権者お よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ アの利用により直接的または間接的に生じたいかなる損害に関しても,そ の責任を負わない. $Id: gen_xml.rb 2061 2014-05-31 22:15:33Z okuma-top $++
" "- NotifierPluginArgProc =
TECS Generator Generator for TOPPERS Embedded Component System
Copyright (C) 2015 by Ushio Laboratory Graduate School of Engineering Science, Osaka Univ., JAPAN Copyright (C) 2015-2016 by Embedded and Real-Time Systems Laboratory Graduate School of Information Science, Nagoya Univ., JAPAN Copyright (C) 2015-2018 by TOPPERS Project
-- 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 権表示,この利用条件および下記の無保証規定が,そのままの形でソー スコード中に含まれていること. (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 の無保証規定を掲載すること. (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 用できない形で再配布する場合には,次のいずれかの条件を満たすこ と. (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 作権表示,この利用条件および下記の無保証規定を掲載すること. (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 報告すること. (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 免責すること.
本ソフトウェアは,無保証で提供されているものである.上記著作権者お よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ アの利用により直接的または間接的に生じたいかなる損害に関しても,そ の責任を負わない.$Id: NotifierPlugin.rb 2952 2018-05-07 10:19:07Z okuma-top $ ++
{ "factory" => Proc.new {|obj, rhs| obj.set_factory(rhs) }, "output_file" => Proc.new {|obj, rhs| obj.set_factory_output_file(rhs) } }
Instance Method Summary collapse
- #begin_extern_C(f) ⇒ Object
- #dbgPrint(str) ⇒ Object
- #dbgPrintf(*param) ⇒ Object
- #end_extern_C(f) ⇒ Object
- #endif_cb_type_only(f) ⇒ Object
- #endif_macro_only(f) ⇒ Object
- #ifdef_cb_type_only(f) ⇒ Object
-
#ifdef_macro_only(f) ⇒ Object
TECS Generator Generator for TOPPERS Embedded Component System.
- #ifndef_cb_type_only(f) ⇒ Object
- #ifndef_macro_only(f) ⇒ Object
-
#print_exception(evar) ⇒ Object
例外の表示 evar:: Exception.
- #print_indent(f, n) ⇒ Object
- #print_Makefile_note(f) ⇒ Object
- #print_note(f, b_complete = true) ⇒ Object
-
#print_report ⇒ Object
エラーおよび警告のレポート.
-
#require_tecsgen_lib(fname, b_fatal = true) ⇒ Object
RUBY ライブラリをロードする.
Instance Method Details
#begin_extern_C(f) ⇒ Object
81 82 83 84 85 86 87 |
# File 'lib/tecsgen/core/generate.rb', line 81 def begin_extern_C(f) f.print <<EOT #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ EOT end |
#dbgPrint(str) ⇒ Object
174 175 176 177 178 |
# File 'lib/tecsgen.rb', line 174 def dbgPrint(str) if $debug print str end end |
#dbgPrintf(*param) ⇒ Object
180 181 182 183 184 |
# File 'lib/tecsgen.rb', line 180 def dbgPrintf(*param) if $debug printf(*param) end end |
#end_extern_C(f) ⇒ Object
89 90 91 92 93 94 95 |
# File 'lib/tecsgen/core/generate.rb', line 89 def end_extern_C(f) f.print <<EOT #ifdef __cplusplus } #endif /* __cplusplus */ EOT end |
#endif_cb_type_only(f) ⇒ Object
74 75 76 77 78 79 |
# File 'lib/tecsgen/core/generate.rb', line 74 def endif_cb_type_only(f) f.print <<EOT #endif /* TOPPERS_CB_TYPE_ONLY */ EOT end |
#endif_macro_only(f) ⇒ Object
53 54 55 56 57 58 |
# File 'lib/tecsgen/core/generate.rb', line 53 def endif_macro_only(f) f.print <<EOT #endif /* TOPPERS_MACRO_ONLY */ EOT end |
#ifdef_cb_type_only(f) ⇒ Object
67 68 69 70 71 72 |
# File 'lib/tecsgen/core/generate.rb', line 67 def ifdef_cb_type_only(f) f.print <<EOT #ifdef TOPPERS_CB_TYPE_ONLY EOT end |
#ifdef_macro_only(f) ⇒ Object
TECS Generator Generator for TOPPERS Embedded Component System
Copyright (C) 2008-2019 by TOPPERS Project
上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 権表示,この利用条件および下記の無保証規定が,そのままの形でソー スコード中に含まれていること. (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 の無保証規定を掲載すること. (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 用できない形で再配布する場合には,次のいずれかの条件を満たすこ と. (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 作権表示,この利用条件および下記の無保証規定を掲載すること. (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 報告すること. (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 免責すること.
本ソフトウェアは,無保証で提供されているものである.上記著作権者お
よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
の責任を負わない.
$Id: generate.rb 2834 2018-03-18 06:20:15Z okuma-top $
++
39 40 41 42 43 44 |
# File 'lib/tecsgen/core/generate.rb', line 39 def ifdef_macro_only(f) f.print <<EOT #ifndef TOPPERS_MACRO_ONLY EOT end |
#ifndef_cb_type_only(f) ⇒ Object
60 61 62 63 64 65 |
# File 'lib/tecsgen/core/generate.rb', line 60 def ifndef_cb_type_only(f) f.print <<EOT #ifndef TOPPERS_CB_TYPE_ONLY EOT end |
#ifndef_macro_only(f) ⇒ Object
46 47 48 49 50 51 |
# File 'lib/tecsgen/core/generate.rb', line 46 def ifndef_macro_only(f) f.print <<EOT #ifndef TOPPERS_MACRO_ONLY EOT end |
#print_exception(evar) ⇒ Object
例外の表示
- evar
Exception
162 163 164 165 166 167 168 169 170 171 172 |
# File 'lib/tecsgen.rb', line 162 def print_exception(evar) # もしスタックトレースが出るまでい時間がかかるようならば、次をコメントアウトしてみるべし print "*** Begin Ruby exception message ***\n" puts(evar.to_s) if $debug puts "#### stack trace ####" pp evar.backtrace end print "*** End Ruby exception message ***\n" end |
#print_indent(f, n) ⇒ Object
59 60 61 62 63 64 65 66 |
# File 'lib/tecsflow.rb', line 59 def print_indent( level ) if level > 0 then print " " * level return level else return - level end end |
#print_Makefile_note(f) ⇒ Object
111 112 113 |
# File 'lib/tecsgen/core/generate.rb', line 111 def print_Makefile_note(f) f.print TECSMsg.get(:Makefile_note) end |
#print_note(f, b_complete = true) ⇒ Object
97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/tecsgen/core/generate.rb', line 97 def print_note(f, b_complete = true) if b_complete f.print "/*\n" else f.print " *\n" end f.print TECSMsg.get(:note) if b_complete f.print " */\n" else f.print " *\n" end end |
#print_report ⇒ Object
エラーおよび警告のレポート
187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 |
# File 'lib/tecsgen.rb', line 187 def print_report msg = nil if Generator.get_n_error != 0 msg = "#{Generator.get_n_error} error" msg = "#{msg}s" if Generator.get_n_error >= 2 end if Generator.get_n_warning != 0 msg = "#{msg} " if msg msg = "#{msg}#{Generator.get_n_warning} warning" msg = "#{msg}s" if Generator.get_n_warning >= 2 end puts msg if msg end |
#require_tecsgen_lib(fname, b_fatal = true) ⇒ Object
RUBY ライブラリをロードする
-L, $RUBYLIB, システム(/usr/lib/rub..など) の順にサーチが行われる exerb 対応のため、上記パスにファイルが見つからない場合 require を実行してみる
プラグインの場合は b_fatal = false を指定。ファイルがなくてもエラー出力後、処理続行 b_fatal = false の場合 tecslib/core がサーチパスに追加される RETURN::Bool : true=成功、 false=失敗 失敗した場合、Generator.error は呼び元で出力する
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
# File 'lib/tecsgen.rb', line 94 def require_tecsgen_lib(fname, b_fatal = true) dbgPrint("require_lib: #{fname}\n") begin b_require = false b_exception = false # -L 、 $RUBYLIB で指定されたパスおよびシステムのパスからサーチ # exerb では $LOAD_PATH は ["."] のみ入っているようだ ($library_path + $LOAD_PATH).each{|path| ["", "tecslib/plugin/"].each {|lp| lib = File.(path) + "/" + lp + fname if File.exist? lib # ファイル存否と他のエラーを区別するため存在確認をする begin require(lib) b_require = true rescue Exception => evar b_exception = true print_exception(evar) end break end } if b_require break end } if b_require == false && b_exception == false # exerb 対応 "." をサーチパスの最初に加える # "tecslib/" は RPCPlugin.rb, TracePlugin.rb のために用意してある # RPCPlugin.rb, TracePlugin.rb が tecslib 下でなければ不要になるが、このようにしておく ["", "tecslib/plugin/"].each{|lp| path = lp + fname begin require path return true rescue LoadError => e # p "LoadError to load #{fname}" # 2015.12.18 exerb 版でプラグインのロードでエラーが出るので、無視する. おそらく昔からエラーは出ていた # print_exception( e ) rescue Exception => e b_exception = true # 文法エラーなどが発生 print_exception(e) break end } end if b_require == false # 見つからなかった if b_exception == false STDERR << "tecsgen: Fail to load #{fname}. Check $RUBYLIB environment variable or -L option\n" end # tecsgen を構成するファイルの場合は中止する if b_fatal STDERR << "tecsgen: Exit because of unrecoverble error\n" exit 1 end return false end return true end end |