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

ビルドが通るよう更新

Location:
azure_iot_hub/trunk/asp3_dcre/cfg
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • azure_iot_hub/trunk/asp3_dcre/cfg/GenFile.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    88#  Copyright (C) 2016 by APTJ Co., Ltd., JAPAN
    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$
     
    5641
    5742#
    58 #               ãƒ•ã‚¡ã‚¤ãƒ«ä½œæˆã‚¯ãƒ©ã‚¹
     43#               ファイル作成クラス
    5944#
    6045
    6146#
    62 # ファイルに書こうとしたå†
    63 å®¹ã‚’変数に蓄積し,プログラムの終了時(output
    64 # メソッドが呼ばれた時)にファイルに出力する.既にファイルが存在し,差
    65 # 分がない場合は出力しない(タイムスタンプを更新しない).
     47# ファイルに書こうとした内容を変数に蓄積し,プログラムの終了時(output
     48# メソッドが呼ばれた時)にファイルに出力する.既にファイルが存在し,差
     49# 分がない場合は出力しない(タイムスタンプを更新しない).
    6650#
    6751class GenFile
     
    7559  end
    7660
    77   # ファイルデータの末尾に文字列を追加する
     61  # ファイルデータの末尾に文字列を追加する
    7862  def append(code = "")
    7963    @@fileDataHash[@selfFileName] << code
    8064  end
    8165
    82   # ファイルデータに1行追加する
     66  # ファイルデータに1行追加する
    8367  def add(code = "")
    8468    @@fileDataHash[@selfFileName] << code << "\n"
    8569  end
    8670
    87   # ファイルデータに1行追加する(改行2回)
     71  # ファイルデータに1行追加する(改行2回)
    8872  def add2(code = "")
    8973    add(code + "\n")
    9074  end
    9175
    92   # コメントヘッダを追加する
     76  # コメントヘッダを追加する
    9377  def comment_header(comment)
    9478    add("/*")
     
    9983  end
    10084
    101   # ファイルデータを表示する
     85  # ファイルデータを表示する
    10286  def print()
    10387    puts(@@fileDataHash[@selfFileName])
    10488  end
    10589
    106   # å
    107 ¨ãƒ•ã‚¡ã‚¤ãƒ«ã‚’出力する
     90  # 全ファイルを出力する
    10891  def self.output()
    10992    @@fileDataHash.each do |fileName, fileData|
    110       # 既にファイルが存在し,差分がない場合は出力しない
    111       #(タイムスタンプを更新しない)
     93      # 既にファイルが存在し,差分がない場合は出力しない
     94      #(タイムスタンプを更新しない)
    11295      if File.exist?(fileName)
    11396        if fileData == File.read(fileName)
  • azure_iot_hub/trunk/asp3_dcre/cfg/MANIFEST

    • Property svn:eol-style set to native
    • Property svn:mime-type set to text/plain;charset=UTF-8
  • azure_iot_hub/trunk/asp3_dcre/cfg/SRecord.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    77#  Copyright (C) 2015 by FUJI SOFT INCORPORATED, JAPAN
    88#
    9 #  上記著作権è€
    10 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    11 #  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    12 #  変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    14 #  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    15 #      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    16 #      スコード中に含まれていること.
    17 #  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    18 #      用できる形で再é
    19 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    20 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    21 #      è€
    22 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    23 #      の無保証規定を掲載すること.
    24 #  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    25 #      用できない形で再é
    26 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    27 #      と.
    28 #    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31 #        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32 #    (b) 再é
    33 å¸ƒã®å½¢æ
    34 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    35 #        報告すること.
    36 #  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    37 #      害からも,上記著作権è€
    38 ãŠã‚ˆã³TOPPERSプロジェクトをå
    39 è²¬ã™ã‚‹ã“と.
    40 #      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    41 #      由に基づく請求からも,上記著作権è€
    42 ãŠã‚ˆã³TOPPERSプロジェクトを
    43 #      å
    44 è²¬ã™ã‚‹ã“と.
     9#  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     10#  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11#  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12#  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13#      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14#      スコード中に含まれていること.
     15#  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16#      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17#      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18#      の無保証規定を掲載すること.
     19#  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20#      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21#      と.
     22#    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23#        作権表示,この利用条件および下記の無保証規定を掲載すること.
     24#    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25#        報告すること.
     26#  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27#      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28#      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29#      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30#      免責すること.
    4531#
    46 #  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    47 ãŠ
    48 #  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    49 #  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    50 #  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    51 #  の責任を負わない.
     32#  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33#  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34#  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35#  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36#  の責任を負わない.
    5237#
    5338#  $Id$
     
    5540
    5641#
    57 #               Sレコードファイル処理クラス
     42#               Sレコードファイル処理クラス
    5843#
    5944
    6045#
    61 # Sレコードファイルを変数に読み込み,要求された番地のデータを返す.
     46# Sレコードファイルを変数に読み込み,要求された番地のデータを返す.
    6247#
    63 # @sRecDataは,å
    64 ˆé ­ç•ªåœ°ã‚’キーとし,そこからのデータ(ヘキサダンプ形式)
    65 # を値とブロックが格納されたハッシュである.連続するブロックは,1つのブ
    66 # ロックにまとめて格納するものとする(そうしないと,データの取出しやサー
    67 # チが面倒になる).
     48# @sRecDataは,先頭番地をキーとし,そこからのデータ(ヘキサダンプ形式)
     49# を値とブロックが格納されたハッシュである.連続するブロックは,1つのブ
     50# ロックにまとめて格納するものとする(そうしないと,データの取出しやサー
     51# チが面倒になる).
    6852#
    6953class SRecord
     
    7458      prevData = ""
    7559      file.each do |line|
    76         # データレコードにより分岐
     60        # データレコードにより分岐
    7761        case line.slice(0, 2)
    7862        when "S1"
    79           # データ長(アドレス分[2byte]+チェックサム分1byteを減算)
     63          # データ長(アドレス分[2byte]+チェックサム分1byteを減算)
    8064          length = line.slice(2, 2).hex - 2 - 1
    8165
    82           # アドレス(4文字=2byte)
     66          # アドレス(4文字=2byte)
    8367          address = line.slice(4, 4).hex
    8468
    85           # データ(この時点では文字列で取っておく)
     69          # データ(この時点では文字列で取っておく)
    8670          data = line.slice(8, length * 2)
    8771        when "S2"
    88           # データ長(アドレス分[3byte]+チェックサム分1byteを減算)
     72          # データ長(アドレス分[3byte]+チェックサム分1byteを減算)
    8973          length = line.slice(2, 2).hex - 3 - 1
    9074
    91           # アドレス(6文字=3byte)
     75          # アドレス(6文字=3byte)
    9276          address = line.slice(4, 6).hex
    9377
    94           # データ(この時点では文字列で取っておく)
     78          # データ(この時点では文字列で取っておく)
    9579          data = line.slice(10, length * 2)
    9680        when "S3"
    97           # データ長(アドレス分[4byte]+チェックサム分1byteを減算)
     81          # データ長(アドレス分[4byte]+チェックサム分1byteを減算)
    9882          length = line.slice(2, 2).hex - 4 - 1
    9983
    100           # アドレス(8文字=4byte)
     84          # アドレス(8文字=4byte)
    10185          address = line.slice(4, 8).hex
    10286
    103           # データ(この時点では文字列で取っておく)
     87          # データ(この時点では文字列で取っておく)
    10488          data = line.slice(12, length * 2)
    10589        else
     
    10892
    10993        if !address.nil?
    110           # データを格納する
     94          # データを格納する
    11195          if address == prevAddress + prevData.size / 2
    11296            prevData << data
     
    122106  end
    123107
    124   # データ取得
     108  # データ取得
    125109  def get_data(address, size)
    126110    endAddress = address + size
     
    134118  end
    135119
    136   # データ書込み
     120  # データ書込み
    137121  def set_data(address, data)
    138122    endAddress = address + data.size / 2
     
    141125
    142126      if nEndBlock < address || endAddress < block
    143         # 重なりがない
     127        # 重なりがない
    144128      elsif address < block
    145         # 新規データの方がå
    146 ˆé ­ç•ªåœ°ãŒå°ã•ã„
    147         # ここでは endAddress >= block が成立している
     129        # 新規データの方が先頭番地が小さい
     130        # ここでは endAddress >= block が成立している
    148131        offset = (endAddress - block) * 2
    149132        data << blockData[offset..-1]
    150133        @sRecData.delete(block)
    151134      else
    152         # 登録済みデータの方がå
    153 ˆé ­ç•ªåœ°ãŒå°ã•ã„か同じ
     135        # 登録済みデータの方が先頭番地が小さいか同じ
    154136        offset = (address - block) * 2
    155137        address = block
     
    162144  end
    163145
    164   # 値としてのデータ取得
     146  # 値としてのデータ取得
    165147  def get_value(address, size, signed)
    166148    targetData = get_data(address, size)
     
    169151    else
    170152      if $endianLittle
    171         # リトルエンディアンの場合,バイトオーダーを逆にする
     153        # リトルエンディアンの場合,バイトオーダーを逆にする
    172154        reverseData = ""
    173         # 後ろから2文字ずつ抜き出し,並び替える
     155        # 後ろから2文字ずつ抜き出し,並び替える
    174156        while targetData.size > 0
    175157          reverseData << targetData[-2, 2]
     
    181163      end
    182164
    183       # 負の数の処理
     165      # 負の数の処理
    184166      if signed && (returnData & (1 << (size * 8 - 1))) != 0
    185167        returnData -= (1 << (size * 8))
  • azure_iot_hub/trunk/asp3_dcre/cfg/cfg.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    88#              Graduate School of Information Science, Nagoya Univ., JAPAN
    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 è²¬ã™ã‚‹ã“と.
    46 #
    47 #  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    48 ãŠ
    49 #  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    50 #  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    51 #  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    52 #  の責任を負わない.
     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#      免責すること.
     32#
     33#  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34#  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35#  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36#  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37#  の責任を負わない.
    5338#
    5439#  $Id$
     
    6853
    6954#
    70 #  定数定義
    71 #
    72 # å
    73 ±é€š
     55#  定数定義
     56#
     57# 共通
    7458VERSION = "1.2.2"
    7559
    76 # cfg1_out関係
     60# cfg1_out関係
    7761CFG1_PREFIX        = "TOPPERS_cfg_"
    7862CFG1_MAGIC_NUM     = "TOPPERS_magic_number"
     
    8569CFG1_OUT_TARGET_H  = "target_cfg1_out.h"
    8670
    87 # cfg2_out関係
     71# cfg2_out関係
    8872CFG2_OUT_DB        = "cfg2_out.db"
    8973
    90 # cfg3_out関係
     74# cfg3_out関係
    9175CFG3_OUT_DB        = "cfg3_out.db"
    9276
    9377#
    94 ã‚¨ãƒ©ãƒ¼ç™ºç”Ÿæœ‰ç„¡ãƒ•ãƒ©ã‚°
     78エラー発生有無フラグ
    9579#
    9680$errorFlag = false
    9781
    9882#
    99 ã‚¨ãƒ©ãƒ¼ï¼è­¦å‘Šè¡¨ç¤ºé–¢æ•°
    100 #
    101 # 一般的なエラー表示(処理を中断)
     83エラー/警告表示関数
     84#
     85# 一般的なエラー表示(処理を中断)
    10286def error_exit(message, location = "")
    10387  location += " " if location != ""
     
    10589end
    10690
    107 # 一般的なエラー表示(処理を継続)
     91# 一般的なエラー表示(処理を継続)
    10892def error(message, location = "")
    10993  location += " " if location != ""
     
    11296end
    11397
    114 # 一般的な警告表示
     98# 一般的な警告表示
    11599def warning(message, location = "")
    116100  location += " " if location != ""
     
    118102end
    119103
    120 # システムコンフィギュレーションファイルの構文解析時のエラー
     104# システムコンフィギュレーションファイルの構文解析時のエラー
    121105$noParseError = 0
    122106def parse_error(cfgFile, message)
     
    127111end
    128112
    129 # システムコンフィギュレーションファイルの構文解析時の警告
     113# システムコンフィギュレーションファイルの構文解析時の警告
    130114def parse_warning(cfgFile, message)
    131115  warning(message, "#{cfgFile.getFileName()}:#{cfgFile.getLineNo}:")
     
    133117
    134118#
    135 é™çš„API処理時のエラー/警告表示関数
    136 #
    137 # 静的API処理時のエラー/警告を短く記述できるように,メッセージ中の%ま
    138 # たは%%で始まる記述を以下のように展開する.
    139 #       %label → #{params[:label]}
    140 #       %%label → label `#{params[:label]}'
    141 #
    142 # エラー/警告メッセージの展開
     119静的API処理時のエラー/警告表示関数
     120#
     121# 静的API処理時のエラー/警告を短く記述できるように,メッセージ中の%ま
     122# たは%%で始まる記述を以下のように展開する.
     123#       %label #{params[:label]}
     124#       %%label label `#{params[:label]}'
     125#
     126# エラー/警告メッセージの展開
    143127def expand_message(message, params)
    144128  result = message.dup
     
    156140end
    157141
    158 # 静的API処理時のエラー
     142# 静的API処理時のエラー
    159143def error_api(params, message)
    160144  error(expand_message(message, params), \
     
    162146end
    163147
    164 # 静的API処理時の警告
     148# 静的API処理時の警告
    165149def warning_api(params, message)
    166150  warning(expand_message(message, params), \
     
    168152end
    169153
    170 # 静的API処理時のエラー(エラーコード付き)
     154# 静的API処理時のエラー(エラーコード付き)
    171155def error_ercd(errorCode, params, message)
    172156  error_api(params, "#{errorCode}: #{message}")
    173157end
    174158
    175 # 静的API処理時の警告(エラーコード付き)
     159# 静的API処理時の警告(エラーコード付き)
    176160def warning_ercd(errorCode, params, message)
    177161  warning_api(params, "#{errorCode}: #{message}")
    178162end
    179163
    180 # パラメータのエラー
     164# パラメータのエラー
    181165def error_wrong(errorCode, params, symbol, wrong)
    182166  error_ercd(errorCode, params, "%%#{symbol} is #{wrong} in %apiname")
     
    193177end
    194178
    195 # パラメータ不正のエラー
     179# パラメータ不正のエラー
    196180def error_illegal(errorCode, params, symbol)
    197181  error_ercd(errorCode, params, "illegal %%#{symbol} in %apiname")
     
    209193
    210194#
    211 #  Stringクラスの拡張(二重引用符で囲まれた文字列の作成/展開)
     195#  Stringクラスの拡張(二重引用符で囲まれた文字列の作成/展開)
    212196#
    213197class String
    214198  #
    215   #  二重引用符で囲まれた文字列の作成
     199  #  二重引用符で囲まれた文字列の作成
    216200  #
    217201  def quote
     
    249233
    250234  #
    251   #  二重引用符で囲まれた文字列の展開
     235  #  二重引用符で囲まれた文字列の展開
    252236  #
    253237  def unquote
     
    299283
    300284#
    301 #  NumStrクラス(数値に文字列を付加したもの)の定義
     285#  NumStrクラス(数値に文字列を付加したもの)の定義
    302286#
    303287class NumStr
     
    307291  end
    308292
    309   # 数値æƒ
    310 å ±ã‚’返す
     293  # 数値情報を返す
    311294  def val
    312295    return @val
     
    314297  alias_method :to_i, :val
    315298
    316   # 文字列æƒ
    317 å ±ã‚’返す
     299  # 文字列情報を返す
    318300  def str
    319301    return @str
     
    321303  alias_method :to_s, :str
    322304
    323   # 比較は数値æƒ
    324 å ±ã§è¡Œã†
     305  # 比較は数値情報で行う
    325306  def ==(other)
    326307    @val == other
     
    333314  end
    334315
    335   # ハッシュのキーとして使う時の比較も数値æƒ
    336 å ±ã§è¡Œã†
     316  # ハッシュのキーとして使う時の比較も数値情報で行う
    337317  def eql?(other)
    338318    @val == other.val
    339319  end
    340320
    341   # ハッシュ値の定義も上書きする
     321  # ハッシュ値の定義も上書きする
    342322  def hash
    343323    return @val.hash
    344324  end
    345325
    346   # 数値クラスと演算できるようにする
     326  # 数値クラスと演算できるようにする
    347327  def coerce(other)
    348328    if other.kind_of?(Numeric)
     
    353333  end
    354334
    355   # 二重引用符で囲まれた文字列の作成
     335  # 二重引用符で囲まれた文字列の作成
    356336  def quote
    357337    str.quote
    358338  end
    359339
    360   # 二重引用符で囲まれた文字列の展開
     340  # 二重引用符で囲まれた文字列の展開
    361341  def unquote
    362342    str.unquote
    363343  end
    364344
    365   # pp時の表示
     345  # pp時の表示
    366346  def pretty_print(q)
    367347    q.text("[#{@val}(=0x#{@val.to_s(16)}),")
     
    370350  end
    371351
    372   # 未定義のメソッドは@valに送る
     352  # 未定義のメソッドは@valに送る
    373353  def method_missing(*method)
    374354    @val.send(*method)
     
    377357
    378358#
    379 ã‚·ãƒ³ãƒœãƒ«ãƒ•ã‚¡ã‚¤ãƒ«ã®èª­ã¿è¾¼ã¿
    380 #
    381 ä»¥ä¸‹ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ï¼ŒGNUのnmが生成するシンボルファイルに対応している.
    382 åˆ¥ã®ãƒ„ールに対応する場合には,このメソッドを書き換えればよい.
     359シンボルファイルの読み込み
     360#
     361以下のメソッドは,GNUのnmが生成するシンボルファイルに対応している.
     362別のツールに対応する場合には,このメソッドを書き換えればよい.
    383363#
    384364def ReadSymbolFile(symbolFileName)
     
    391371  symbolAddress = {}
    392372  symbolFile.each do |line|
    393     # スペース区切りで分解
     373    # スペース区切りで分解
    394374    fields = line.split(/\s+/)
    395375
    396     # 3列になっていない行は除外
     376    # 3列になっていない行は除外
    397377    if fields.size == 3
    398378      symbolAddress[fields[2]] = fields[0].hex
     
    404384
    405385#
    406 å€¤å–得シンボルをグローバル変数として定義する
     386値取得シンボルをグローバル変数として定義する
    407387#
    408388def DefineSymbolValue
     
    415395
    416396#
    417 ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ãƒ‘スからファイルを探す
     397インクルードパスからファイルを探す
    418398#
    419399def SearchFilePath(fileName)
    420400  if File.exist?(fileName)
    421     # 指定したファイルパスに存在する
     401    # 指定したファイルパスに存在する
    422402    return fileName
    423403  elsif /^\./ =~ fileName
    424     # 相対パスを指定していて見つからなかった場合,存在しないものとする
    425     #(意図しないファイルが対象となることを防止)
     404    # 相対パスを指定していて見つからなかった場合,存在しないものとする
     405    #(意図しないファイルが対象となることを防止)
    426406    return nil
    427407  else
    428     # 各インクルードパスからファイル存在チェック
     408    # 各インクルードパスからファイル存在チェック
    429409    $includeDirectories.each do |includeDirectory|
    430410      path = includeDirectory + "/" + fileName
    431       # 見つかったら相対パスを返す
     411      # 見つかったら相対パスを返す
    432412      if File.exist?(path)
    433413        return path
     
    439419
    440420#
    441 æŒ‡å®šã—た生成スクリプト(trbファイル)を検索してloadする
     421指定した生成スクリプト(trbファイル)を検索してloadする
    442422#
    443423def IncludeTrb(fileName)
     
    451431
    452432#
    453 ãƒ‘ス3の処理
     433パス3の処理
    454434#
    455435def Pass3
    456436  #
    457   #  パス2から引き渡されるæƒ
    458 å ±ã‚’ファイルから読み込む
     437  #  パス2から引き渡される情報をファイルから読み込む
    459438  #
    460439  db = PStore.new(CFG2_OUT_DB)
     
    472451
    473452  #
    474   #  値取得シンボルをグローバル変数として定義する
     453  #  値取得シンボルをグローバル変数として定義する
    475454  #
    476455  DefineSymbolValue()
    477456
    478457  #
    479   #  生成スクリプト(trbファイル)を実行する
     458  #  生成スクリプト(trbファイル)を実行する
    480459  #
    481460  $trbFileNames.each do |trbFileName|
     
    484463
    485464  #
    486   #  パス4に引き渡すæƒ
    487 å ±ã‚’ファイルに生成
     465  #  パス4に引き渡す情報をファイルに生成
    488466  #
    489467  if $omitOutputDb.nil?
     
    503481
    504482#
    505 ãƒ‘ス4の処理
     483パス4の処理
    506484#
    507485def Pass4
    508486  #
    509   #  パス3から引き渡されるæƒ
    510 å ±ã‚’ファイルから読み込む
     487  #  パス3から引き渡される情報をファイルから読み込む
    511488  #
    512489  db = PStore.new(CFG3_OUT_DB)
     
    523500
    524501  #
    525   #  値取得シンボルをグローバル変数として定義する
     502  #  値取得シンボルをグローバル変数として定義する
    526503  #
    527504  DefineSymbolValue()
    528505
    529506  #
    530   #  生成スクリプト(trbファイル)を実行する
     507  #  生成スクリプト(trbファイル)を実行する
    531508  #
    532509  $trbFileNames.each do |trbFileName|
     
    536513
    537514#
    538 ç”Ÿæˆã‚¹ã‚¯ãƒªãƒ—ト(trbファイル)向けの関数
     515生成スクリプト(trbファイル)向けの関数
    539516#
    540517def SYMBOL(symbol)
     
    570547
    571548#
    572 ã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã®åˆæœŸåŒ–
     549グローバル変数の初期化
    573550#
    574551$kernel = nil
     
    585562
    586563#
    587 ã‚ªãƒ—ションの処理
     564オプションの処理
    588565#
    589566OptionParser.new(banner="Usage: cfg.rb [options] CONFIG-FILE", 40) do |opt|
     
    639616
    640617#
    641 ã‚ªãƒ—ションのチェック
     618オプションのチェック
    642619#
    643620if $pass.nil?
    644   # パスの指定はå¿
    645 é ˆ
     621  # パスの指定は必須
    646622  abort("`--pass' option is mandatory")
    647623elsif /^[1234]$/ !~ $pass
     
    649625end
    650626
    651 # パス1では,静的APIテーブルはå¿
    652 é ˆ
     627# パス1では,静的APIテーブルは必須
    653628if ($pass == "1" && $apiTableFileNames.empty?)
    654629  abort("`--api-table' option must be specified in pass 1")
    655630end
    656631
    657 # パス1以外では,生成スクリプト(trbファイル)がå¿
    658 é ˆ
     632# パス1以外では,生成スクリプト(trbファイル)が必須
    659633if ($pass != "1" && $trbFileNames.empty?)
    660634  abort("`--trb-file' must be specified except in pass 1")
     
    662636
    663637#
    664 ã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ—ションの処理
     638カーネルオプションの処理
    665639#
    666640case $kernel
     
    672646
    673647#
    674 #  ID番号å
    675 ¥åŠ›ãƒ•ã‚¡ã‚¤ãƒ«ã®å–り込み
     648#  ID番号入力ファイルの取り込み
    676649#
    677650$inputObjid = {}
     
    692665
    693666#
    694 æŒ‡å®šã•ã‚ŒãŸã‚·ãƒ³ãƒœãƒ«ãƒ•ã‚¡ã‚¤ãƒ«ã®èª­ã¿è¾¼ã¿
     667指定されたシンボルファイルの読み込み
    695668#
    696669if !$romSymbolFileName.nil?
     
    703676
    704677#
    705 æŒ‡å®šã•ã‚ŒãŸSレコードファイルの読み込み
     678指定されたSレコードファイルの読み込み
    706679#
    707680if !$romImageFileName.nil?
     
    714687
    715688#
    716 ãƒ‘スに従って各処理を実行
     689パスに従って各処理を実行
    717690#
    718691case $pass
     
    731704end
    732705
    733 # エラー発生時はabortする
     706# エラー発生時はabortする
    734707if $errorFlag
    735708  if ($0 == __FILE__)
    736709    abort()
    737710  else
    738     # simplecov対応
     711    # simplecov対応
    739712    raise()
    740713  end
     
    742715
    743716#
    744 ä½œæˆã—たすべてのファイルを出力する
     717作成したすべてのファイルを出力する
    745718#
    746719GenFile.output
    747720
    748721#
    749 ã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ—ファイルの生成
     722タイムスタンプファイルの生成
    750723#
    751724if !$timeStampFileName.nil?
  • azure_iot_hub/trunk/asp3_dcre/cfg/pass1.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    77#              Graduate School of Information Science, Nagoya Univ., JAPAN
    88#
    9 #  上記著作権è€
    10 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    11 #  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    12 #  変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    14 #  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    15 #      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    16 #      スコード中に含まれていること.
    17 #  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    18 #      用できる形で再é
    19 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    20 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    21 #      è€
    22 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    23 #      の無保証規定を掲載すること.
    24 #  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    25 #      用できない形で再é
    26 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    27 #      と.
    28 #    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31 #        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32 #    (b) 再é
    33 å¸ƒã®å½¢æ
    34 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    35 #        報告すること.
    36 #  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    37 #      害からも,上記著作権è€
    38 ãŠã‚ˆã³TOPPERSプロジェクトをå
    39 è²¬ã™ã‚‹ã“と.
    40 #      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    41 #      由に基づく請求からも,上記著作権è€
    42 ãŠã‚ˆã³TOPPERSプロジェクトを
    43 #      å
    44 è²¬ã™ã‚‹ã“と.
    45 #
    46 #  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    47 ãŠ
    48 #  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    49 #  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    50 #  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    51 #  の責任を負わない.
     9#  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     10#  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11#  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12#  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13#      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14#      スコード中に含まれていること.
     15#  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16#      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17#      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18#      の無保証規定を掲載すること.
     19#  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20#      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21#      と.
     22#    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23#        作権表示,この利用条件および下記の無保証規定を掲載すること.
     24#    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25#        報告すること.
     26#  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27#      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28#      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29#      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30#      免責すること.
     31#
     32#  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33#  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34#  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35#  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36#  の責任を負わない.
    5237#
    5338#  $Id$
     
    5540
    5641#
    57 #               ãƒ‘ス1の処理
    58 #
    59 
    60 #
    61 å€¤å–得シンボルテーブルへの固定登録
     42#               パス1の処理
     43#
     44
     45#
     46値取得シンボルテーブルへの固定登録
    6247#
    6348$symbolValueTable = {
     
    8065
    8166#
    82 é™çš„APIテーブルへの固定登録
     67静的APIテーブルへの固定登録
    8368#
    8469$apiDefinition = { "INCLUDE" =>
     
    8671
    8772#
    88 é™çš„APIテーブルの読み込み
     73静的APIテーブルの読み込み
    8974#
    9075def ReadApiTableFile
     
    10287    apiFile = File.open(apiTableFileName)
    10388    apiFile.each do |line|
    104       next if /^#/ =~ line                      # コメントをスキップ
    105 
    106       fields = line.split(/\s+/)        # フィールドに分解
    107 
    108       apiName = fields.shift            # API名の取り出し
     89      next if /^#/ =~ line                      # コメントをスキップ
     90
     91      fields = line.split(/\s+/)        # フィールドに分解
     92
     93      apiName = fields.shift            # API名の取り出し
    10994      if /^(.+)\[(.+)\]$/ =~ apiName
    11095        apiName = $1
     
    127112
    128113          case prefix
    129           when "#"                                      # オブジェクト識別名(定義)
     114          when "#"                                      # オブジェクト識別名(定義)
    130115            apiParam[:ID_DEF] = true
    131           when "%"                                      # オブジェクト識別名(参ç
    132 §ï¼‰
     116          when "%"                                      # オブジェクト識別名(参照)
    133117            apiParam[:ID_REF] = true
    134           when "."                                      # 符号無し整数定数式パラメータ
     118          when "."                                      # 符号無し整数定数式パラメータ
    135119            apiParam[:EXPTYPE] = "unsigned_t"
    136           when "+"                                      # 符号付き整数定数式パラメータ
     120          when "+"                                      # 符号付き整数定数式パラメータ
    137121            apiParam[:EXPTYPE] = "signed_t"
    138122            apiParam[:SIGNED] = true
    139           when "&"                                      # 一般整数定数式パラメータ
     123          when "&"                                      # 一般整数定数式パラメータ
    140124            # do nothing
    141           when "$"                                      # 文字列定数式パラメータ
     125          when "$"                                      # 文字列定数式パラメータ
    142126            apiParam[:STRING] = true
    143127          else
     
    146130
    147131          case postfix
    148           when "*"                                      # キーを決めるパラメータ
     132          when "*"                                      # キーを決めるパラメータ
    149133            apiDef[:KEYPAR] = name
    150           when "?"                                      # オプションパラメータ
     134          when "?"                                      # オプションパラメータ
    151135            apiParam[:OPTIONAL] = true
    152           when "\.\.\."                         # リストパラメータ
     136          when "\.\.\."                         # リストパラメータ
    153137            apiParam[:LIST] = true
    154138          end
     
    175159
    176160#
    177 å€¤å–得シンボルテーブルの読み込み
     161値取得シンボルテーブルの読み込み
    178162#
    179163def ReadSymvalTable
     
    187171                                                { skip_blanks: true, skip_lines: /^#/ })
    188172    symvalCsv.each do |record|
    189       # 変数名
     173      # 変数名
    190174      if record[0].nil?
    191175        error_exit("invalid variable name in " \
     
    196180      variable = record[0]
    197181
    198       # 式
     182      #
    199183      if record[1].nil? || record[1].empty?
    200184        symbol[:EXPR] = variable
     
    203187      end
    204188
    205       # 式の型
     189      # 式の型
    206190      if !record[2].nil? && !record[2].empty?
    207191        case record[2]
    208         when /^[bB]/                            # 真偽値
     192        when /^[bB]/                            # 真偽値
    209193          symbol[:BOOL] = true
    210         when /^[uU]/                            # 符号無し整数値
    211           # 何も設定しない
    212         else                                            # 符号付き整数値
     194        when /^[uU]/                            # 符号無し整数値
     195          # 何も設定しない
     196        else                                            # 符号付き整数値
    213197          symbol[:SIGNED] = true
    214198        end
    215199      end
    216200
    217       # コンパイル条件
     201      # コンパイル条件
    218202      if !record[3].nil? && !record[3].empty?
    219203        symbol[:CONDITION] = record[3]
    220204      end
    221205
    222       # 条件が成立しない時の式
     206      # 条件が成立しない時の式
    223207      if !record[4].nil? && !record[4].empty?
    224208        symbol[:ELSE_EXPR] = record[4]
     
    232216
    233217#
    234 ã‚·ã‚¹ãƒ†ãƒ ã‚³ãƒ³ãƒ•ã‚£ã‚®ãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰ã®èª­ã¿è¾¼ã¿ã‚¯ãƒ©ã‚¹
     218システムコンフィギュレーションファイルからの読み込みクラス
    235219#
    236220class ConfigFile
     
    254238    return(nil) if line.nil?
    255239
    256         line.encode!("UTF-16BE", "UTF-8",       # 不正なバイト列を除外する
     240        line.encode!("UTF-16BE", "UTF-8",       # 不正なバイト列を除外する
    257241                                        :invalid => :replace,
    258242                                        :undef => :replace,
     
    263247    if @withinComment
    264248      case line
    265       when /\*\//                                               # C言語スタイルのコメント終了
    266         line.sub!(/^.*?\*\//, "")               # 最初の*/にマッチさせる */
     249      when /\*\//                                               # C言語スタイルのコメント終了
     250        line.sub!(/^.*?\*\//, "")               # 最初の*/にマッチさせる */
    267251        @withinComment = false
    268252      else
     
    271255    end
    272256    if !@withinComment
    273       line.gsub!(/\/\*.*?\*\//, "")             # C言語スタイルのコメントの除去
    274                                                                                 # 最初の*/にマッチさせる */
     257      line.gsub!(/\/\*.*?\*\//, "")             # C言語スタイルのコメントの除去
     258                                                                                # 最初の*/にマッチさせる */
    275259      case line
    276       when /^\s*#/                                              # プリプロセッサディレクティブ
     260      when /^\s*#/                                              # プリプロセッサディレクティブ
    277261        if withinApi
    278262          parse_error(self, \
     
    280264          line = ""
    281265        end
    282       when /\/\*/                                               # C言語スタイルのコメント開始
     266      when /\/\*/                                               # C言語スタイルのコメント開始
    283267        line.sub!(/\/\*.*$/, "")
    284268        @withinComment = true
    285       when /\/\//                                               # C++言語スタイルのコメント
     269      when /\/\//                                               # C++言語スタイルのコメント
    286270        line.sub!(/\/\/.*$/, "")
    287271      end
     
    300284
    301285#
    302 ã‚·ã‚¹ãƒ†ãƒ ã‚³ãƒ³ãƒ•ã‚£ã‚®ãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ãƒ•ã‚¡ã‚¤ãƒ«ã®ãƒ‘ーサークラス
     286システムコンフィギュレーションファイルのパーサークラス
    303287#
    304288class CfgParser
     
    310294  def initialize
    311295    @line = ""
    312     @skipComma = false                                          # 次が,であれば読み飛ばす
    313   end
    314 
    315   #
    316   #  文字列末まで読む
     296    @skipComma = false                                          # 次が,であれば読み飛ばす
     297  end
     298
     299  #
     300  #  文字列末まで読む
    317301  #
    318302  def parseString(cfgFile)
     
    320304    begin
    321305      case @line
    322       when /^([^"]*\\\\)(.*)$/                          # \\まで読む
     306      when /^([^"]*\\\\)(.*)$/                          # \\まで読む
    323307        string += $1
    324308        @line = $2
    325       when /^([^"]*\\\")(.*)$/                          # \"まで読む
     309      when /^([^"]*\\\")(.*)$/                          # \"まで読む
    326310        string += $1
    327311        @line = $2
    328       when /^([^"]*\")(.*)$/                            # "まで読む
     312      when /^([^"]*\")(.*)$/                            # "まで読む
    329313        string += $1
    330314        @line = $2
    331315        return(string)
    332       else                                                                      # 行末まで読む
     316      else                                                                      # 行末まで読む
    333317        string += @line + "\n"
    334318        @line = cfgFile.getNextLine(true)
     
    340324
    341325  #
    342   #  文字末まで読む
     326  #  文字末まで読む
    343327  #
    344328  def parseChar(cfgFile)
     
    346330    begin
    347331      case @line
    348       when /^([^']*\\\\)(.*)$/                          # \\まで読む
     332      when /^([^']*\\\\)(.*)$/                          # \\まで読む
    349333        string += $1
    350334        @line = $2
    351       when /^([^']*\\\')(.*)$/                          # \'まで読む
     335      when /^([^']*\\\')(.*)$/                          # \'まで読む
    352336        string += $1
    353337        @line = $2
    354       when /^([^']*\')(.*)$/                            # 'まで読む
     338      when /^([^']*\')(.*)$/                            # 'まで読む
    355339        string += $1
    356340        @line = $2
    357341        return(string)
    358       else                                                                      # 行末まで読む
     342      else                                                                      # 行末まで読む
    359343        string += @line + "\n"
    360344        @line = cfgFile.getNextLine(true)
     
    366350
    367351  #
    368   #  改行と空白文字を読み飛ばす
     352  #  改行と空白文字を読み飛ばす
    369353  #
    370354  def skipSpace(cfgFile, withinApi)
    371355    loop do
    372       return if @line.nil?                                              # ファイル末であればリターン
    373       @line.lstrip!                                                             # å
    374 ˆé ­ã®ç©ºç™½ã‚’削除
    375       return if @line != ""                                             # 空行でなければリターン
    376       @line = cfgFile.getNextLine(withinApi)    # 次の行を読む
    377     end
    378   end
    379 
    380   #
    381   #  次の文字まで読み飛ばす
     356      return if @line.nil?                                              # ファイル末であればリターン
     357      @line.lstrip!                                                             # 先頭の空白を削除
     358      return if @line != ""                                             # 空行でなければリターン
     359      @line = cfgFile.getNextLine(withinApi)    # 次の行を読む
     360    end
     361  end
     362
     363  #
     364  #  次の文字まで読み飛ばす
    382365  #
    383366  def skipToToken(cfgFile, withinApi=true)
    384367    skipSpace(cfgFile, withinApi)
    385     if @line.nil?                                                       # ファイル末であればエラー終了
     368    if @line.nil?                                                       # ファイル末であればエラー終了
    386369      error_exit("unexpexced end-of-file")
    387370    end
     
    389372
    390373  #
    391   #  パラメータを1つ読む
    392   #
    393   # @lineのå
    394 ˆé ­ã‹ã‚‰ãƒ‘ラメータを1つ読んで,それを文字列で返す.読んだパ
    395   # ラメータは,@lineからは削除する.パラメータの途中で行末に達した時は,
    396   # cfgFileから次の行を取り出す.ファイル末に達した時は,nilを返す.
     374  #  パラメータを1つ読む
     375  #
     376  # @lineの先頭からパラメータを1つ読んで,それを文字列で返す.読んだパ
     377  # ラメータは,@lineからは削除する.パラメータの途中で行末に達した時は,
     378  # cfgFileから次の行を取り出す.ファイル末に達した時は,nilを返す.
    397379  #
    398380  def parseParam(cfgFile)
    399     param = ""                                                          # 読んだ文字列
    400     parenLevel = 0                                                      # 括弧のネストレベル
     381    param = ""                                                          # 読んだ文字列
     382    parenLevel = 0                                                      # 括弧のネストレベル
    401383    skipComma = @skipComma
    402384    @skipComma = false
    403385
    404     skipToToken(cfgFile)                                        # 次の文字まで読み飛ばす
     386    skipToToken(cfgFile)                                        # 次の文字まで読み飛ばす
    405387    begin
    406388      if parenLevel == 0
     
    410392          if param == "" && skipComma
    411393            skipComma = false
    412             return(parseParam(cfgFile))         # 再帰呼び出し
     394            return(parseParam(cfgFile))         # 再帰呼び出し
    413395          else
    414396            return(param.strip)
     
    425407          @line = $2
    426408          parenLevel += 1
    427         when /^(\s*([)}]))(.*)$/                        # }か)
     409        when /^(\s*([)}]))(.*)$/                        # })
    428410          if param != ""
    429411            return(param.strip)
     
    439421          @line = $2
    440422          param += $1 + parseChar(cfgFile)
    441         when /^(\s*[^,{}()"'\s]+)(.*)$/         # その他の文字列
     423        when /^(\s*[^,{}()"'\s]+)(.*)$/         # その他の文字列
    442424          param += $1
    443425          @line = $2
    444         else                                                            # 行末
     426        else                                                            # 行末
    445427          param += " "
    446428          @line = cfgFile.getNextLine(true)
    447429        end
    448430      else
    449         # 括弧å†
    450 ã®å‡¦ç†
     431        # 括弧内の処理
    451432        case @line
    452433        when /^(\s*\()(.*)$/                            # "("
     
    464445          @line = $2
    465446          param += $1 + parseChar(cfgFile)
    466         when /^(\s*[^()"'\s]+)(.*)$/            # その他の文字列
     447        when /^(\s*[^()"'\s]+)(.*)$/            # その他の文字列
    467448          param += $1
    468449          @line = $2
    469         else                                                            # 行末
     450        else                                                            # 行末
    470451          param += " "
    471452          @line = cfgFile.getNextLine(true)
     
    499480
    500481  def parseApi(cfgFile, apiName)
    501     # 静的APIの読み込み
     482    # 静的APIの読み込み
    502483    staticApi = {}
    503484    tooFewParams = false
    504485    skipUntilBrace = 0
    505486
    506     skipToToken(cfgFile)                                        # 次の文字まで読み飛ばす
     487    skipToToken(cfgFile)                                        # 次の文字まで読み飛ばす
    507488    if (/^\((.*)$/ =~ @line)
    508489      @line = $1
     
    515496
    516497      apiDef[:PARAM].each do |apiParam|
    517         return(staticApi) if param.nil?         # ファイル末であればリターン
     498        return(staticApi) if param.nil?         # ファイル末であればリターン
    518499
    519500        if skipUntilBrace > 0
    520           # API定義を}までスキップ中
     501          # API定義を}までスキップ中
    521502          if apiParam.has_key?(:BRACE)
    522503            case apiParam[:BRACE]
     
    540521            staticApi[apiParam[:NAME]].push(getParam(apiParam, param, cfgFile))
    541522            param = parseParam(cfgFile)
    542             break if param.nil?                         # ファイル末の場合
     523            break if param.nil?                         # ファイル末の場合
    543524          end
    544525        elsif apiParam.has_key?(:OPTBRACE)
    545526          if param == apiParam[:BRACE]
    546527            param = parseParam(cfgFile)
    547             break if param.nil?                         # ファイル末の場合
     528            break if param.nil?                         # ファイル末の場合
    548529          else
    549530            if param == ""
    550531              param = parseParam(cfgFile)
    551               break if param.nil?                       # ファイル末の場合
     532              break if param.nil?                       # ファイル末の場合
    552533            elsif /^([})])$/ !~ param
    553534              parse_error(cfgFile, "`{...}' expected before #{param}")
    554535            end
    555             skipUntilBrace += 1                 # API定義を}までスキップ
     536            skipUntilBrace += 1                 # API定義を}までスキップ
    556537          end
    557538        elsif !apiParam.has_key?(:BRACE)
     
    568549        else
    569550          parse_error(cfgFile, "`#{apiParam[:BRACE]}' expected before #{param}")
    570           # )かファイル末まで読み飛ばす
     551          # )かファイル末まで読み飛ばす
    571552          loop do
    572553            param = parseParam(cfgFile)
     
    577558      end
    578559
    579       # 期å¾
    580 ã•ã‚Œã‚‹ãƒ‘ラメータをすべて読んだ後の処理
     560      # 期待されるパラメータをすべて読んだ後の処理
    581561      if param != ")"
    582562        begin
    583563          param = parseParam(cfgFile)
    584           return(staticApi) if param.nil?       # ファイル末であればリターン
     564          return(staticApi) if param.nil?       # ファイル末であればリターン
    585565        end while param != ")"
    586566        parse_error(cfgFile, "too many parameters before `)'")
     
    594574
    595575  def parseOpenBrace(cfgFile)
    596     # {の読み込み
    597     skipToToken(cfgFile)                                        # 次の文字まで読み飛ばす
     576    # {の読み込み
     577    skipToToken(cfgFile)                                        # 次の文字まで読み飛ばす
    598578    if (/^\{(.*)$/ =~ @line)
    599579      @line = $1
     
    609589      cfgFile = cfgFiles.last
    610590
    611       skipSpace(cfgFile, false)                         # 改行と空白文字を読み飛ばす
     591      skipSpace(cfgFile, false)                         # 改行と空白文字を読み飛ばす
    612592      if @line.nil?
    613         # ファイル末の処理
     593        # ファイル末の処理
    614594        cfgFiles.pop.close
    615595        if cfgFiles.empty?
    616           break                                                         # パース処理終了
     596          break                                                         # パース処理終了
    617597        else
    618           @line = ""                                            # å
    619 ƒã®ãƒ•ã‚¡ã‚¤ãƒ«ã«æˆ»ã£ã¦ç¶šã‘ã‚‹
     598          @line = ""                                            # 元のファイルに戻って続ける
    620599        end
    621600      elsif /^;(.*)$/ =~ @line
    622         # ;は読み飛ばす
     601        # ;は読み飛ばす
    623602        @line = $1
    624603      elsif /^#/ =~ @line
    625         # プリプロセッサディレクティブを読む
     604        # プリプロセッサディレクティブを読む
    626605        case @line
    627606        when /^#include\b(.*)$/
     
    662641            if !$domainId.has_key?(domid)
    663642              if $inputObjid.has_key?(domid)
    664                 # ID番号å
    665 ¥åŠ›ãƒ•ã‚¡ã‚¤ãƒ«ã«å®šç¾©ã•ã‚Œã¦ã„た場合
     643                # ID番号入力ファイルに定義されていた場合
    666644                $domainId[domid] = $inputObjid[domid]
    667645                if $domainId[domid] > 32
     
    690668        else
    691669          if $apiDefinition.has_key?(apiName)
    692             # 静的APIを1つ読む
     670            # 静的APIを1つ読む
    693671            staticApi = parseApi(cfgFile, apiName)
    694672            if staticApi.empty?
    695               # ファイル末か文法エラー
     673              # ファイル末か文法エラー
    696674            elsif (staticApi[:APINAME] == "INCLUDE")
    697               # INCLUDEの処理
     675              # INCLUDEの処理
    698676              includeFilePath = SearchFilePath(staticApi[:file])
    699677              if includeFilePath.nil?
     
    704682              end
    705683            else
    706               # 静的APIの処理
     684              # 静的APIの処理
    707685              if !@@currentDomain.nil?
    708686                staticApi[:DOMAIN] = @@currentDomain
     
    721699        end
    722700      elsif (/^\}(.*)$/ =~ @line)
    723         # }の処理
     701        # }の処理
    724702        if @@nestDC.size > 0
    725703          case @@nestDC.pop
     
    742720
    743721#
    744 #  cfg1_out.cの生成
     722#  cfg1_out.cの生成
    745723#
    746724module Cfg1OutC
    747725  #
    748   #  静的APIのファイル名と行番号の出力
     726  #  静的APIのファイル名と行番号の出力
    749727  #
    750728  def self.OutLineNumber(cfgInfo)
     
    753731
    754732  #
    755   #  クラス記述のファイル名と行番号の出力
     733  #  クラス記述のファイル名と行番号の出力
    756734  #
    757735  def self.OutClassLineNumber(cfgInfo)
     
    760738
    761739  #
    762   #  パラメータに関する定義の出力
     740  #  パラメータに関する定義の出力
    763741  #
    764742  def self.OutParamDef(param, index, apiParam, cfgInfo)
     
    774752
    775753  #
    776   #  cfg1_out.cの生成(メインの処理)
     754  #  cfg1_out.cの生成(メインの処理)
    777755  #
    778756  def self.Generate
     
    785763EOS
    786764
    787     # インクルードヘッダファイル
     765    # インクルードヘッダファイル
    788766    $includeFiles.each do |file|
    789767      @cfg1Out.add("#include #{file}")
     
    813791EOS
    814792
    815     # 値取得シンボルの処理
     793    # 値取得シンボルの処理
    816794    $symbolValueTable.each do |symbolName, symbolData|
    817795      if symbolData.has_key?(:BOOL) || symbolData.has_key?(:SIGNED)
     
    836814    @cfg1Out.add
    837815
    838     # ドメインIDの定義の生成
     816    # ドメインIDの定義の生成
    839817    $domainId.each do |domainName, domainVal|
    840818      if domainVal > 0
     
    844822    @cfg1Out.add
    845823
    846     # 静的API/プリプロセッサディレクティブの処理
     824    # 静的API/プリプロセッサディレクティブの処理
    847825    $cfgFileInfo.each do |cfgInfo|
    848826      if cfgInfo.has_key?(:DIRECTIVE)
     
    857835          next unless apiParam.has_key?(:NAME)
    858836          paramName = apiParam[:NAME]
    859           next unless cfgInfo.has_key?(paramName)       # パラメータがない場合
     837          next unless cfgInfo.has_key?(paramName)       # パラメータがない場合
    860838          paramData = cfgInfo[paramName]
    861839
     
    869847        end
    870848        if cfgInfo.has_key?(:CLASS)
    871           # クラスIDの取得のための処理
     849          # クラスIDの取得のための処理
    872850          OutClassLineNumber(cfgInfo)
    873851          @cfg1Out.add("const signed_t #{CFG1_PREFIX}valueof_CLASS_" \
     
    881859
    882860#
    883 ãƒ‘ス1の処理
     861パス1の処理
    884862#
    885863def Pass1
    886864  #
    887   #  タイムスタンプファイルの指定
     865  #  タイムスタンプファイルの指定
    888866  #
    889867  $timeStampFileName = CFG1_OUT_TIMESTAMP
    890868
    891869  #
    892   #  静的APIテーブルの読み込み
     870  #  静的APIテーブルの読み込み
    893871  #
    894872  ReadApiTableFile()
    895873
    896874  #
    897   #  値取得シンボルテーブルの読み込み
     875  #  値取得シンボルテーブルの読み込み
    898876  #
    899877  ReadSymvalTable()
    900878
    901879  #
    902   #  システムコンフィギュレーションファイルの読み込み
     880  #  システムコンフィギュレーションファイルの読み込み
    903881  #
    904882  $cfgFileInfo = []
     
    909887    CfgParser.new.parseFile(configFileName)
    910888  end
    911   abort if $errorFlag                                   # エラー発生時はabortする
    912 
    913   #
    914   #  ドメインIDの割当て処理
     889  abort if $errorFlag                                   # エラー発生時はabortする
     890
     891  #
     892  #  ドメインIDの割当て処理
    915893  #
    916894  nextDomainId = 1
     
    929907
    930908  #
    931   #  cfg1_out.cの生成
     909  #  cfg1_out.cの生成
    932910  #
    933911  Cfg1OutC::Generate()
    934912
    935913  #
    936   #  依存関係の出力
     914  #  依存関係の出力
    937915  #
    938916  if !$dependencyFileName.nil?
     
    959937
    960938  #
    961   #  パス2に引き渡すæƒ
    962 å ±ã‚’ファイルに生成
     939  #  パス2に引き渡す情報をファイルに生成
    963940  #
    964941  if $omitOutputDb.nil?
  • azure_iot_hub/trunk/asp3_dcre/cfg/pass2.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    77#              Graduate School of Information Science, Nagoya Univ., JAPAN
    88#
    9 #  上記著作権è€
    10 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    11 #  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    12 #  変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    14 #  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    15 #      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    16 #      スコード中に含まれていること.
    17 #  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    18 #      用できる形で再é
    19 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    20 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    21 #      è€
    22 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    23 #      の無保証規定を掲載すること.
    24 #  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    25 #      用できない形で再é
    26 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    27 #      と.
    28 #    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31 #        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32 #    (b) 再é
    33 å¸ƒã®å½¢æ
    34 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    35 #        報告すること.
    36 #  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    37 #      害からも,上記著作権è€
    38 ãŠã‚ˆã³TOPPERSプロジェクトをå
    39 è²¬ã™ã‚‹ã“と.
    40 #      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    41 #      由に基づく請求からも,上記著作権è€
    42 ãŠã‚ˆã³TOPPERSプロジェクトを
    43 #      å
    44 è²¬ã™ã‚‹ã“と.
    45 #
    46 #  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    47 ãŠ
    48 #  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    49 #  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    50 #  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    51 #  の責任を負わない.
     9#  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     10#  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11#  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12#  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13#      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14#      スコード中に含まれていること.
     15#  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16#      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17#      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18#      の無保証規定を掲載すること.
     19#  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20#      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21#      と.
     22#    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23#        作権表示,この利用条件および下記の無保証規定を掲載すること.
     24#    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25#        報告すること.
     26#  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27#      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28#      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29#      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30#      免責すること.
     31#
     32#  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33#  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34#  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35#  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36#  の責任を負わない.
    5237#
    5338#  $Id$
     
    5540
    5641#
    57 #               ãƒ‘ス2の処理
    58 #
    59 
    60 #
    61 ãƒ‘ス1の生成物の読み込み
     42#               パス2の処理
     43#
     44
     45#
     46パス1の生成物の読み込み
    6247#
    6348module Cfg1Out
    6449  #
    65   #  Sレコードファイルからシンボルの値を取り出す
     50  #  Sレコードファイルからシンボルの値を取り出す
    6651  #
    6752  def self.GetSymbolValue(symbol, size, signed)
     
    7459
    7560  #
    76   #  パス1の生成物の読み込み(メインの処理)
     61  #  パス1の生成物の読み込み(メインの処理)
    7762  #
    7863  def self.Read
    79     # cfg1_out.symsの読み込み
     64    # cfg1_out.symsの読み込み
    8065    @symbolAddress = ReadSymbolFile(CFG1_OUT_SYMS)
    8166
    82     # cfg1_out.srecの読み込み
     67    # cfg1_out.srecの読み込み
    8368    begin
    8469      @cfg1SRec = SRecord.new(CFG1_OUT_SREC)
     
    8772    end
    8873
    89     # マジックナンバーの取得
     74    # マジックナンバーの取得
    9075    if @symbolAddress.has_key?(CFG1_MAGIC_NUM)
    9176      $asmLabel = ""
     
    10893    end
    10994
    110     # 固定出力した変数の取得
     95    # 固定出力した変数の取得
    11196    $sizeOfSigned = GetSymbolValue($asmLabel + CFG1_SIZEOF_SIGNED, 4, false)
    11297
    113     # 値取得シンボルの取得
     98    # 値取得シンボルの取得
    11499    $symbolValueTable.each do |symbolName, symbolData|
    115100      symbol = $cfg1_prefix + symbolName
     
    117102        value = GetSymbolValue(symbol, $sizeOfSigned, true)
    118103        if !value.nil?
    119           # C言語の真偽値をRubyの真偽値に変換して取り込む
     104          # C言語の真偽値をRubyの真偽値に変換して取り込む
    120105          symbolData[:VALUE] = (value != 0)
    121106        end
     
    130115
    131116    #
    132     #  ハッシュの初期化
     117    #  ハッシュの初期化
    133118    #
    134119    $cfgData = {}
     
    148133
    149134    #
    150     #  ドメイン生成データをコンフィギュレーションデータ($cfgData)に格納
     135    #  ドメイン生成データをコンフィギュレーションデータ($cfgData)に格納
    151136    #
    152137    $cfgData[:CRE_DOM] = {}
     
    160145
    161146  #
    162   #  パラメータの値を取り出す
     147  #  パラメータの値を取り出す
    163148  #
    164149  def self.GetParamValue(paramName, param, apiIndex, index, apiParam, cfgInfo)
    165     if apiParam.has_key?(:ID_DEF)                               # オブジェクト識別名(定義)
     150    if apiParam.has_key?(:ID_DEF)                               # オブジェクト識別名(定義)
    166151      value = @objidValues[paramName][param]
    167     elsif apiParam.has_key?(:ID_REF)                    # オブジェクト識別名(参ç
    168 §ï¼‰
     152    elsif apiParam.has_key?(:ID_REF)                    # オブジェクト識別名(参照)
    169153      if @objidValues[paramName].has_key?(param)
    170154        value = @objidValues[paramName][param]
     
    176160        value = nil
    177161      end
    178     elsif apiParam.has_key?(:EXPTYPE)                   # 整数定数式パラメータ
     162    elsif apiParam.has_key?(:EXPTYPE)                   # 整数定数式パラメータ
    179163      if apiIndex.nil?
    180164        if param.is_a?(NumStr)
     
    188172                                                                        apiParam.has_key?(:SIGNED))
    189173      end
    190     else                                                                                # 一般定数式/文字列パラメータ
     174    else                                                                                # 一般定数式/文字列パラメータ
    191175      return(param)
    192176    end
     
    195179
    196180  #
    197   #  指定したフェーズのためのパス1の生成物の読み込み
     181  #  指定したフェーズのためのパス1の生成物の読み込み
    198182  #
    199183  def self.ReadPhase(phase)
    200184    #
    201     #  オブジェクトIDの割当て
    202     #
    203     # 割り当てたオブジェクトIDは,@objidValuesに保持する.@objidValuesは,
    204     # 2重のハッシュ(ハッシュのハッシュ)である.
    205     #
    206     # å
    207 ·ä½“的には,@objidValuesは,オブジェクトIDのパラメータ名(例えば,セ
    208     # マフォIDであれば"semid".これを保持する変数名は,objidParamNameとす
    209     # る)をキーとし,そのオブジェクトIDの割当て表(これを保持する変数名
    210     # は,objidListとする)を値とするハッシュである.オブジェクトIDの割当
    211     # て表は,オブジェクト名(これを保持する変数名は,objNameとする)をキー
    212     # とし,そのID番号(これを保持する変数名は,objidNumberとする)を値と
    213     # するハッシュである.
    214     #
    215     # 例えば,セマフォSEM1のID番号が1の場合には,次のように設定される.
     185    #  オブジェクトIDの割当て
     186    #
     187    # 割り当てたオブジェクトIDは,@objidValuesに保持する.@objidValuesは,
     188    # 2重のハッシュ(ハッシュのハッシュ)である.
     189    #
     190    # 具体的には,@objidValuesは,オブジェクトIDのパラメータ名(例えば,セ
     191    # マフォIDであれば"semid".これを保持する変数名は,objidParamNameとす
     192    # る)をキーとし,そのオブジェクトIDの割当て表(これを保持する変数名
     193    # は,objidListとする)を値とするハッシュである.オブジェクトIDの割当
     194    # て表は,オブジェクト名(これを保持する変数名は,objNameとする)をキー
     195    # とし,そのID番号(これを保持する変数名は,objidNumberとする)を値と
     196    # するハッシュである.
     197    #
     198    # 例えば,セマフォSEM1のID番号が1の場合には,次のように設定される.
    216199    #   @objidValues["semid"]["SEM1"] == 1
    217200    #
    218201
    219     # ID番号割り当ての前処理
     202    # ID番号割り当ての前処理
    220203    objidParamNameList = []
    221204    $cfgFileInfo.each do |cfgInfo|
    222       # プリプロセッサディレクティブは読み飛ばす
     205      # プリプロセッサディレクティブは読み飛ばす
    223206      next if cfgInfo.has_key?(:DIRECTIVE)
    224207
    225208      apiDef = $apiDefinition[cfgInfo[:APINAME]]
    226       # 異なるフェーズの静的APIは読み飛ばす
     209      # 異なるフェーズの静的APIは読み飛ばす
    227210      next if apiDef[:PHASE] != phase
    228211
    229212      apiIndex = cfgInfo[:INDEX]
    230213      if !apiIndex.nil?
    231         # シンボルファイルに静的APIのインデックスが存在しなければ読み飛
    232         # ばす(ifdef等で消えた静的API)
     214        # シンボルファイルに静的APIのインデックスが存在しなければ読み飛
     215        # ばす(ifdef等で消えた静的API)
    233216        symbol = "#{$cfg1_prefix}static_api_#{apiIndex}"
    234217        next unless @symbolAddress.has_key?(symbol)
     
    240223          objName = cfgInfo[objidParamName]
    241224          if $inputObjid.has_key?(objName)
    242             # ID番号å
    243 ¥åŠ›ãƒ•ã‚¡ã‚¤ãƒ«ã«å®šç¾©ã•ã‚Œã¦ã„た場合
     225            # ID番号入力ファイルに定義されていた場合
    244226            @objidValues[objidParamName][objName] = $inputObjid[objName]
    245227          else
     
    251233    end
    252234
    253     # ID番号の割当て処理
     235    # ID番号の割当て処理
    254236    objidParamNameList.each do |objidParamName|
    255237      objidList = @objidValues[objidParamName]
    256238
    257       # 未使用のID番号のリスト(使用したものから消していく)
     239      # 未使用のID番号のリスト(使用したものから消していく)
    258240      unusedObjidList = (1.upto(objidList.keys.size)).to_a
    259241
    260       # 割り当て済みのID番号の処理
     242      # 割り当て済みのID番号の処理
    261243      objidList.each do |objName, objidNumber|
    262244        if $inputObjid.has_key?(objName)
    263245          objidIndex = unusedObjidList.index($inputObjid[objName])
    264246          if objidIndex.nil?
    265             # ID番号å
    266 ¥åŠ›ãƒ•ã‚¡ã‚¤ãƒ«ã§æŒ‡å®šã•ã‚ŒãŸå€¤ãŒä¸æ­£
     247            # ID番号入力ファイルで指定された値が不正
    267248            error_exit("value of `#{objName}' in ID input file is illegal")
    268249          else
    269             # 未使用のID番号のリストから削除
     250            # 未使用のID番号のリストから削除
    270251            unusedObjidList.delete_at(objidIndex)
    271252          end
     
    273254      end
    274255
    275       # ID番号の割当て
     256      # ID番号の割当て
    276257      objidList.each do |objName, objidNumber|
    277258        if objidList[objName].nil?
    278           # 以下で,@objidValuesを書き換えている
     259          # 以下で,@objidValuesを書き換えている
    279260          objidList[objName] = unusedObjidList.shift
    280261        end
     
    283264
    284265    #
    285     #  静的APIデータをコンフィギュレーションデータ($cfgData)に格納
     266    #  静的APIデータをコンフィギュレーションデータ($cfgData)に格納
    286267    #
    287268    $cfgFileInfo.each do |cfgInfo|
    288       # プリプロセッサディレクティブは読み飛ばす
     269      # プリプロセッサディレクティブは読み飛ばす
    289270      next if cfgInfo.has_key?(:DIRECTIVE)
    290271
    291272      apiDef = $apiDefinition[cfgInfo[:APINAME]]
    292       # 異なるフェーズの静的APIは読み飛ばす
     273      # 異なるフェーズの静的APIは読み飛ばす
    293274      next if apiDef[:PHASE] != phase
    294275
     
    296277      apiIndex = cfgInfo[:INDEX]
    297278      if !apiIndex.nil?
    298         # シンボルファイルに静的APIのインデックスが存在しなければ読み飛
    299         # ばす(ifdef等で消えた静的API)
     279        # シンボルファイルに静的APIのインデックスが存在しなければ読み飛
     280        # ばす(ifdef等で消えた静的API)
    300281        symbol = "#{$cfg1_prefix}static_api_#{apiIndex}"
    301282        next unless @symbolAddress.has_key?(symbol)
    302283      end
    303284
    304       # パラメータの値をハッシュ形式に格納
     285      # パラメータの値をハッシュ形式に格納
    305286      params = {}
    306287      apiDef[:PARAM].each do |apiParam|
    307288        next unless apiParam.has_key?(:NAME)
    308289        paramName = apiParam[:NAME]
    309         next unless cfgInfo.has_key?(paramName)         # パラメータがない場合
     290        next unless cfgInfo.has_key?(paramName)         # パラメータがない場合
    310291        paramData = cfgInfo[paramName]
    311292
     
    322303      end
    323304
    324       # ドメインIDを追加
     305      # ドメインIDを追加
    325306      if cfgInfo.has_key?(:DOMAIN)
    326307        domainName = cfgInfo[:DOMAIN]
     
    328309      end
    329310
    330       # クラスIDを追加
     311      # クラスIDを追加
    331312      if cfgInfo.has_key?(:CLASS)
    332313        if apiIndex.nil?
     
    339320      end
    340321
    341       # API名,ファイル名,行番号を追加
     322      # API名,ファイル名,行番号を追加
    342323      params[:apiname] = cfgInfo[:APINAME]
    343324      params[:_file_] = cfgInfo[:_FILE_]
    344325      params[:_line_] = cfgInfo[:_LINE_]
    345326
    346       # 登録キーを決定する
     327      # 登録キーを決定する
    347328      if apiDef.has_key?(:KEYPAR)
    348329        keyParam = params[apiDef[:KEYPAR].to_sym]
    349330        key = keyParam.val
    350331        if $cfgData[apiSym].has_key?(key)
    351           # 登録キーの重複
     332          # 登録キーの重複
    352333          error("E_OBJ: #{apiDef[:KEYPAR]} `#{keyParam}' " \
    353334                                                                "is duplicated in #{cfgInfo[:APINAME]}",
     
    362343
    363344  #
    364   #  ID番号出力ファイルの生成
     345  #  ID番号出力ファイルの生成
    365346  #
    366347  def self.OutputId(fileName)
     
    375356
    376357#
    377 ãƒ‘ス2の処理
     358パス2の処理
    378359#
    379360def Pass2
    380361  #
    381   #  パス1から引き渡されるæƒ
    382 å ±ã‚’ファイルから読み込む
     362  #  パス1から引き渡される情報をファイルから読み込む
    383363  #
    384364  db = PStore.new(CFG1_OUT_DB)
     
    393373
    394374  #
    395   #  パス1の生成物を読み込む
     375  #  パス1の生成物を読み込む
    396376  #
    397377  Cfg1Out.Read()
    398   abort if $errorFlag                                   # エラー発生時はabortする
    399 
    400   #
    401   #  値取得シンボルをグローバル変数として定義する
     378  abort if $errorFlag                                   # エラー発生時はabortする
     379
     380  #
     381  #  値取得シンボルをグローバル変数として定義する
    402382  #
    403383  DefineSymbolValue()
    404384
    405385  #
    406   #  生成スクリプト(trbファイル)を実行する
     386  #  生成スクリプト(trbファイル)を実行する
    407387  #
    408388  $trbFileNames.each do |trbFileName|
     
    415395
    416396  #
    417   #  ID番号出力ファイルの生成
     397  #  ID番号出力ファイルの生成
    418398  #
    419399  if !$idOutputFileName.nil?
     
    422402
    423403  #
    424   #  パス3に引き渡すæƒ
    425 å ±ã‚’ファイルに生成
     404  #  パス3に引き渡す情報をファイルに生成
    426405  #
    427406  if $omitOutputDb.nil?
Note: See TracChangeset for help on using the changeset viewer.