@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]も特別扱いせずにそのまま表示すれば、消去用の文字列となります。
REM #// * Sun Jul 19 12:59:05 JST 2015 Naoyuki Sawa
REM #// - MkNamDef.awkが配列定義に明示的な要素数を入れるように変更した事に伴い、当バッチスクリプトの正規表現も変更しました。
REM #// * Sun Jan 03 21:17:56 JST 2016 Naoyuki Sawa
REM #// - DirSeq.h,LedDef.h,LotTbl.h,RudDef.h,SndDef.hの形式を、やや柔軟に判定するようにしました。具体的には以下の通りです。
REM #//   ・これまでは空白はスペース一文字のみとしていましたが、任意の複数の空白文字を受け付けるようにしました。
REM #//   ・これまではコメント付きの行を受け付けませんでしたが、今後はコメントを読み飛ばしてそれより前の部分を受け付けるようにしました。
REM #//   上記の変更は、いますぐに必要な変更ではありません。
REM #//   今後、各ツールを列挙定義スクリプト出力に対応する時に、.hの形式も少し変更する予定なので、それに備えて変更しておく事にしました。

onigsed.exe -ne "/^#define[[:blank:]]\+\([[:alnum:]]\+\)_\([_[:alnum:]]\+\)[[:blank:]]\+\([[:digit:]]\+\)[[:blank:]]*\(\/\/.*\)\?$/{s//#define \1_\2\t\3\t\/\/\2/;/\/\/Max$/!p}" %* > %TMPNAM%
REM #//            #define               DirTblNo       _  789AB                          12345                        //ｺﾒﾝﾄ          #define DirTblNo_789AB\t//789AB
REM #//                                                                                                                無視する                                       
IF ERRORLEVEL 1 EXIT /B 1
CALL MkNamDef.bat %TMPNAM% ^
 | onigsed.exe -e "/^\/\//d;/^\"[_[:alnum:]]\+ *\",\/\/ *1 [_[:alnum:]]\+ *$/{h;s/[_[:alnum:]]/ /gp;g}" ^
 | onigsed.exe -e  "/^\(const char\* const TBL_NamDef_[_[:alnum:]]\+\[[1-9][0-9]*\]\)={$/s/\(\[[1-9][0-9]*\)\(\]\)/\1+1\2/" > %NAMDEF%.c
IF ERRORLEVEL 1 EXIT /B 1
onigsed.exe -ne "/^\(const char\* const TBL_NamDef_[_[:alnum:]]\+\[[1-9][0-9]*+1\]\)={$/s//extern \1;/p"         %NAMDEF%.c > %NAMDEF%.h
IF ERRORLEVEL 1 EXIT /B 1
DEL %TMPNAM%
