Index: EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/MrubyBridgePlugin.rb
===================================================================
--- EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/MrubyBridgePlugin.rb	(revision 270)
+++ EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/MrubyBridgePlugin.rb	(revision 321)
@@ -5,82 +5,67 @@
 #   Copyright (C) 2008-2015 by TOPPERS Project
 #
-#   ä¸è¨èä½æ¨©è
-ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§
-#   ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ãä½¿ç¨ã»è¤è£½ã»æ¹
-#   å¤ã»åé
-å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼
-#   (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½
-#       æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼
-#       ã¹ã³ã¼ãä¸­ã«å«ã¾ãã¦ãããã¨ï¼
-#   (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
-#       ç¨ã§ããå½¢ã§åé
-å¸ããå ´åã«ã¯ï¼åé
-å¸ã«ä¼´ããã­ã¥ã¡ã³ãï¼å©ç¨
-#       è
-ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨
-#       ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
-#   (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
-#       ç¨ã§ããªãå½¢ã§åé
-å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã
-#       ã¨ï¼
-#     (a) åé
-å¸ã«ä¼´ããã­ã¥ã¡ã³ãï¼å©ç¨è
-ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è
-#         ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
-#     (b) åé
-å¸ã®å½¢æ
-ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSãã­ã¸ã§ã¯ãã«
-#         å ±åãããã¨ï¼
-#   (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ
-#       å®³ãããï¼ä¸è¨èä½æ¨©è
-ããã³TOPPERSãã­ã¸ã§ã¯ããå
-è²¬ãããã¨ï¼
-#       ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç
-#       ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è
-ããã³TOPPERSãã­ã¸ã§ã¯ãã
-#       å
-è²¬ãããã¨ï¼
+#   上記著作権者は，以下の(1)～(4)の条件を満たす場合に限り，本ソフトウェ
+#   ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+#   変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+#   (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+#       権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+#       スコード中に含まれていること．
+#   (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+#       用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+#       者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+#       の無保証規定を掲載すること．
+#   (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+#       用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+#       と．
+#     (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+#         作権表示，この利用条件および下記の無保証規定を掲載すること．
+#     (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+#         報告すること．
+#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+#       害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+#       また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+#       由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+#       免責すること．
 #  
-#   æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è
-ã
-#   ãã³TOPPERSãã­ã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç
-#   ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§
-#   ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ã
-#   ã®è²¬ä»»ãè² ããªãï¼
+#   本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+#   よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+#   に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+#   アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+#   の責任を負わない．
 #  
-#   $Id: MrubyBridgePlugin.rb 1011 2016-07-11 02:20:01Z coas-nagasima $
+#   $Id$
 #
 
 # Todo:
-# çæãããã®
+# 生成するもの
 #  gen_cdl_file
-#    ããªãã¸åæåã»ã«ã¿ã¤ã (ã·ã°ããã£ãã¨)
-#       @@init_celltypes ã«è¨é²
-#    ããªãã¸ã»ã«ã¿ã¤ã (ã·ã°ããã£ãã¨)
-#       @@celltypes ã«è¨é²
-#    æ§é ä½ã»ã«ã¿ã¤ã
-#       @@struct_list ã«è¨é²
+#    ブリッジ初期化セルタイプ (シグニチャごと)
+#       @@init_celltypes に記録
+#    ブリッジセルタイプ (シグニチャごと)
+#       @@celltypes に記録
+#    構造体セルタイプ
+#       @@struct_list に記録
 #  new_cell
-#    TECS åæåã»ã«(ãã­ãã¿ã¤ãå®£è¨)
-#       @@VM_init_cells ã«è¨é²
-#       @@VM_struct_list ã«è¨é²
-#       @@VM_ptr_list ã«è¨é²
+#    TECS 初期化セル(プロトタイプ宣言)
+#       @@VM_init_cells に記録
+#       @@VM_struct_list に記録
+#       @@VM_ptr_list に記録
 #  gen_post_code
