@ECHO OFF
SETLOCAL
SET BATDIR=%~dp0
SET TMPNAM=%~n0.tmp
REM #//呼び出し側で環境変数「NAMDEF」を指定しておけば、%NAMDEF%.c,%NAMDEF%.hというファイル名で出力します。
REM #//呼び出し側で環境変数「NAMDEF」を指定していなければ、NamDef.c,NamDef.hというファイル名で出力します。
IF "%NAMDEF%" EQU "" SET NAMDEF=NamDef

REM #// * Sat Mar 14 21:08:16 JST 2015 Naoyuki Sawa
REM #// - 1st リリース。
REM #// - 以下の方法で生成したヘッダファイルから名称テーブルを作成するためのバッチスクリプトです。
REM #//   1. MkDirSeq.batで生成したDirSeq.h
REM #//   2. MkLedDef.batで生成したLedDef.h
REM #//   3. MkLotTbl.batで生成したLotTbl.h
REM #//   4. MkRudDef.batで生成したRudDef.h
REM #//   5. MkSndDef.batで生成したSndDef.h
REM #// - これらのヘッダファイルにはコメント部分が無いのでMkNamDef.batに直接渡すことは出来ません。
REM #//   当バッチスクリプトがシンボルの一部をコメント部分にコピーしてからMkNamDef.batに渡します。
REM #//   当バッチスクリプトは他に、以下の処理も行います。
REM #//   1. 'Max'シンボルを名称テーブルに含めません。
REM #//   2. 余分なセパレータ行を削除します。
REM #//   3. [0]にヌルポインタを埋め込んで順番を合わせます。	⇒{{2015/03/17変更:[0]に埋め込む値を、ヌルポインタでなく、他の文字列と同じ文字数のスペースにしました。}}
REM #// - □使用例
REM #//   ┃CALL MkLotTbl.bat LotTbl.xls
REM #//   ┃SET NAMDEF=LotNam	…LotNam.c,LotNam.hというファイル名で出力するように指示する。
REM #//   ┃CALL MkNamDefP.bat LotTbl.h
REM #// * Tue Mar 17 21:35:54 JST 2015 Naoyuki Sawa
REM #// - [0]に埋め込む値を、ヌルポインタでなく、他の文字列と同じ文字数のスペースにしました。
REM #//   アプリケーションは[0]も特別扱いせずにそのまま表示すれば、消去用の文字列となります。

onigsed.exe -ne "/^#define \([[:alnum:]]\+\)_\([_[:alnum:]]\+\) \([[:digit:]]\+\)$/{s//#define \1_\2 \3\/\/\2/;/\/\/Max$/!p}" %* > %TMPNAM%
IF ERRORLEVEL 1 EXIT /B 1
CALL MkNamDef.bat %TMPNAM% | onigsed.exe -e "/^\/\//d;/^\"[_[:alnum:]]\+ *\",\/\/ *1 [_[:alnum:]]\+ *$/{h;s/[_[:alnum:]]/ /gp;g}" > %NAMDEF%.c
IF ERRORLEVEL 1 EXIT /B 1
onigsed.exe -ne "/^\(const char\* const TBL_NamDef_[_[:alnum:]]\+\[\]\)={$/s//extern \1;/p"                            %NAMDEF%.c > %NAMDEF%.h
IF ERRORLEVEL 1 EXIT /B 1
DEL %TMPNAM%
