Changeset 389 for azure_iot_hub/trunk/asp3_dcre/cfg
- Timestamp:
- May 22, 2019, 10:03:37 PM (5 years ago)
- 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
totext/x-ruby;charset=UTF-8
r388 r389 8 8 # Copyright (C) 2016 by APTJ Co., Ltd., JAPAN 9 9 # 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 # 免責すること. 46 32 # 47 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 48 ã 49 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 50 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 51 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 52 # ã®è²¬ä»»ãè² ããªãï¼ 33 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 34 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 35 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 36 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 37 # の責任を負わない. 53 38 # 54 39 # $Id$ … … 56 41 57 42 # 58 # ãã¡ã¤ã«ä½æã¯ã©ã¹43 # ファイル作成クラス 59 44 # 60 45 61 46 # 62 # ãã¡ã¤ã«ã«æ¸ããã¨ããå 63 容ãå¤æ°ã«èç©ãï¼ããã°ã©ã ã®çµäºæï¼output 64 # ã¡ã½ãããå¼ã°ããæï¼ã«ãã¡ã¤ã«ã«åºåããï¼æ¢ã«ãã¡ã¤ã«ãåå¨ãï¼å·® 65 # åããªãå ´åã¯åºåããªãï¼ã¿ã¤ã ã¹ã¿ã³ããæ´æ°ããªãï¼ï¼ 47 # ファイルに書こうとした内容を変数に蓄積し,プログラムの終了時(output 48 # メソッドが呼ばれた時)にファイルに出力する.既にファイルが存在し,差 49 # 分がない場合は出力しない(タイムスタンプを更新しない). 66 50 # 67 51 class GenFile … … 75 59 end 76 60 77 # ãã¡ã¤ã«ãã¼ã¿ã®æ«å°¾ã«æååã追å ãã61 # ファイルデータの末尾に文字列を追加する 78 62 def append(code = "") 79 63 @@fileDataHash[@selfFileName] << code 80 64 end 81 65 82 # ãã¡ã¤ã«ãã¼ã¿ã«1è¡è¿½å ãã66 # ファイルデータに1行追加する 83 67 def add(code = "") 84 68 @@fileDataHash[@selfFileName] << code << "\n" 85 69 end 86 70 87 # ãã¡ã¤ã«ãã¼ã¿ã«1è¡è¿½å ãã(æ¹è¡2å)71 # ファイルデータに1行追加する(改行2回) 88 72 def add2(code = "") 89 73 add(code + "\n") 90 74 end 91 75 92 # ã³ã¡ã³ããããã追å ãã76 # コメントヘッダを追加する 93 77 def comment_header(comment) 94 78 add("/*") … … 99 83 end 100 84 101 # ãã¡ã¤ã«ãã¼ã¿ã表示ãã85 # ファイルデータを表示する 102 86 def print() 103 87 puts(@@fileDataHash[@selfFileName]) 104 88 end 105 89 106 # å 107 ¨ãã¡ã¤ã«ãåºåãã 90 # 全ファイルを出力する 108 91 def self.output() 109 92 @@fileDataHash.each do |fileName, fileData| 110 # æ¢ã«ãã¡ã¤ã«ãåå¨ãï¼å·®åããªãå ´åã¯åºåããªã111 # ï¼ã¿ã¤ã ã¹ã¿ã³ããæ´æ°ããªãï¼93 # 既にファイルが存在し,差分がない場合は出力しない 94 #(タイムスタンプを更新しない) 112 95 if File.exist?(fileName) 113 96 if fileData == File.read(fileName) -
Property svn:mime-type
changed from
-
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
-
Property svn:eol-style
set to
-
azure_iot_hub/trunk/asp3_dcre/cfg/SRecord.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 7 7 # Copyright (C) 2015 by FUJI SOFT INCORPORATED, JAPAN 8 8 # 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 # 免責すること. 45 31 # 46 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 47 ã 48 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 49 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 50 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 51 # ã®è²¬ä»»ãè² ããªãï¼ 32 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 33 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 34 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 35 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 36 # の責任を負わない. 52 37 # 53 38 # $Id$ … … 55 40 56 41 # 57 # S ã¬ã³ã¼ããã¡ã¤ã«å¦çã¯ã©ã¹42 # Sレコードファイル処理クラス 58 43 # 59 44 60 45 # 61 # S ã¬ã³ã¼ããã¡ã¤ã«ãå¤æ°ã«èªã¿è¾¼ã¿ï¼è¦æ±ãããçªå°ã®ãã¼ã¿ãè¿ãï¼46 # Sレコードファイルを変数に読み込み,要求された番地のデータを返す. 62 47 # 63 # @sRecDataã¯ï¼å 64 é çªå°ããã¼ã¨ãï¼ããããã®ãã¼ã¿ï¼ãããµãã³ãå½¢å¼ï¼ 65 # ãå¤ã¨ãããã¯ãæ ¼ç´ãããããã·ã¥ã§ããï¼é£ç¶ãããããã¯ã¯ï¼1ã¤ã®ã 66 # ããã¯ã«ã¾ã¨ãã¦æ ¼ç´ãããã®ã¨ããï¼ããããªãã¨ï¼ãã¼ã¿ã®ååºãããµã¼ 67 # ããé¢åã«ãªãï¼ï¼ 48 # @sRecDataは,先頭番地をキーとし,そこからのデータ(ヘキサダンプ形式) 49 # を値とブロックが格納されたハッシュである.連続するブロックは,1つのブ 50 # ロックにまとめて格納するものとする(そうしないと,データの取出しやサー 51 # チが面倒になる). 68 52 # 69 53 class SRecord … … 74 58 prevData = "" 75 59 file.each do |line| 76 # ãã¼ã¿ã¬ã³ã¼ãã«ããåå²60 # データレコードにより分岐 77 61 case line.slice(0, 2) 78 62 when "S1" 79 # ãã¼ã¿é·ï¼ã¢ãã¬ã¹å[2byte]+ãã§ãã¯ãµã å1byteãæ¸ç®ï¼63 # データ長(アドレス分[2byte]+チェックサム分1byteを減算) 80 64 length = line.slice(2, 2).hex - 2 - 1 81 65 82 # ã¢ãã¬ã¹ï¼4æå=2byteï¼66 # アドレス(4文字=2byte) 83 67 address = line.slice(4, 4).hex 84 68 85 # ãã¼ã¿ï¼ãã®æç¹ã§ã¯æååã§åã£ã¦ããï¼69 # データ(この時点では文字列で取っておく) 86 70 data = line.slice(8, length * 2) 87 71 when "S2" 88 # ãã¼ã¿é·ï¼ã¢ãã¬ã¹å[3byte]+ãã§ãã¯ãµã å1byteãæ¸ç®ï¼72 # データ長(アドレス分[3byte]+チェックサム分1byteを減算) 89 73 length = line.slice(2, 2).hex - 3 - 1 90 74 91 # ã¢ãã¬ã¹ï¼6æå=3byteï¼75 # アドレス(6文字=3byte) 92 76 address = line.slice(4, 6).hex 93 77 94 # ãã¼ã¿ï¼ãã®æç¹ã§ã¯æååã§åã£ã¦ããï¼78 # データ(この時点では文字列で取っておく) 95 79 data = line.slice(10, length * 2) 96 80 when "S3" 97 # ãã¼ã¿é·ï¼ã¢ãã¬ã¹å[4byte]+ãã§ãã¯ãµã å1byteãæ¸ç®ï¼81 # データ長(アドレス分[4byte]+チェックサム分1byteを減算) 98 82 length = line.slice(2, 2).hex - 4 - 1 99 83 100 # ã¢ãã¬ã¹ï¼8æå=4byteï¼84 # アドレス(8文字=4byte) 101 85 address = line.slice(4, 8).hex 102 86 103 # ãã¼ã¿ï¼ãã®æç¹ã§ã¯æååã§åã£ã¦ããï¼87 # データ(この時点では文字列で取っておく) 104 88 data = line.slice(12, length * 2) 105 89 else … … 108 92 109 93 if !address.nil? 110 # ãã¼ã¿ãæ ¼ç´ãã94 # データを格納する 111 95 if address == prevAddress + prevData.size / 2 112 96 prevData << data … … 122 106 end 123 107 124 # ãã¼ã¿åå¾108 # データ取得 125 109 def get_data(address, size) 126 110 endAddress = address + size … … 134 118 end 135 119 136 # ãã¼ã¿æ¸è¾¼ã¿120 # データ書込み 137 121 def set_data(address, data) 138 122 endAddress = address + data.size / 2 … … 141 125 142 126 if nEndBlock < address || endAddress < block 143 # éãªãããªã127 # 重なりがない 144 128 elsif address < block 145 # æ°è¦ãã¼ã¿ã®æ¹ãå 146 é çªå°ãå°ãã 147 # ããã§ã¯ endAddress >= block ãæç«ãã¦ãã 129 # 新規データの方が先頭番地が小さい 130 # ここでは endAddress >= block が成立している 148 131 offset = (endAddress - block) * 2 149 132 data << blockData[offset..-1] 150 133 @sRecData.delete(block) 151 134 else 152 # ç»é²æ¸ã¿ãã¼ã¿ã®æ¹ãå 153 é çªå°ãå°ãããåã 135 # 登録済みデータの方が先頭番地が小さいか同じ 154 136 offset = (address - block) * 2 155 137 address = block … … 162 144 end 163 145 164 # å¤ã¨ãã¦ã®ãã¼ã¿åå¾146 # 値としてのデータ取得 165 147 def get_value(address, size, signed) 166 148 targetData = get_data(address, size) … … 169 151 else 170 152 if $endianLittle 171 # ãªãã«ã¨ã³ãã£ã¢ã³ã®å ´åï¼ãã¤ããªã¼ãã¼ãéã«ãã153 # リトルエンディアンの場合,バイトオーダーを逆にする 172 154 reverseData = "" 173 # å¾ããã2æåãã¤æãåºãï¼ä¸¦ã³æ¿ãã155 # 後ろから2文字ずつ抜き出し,並び替える 174 156 while targetData.size > 0 175 157 reverseData << targetData[-2, 2] … … 181 163 end 182 164 183 # è² ã®æ°ã®å¦ç165 # 負の数の処理 184 166 if signed && (returnData & (1 << (size * 8 - 1))) != 0 185 167 returnData -= (1 << (size * 8)) -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/cfg/cfg.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 8 8 # Graduate School of Information Science, Nagoya Univ., JAPAN 9 9 # 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 # の責任を負わない. 53 38 # 54 39 # $Id$ … … 68 53 69 54 # 70 # å®æ°å®ç¾© 71 # 72 # å 73 ±é 55 # 定数定義 56 # 57 # 共通 74 58 VERSION = "1.2.2" 75 59 76 # cfg1_out é¢ä¿60 # cfg1_out関係 77 61 CFG1_PREFIX = "TOPPERS_cfg_" 78 62 CFG1_MAGIC_NUM = "TOPPERS_magic_number" … … 85 69 CFG1_OUT_TARGET_H = "target_cfg1_out.h" 86 70 87 # cfg2_out é¢ä¿71 # cfg2_out関係 88 72 CFG2_OUT_DB = "cfg2_out.db" 89 73 90 # cfg3_out é¢ä¿74 # cfg3_out関係 91 75 CFG3_OUT_DB = "cfg3_out.db" 92 76 93 77 # 94 # ã¨ã©ã¼çºçæç¡ãã©ã°78 # エラー発生有無フラグ 95 79 # 96 80 $errorFlag = false 97 81 98 82 # 99 # ã¨ã©ã¼ï¼è¦å表示é¢æ°100 # 101 # ä¸è¬çãªã¨ã©ã¼è¡¨ç¤ºï¼å¦çãä¸æï¼83 # エラー/警告表示関数 84 # 85 # 一般的なエラー表示(処理を中断) 102 86 def error_exit(message, location = "") 103 87 location += " " if location != "" … … 105 89 end 106 90 107 # ä¸è¬çãªã¨ã©ã¼è¡¨ç¤ºï¼å¦çãç¶ç¶ï¼91 # 一般的なエラー表示(処理を継続) 108 92 def error(message, location = "") 109 93 location += " " if location != "" … … 112 96 end 113 97 114 # ä¸è¬çãªè¦å表示98 # 一般的な警告表示 115 99 def warning(message, location = "") 116 100 location += " " if location != "" … … 118 102 end 119 103 120 # ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã®æ§æ解ææã®ã¨ã©ã¼104 # システムコンフィギュレーションファイルの構文解析時のエラー 121 105 $noParseError = 0 122 106 def parse_error(cfgFile, message) … … 127 111 end 128 112 129 # ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã®æ§æ解ææã®è¦å113 # システムコンフィギュレーションファイルの構文解析時の警告 130 114 def parse_warning(cfgFile, message) 131 115 warning(message, "#{cfgFile.getFileName()}:#{cfgFile.getLineNo}:") … … 133 117 134 118 # 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 # エラー/警告メッセージの展開 143 127 def expand_message(message, params) 144 128 result = message.dup … … 156 140 end 157 141 158 # éçAPIå¦çæã®ã¨ã©ã¼142 # 静的API処理時のエラー 159 143 def error_api(params, message) 160 144 error(expand_message(message, params), \ … … 162 146 end 163 147 164 # éçAPIå¦çæã®è¦å148 # 静的API処理時の警告 165 149 def warning_api(params, message) 166 150 warning(expand_message(message, params), \ … … 168 152 end 169 153 170 # éçAPIå¦çæã®ã¨ã©ã¼ï¼ã¨ã©ã¼ã³ã¼ãä»ãï¼154 # 静的API処理時のエラー(エラーコード付き) 171 155 def error_ercd(errorCode, params, message) 172 156 error_api(params, "#{errorCode}: #{message}") 173 157 end 174 158 175 # éçAPIå¦çæã®è¦åï¼ã¨ã©ã¼ã³ã¼ãä»ãï¼159 # 静的API処理時の警告(エラーコード付き) 176 160 def warning_ercd(errorCode, params, message) 177 161 warning_api(params, "#{errorCode}: #{message}") 178 162 end 179 163 180 # ãã©ã¡ã¼ã¿ã®ã¨ã©ã¼164 # パラメータのエラー 181 165 def error_wrong(errorCode, params, symbol, wrong) 182 166 error_ercd(errorCode, params, "%%#{symbol} is #{wrong} in %apiname") … … 193 177 end 194 178 195 # ãã©ã¡ã¼ã¿ä¸æ£ã®ã¨ã©ã¼179 # パラメータ不正のエラー 196 180 def error_illegal(errorCode, params, symbol) 197 181 error_ercd(errorCode, params, "illegal %%#{symbol} in %apiname") … … 209 193 210 194 # 211 # String ã¯ã©ã¹ã®æ¡å¼µï¼äºéå¼ç¨ç¬¦ã§å²ã¾ããæååã®ä½æï¼å±éï¼195 # Stringクラスの拡張(二重引用符で囲まれた文字列の作成/展開) 212 196 # 213 197 class String 214 198 # 215 # äºéå¼ç¨ç¬¦ã§å²ã¾ããæååã®ä½æ199 # 二重引用符で囲まれた文字列の作成 216 200 # 217 201 def quote … … 249 233 250 234 # 251 # äºéå¼ç¨ç¬¦ã§å²ã¾ããæååã®å±é235 # 二重引用符で囲まれた文字列の展開 252 236 # 253 237 def unquote … … 299 283 300 284 # 301 # NumStr ã¯ã©ã¹ï¼æ°å¤ã«æååãä»å ãããã®ï¼ã®å®ç¾©285 # NumStrクラス(数値に文字列を付加したもの)の定義 302 286 # 303 287 class NumStr … … 307 291 end 308 292 309 # æ°å¤æ 310 å ±ãè¿ã 293 # 数値情報を返す 311 294 def val 312 295 return @val … … 314 297 alias_method :to_i, :val 315 298 316 # æååæ 317 å ±ãè¿ã 299 # 文字列情報を返す 318 300 def str 319 301 return @str … … 321 303 alias_method :to_s, :str 322 304 323 # æ¯è¼ã¯æ°å¤æ 324 å ±ã§è¡ã 305 # 比較は数値情報で行う 325 306 def ==(other) 326 307 @val == other … … 333 314 end 334 315 335 # ããã·ã¥ã®ãã¼ã¨ãã¦ä½¿ãæã®æ¯è¼ãæ°å¤æ 336 å ±ã§è¡ã 316 # ハッシュのキーとして使う時の比較も数値情報で行う 337 317 def eql?(other) 338 318 @val == other.val 339 319 end 340 320 341 # ããã·ã¥å¤ã®å®ç¾©ãä¸æ¸ããã321 # ハッシュ値の定義も上書きする 342 322 def hash 343 323 return @val.hash 344 324 end 345 325 346 # æ°å¤ã¯ã©ã¹ã¨æ¼ç®ã§ããããã«ãã326 # 数値クラスと演算できるようにする 347 327 def coerce(other) 348 328 if other.kind_of?(Numeric) … … 353 333 end 354 334 355 # äºéå¼ç¨ç¬¦ã§å²ã¾ããæååã®ä½æ335 # 二重引用符で囲まれた文字列の作成 356 336 def quote 357 337 str.quote 358 338 end 359 339 360 # äºéå¼ç¨ç¬¦ã§å²ã¾ããæååã®å±é340 # 二重引用符で囲まれた文字列の展開 361 341 def unquote 362 342 str.unquote 363 343 end 364 344 365 # pp æã®è¡¨ç¤º345 # pp時の表示 366 346 def pretty_print(q) 367 347 q.text("[#{@val}(=0x#{@val.to_s(16)}),") … … 370 350 end 371 351 372 # æªå®ç¾©ã®ã¡ã½ããã¯@valã«éã352 # 未定義のメソッドは@valに送る 373 353 def method_missing(*method) 374 354 @val.send(*method) … … 377 357 378 358 # 379 # ã·ã³ãã«ãã¡ã¤ã«ã®èªã¿è¾¼ã¿380 # 381 # 以ä¸ã®ã¡ã½ããã¯ï¼GNUã®nmãçæããã·ã³ãã«ãã¡ã¤ã«ã«å¯¾å¿ãã¦ããï¼382 # å¥ã®ãã¼ã«ã«å¯¾å¿ããå ´åã«ã¯ï¼ãã®ã¡ã½ãããæ¸ãæããã°ããï¼359 # シンボルファイルの読み込み 360 # 361 # 以下のメソッドは,GNUのnmが生成するシンボルファイルに対応している. 362 # 別のツールに対応する場合には,このメソッドを書き換えればよい. 383 363 # 384 364 def ReadSymbolFile(symbolFileName) … … 391 371 symbolAddress = {} 392 372 symbolFile.each do |line| 393 # ã¹ãã¼ã¹åºåãã§å解373 # スペース区切りで分解 394 374 fields = line.split(/\s+/) 395 375 396 # 3 åã«ãªã£ã¦ããªãè¡ã¯é¤å¤376 # 3列になっていない行は除外 397 377 if fields.size == 3 398 378 symbolAddress[fields[2]] = fields[0].hex … … 404 384 405 385 # 406 # å¤åå¾ã·ã³ãã«ãã°ãã¼ãã«å¤æ°ã¨ãã¦å®ç¾©ãã386 # 値取得シンボルをグローバル変数として定義する 407 387 # 408 388 def DefineSymbolValue … … 415 395 416 396 # 417 # ã¤ã³ã¯ã«ã¼ããã¹ãããã¡ã¤ã«ãæ¢ã397 # インクルードパスからファイルを探す 418 398 # 419 399 def SearchFilePath(fileName) 420 400 if File.exist?(fileName) 421 # æå®ãããã¡ã¤ã«ãã¹ã«åå¨ãã401 # 指定したファイルパスに存在する 422 402 return fileName 423 403 elsif /^\./ =~ fileName 424 # ç¸å¯¾ãã¹ãæå®ãã¦ãã¦è¦ã¤ãããªãã£ãå ´åï¼åå¨ããªããã®ã¨ãã425 # ï¼æå³ããªããã¡ã¤ã«ã対象ã¨ãªããã¨ãé²æ¢ï¼404 # 相対パスを指定していて見つからなかった場合,存在しないものとする 405 #(意図しないファイルが対象となることを防止) 426 406 return nil 427 407 else 428 # åã¤ã³ã¯ã«ã¼ããã¹ãããã¡ã¤ã«åå¨ãã§ãã¯408 # 各インクルードパスからファイル存在チェック 429 409 $includeDirectories.each do |includeDirectory| 430 410 path = includeDirectory + "/" + fileName 431 # è¦ã¤ãã£ããç¸å¯¾ãã¹ãè¿ã411 # 見つかったら相対パスを返す 432 412 if File.exist?(path) 433 413 return path … … 439 419 440 420 # 441 # æå®ããçæã¹ã¯ãªããï¼trbãã¡ã¤ã«ï¼ãæ¤ç´¢ãã¦loadãã421 # 指定した生成スクリプト(trbファイル)を検索してloadする 442 422 # 443 423 def IncludeTrb(fileName) … … 451 431 452 432 # 453 # ãã¹3ã®å¦ç433 # パス3の処理 454 434 # 455 435 def Pass3 456 436 # 457 # ãã¹2ããå¼ã渡ãããæ 458 å ±ããã¡ã¤ã«ããèªã¿è¾¼ã 437 # パス2から引き渡される情報をファイルから読み込む 459 438 # 460 439 db = PStore.new(CFG2_OUT_DB) … … 472 451 473 452 # 474 # å¤åå¾ã·ã³ãã«ãã°ãã¼ãã«å¤æ°ã¨ãã¦å®ç¾©ãã453 # 値取得シンボルをグローバル変数として定義する 475 454 # 476 455 DefineSymbolValue() 477 456 478 457 # 479 # çæã¹ã¯ãªããï¼trbãã¡ã¤ã«ï¼ãå®è¡ãã458 # 生成スクリプト(trbファイル)を実行する 480 459 # 481 460 $trbFileNames.each do |trbFileName| … … 484 463 485 464 # 486 # ãã¹4ã«å¼ã渡ãæ 487 å ±ããã¡ã¤ã«ã«çæ 465 # パス4に引き渡す情報をファイルに生成 488 466 # 489 467 if $omitOutputDb.nil? … … 503 481 504 482 # 505 # ãã¹4ã®å¦ç483 # パス4の処理 506 484 # 507 485 def Pass4 508 486 # 509 # ãã¹3ããå¼ã渡ãããæ 510 å ±ããã¡ã¤ã«ããèªã¿è¾¼ã 487 # パス3から引き渡される情報をファイルから読み込む 511 488 # 512 489 db = PStore.new(CFG3_OUT_DB) … … 523 500 524 501 # 525 # å¤åå¾ã·ã³ãã«ãã°ãã¼ãã«å¤æ°ã¨ãã¦å®ç¾©ãã502 # 値取得シンボルをグローバル変数として定義する 526 503 # 527 504 DefineSymbolValue() 528 505 529 506 # 530 # çæã¹ã¯ãªããï¼trbãã¡ã¤ã«ï¼ãå®è¡ãã507 # 生成スクリプト(trbファイル)を実行する 531 508 # 532 509 $trbFileNames.each do |trbFileName| … … 536 513 537 514 # 538 # çæã¹ã¯ãªããï¼trbãã¡ã¤ã«ï¼åãã®é¢æ°515 # 生成スクリプト(trbファイル)向けの関数 539 516 # 540 517 def SYMBOL(symbol) … … 570 547 571 548 # 572 # ã°ãã¼ãã«å¤æ°ã®åæå549 # グローバル変数の初期化 573 550 # 574 551 $kernel = nil … … 585 562 586 563 # 587 # ãªãã·ã§ã³ã®å¦ç564 # オプションの処理 588 565 # 589 566 OptionParser.new(banner="Usage: cfg.rb [options] CONFIG-FILE", 40) do |opt| … … 639 616 640 617 # 641 # ãªãã·ã§ã³ã®ãã§ãã¯618 # オプションのチェック 642 619 # 643 620 if $pass.nil? 644 # ãã¹ã®æå®ã¯å¿ 645 é 621 # パスの指定は必須 646 622 abort("`--pass' option is mandatory") 647 623 elsif /^[1234]$/ !~ $pass … … 649 625 end 650 626 651 # ãã¹1ã§ã¯ï¼éçAPIãã¼ãã«ã¯å¿ 652 é 627 # パス1では,静的APIテーブルは必須 653 628 if ($pass == "1" && $apiTableFileNames.empty?) 654 629 abort("`--api-table' option must be specified in pass 1") 655 630 end 656 631 657 # ãã¹1以å¤ã§ã¯ï¼çæã¹ã¯ãªããï¼trbãã¡ã¤ã«ï¼ãå¿ 658 é 632 # パス1以外では,生成スクリプト(trbファイル)が必須 659 633 if ($pass != "1" && $trbFileNames.empty?) 660 634 abort("`--trb-file' must be specified except in pass 1") … … 662 636 663 637 # 664 # ã«ã¼ãã«ãªãã·ã§ã³ã®å¦ç638 # カーネルオプションの処理 665 639 # 666 640 case $kernel … … 672 646 673 647 # 674 # IDçªå·å 675 ¥åãã¡ã¤ã«ã®åã込㿠648 # ID番号入力ファイルの取り込み 676 649 # 677 650 $inputObjid = {} … … 692 665 693 666 # 694 # æå®ãããã·ã³ãã«ãã¡ã¤ã«ã®èªã¿è¾¼ã¿667 # 指定されたシンボルファイルの読み込み 695 668 # 696 669 if !$romSymbolFileName.nil? … … 703 676 704 677 # 705 # æå®ãããSã¬ã³ã¼ããã¡ã¤ã«ã®èªã¿è¾¼ã¿678 # 指定されたSレコードファイルの読み込み 706 679 # 707 680 if !$romImageFileName.nil? … … 714 687 715 688 # 716 # ãã¹ã«å¾ã£ã¦åå¦çãå®è¡689 # パスに従って各処理を実行 717 690 # 718 691 case $pass … … 731 704 end 732 705 733 # ã¨ã©ã¼çºçæã¯abortãã706 # エラー発生時はabortする 734 707 if $errorFlag 735 708 if ($0 == __FILE__) 736 709 abort() 737 710 else 738 # simplecov 対å¿711 # simplecov対応 739 712 raise() 740 713 end … … 742 715 743 716 # 744 # ä½æãããã¹ã¦ã®ãã¡ã¤ã«ãåºåãã717 # 作成したすべてのファイルを出力する 745 718 # 746 719 GenFile.output 747 720 748 721 # 749 # ã¿ã¤ã ã¹ã¿ã³ããã¡ã¤ã«ã®çæ722 # タイムスタンプファイルの生成 750 723 # 751 724 if !$timeStampFileName.nil? -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/cfg/pass1.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 7 7 # Graduate School of Information Science, Nagoya Univ., JAPAN 8 8 # 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 # の責任を負わない. 52 37 # 53 38 # $Id$ … … 55 40 56 41 # 57 # ãã¹1ã®å¦ç58 # 59 60 # 61 # å¤åå¾ã·ã³ãã«ãã¼ãã«ã¸ã®åºå®ç»é²42 # パス1の処理 43 # 44 45 # 46 # 値取得シンボルテーブルへの固定登録 62 47 # 63 48 $symbolValueTable = { … … 80 65 81 66 # 82 # éçAPIãã¼ãã«ã¸ã®åºå®ç»é²67 # 静的APIテーブルへの固定登録 83 68 # 84 69 $apiDefinition = { "INCLUDE" => … … 86 71 87 72 # 88 # éçAPIãã¼ãã«ã®èªã¿è¾¼ã¿73 # 静的APIテーブルの読み込み 89 74 # 90 75 def ReadApiTableFile … … 102 87 apiFile = File.open(apiTableFileName) 103 88 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名の取り出し 109 94 if /^(.+)\[(.+)\]$/ =~ apiName 110 95 apiName = $1 … … 127 112 128 113 case prefix 129 when "#" # ãªãã¸ã§ã¯ãèå¥åï¼å®ç¾©ï¼114 when "#" # オブジェクト識別名(定義) 130 115 apiParam[:ID_DEF] = true 131 when "%" # ãªãã¸ã§ã¯ãèå¥åï¼åç 132 §ï¼ 116 when "%" # オブジェクト識別名(参照) 133 117 apiParam[:ID_REF] = true 134 when "." # 符å·ç¡ãæ´æ°å®æ°å¼ãã©ã¡ã¼ã¿118 when "." # 符号無し整数定数式パラメータ 135 119 apiParam[:EXPTYPE] = "unsigned_t" 136 when "+" # 符å·ä»ãæ´æ°å®æ°å¼ãã©ã¡ã¼ã¿120 when "+" # 符号付き整数定数式パラメータ 137 121 apiParam[:EXPTYPE] = "signed_t" 138 122 apiParam[:SIGNED] = true 139 when "&" # ä¸è¬æ´æ°å®æ°å¼ãã©ã¡ã¼ã¿123 when "&" # 一般整数定数式パラメータ 140 124 # do nothing 141 when "$" # æååå®æ°å¼ãã©ã¡ã¼ã¿125 when "$" # 文字列定数式パラメータ 142 126 apiParam[:STRING] = true 143 127 else … … 146 130 147 131 case postfix 148 when "*" # ãã¼ã決ãããã©ã¡ã¼ã¿132 when "*" # キーを決めるパラメータ 149 133 apiDef[:KEYPAR] = name 150 when "?" # ãªãã·ã§ã³ãã©ã¡ã¼ã¿134 when "?" # オプションパラメータ 151 135 apiParam[:OPTIONAL] = true 152 when "\.\.\." # ãªã¹ããã©ã¡ã¼ã¿136 when "\.\.\." # リストパラメータ 153 137 apiParam[:LIST] = true 154 138 end … … 175 159 176 160 # 177 # å¤åå¾ã·ã³ãã«ãã¼ãã«ã®èªã¿è¾¼ã¿161 # 値取得シンボルテーブルの読み込み 178 162 # 179 163 def ReadSymvalTable … … 187 171 { skip_blanks: true, skip_lines: /^#/ }) 188 172 symvalCsv.each do |record| 189 # å¤æ°å173 # 変数名 190 174 if record[0].nil? 191 175 error_exit("invalid variable name in " \ … … 196 180 variable = record[0] 197 181 198 # å¼182 # 式 199 183 if record[1].nil? || record[1].empty? 200 184 symbol[:EXPR] = variable … … 203 187 end 204 188 205 # å¼ã®å189 # 式の型 206 190 if !record[2].nil? && !record[2].empty? 207 191 case record[2] 208 when /^[bB]/ # çå½å¤192 when /^[bB]/ # 真偽値 209 193 symbol[:BOOL] = true 210 when /^[uU]/ # 符å·ç¡ãæ´æ°å¤211 # ä½ãè¨å®ããªã212 else # 符å·ä»ãæ´æ°å¤194 when /^[uU]/ # 符号無し整数値 195 # 何も設定しない 196 else # 符号付き整数値 213 197 symbol[:SIGNED] = true 214 198 end 215 199 end 216 200 217 # ã³ã³ãã¤ã«æ¡ä»¶201 # コンパイル条件 218 202 if !record[3].nil? && !record[3].empty? 219 203 symbol[:CONDITION] = record[3] 220 204 end 221 205 222 # æ¡ä»¶ãæç«ããªãæã®å¼206 # 条件が成立しない時の式 223 207 if !record[4].nil? && !record[4].empty? 224 208 symbol[:ELSE_EXPR] = record[4] … … 232 216 233 217 # 234 # ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ããã®èªã¿è¾¼ã¿ã¯ã©ã¹218 # システムコンフィギュレーションファイルからの読み込みクラス 235 219 # 236 220 class ConfigFile … … 254 238 return(nil) if line.nil? 255 239 256 line.encode!("UTF-16BE", "UTF-8", # ä¸æ£ãªãã¤ãåãé¤å¤ãã240 line.encode!("UTF-16BE", "UTF-8", # 不正なバイト列を除外する 257 241 :invalid => :replace, 258 242 :undef => :replace, … … 263 247 if @withinComment 264 248 case line 265 when /\*\// # C è¨èªã¹ã¿ã¤ã«ã®ã³ã¡ã³ãçµäº266 line.sub!(/^.*?\*\//, "") # æåã®*/ã«ãããããã*/249 when /\*\// # C言語スタイルのコメント終了 250 line.sub!(/^.*?\*\//, "") # 最初の*/にマッチさせる */ 267 251 @withinComment = false 268 252 else … … 271 255 end 272 256 if !@withinComment 273 line.gsub!(/\/\*.*?\*\//, "") # C è¨èªã¹ã¿ã¤ã«ã®ã³ã¡ã³ãã®é¤å»274 # æåã®*/ã«ãããããã*/257 line.gsub!(/\/\*.*?\*\//, "") # C言語スタイルのコメントの除去 258 # 最初の*/にマッチさせる */ 275 259 case line 276 when /^\s*#/ # ããªããã»ããµãã£ã¬ã¯ãã£ã260 when /^\s*#/ # プリプロセッサディレクティブ 277 261 if withinApi 278 262 parse_error(self, \ … … 280 264 line = "" 281 265 end 282 when /\/\*/ # C è¨èªã¹ã¿ã¤ã«ã®ã³ã¡ã³ãéå§266 when /\/\*/ # C言語スタイルのコメント開始 283 267 line.sub!(/\/\*.*$/, "") 284 268 @withinComment = true 285 when /\/\// # C++ è¨èªã¹ã¿ã¤ã«ã®ã³ã¡ã³ã269 when /\/\// # C++言語スタイルのコメント 286 270 line.sub!(/\/\/.*$/, "") 287 271 end … … 300 284 301 285 # 302 # ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã®ãã¼ãµã¼ã¯ã©ã¹286 # システムコンフィギュレーションファイルのパーサークラス 303 287 # 304 288 class CfgParser … … 310 294 def initialize 311 295 @line = "" 312 @skipComma = false # 次ã,ã§ããã°èªã¿é£ã°ã313 end 314 315 # 316 # æååæ«ã¾ã§èªã296 @skipComma = false # 次が,であれば読み飛ばす 297 end 298 299 # 300 # 文字列末まで読む 317 301 # 318 302 def parseString(cfgFile) … … 320 304 begin 321 305 case @line 322 when /^([^"]*\\\\)(.*)$/ # \\ ã¾ã§èªã306 when /^([^"]*\\\\)(.*)$/ # \\まで読む 323 307 string += $1 324 308 @line = $2 325 when /^([^"]*\\\")(.*)$/ # \" ã¾ã§èªã309 when /^([^"]*\\\")(.*)$/ # \"まで読む 326 310 string += $1 327 311 @line = $2 328 when /^([^"]*\")(.*)$/ # " ã¾ã§èªã312 when /^([^"]*\")(.*)$/ # "まで読む 329 313 string += $1 330 314 @line = $2 331 315 return(string) 332 else # è¡æ«ã¾ã§èªã316 else # 行末まで読む 333 317 string += @line + "\n" 334 318 @line = cfgFile.getNextLine(true) … … 340 324 341 325 # 342 # æåæ«ã¾ã§èªã326 # 文字末まで読む 343 327 # 344 328 def parseChar(cfgFile) … … 346 330 begin 347 331 case @line 348 when /^([^']*\\\\)(.*)$/ # \\ ã¾ã§èªã332 when /^([^']*\\\\)(.*)$/ # \\まで読む 349 333 string += $1 350 334 @line = $2 351 when /^([^']*\\\')(.*)$/ # \' ã¾ã§èªã335 when /^([^']*\\\')(.*)$/ # \'まで読む 352 336 string += $1 353 337 @line = $2 354 when /^([^']*\')(.*)$/ # ' ã¾ã§èªã338 when /^([^']*\')(.*)$/ # 'まで読む 355 339 string += $1 356 340 @line = $2 357 341 return(string) 358 else # è¡æ«ã¾ã§èªã342 else # 行末まで読む 359 343 string += @line + "\n" 360 344 @line = cfgFile.getNextLine(true) … … 366 350 367 351 # 368 # æ¹è¡ã¨ç©ºç½æåãèªã¿é£ã°ã352 # 改行と空白文字を読み飛ばす 369 353 # 370 354 def skipSpace(cfgFile, withinApi) 371 355 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 # 次の文字まで読み飛ばす 382 365 # 383 366 def skipToToken(cfgFile, withinApi=true) 384 367 skipSpace(cfgFile, withinApi) 385 if @line.nil? # ãã¡ã¤ã«æ«ã§ããã°ã¨ã©ã¼çµäº368 if @line.nil? # ファイル末であればエラー終了 386 369 error_exit("unexpexced end-of-file") 387 370 end … … 389 372 390 373 # 391 # ãã©ã¡ã¼ã¿ã1ã¤èªã 392 # 393 # @lineã®å 394 é ãããã©ã¡ã¼ã¿ã1ã¤èªãã§ï¼ãããæååã§è¿ãï¼èªãã ã 395 # ã©ã¡ã¼ã¿ã¯ï¼@lineããã¯åé¤ããï¼ãã©ã¡ã¼ã¿ã®éä¸ã§è¡æ«ã«éããæã¯ï¼ 396 # cfgFileãã次ã®è¡ãåãåºãï¼ãã¡ã¤ã«æ«ã«éããæã¯ï¼nilãè¿ãï¼ 374 # パラメータを1つ読む 375 # 376 # @lineの先頭からパラメータを1つ読んで,それを文字列で返す.読んだパ 377 # ラメータは,@lineからは削除する.パラメータの途中で行末に達した時は, 378 # cfgFileから次の行を取り出す.ファイル末に達した時は,nilを返す. 397 379 # 398 380 def parseParam(cfgFile) 399 param = "" # èªãã æåå400 parenLevel = 0 # æ¬å¼§ã®ãã¹ãã¬ãã«381 param = "" # 読んだ文字列 382 parenLevel = 0 # 括弧のネストレベル 401 383 skipComma = @skipComma 402 384 @skipComma = false 403 385 404 skipToToken(cfgFile) # 次ã®æåã¾ã§èªã¿é£ã°ã386 skipToToken(cfgFile) # 次の文字まで読み飛ばす 405 387 begin 406 388 if parenLevel == 0 … … 410 392 if param == "" && skipComma 411 393 skipComma = false 412 return(parseParam(cfgFile)) # å帰å¼ã³åºã394 return(parseParam(cfgFile)) # 再帰呼び出し 413 395 else 414 396 return(param.strip) … … 425 407 @line = $2 426 408 parenLevel += 1 427 when /^(\s*([)}]))(.*)$/ # } ã)409 when /^(\s*([)}]))(.*)$/ # }か) 428 410 if param != "" 429 411 return(param.strip) … … 439 421 @line = $2 440 422 param += $1 + parseChar(cfgFile) 441 when /^(\s*[^,{}()"'\s]+)(.*)$/ # ãã®ä»ã®æåå423 when /^(\s*[^,{}()"'\s]+)(.*)$/ # その他の文字列 442 424 param += $1 443 425 @line = $2 444 else # è¡æ«426 else # 行末 445 427 param += " " 446 428 @line = cfgFile.getNextLine(true) 447 429 end 448 430 else 449 # æ¬å¼§å 450 ã®å¦ç 431 # 括弧内の処理 451 432 case @line 452 433 when /^(\s*\()(.*)$/ # "(" … … 464 445 @line = $2 465 446 param += $1 + parseChar(cfgFile) 466 when /^(\s*[^()"'\s]+)(.*)$/ # ãã®ä»ã®æåå447 when /^(\s*[^()"'\s]+)(.*)$/ # その他の文字列 467 448 param += $1 468 449 @line = $2 469 else # è¡æ«450 else # 行末 470 451 param += " " 471 452 @line = cfgFile.getNextLine(true) … … 499 480 500 481 def parseApi(cfgFile, apiName) 501 # éçAPIã®èªã¿è¾¼ã¿482 # 静的APIの読み込み 502 483 staticApi = {} 503 484 tooFewParams = false 504 485 skipUntilBrace = 0 505 486 506 skipToToken(cfgFile) # 次ã®æåã¾ã§èªã¿é£ã°ã487 skipToToken(cfgFile) # 次の文字まで読み飛ばす 507 488 if (/^\((.*)$/ =~ @line) 508 489 @line = $1 … … 515 496 516 497 apiDef[:PARAM].each do |apiParam| 517 return(staticApi) if param.nil? # ãã¡ã¤ã«æ«ã§ããã°ãªã¿ã¼ã³498 return(staticApi) if param.nil? # ファイル末であればリターン 518 499 519 500 if skipUntilBrace > 0 520 # API å®ç¾©ã}ã¾ã§ã¹ãããä¸501 # API定義を}までスキップ中 521 502 if apiParam.has_key?(:BRACE) 522 503 case apiParam[:BRACE] … … 540 521 staticApi[apiParam[:NAME]].push(getParam(apiParam, param, cfgFile)) 541 522 param = parseParam(cfgFile) 542 break if param.nil? # ãã¡ã¤ã«æ«ã®å ´å523 break if param.nil? # ファイル末の場合 543 524 end 544 525 elsif apiParam.has_key?(:OPTBRACE) 545 526 if param == apiParam[:BRACE] 546 527 param = parseParam(cfgFile) 547 break if param.nil? # ãã¡ã¤ã«æ«ã®å ´å528 break if param.nil? # ファイル末の場合 548 529 else 549 530 if param == "" 550 531 param = parseParam(cfgFile) 551 break if param.nil? # ãã¡ã¤ã«æ«ã®å ´å532 break if param.nil? # ファイル末の場合 552 533 elsif /^([})])$/ !~ param 553 534 parse_error(cfgFile, "`{...}' expected before #{param}") 554 535 end 555 skipUntilBrace += 1 # API å®ç¾©ã}ã¾ã§ã¹ããã536 skipUntilBrace += 1 # API定義を}までスキップ 556 537 end 557 538 elsif !apiParam.has_key?(:BRACE) … … 568 549 else 569 550 parse_error(cfgFile, "`#{apiParam[:BRACE]}' expected before #{param}") 570 # ) ããã¡ã¤ã«æ«ã¾ã§èªã¿é£ã°ã551 # )かファイル末まで読み飛ばす 571 552 loop do 572 553 param = parseParam(cfgFile) … … 577 558 end 578 559 579 # æå¾ 580 ããããã©ã¡ã¼ã¿ããã¹ã¦èªãã å¾ã®å¦ç 560 # 期待されるパラメータをすべて読んだ後の処理 581 561 if param != ")" 582 562 begin 583 563 param = parseParam(cfgFile) 584 return(staticApi) if param.nil? # ãã¡ã¤ã«æ«ã§ããã°ãªã¿ã¼ã³564 return(staticApi) if param.nil? # ファイル末であればリターン 585 565 end while param != ")" 586 566 parse_error(cfgFile, "too many parameters before `)'") … … 594 574 595 575 def parseOpenBrace(cfgFile) 596 # { ã®èªã¿è¾¼ã¿597 skipToToken(cfgFile) # 次ã®æåã¾ã§èªã¿é£ã°ã576 # {の読み込み 577 skipToToken(cfgFile) # 次の文字まで読み飛ばす 598 578 if (/^\{(.*)$/ =~ @line) 599 579 @line = $1 … … 609 589 cfgFile = cfgFiles.last 610 590 611 skipSpace(cfgFile, false) # æ¹è¡ã¨ç©ºç½æåãèªã¿é£ã°ã591 skipSpace(cfgFile, false) # 改行と空白文字を読み飛ばす 612 592 if @line.nil? 613 # ãã¡ã¤ã«æ«ã®å¦ç593 # ファイル末の処理 614 594 cfgFiles.pop.close 615 595 if cfgFiles.empty? 616 break # ãã¼ã¹å¦ççµäº596 break # パース処理終了 617 597 else 618 @line = "" # å 619 ã®ãã¡ã¤ã«ã«æ»ã£ã¦ç¶ãã 598 @line = "" # 元のファイルに戻って続ける 620 599 end 621 600 elsif /^;(.*)$/ =~ @line 622 # ; ã¯èªã¿é£ã°ã601 # ;は読み飛ばす 623 602 @line = $1 624 603 elsif /^#/ =~ @line 625 # ããªããã»ããµãã£ã¬ã¯ãã£ããèªã604 # プリプロセッサディレクティブを読む 626 605 case @line 627 606 when /^#include\b(.*)$/ … … 662 641 if !$domainId.has_key?(domid) 663 642 if $inputObjid.has_key?(domid) 664 # IDçªå·å 665 ¥åãã¡ã¤ã«ã«å®ç¾©ããã¦ããå ´å 643 # ID番号入力ファイルに定義されていた場合 666 644 $domainId[domid] = $inputObjid[domid] 667 645 if $domainId[domid] > 32 … … 690 668 else 691 669 if $apiDefinition.has_key?(apiName) 692 # éçAPIã1ã¤èªã670 # 静的APIを1つ読む 693 671 staticApi = parseApi(cfgFile, apiName) 694 672 if staticApi.empty? 695 # ãã¡ã¤ã«æ«ãææ³ã¨ã©ã¼673 # ファイル末か文法エラー 696 674 elsif (staticApi[:APINAME] == "INCLUDE") 697 # INCLUDE ã®å¦ç675 # INCLUDEの処理 698 676 includeFilePath = SearchFilePath(staticApi[:file]) 699 677 if includeFilePath.nil? … … 704 682 end 705 683 else 706 # éçAPIã®å¦ç684 # 静的APIの処理 707 685 if !@@currentDomain.nil? 708 686 staticApi[:DOMAIN] = @@currentDomain … … 721 699 end 722 700 elsif (/^\}(.*)$/ =~ @line) 723 # } ã®å¦ç701 # }の処理 724 702 if @@nestDC.size > 0 725 703 case @@nestDC.pop … … 742 720 743 721 # 744 # cfg1_out.c ã®çæ722 # cfg1_out.cの生成 745 723 # 746 724 module Cfg1OutC 747 725 # 748 # éçAPIã®ãã¡ã¤ã«åã¨è¡çªå·ã®åºå726 # 静的APIのファイル名と行番号の出力 749 727 # 750 728 def self.OutLineNumber(cfgInfo) … … 753 731 754 732 # 755 # ã¯ã©ã¹è¨è¿°ã®ãã¡ã¤ã«åã¨è¡çªå·ã®åºå733 # クラス記述のファイル名と行番号の出力 756 734 # 757 735 def self.OutClassLineNumber(cfgInfo) … … 760 738 761 739 # 762 # ãã©ã¡ã¼ã¿ã«é¢ããå®ç¾©ã®åºå740 # パラメータに関する定義の出力 763 741 # 764 742 def self.OutParamDef(param, index, apiParam, cfgInfo) … … 774 752 775 753 # 776 # cfg1_out.c ã®çæï¼ã¡ã¤ã³ã®å¦çï¼754 # cfg1_out.cの生成(メインの処理) 777 755 # 778 756 def self.Generate … … 785 763 EOS 786 764 787 # ã¤ã³ã¯ã«ã¼ãããããã¡ã¤ã«765 # インクルードヘッダファイル 788 766 $includeFiles.each do |file| 789 767 @cfg1Out.add("#include #{file}") … … 813 791 EOS 814 792 815 # å¤åå¾ã·ã³ãã«ã®å¦ç793 # 値取得シンボルの処理 816 794 $symbolValueTable.each do |symbolName, symbolData| 817 795 if symbolData.has_key?(:BOOL) || symbolData.has_key?(:SIGNED) … … 836 814 @cfg1Out.add 837 815 838 # ãã¡ã¤ã³IDã®å®ç¾©ã®çæ816 # ドメインIDの定義の生成 839 817 $domainId.each do |domainName, domainVal| 840 818 if domainVal > 0 … … 844 822 @cfg1Out.add 845 823 846 # éçAPIï¼ããªããã»ããµãã£ã¬ã¯ãã£ãã®å¦ç824 # 静的API/プリプロセッサディレクティブの処理 847 825 $cfgFileInfo.each do |cfgInfo| 848 826 if cfgInfo.has_key?(:DIRECTIVE) … … 857 835 next unless apiParam.has_key?(:NAME) 858 836 paramName = apiParam[:NAME] 859 next unless cfgInfo.has_key?(paramName) # ãã©ã¡ã¼ã¿ããªãå ´å837 next unless cfgInfo.has_key?(paramName) # パラメータがない場合 860 838 paramData = cfgInfo[paramName] 861 839 … … 869 847 end 870 848 if cfgInfo.has_key?(:CLASS) 871 # ã¯ã©ã¹IDã®åå¾ã®ããã®å¦ç849 # クラスIDの取得のための処理 872 850 OutClassLineNumber(cfgInfo) 873 851 @cfg1Out.add("const signed_t #{CFG1_PREFIX}valueof_CLASS_" \ … … 881 859 882 860 # 883 # ãã¹1ã®å¦ç861 # パス1の処理 884 862 # 885 863 def Pass1 886 864 # 887 # ã¿ã¤ã ã¹ã¿ã³ããã¡ã¤ã«ã®æå®865 # タイムスタンプファイルの指定 888 866 # 889 867 $timeStampFileName = CFG1_OUT_TIMESTAMP 890 868 891 869 # 892 # éçAPIãã¼ãã«ã®èªã¿è¾¼ã¿870 # 静的APIテーブルの読み込み 893 871 # 894 872 ReadApiTableFile() 895 873 896 874 # 897 # å¤åå¾ã·ã³ãã«ãã¼ãã«ã®èªã¿è¾¼ã¿875 # 値取得シンボルテーブルの読み込み 898 876 # 899 877 ReadSymvalTable() 900 878 901 879 # 902 # ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã®èªã¿è¾¼ã¿880 # システムコンフィギュレーションファイルの読み込み 903 881 # 904 882 $cfgFileInfo = [] … … 909 887 CfgParser.new.parseFile(configFileName) 910 888 end 911 abort if $errorFlag # ã¨ã©ã¼çºçæã¯abortãã912 913 # 914 # ãã¡ã¤ã³IDã®å²å½ã¦å¦ç889 abort if $errorFlag # エラー発生時はabortする 890 891 # 892 # ドメインIDの割当て処理 915 893 # 916 894 nextDomainId = 1 … … 929 907 930 908 # 931 # cfg1_out.c ã®çæ909 # cfg1_out.cの生成 932 910 # 933 911 Cfg1OutC::Generate() 934 912 935 913 # 936 # ä¾åé¢ä¿ã®åºå914 # 依存関係の出力 937 915 # 938 916 if !$dependencyFileName.nil? … … 959 937 960 938 # 961 # ãã¹2ã«å¼ã渡ãæ 962 å ±ããã¡ã¤ã«ã«çæ 939 # パス2に引き渡す情報をファイルに生成 963 940 # 964 941 if $omitOutputDb.nil? -
Property svn:mime-type
changed from
-
azure_iot_hub/trunk/asp3_dcre/cfg/pass2.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 7 7 # Graduate School of Information Science, Nagoya Univ., JAPAN 8 8 # 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 # の責任を負わない. 52 37 # 53 38 # $Id$ … … 55 40 56 41 # 57 # ãã¹2ã®å¦ç58 # 59 60 # 61 # ãã¹1ã®çæç©ã®èªã¿è¾¼ã¿42 # パス2の処理 43 # 44 45 # 46 # パス1の生成物の読み込み 62 47 # 63 48 module Cfg1Out 64 49 # 65 # S ã¬ã³ã¼ããã¡ã¤ã«ããã·ã³ãã«ã®å¤ãåãåºã50 # Sレコードファイルからシンボルの値を取り出す 66 51 # 67 52 def self.GetSymbolValue(symbol, size, signed) … … 74 59 75 60 # 76 # ãã¹1ã®çæç©ã®èªã¿è¾¼ã¿ï¼ã¡ã¤ã³ã®å¦çï¼61 # パス1の生成物の読み込み(メインの処理) 77 62 # 78 63 def self.Read 79 # cfg1_out.syms ã®èªã¿è¾¼ã¿64 # cfg1_out.symsの読み込み 80 65 @symbolAddress = ReadSymbolFile(CFG1_OUT_SYMS) 81 66 82 # cfg1_out.srec ã®èªã¿è¾¼ã¿67 # cfg1_out.srecの読み込み 83 68 begin 84 69 @cfg1SRec = SRecord.new(CFG1_OUT_SREC) … … 87 72 end 88 73 89 # ãã¸ãã¯ãã³ãã¼ã®åå¾74 # マジックナンバーの取得 90 75 if @symbolAddress.has_key?(CFG1_MAGIC_NUM) 91 76 $asmLabel = "" … … 108 93 end 109 94 110 # åºå®åºåããå¤æ°ã®åå¾95 # 固定出力した変数の取得 111 96 $sizeOfSigned = GetSymbolValue($asmLabel + CFG1_SIZEOF_SIGNED, 4, false) 112 97 113 # å¤åå¾ã·ã³ãã«ã®åå¾98 # 値取得シンボルの取得 114 99 $symbolValueTable.each do |symbolName, symbolData| 115 100 symbol = $cfg1_prefix + symbolName … … 117 102 value = GetSymbolValue(symbol, $sizeOfSigned, true) 118 103 if !value.nil? 119 # C è¨èªã®çå½å¤ãRubyã®çå½å¤ã«å¤æãã¦åãè¾¼ã104 # C言語の真偽値をRubyの真偽値に変換して取り込む 120 105 symbolData[:VALUE] = (value != 0) 121 106 end … … 130 115 131 116 # 132 # ããã·ã¥ã®åæå117 # ハッシュの初期化 133 118 # 134 119 $cfgData = {} … … 148 133 149 134 # 150 # ãã¡ã¤ã³çæãã¼ã¿ãã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¼ã¿ï¼$cfgDataï¼ã«æ ¼ç´135 # ドメイン生成データをコンフィギュレーションデータ($cfgData)に格納 151 136 # 152 137 $cfgData[:CRE_DOM] = {} … … 160 145 161 146 # 162 # ãã©ã¡ã¼ã¿ã®å¤ãåãåºã147 # パラメータの値を取り出す 163 148 # 164 149 def self.GetParamValue(paramName, param, apiIndex, index, apiParam, cfgInfo) 165 if apiParam.has_key?(:ID_DEF) # ãªãã¸ã§ã¯ãèå¥åï¼å®ç¾©ï¼150 if apiParam.has_key?(:ID_DEF) # オブジェクト識別名(定義) 166 151 value = @objidValues[paramName][param] 167 elsif apiParam.has_key?(:ID_REF) # ãªãã¸ã§ã¯ãèå¥åï¼åç 168 §ï¼ 152 elsif apiParam.has_key?(:ID_REF) # オブジェクト識別名(参照) 169 153 if @objidValues[paramName].has_key?(param) 170 154 value = @objidValues[paramName][param] … … 176 160 value = nil 177 161 end 178 elsif apiParam.has_key?(:EXPTYPE) # æ´æ°å®æ°å¼ãã©ã¡ã¼ã¿162 elsif apiParam.has_key?(:EXPTYPE) # 整数定数式パラメータ 179 163 if apiIndex.nil? 180 164 if param.is_a?(NumStr) … … 188 172 apiParam.has_key?(:SIGNED)) 189 173 end 190 else # ä¸è¬å®æ°å¼ï¼æååãã©ã¡ã¼ã¿174 else # 一般定数式/文字列パラメータ 191 175 return(param) 192 176 end … … 195 179 196 180 # 197 # æå®ãããã§ã¼ãºã®ããã®ãã¹1ã®çæç©ã®èªã¿è¾¼ã¿181 # 指定したフェーズのためのパス1の生成物の読み込み 198 182 # 199 183 def self.ReadPhase(phase) 200 184 # 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の場合には,次のように設定される. 216 199 # @objidValues["semid"]["SEM1"] == 1 217 200 # 218 201 219 # ID çªå·å²ãå½ã¦ã®åå¦ç202 # ID番号割り当ての前処理 220 203 objidParamNameList = [] 221 204 $cfgFileInfo.each do |cfgInfo| 222 # ããªããã»ããµãã£ã¬ã¯ãã£ãã¯èªã¿é£ã°ã205 # プリプロセッサディレクティブは読み飛ばす 223 206 next if cfgInfo.has_key?(:DIRECTIVE) 224 207 225 208 apiDef = $apiDefinition[cfgInfo[:APINAME]] 226 # ç°ãªããã§ã¼ãºã®éçAPIã¯èªã¿é£ã°ã209 # 異なるフェーズの静的APIは読み飛ばす 227 210 next if apiDef[:PHASE] != phase 228 211 229 212 apiIndex = cfgInfo[:INDEX] 230 213 if !apiIndex.nil? 231 # ã·ã³ãã«ãã¡ã¤ã«ã«éçAPIã®ã¤ã³ããã¯ã¹ãåå¨ããªããã°èªã¿é£232 # ã°ãï¼ifdefçã§æ¶ããéçAPIï¼214 # シンボルファイルに静的APIのインデックスが存在しなければ読み飛 215 # ばす(ifdef等で消えた静的API) 233 216 symbol = "#{$cfg1_prefix}static_api_#{apiIndex}" 234 217 next unless @symbolAddress.has_key?(symbol) … … 240 223 objName = cfgInfo[objidParamName] 241 224 if $inputObjid.has_key?(objName) 242 # IDçªå·å 243 ¥åãã¡ã¤ã«ã«å®ç¾©ããã¦ããå ´å 225 # ID番号入力ファイルに定義されていた場合 244 226 @objidValues[objidParamName][objName] = $inputObjid[objName] 245 227 else … … 251 233 end 252 234 253 # ID çªå·ã®å²å½ã¦å¦ç235 # ID番号の割当て処理 254 236 objidParamNameList.each do |objidParamName| 255 237 objidList = @objidValues[objidParamName] 256 238 257 # æªä½¿ç¨ã®IDçªå·ã®ãªã¹ãï¼ä½¿ç¨ãããã®ããæ¶ãã¦ããï¼239 # 未使用のID番号のリスト(使用したものから消していく) 258 240 unusedObjidList = (1.upto(objidList.keys.size)).to_a 259 241 260 # å²ãå½ã¦æ¸ã¿ã®IDçªå·ã®å¦ç242 # 割り当て済みのID番号の処理 261 243 objidList.each do |objName, objidNumber| 262 244 if $inputObjid.has_key?(objName) 263 245 objidIndex = unusedObjidList.index($inputObjid[objName]) 264 246 if objidIndex.nil? 265 # IDçªå·å 266 ¥åãã¡ã¤ã«ã§æå®ãããå¤ãä¸æ£ 247 # ID番号入力ファイルで指定された値が不正 267 248 error_exit("value of `#{objName}' in ID input file is illegal") 268 249 else 269 # æªä½¿ç¨ã®IDçªå·ã®ãªã¹ãããåé¤250 # 未使用のID番号のリストから削除 270 251 unusedObjidList.delete_at(objidIndex) 271 252 end … … 273 254 end 274 255 275 # ID çªå·ã®å²å½ã¦256 # ID番号の割当て 276 257 objidList.each do |objName, objidNumber| 277 258 if objidList[objName].nil? 278 # 以ä¸ã§ï¼@objidValuesãæ¸ãæãã¦ãã259 # 以下で,@objidValuesを書き換えている 279 260 objidList[objName] = unusedObjidList.shift 280 261 end … … 283 264 284 265 # 285 # éçAPIãã¼ã¿ãã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¼ã¿ï¼$cfgDataï¼ã«æ ¼ç´266 # 静的APIデータをコンフィギュレーションデータ($cfgData)に格納 286 267 # 287 268 $cfgFileInfo.each do |cfgInfo| 288 # ããªããã»ããµãã£ã¬ã¯ãã£ãã¯èªã¿é£ã°ã269 # プリプロセッサディレクティブは読み飛ばす 289 270 next if cfgInfo.has_key?(:DIRECTIVE) 290 271 291 272 apiDef = $apiDefinition[cfgInfo[:APINAME]] 292 # ç°ãªããã§ã¼ãºã®éçAPIã¯èªã¿é£ã°ã273 # 異なるフェーズの静的APIは読み飛ばす 293 274 next if apiDef[:PHASE] != phase 294 275 … … 296 277 apiIndex = cfgInfo[:INDEX] 297 278 if !apiIndex.nil? 298 # ã·ã³ãã«ãã¡ã¤ã«ã«éçAPIã®ã¤ã³ããã¯ã¹ãåå¨ããªããã°èªã¿é£299 # ã°ãï¼ifdefçã§æ¶ããéçAPIï¼279 # シンボルファイルに静的APIのインデックスが存在しなければ読み飛 280 # ばす(ifdef等で消えた静的API) 300 281 symbol = "#{$cfg1_prefix}static_api_#{apiIndex}" 301 282 next unless @symbolAddress.has_key?(symbol) 302 283 end 303 284 304 # ãã©ã¡ã¼ã¿ã®å¤ãããã·ã¥å½¢å¼ã«æ ¼ç´285 # パラメータの値をハッシュ形式に格納 305 286 params = {} 306 287 apiDef[:PARAM].each do |apiParam| 307 288 next unless apiParam.has_key?(:NAME) 308 289 paramName = apiParam[:NAME] 309 next unless cfgInfo.has_key?(paramName) # ãã©ã¡ã¼ã¿ããªãå ´å290 next unless cfgInfo.has_key?(paramName) # パラメータがない場合 310 291 paramData = cfgInfo[paramName] 311 292 … … 322 303 end 323 304 324 # ãã¡ã¤ã³IDã追å305 # ドメインIDを追加 325 306 if cfgInfo.has_key?(:DOMAIN) 326 307 domainName = cfgInfo[:DOMAIN] … … 328 309 end 329 310 330 # ã¯ã©ã¹IDã追å311 # クラスIDを追加 331 312 if cfgInfo.has_key?(:CLASS) 332 313 if apiIndex.nil? … … 339 320 end 340 321 341 # API åï¼ãã¡ã¤ã«åï¼è¡çªå·ã追å322 # API名,ファイル名,行番号を追加 342 323 params[:apiname] = cfgInfo[:APINAME] 343 324 params[:_file_] = cfgInfo[:_FILE_] 344 325 params[:_line_] = cfgInfo[:_LINE_] 345 326 346 # ç»é²ãã¼ã決å®ãã327 # 登録キーを決定する 347 328 if apiDef.has_key?(:KEYPAR) 348 329 keyParam = params[apiDef[:KEYPAR].to_sym] 349 330 key = keyParam.val 350 331 if $cfgData[apiSym].has_key?(key) 351 # ç»é²ãã¼ã®éè¤332 # 登録キーの重複 352 333 error("E_OBJ: #{apiDef[:KEYPAR]} `#{keyParam}' " \ 353 334 "is duplicated in #{cfgInfo[:APINAME]}", … … 362 343 363 344 # 364 # ID çªå·åºåãã¡ã¤ã«ã®çæ345 # ID番号出力ファイルの生成 365 346 # 366 347 def self.OutputId(fileName) … … 375 356 376 357 # 377 # ãã¹2ã®å¦ç358 # パス2の処理 378 359 # 379 360 def Pass2 380 361 # 381 # ãã¹1ããå¼ã渡ãããæ 382 å ±ããã¡ã¤ã«ããèªã¿è¾¼ã 362 # パス1から引き渡される情報をファイルから読み込む 383 363 # 384 364 db = PStore.new(CFG1_OUT_DB) … … 393 373 394 374 # 395 # ãã¹1ã®çæç©ãèªã¿è¾¼ã375 # パス1の生成物を読み込む 396 376 # 397 377 Cfg1Out.Read() 398 abort if $errorFlag # ã¨ã©ã¼çºçæã¯abortãã399 400 # 401 # å¤åå¾ã·ã³ãã«ãã°ãã¼ãã«å¤æ°ã¨ãã¦å®ç¾©ãã378 abort if $errorFlag # エラー発生時はabortする 379 380 # 381 # 値取得シンボルをグローバル変数として定義する 402 382 # 403 383 DefineSymbolValue() 404 384 405 385 # 406 # çæã¹ã¯ãªããï¼trbãã¡ã¤ã«ï¼ãå®è¡ãã386 # 生成スクリプト(trbファイル)を実行する 407 387 # 408 388 $trbFileNames.each do |trbFileName| … … 415 395 416 396 # 417 # ID çªå·åºåãã¡ã¤ã«ã®çæ397 # ID番号出力ファイルの生成 418 398 # 419 399 if !$idOutputFileName.nil? … … 422 402 423 403 # 424 # ãã¹3ã«å¼ã渡ãæ 425 å ±ããã¡ã¤ã«ã«çæ 404 # パス3に引き渡す情報をファイルに生成 426 405 # 427 406 if $omitOutputDb.nil? -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.