-#    æ§é ä½åæåã»ã«
-#    ãã¤ã³ã¿åæåã»ã«
-#    TECS åæåã»ã«
+#    構造体初期化セル
+#    ポインタ初期化セル
+#    TECS 初期化セル
 #
-#   ep_func ã®ä½æ
-#     signature, ãã¤ã³ã¿ãæ§é ä½ â¦ åæååãå£ï¼mruby VM ã¸ã®ç»é²
-#     ãã¤ã³ã¿
-#   preamble ã®ä½æ
-#     ãã¤ã³ã¿ãæ§é ä½ â¦ ã¢ã¯ã»ã¹ç¨ã³ã¼ãã®çæ
-#     signature â¦ ããªãã¸é¢æ°ã®ãã­ãã¿ã¤ãå®£è¨
-#   postamble ã®ä½æ
-#     signature â¦ ããªãã¸é¢æ°ã®å®ç¾©
+#   ep_func の作成
+#     signature, ポインタ、構造体 … 初期化受け口＝mruby VM への登録
+#     ポインタ
+#   preamble の作成
+#     ポインタ、構造体 … アクセス用コードの生成
+#     signature … ブリッジ関数のプロトタイプ宣言
+#   postamble の作成
+#     signature … ブリッジ関数の定義
 
 class MrubyBridgePlugin < SignaturePlugin
 
-  # ãã©ã°ã¤ã³å¼æ°å => Proc
+  # プラグイン引数名 => Proc
   MrubyBridgePluginArgProc = { 
       "ignoreUnsigned" => Proc.new { |obj,rhs| obj.set_ignoreUnsigned rhs },
@@ -89,15 +74,12 @@
   }
 
-  @@celltypes = { }             # {celltype_name => [ BridgePlugin ã®ã¤ã³ã¹ã¿ã³ã¹ã®é
-å }
-  @@init_celltypes = { }        # {celltype_name => [ BridgePlugin ã®ã¤ã³ã¹ã¿ã³ã¹ã®é
-å }
+  @@celltypes = { }             # {celltype_name => [ BridgePlugin のインスタンスの配列 }
+  @@init_celltypes = { }        # {celltype_name => [ BridgePlugin のインスタンスの配列 }
   @@struct_list = { }           # {struct_name=>StructType}
-  @@ptr_list = { }              # {ptr_celltype_name=> @@TYPE_MAP ã®å¯¾å¿ãããã®}
+  @@ptr_list = { }              # {ptr_celltype_name=> @@TYPE_MAP の対応するもの}
   @@VM_list = { }               # VM_name => true
-  @@VM_celltypes = {  }             # VM_name => { @celltype_name => ã»ã«ã®é
-å }
+  @@VM_celltypes = {  }             # VM_name => { @celltype_name => セルの配列 }
   @@VM_struct_list = { }           # {name=>StructType}
