Ignore:
Timestamp:
May 22, 2019, 10:03:37 PM (5 years ago)
Author:
coas-nagasima
Message:

ビルドが通るよう更新

File:
1 edited

Legend:

Unmodified
Added
Removed
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecsmerge.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    88#   Copyright (C) 2008-2017 by TOPPERS Project
    99#--
    10 #   ä¸Šè¨˜è‘—作権è€
    11 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    12 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    13 #   å¤‰ãƒ»å†é
    14 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    15 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    17 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    18 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22 #       è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    25 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26 #       ç”¨ã§ããªã„形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    28 #       ã¨ï¼Ž
    29 #     (a) 再é
    30 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    31 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    32 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    33 #     (b) 再é
    34 å¸ƒã®å½¢æ
    35 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    36 #         å ±å‘Šã™ã‚‹ã“と.
    37 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    38 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    39 ãŠã‚ˆã³TOPPERSプロジェクトをå
    40 è²¬ã™ã‚‹ã“と.
    41 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    42 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    43 ãŠã‚ˆã³TOPPERSプロジェクトを
    44 #       å
    45 è²¬ã™ã‚‹ã“と.
     10#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     11#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15#       スコード中に含まれていること.
     16#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19#       の無保証規定を掲載すること.
     20#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22#       と.
     23#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     25#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26#         報告すること.
     27#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31#       免責すること.
    4632
    47 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    48 ãŠ
    49 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    50 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    51 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    52 #   ã®è²¬ä»»ã‚’負わない.
     33#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37#   の責任を負わない.
    5338
    5439#   $Id$
    5540#++
    5641
    57 #= tecsgen  : TECS のマージャ
     42#= tecsgen  : TECS のマージャ
    5843#
    59 #Authors::   å¤§å±± 博司
     44#Authors::   大山 博司
    6045#Version::   
    6146#Copyright:: Copyright (C) TOPPERS Project, 2008-2017. All rights reserved.
    62 #License::   TOPPERS ライセンスに準拠
     47#License::   TOPPERS ライセンスに準拠
    6348
    6449=begin
    65 tecsmerge はテンプレートファイルをå
    66 ƒã«ä½œæˆã•ã‚ŒãŸã‚»ãƒ«ã‚¿ã‚¤ãƒ—コード(含インライン関数を記述したセルタイプインラインヘッダ)を保守するものである。
    67 ã‚»ãƒ«ã‚¿ã‚¤ãƒ—に以下の改変が加えられた場合に対応する。
    68 ãƒ»å—け口関数が増えた
    69 ãƒ»å—け口の名前が変更された
    70 ãƒ»å—け口関数の名前が変更された
     50tecsmerge はテンプレートファイルを元に作成されたセルタイプコード(含インライン関数を記述したセルタイプインラインヘッダ)を保守するものである。
     51セルタイプに以下の改変が加えられた場合に対応する。
     52・受け口関数が増えた
     53・受け口の名前が変更された
     54・受け口関数の名前が変更された
    7155
    7256% tecsmerge source_dir   dest_dir
     
    7660% tecsmerge -p old_name:new_name source_file dest_dir
    7761
    78 source_file の名前は _teml.c, _templ.h で終わっていなくてはならない
    79 dest_file は source_file の _templ を取り除いた名前でなくてはならない
    80 dest_file が存在しない場合、_templ を取り除いた名前でコピーするだけである
    81 
    82 ä»¥ä¸‹ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã‚’ 含む行を探す
    83 
    84 0) å
    85 ˆé ­
     62source_file の名前は _teml.c, _templ.h で終わっていなくてはならない
     63dest_file は source_file の _templ を取り除いた名前でなくてはならない
     64dest_file が存在しない場合、_templ を取り除いた名前でコピーするだけである
     65
     66以下のキーワードを 含む行を探す
     67
     680) 先頭
    86691) /* #[<PREAMBLE>]#,
    87702)  * #[</PREAMBLE>]#
     
    94777) /* #[<POSTAMBLE>]#
    95788)  * #[</POSTAMBLE>]#
    96 9) 終わり
    97 
    98 ä¸Šè¨˜ã®ã†ã¡ 1), 3), 5), 7) を開始キーワードと呼ぶ。
    99 ãªãŠã€ç‰¹ã«æ–­ã‚Šã®ãªã„場合、9) も開始キーワードに含む。
    100 
    101 åå‰ã®å¤‰æ›´
    102 
    103 a) 受け口名の変更
     799) 終わり
     80
     81上記のうち 1), 3), 5), 7) を開始キーワードと呼ぶ。
     82なお、特に断りのない場合、9) も開始キーワードに含む。
     83
     84名前の変更
     85
     86a) 受け口名の変更
    10487
    10588  -p old_port_name:new_port_name
    10689
    107 b) 受け口関数名の変更
     90b) 受け口関数名の変更
    10891
    10992  -f old_port_name:new_port_name
    11093
    111  old_port_name, new_port_name は、次の形式でなくてはならない。
    112 
    113   受け口名 + '_' + 関数名
    114 
    115 
    116 i) ヘッダ1
    117 
    118   0) と開始キーワードの間
    119 
    120 ii) ヘッダ2
    121 
    122   1) と開始キーワードの間
    123 
    124 é€šå¸¸ã€ã“れが複数存在することはないが、複数存在した場合、すべてファイル
    125 ã®å
    126 ˆé ­ã«å‡ºåŠ›ã•ã‚Œã‚‹ã€‚
    127 
    128 iii) 受け口ヘッダ
    129 
    130   3) と開始キーワードの間
    131 
    132 å—け口ヘッダは、後続の受け口関数の受け口を表すものと仮定される。
    133 å—け口ヘッダは、重要ではない。
    134 
    135 iv) 受け口関数
    136 
    137   5) と開始キーワードの間
     94 old_port_name, new_port_name は、次の形式でなくてはならない。
     95
     96  受け口名 + '_' + 関数名
     97
     98
     99i) ヘッダ1
     100
     101  0) と開始キーワードの間
     102
     103ii) ヘッダ2
     104
     105  1) と開始キーワードの間
     106
     107通常、これが複数存在することはないが、複数存在した場合、すべてファイル
     108の先頭に出力される。
     109
     110iii) 受け口ヘッダ
     111
     112  3) と開始キーワードの間
     113
     114受け口ヘッダは、後続の受け口関数の受け口を表すものと仮定される。
     115受け口ヘッダは、重要ではない。
     116
     117iv) 受け口関数
     118
     119  5) と開始キーワードの間
    138120
    139121=end
     
    142124$n_err   = 0
    143125$b_show  = false
    144 $b_exist = false            # コピーå
    145 ˆã«ãƒ•ã‚¡ã‚¤ãƒ«ãŒã‚る場合のみマージ
    146 $old_mode = false           # old_mode (関数本体として /<ENTRY_FUNC> の代わりに '{' を使う
     126$b_exist = false            # コピー先にファイルがある場合のみマージ
     127$old_mode = false           # old_mode (関数本体として /<ENTRY_FUNC> の代わりに '{' を使う
    147128
    148129#2.0
     
    254235  def self.rewrite_DELIMITERS  delimiters
    255236    delimiters.each{ |stat, stat_info|
    256       s = stat_info[0].gsub( /([\*\[\]])/, "\\\\\\1" )   # *, [, ] の前に \\ を挿å
    257 ¥
    258       s.gsub!( /\s*\w*_NAME/, "\\s*(\\w*)" )             # ..._NAME を (w*) に変更
    259       s = "^" + s                                        # ^ をå
    260 ˆé ­ã«æŒ¿å
    261 ¥
     237      s = stat_info[0].gsub( /([\*\[\]])/, "\\\\\\1" )   # *, [, ] の前に \\ を挿入
     238      s.gsub!( /\s*\w*_NAME/, "\\s*(\\w*)" )             # ..._NAME を (w*) に変更
     239      s = "^" + s                                        # ^ を先頭に挿入
    262240      stat_info[2] = Regexp.new( s )
    263241      # p stat_info[2]
     
    269247  rewrite_DELIMITERS @@DELIMITERS_FUNC_BY_BRACKET
    270248
    271   #=== モードに従い DELIMITERS に DELIMITERS_FUNC_BY_* をマージする
     249  #=== モードに従い DELIMITERS に DELIMITERS_FUNC_BY_* をマージする
    272250  # mode :OLD_FUNC_BODY, :NEW_FUNC_BODY
    273251  def self.merge_DELIMITERS mode
     
    303281      line_no += 1
    304282      # p "L: #{line}"
    305       b_delim = false        # デリミタキーワードの行
     283      b_delim = false        # デリミタキーワードの行
    306284      @@DELIMITERS.each { |next_stat,stat_info|
    307285
    308286        next if next_stat == :HEAD || ( next_stat == :EOF && line != nil )
    309         # #1002 tecsmerge の非受け口関数 (POSTAMBLE部) の行頭に '{' があるとエラーになる 
     287        # #1002 tecsmerge の非受け口関数 (POSTAMBLE部) の行頭に '{' があるとエラーになる     
    310288        if (! $old_mode) && ( /^\{/ =~ line ) && ( stat == :PREAMBLE_BODY || stat == :POSTAMBLE_BODY )
    311289          p line + "  next_stat=" + next_stat.to_s + "stat=" + stat.to_s
     
    339317          end
    340318
    341           case stat   # 前の状æ
    342 ‹
     319          case stat   # 前の状態
    343320          when :HEAD
    344321            @head = part
     
    356333          when :ENTRY_FUNC_COMMENT
    357334            func_name = arg.to_sym
    358             if @entry_port[ port_name ] then   # nil なら既にエラー
     335            if @entry_port[ port_name ] then   # nil なら既にエラー
    359336              @entry_port[ port_name ].entry_func_comment[ func_name ] = part
    360337              @entry_port[ port_name ].entry_func_array << func_name
    361338            end
    362339          when :ENTRY_FUNC_BODY, :ENTRY_FUNC_BODY2
    363             if @entry_port[ port_name ] then   # nil なら既にエラー
     340            if @entry_port[ port_name ] then   # nil なら既にエラー
    364341              @entry_port[ port_name ].entry_func_body[ func_name ] = part
    365342            end
     
    380357
    381358          stat = next_stat
    382           arg = $1     # arg に取っておく
     359          arg = $1     # arg に取っておく
    383360          # p stat, arg
    384361          break
     
    394371
    395372  def check template
    396     # template にないものをチェック
     373    # template にないものをチェック
    397374    @entry_port.each{ |port_name, entry_port|
    398375      temp_entry_port = template.entry_port[port_name]
     
    415392    PortRenamer.get_list.each{ |pon,pr|
    416393
    417       # 対象受け口を捜す
     394      # 対象受け口を捜す
    418395      ep = @entry_port[pon]
    419396      if ep == nil then
     
    422399      end
    423400
    424       # ポートの rename
    425       pnn = pr.new_port_name    # 置換後の名前
     401      # ポートの rename
     402      pnn = pr.new_port_name    # 置換後の名前
    426403      if pnn then
    427         # 置換する名前があれば、登録しなおす
     404        # 置換する名前があれば、登録しなおす
    428405        renamed_entry_port[pnn] = @entry_port[pon]
    429406        @entry_port.delete pon
    430407      end
    431408
    432       # 指定された関数の置換
     409      # 指定された関数の置換
    433410      renamed_func_comment = {}
    434411      renamed_func_body = {}
     
    453430      ep.entry_func_body.merge!    renamed_func_body
    454431
    455       # ポート名の変更による関数名の置換
     432      # ポート名の変更による関数名の置換
    456433      renamed_func_comment = {}
    457434      renamed_func_body = {}
     
    569546  if FileTest.file?( dst_file ) then
    570547    print( "merging #{src_file} to #{dst_file}\n" )
    571     # dst_file の読込み
     548    # dst_file の読込み
    572549    begin
    573550      dst = open( dst_file )
     
    584561    old = CDLContents.new( old_contents )
    585562
    586     # template の読込み
     563    # template の読込み
    587564    begin
    588565      src = open( src_file )
     
    620597
    621598  elsif $b_exist == false then
    622     # src_file を dst_file へコピー
     599    # src_file を dst_file へコピー
    623600    begin
    624601      src = File.open( src_file )
     
    657634
    658635
    659 #=== ファイルのエンコーディングを ASCII-8BIT に変更
    660 # Ruby 1.9 以上の場合に変更
     636#=== ファイルのエンコーディングを ASCII-8BIT に変更
     637# Ruby 1.9 以上の場合に変更
    661638def set_encoding file
    662639  if RUBY_VERSION >= "1.9.0" then
     
    666643
    667644#=== rename_dst
    668 # dst_file のバックアップファイル名を決定し、リネームする
    669 # 成功すれば、リネーム後のファイル名を返す
    670 # dst_file が存在しなければ(リネームは行われず)nil を返す。
     645# dst_file のバックアップファイル名を決定し、リネームする
     646# 成功すれば、リネーム後のファイル名を返す
     647# dst_file が存在しなければ(リネームは行われず)nil を返す。
    671648def rename_dst( dst_file )
    672649  begin
     
    674651  rescue
    675652    STDERR.puts( "info: backup not generated for #{dst_file}" )
    676     # なければ終わり
     653    # なければ終わり
    677654    return nil
    678655  end
Note: See TracChangeset for help on using the changeset viewer.