source: EcnlProtoTool/trunk/asp3_dcre/utils/genrename.rb@ 270

Last change on this file since 270 was 270, checked in by coas-nagasima, 7 years ago

mruby版ECNLプロトタイピング・ツールを追加

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-ruby
File size: 5.3 KB
Line 
1#!/usr/bin/env ruby
2# -*- coding: utf-8 -*-
3#
4# TOPPERS Software
5# Toyohashi Open Platform for Embedded Real-Time Systems
6#
7# Copyright (C) 2003 by Embedded and Real-Time Systems Laboratory
8# Toyohashi Univ. of Technology, JAPAN
9# Copyright (C) 2005-2016 by Embedded and Real-Time Systems Laboratory
10# Graduate School of Information Science, Nagoya Univ., JAPAN
11#
12# 上記著作権者
13は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
14# ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
15# 変・再é…
16å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
17# (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
18# 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
19# スコード中に含まれていること.
20# (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
21# 用できる形で再é…
22å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
23å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
24# 者
25マニュアルなど)に,上記の著作権表示,この利用条件および下記
26# の無保証規定を掲載すること.
27# (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
28# 用できない形で再é…
29å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
30# と.
31# (a) 再é…
32å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
33マニュアルなど)に,上記の著
34# 作権表示,この利用条件および下記の無保証規定を掲載すること.
35# (b) 再é…
36å¸ƒã®å½¢æ…
37‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
38# 報告すること.
39# (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
40# 害からも,上記著作権者
41およびTOPPERSプロジェクトをå…
42è²¬ã™ã‚‹ã“と.
43# また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
44# 由に基づく請求からも,上記著作権者
45およびTOPPERSプロジェクトを
46# å…
47è²¬ã™ã‚‹ã“と.
48#
49# 本ソフトウェアは,無保証で提供されているものである.上記著作権者
50お
51# よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
52# に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
53# アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
54# の責任を負わない.
55#
56# $Id: genrename.rb 1011 2016-07-11 02:20:01Z coas-nagasima $
57#
58
59#
60# å…
61ˆé ­ã«ã¤ã‘る文字列
62#
63def prefixString(sym)
64 if sym =~ /[a-z]/
65 return("_kernel_")
66 else
67 return("_KERNEL_")
68 end
69end
70
71#
72# リネーム定義を生成する
73#
74def generateDefine(outFile, sym, prefix)
75 outFile.print("#define #{prefix}#{sym}");
76 outFile.print("\t" * [(6 - (sym.length + prefix.length) / 4), 0].max);
77 outFile.print("\t#{prefix}#{prefixString(sym)}#{sym}\n");
78end
79
80#
81# リネーム解除を生成する
82#
83def generateUndef(outFile, sym, prefix)
84 outFile.print("#undef #{prefix}#{sym}\n");
85end
86
87#
88# コメントを生成する
89#
90def generateComment(outFile, comment)
91 outFile.print("/*\n")
92 outFile.print(" * #{comment}\n")
93 outFile.print(" */\n")
94end
95
96#
97# エラーチェック
98#
99if ARGV.length < 1
100 abort("Usage: ruby genrename.rb <prefix>")
101end
102
103#
104# 初期化
105#
106syms = []
107name = ARGV.shift
108NAME = name.upcase
109
110inFileName = name + "_rename.def"
111headerDefineSymbol = "TOPPERS_" + NAME + "_RENAME_H"
112
113#
114# シンボルリストを読み込む
115#
116begin
117 inFile = File.open(inFileName)
118rescue Errno::ENOENT, Errno::EACCES => ex
119 abort(ex.message)
120end
121
122inFile.each do |line|
123 syms.push(line.chomp)
124end
125
126#
127# ???_rename.h を生成する
128#
129begin
130 outFile = File.open(name + "_rename.h", "w")
131rescue Errno::ENOENT, Errno::EACCES => ex
132 abort(ex.message)
133end
134
135outFile.print <<EOS
136/* This file is generated from #{inFileName} by genrename. */
137
138#ifndef #{headerDefineSymbol}
139#define #{headerDefineSymbol}
140
141EOS
142
143includes = ""
144syms.each do |sym|
145 if /^#\s*(.*)$/ =~ sym
146 generateComment(outFile, $1)
147 elsif /^INCLUDE\s+(.*)$/ =~ sym
148 fileName = $1.sub(/([>"])$/, "_rename.h\\1")
149 includes += "#include #{fileName}\n"
150 elsif sym != ""
151 generateDefine(outFile, sym, "")
152 else
153 outFile.print("\n")
154 end
155end
156
157outFile.print <<EOS
158
159#{includes}
160#endif /* #{headerDefineSymbol} */
161EOS
162
163#
164# ???_unrename.h を生成する
165#
166begin
167 outFile = File.open(name + "_unrename.h", "w")
168rescue Errno::ENOENT, Errno::EACCES => ex
169 abort(ex.message)
170end
171
172outFile.print <<EOS
173/* This file is generated from #{inFileName} by genrename. */
174
175/* This file is included only when #{name}_rename.h has been included. */
176#ifdef #{headerDefineSymbol}
177#undef #{headerDefineSymbol}
178
179EOS
180
181includes = ""
182syms.each do |sym|
183 if /^#\s*(.*)$/ =~ sym
184 generateComment(outFile, $1)
185 elsif /^INCLUDE\s+(.*)$/ =~ sym
186 fileName = $1.sub(/([>"])$/, "_unrename.h\\1")
187 includes += "#include #{fileName}\n"
188 elsif sym != ""
189 generateUndef(outFile, sym, "")
190 else
191 outFile.print("\n")
192 end
193end
194
195outFile.print <<EOS
196
197#{includes}
198#endif /* #{headerDefineSymbol} */
199EOS
Note: See TracBrowser for help on using the repository browser.