-  @@VM_ptr_list = { }              # { VM_name => {name=> @@TYPE_MAP ã®å¯¾å¿ãããã®} }
+  @@VM_ptr_list = { }              # { VM_name => {name=> @@TYPE_MAP の対応するもの} }
   @@TYPE_MAP = {           # type_str   class             GET_SET
     :char_t            => [:char_t,    "Char",     :Char,  :INT   ],
@@ -116,5 +98,5 @@
 
     :int               => [:int,       "Int",      :Int,  :INT   ], 
-    :char              => [:char,      "Char",     :Char, :INT   ],    # char ã¯ char_t ã¨ãã¦æ±ã
+    :char              => [:char,      "Char",     :Char, :INT   ],    # char は char_t として扱う
     :short             => [:short,     "Short",    :Int,  :INT   ],
     :long              => [:long,      "Long",     :Int,  :INT   ],
@@ -138,7 +120,7 @@
   # included  or excluded functions
 
-  ### ã­ã¼ããããæç¹ã§å®è¡ããã ###
-
-  # -I ã« $(TECSPATH)/mruby ãè¿½å 
+  ### ロードされた時点で実行される ###
+
+  # -I に $(TECSPATH)/mruby を追加
   # TECSGEN::Makefile.add_obj "$(MRUBY_MAIN_OBJ)"
   TECSGEN::Makefile.add_ldflag "-lmruby -L$(MRUBYPATH)/lib -lm"
@@ -148,6 +130,6 @@
 
 
-  #=== ãã©ã°ã¤ã³ã¤ã³ã¹ã¿ã³ã¹ã®åæå
-  # æ»ãå¤ãå¼æ°ã®åãä½¿ç¨å¯è½ãªãã®ããã§ãã¯ãã
+  #=== プラグインインスタンスの初期化
+  # 戻り値、引数の型が使用可能なものかチェックする
   #
   def initialize( signature, option )
@@ -178,5 +160,5 @@
 
     if signature.get_function_head_array == nil then
-      return   # ä»¥åã«ææ³ã¨ã©ã¼çºç
+      return   # 以前に文法エラー発生
     end
 
@@ -257,8 +239,6 @@
         when FloatType
         when PtrType
-          ttype_org = type_org.get_type       # ãã¤ã³ã¿ã®æãã¦ããå
-ã®å
-          ttype = ttype_org.get_original_type # ä¸è¨ã® typedef ããã¦ããå ´åãå
-ã®å
+          ttype_org = type_org.get_type       # ポインタの指している先の型
+          ttype = ttype_org.get_original_type # 上記の typedef されている場合、元の型
           register_ptr_type ttype_org
 
@@ -298,5 +278,5 @@
   end
 
-  #=== æ§é ä½ã®ã¡ã³ãã¼ã®åã®ãã§ãã¯
+  #=== 構造体のメンバーの型のチェック
   def check_struct_member struct_type
     #p "tag name:#{struct_type.get_name}"
@@ -345,20 +325,20 @@
       return
     end
-    tstr = ttype.get_type_str.sub( /const /, "" )    # const ã¯ç¡è¦
-    tstr = tstr.sub( /volatile /, "" )               # volatile ãç¡è¦
+    tstr = ttype.get_type_str.sub( /const /, "" )    # const は無視
+    tstr = tstr.sub( /volatile /, "" )               # volatile も無視
     if @b_ignoreUnsigned then
-      tstr = tstr.sub( /unsigned /, "" )             # volatile ãç¡è¦
-      tstr = tstr.sub( /uint/, "int" )               # volatile ãç¡è¦
-      tstr = tstr.sub( /[cs]char/, "char" )          # volatile ãç¡è¦
+      tstr = tstr.sub( /unsigned /, "" )             # volatile も無視
+      tstr = tstr.sub( /uint/, "int" )               # volatile も無視
+      tstr = tstr.sub( /[cs]char/, "char" )          # volatile も無視
     end
     return @@TYPE_MAP[ tstr.to_sym ]
   end
 
-  #===  CDL ãã¡ã¤ã«ã®çæ
-  #      typedef, signature, celltype, cell ã³ã¼ããçæ
-  #file::        FILE       çæãããã¡ã¤ã«
+  #===  CDL ファイルの生成
+  #      typedef, signature, celltype, cell コードを生成
+  #file::        FILE       生成するファイル
   def gen_cdl_file(file)
 
-    # ããªãã¸ã»ã«ã¿ã¤ãã®çæ
+    # ブリッジセルタイプの生成
     if @@celltypes[ @celltype_name ] == nil then
       @@celltypes[ @celltype_name ] = [ self ]
@@ -389,5 +369,5 @@
 EOT
 
-      # æ§é ä½ã»ã«ã¿ã¤ãã®çæ
+      # 構造体セルタイプの生成
       @struct_list.each{ |name, sttype|
         if @@struct_list[ name ] == nil then
@@ -410,6 +390,6 @@
   end
 
-  #=== gen_cdl_file ã§å®ç¾©ããã»ã«ã¿ã¤ãã« æ°ããã»ã«ãå®ç¾©ããã
-  # cell ã®ã»ã«ã¿ã¤ãã®ååã¯ @celltype_name
+  #=== gen_cdl_file で定義したセルタイプに 新しいセルが定義された
+  # cell のセルタイプの名前は @celltype_name
   def new_cell cell
     if cell.get_celltype.get_name != @celltype_name then
@@ -430,5 +410,5 @@
       file = CFile.open( initializer_celltype_cdl, "w" )
 
-      # TECS åæåã»ã«(ãã­ãã¿ã¤ãå®£è¨)
+      # TECS 初期化セル(プロトタイプ宣言)
       print_msg "  MrubyBridgePlugin: join your VM's cInitialize to #{vm_name}_TECSInitializer.eInitialize\n"
 
@@ -475,6 +455,6 @@
   end
 
-  #=== ãã©ã°ã¤ã³ã CDL ã® POST ã³ã¼ããçæ
-  # tmp_plugin_post_code.cdl ã¸ã®åºå
+  #=== プラグインが CDL の POST コードを生成
+  # tmp_plugin_post_code.cdl への出力
   def self.gen_post_code file
 
@@ -498,5 +478,5 @@
 # EOT
 
-# gen_post_code ã§çæãã celltype ã¯ gen_ep_func ãå¼ã³åºãããªã #847
+# gen_post_code で生成した celltype は gen_ep_func が呼び出されない #847
 #    @@struct_list.each{ |name,sttype|
 #      file.print <<EOT
@@ -566,8 +546,8 @@
   end
 
-  ####### ä»¥ä¸ã³ã¼ãçææ®µé ######
-
-  #===  åãå£é¢æ°ã®æ¬ä½ã³ã¼ããçæï¼é ­é¨ã¨æ«å°¾ã¯å¥éåºåï¼
-  #ct_name:: Symbol    (ãã©ã°ã¤ã³ã§çæããã) ã»ã«ã¿ã¤ãå ï¼Symbol ã¨ãã¦éããã¦ãã
+  ####### 以下コード生成段階 ######
+
+  #===  受け口関数の本体コードを生成（頭部と末尾は別途出力）
+  #ct_name:: Symbol    (プラグインで生成された) セルタイプ名 ．Symbol として送られてくる
   def gen_ep_func_body( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
     if @@celltypes[ ct_name ] then
@@ -673,9 +653,7 @@
   end
 
-  #===  åãå£é¢æ°ã® preamble (Cè¨èª)ãçæãã
-  #     å¿
-è¦ãªã preamble é¨ã«åºåãã
-  #file::           FILE        åºåå
-ãã¡ã¤ã«
+  #===  受け口関数の preamble (C言語)を生成する
+  #     必要なら preamble 部に出力する
+  #file::           FILE        出力先ファイル
   #b_singleton::    bool        true if singleton
   #ct_name::        Symbol
@@ -1135,11 +1113,10 @@
     if( param.get_size ) then
       sz_str = param.get_size.to_s
-    elsif param.get_string then      # mikan ã¨ãããã size_is ã¨ string ã®åææå® (äºéãã¤ã³ã¿) ã¯ãªã
+    elsif param.get_string then      # mikan とりあえず size_is と string の同時指定 (二重ポインタ) はなし
       sz_str = param.get_string.to_s
     else
       sz_str = "1"
     end
-    # unsigned åã®å ´åã«ã¯ cast ãå¿
-è¦
+    # unsigned 型の場合には cast が必要
     if ttype.get_original_type.get_type_str != param.get_type.get_type.get_type_str then
       cast_str = "(#{param.get_type.get_type_str})"
@@ -1171,5 +1148,5 @@
   end
 
-  #=== ãã©ã°ã¤ã³å¼æ° ignoreUnsigned
+  #=== プラグイン引数 ignoreUnsigned
   def set_ignoreUnsigned rhs
     if rhs == "true" || rhs == nil then
@@ -1177,5 +1154,5 @@
     end
   end
-  #=== ãã©ã°ã¤ã³å¼æ° include
+  #=== プラグイン引数 include
   def set_include rhs
     funcs = rhs.split ','
@@ -1195,5 +1172,5 @@
     }
   end
-  #=== ãã©ã°ã¤ã³å¼æ° exclude
+  #=== プラグイン引数 exclude
   def set_exclude rhs
     funcs = rhs.split ','
