@ECHO OFF
SETLOCAL
SET BATDIR=%~dp0
SET TMPNAM=%~n0.tmp

REM //--------------------------------------------------------------------------
REM // * Mon Mar 23 21:35:39 JST 2015 Naoyuki Sawa
REM // - 1st リリース。
REM // * Thu Mar 26 21:28:16 JST 2015 Naoyuki Sawa
REM // - dRegTblC.exeの出力データ構造を変更した事に伴い、当バッチスクリプトも変更しました。
REM //   当バッチスクリプトの変更点は、'unsigned short'⇒'unsigned char'に変更した事だけです。

REM //--------------------------------------------------------------------------
REM //■使い方
REM //│CALL MkRegTbl.bat レジストリテーブルスクリプト [[レジストリテーブルスクリプト] ...]
REM //│(レジストリテーブルスクリプトの書式は、dRegTblC.exeの説明を参照してください。)

REM //--------------------------------------------------------------------------
REM //□RegTbl.hとRegTbl.cが既に有れば、確実に削除しておきます。
REM EXIST RegTbl.h DEL RegTbl.h
REM EXIST RegTbl.c DEL RegTbl.c

REM //--------------------------------------------------------------------------
REM //□'cpp.exe'を通しているので、LEDシーケンサスクリプト内でCプリプロセッサの疑似命令も使えます。
REM //│'cpp.exe'に'-P'を指定していないので'# 行番号 "ファイル名"'が生成されますが、dLedSeqC.exeがコメントとして無視するので問題ありません。
REM //│'cpp.exe'に'-P'を指定してもしなくても同じ結果になるはずです。
dpesc5c.exe %* | cpp.exe > %TMPNAM%
IF ERRORLEVEL 1 EXIT /B 1

REM //--------------------------------------------------------------------------
REM //□「レジストリテーブルコンパイラ」を実行します。
REM //環境変数'REGTBL_BIN'が定義されていなければ、テキスト形式で出力します。
IF "%REGTBL_BIN%" EQU "" (
  dRegTblC.exe -e -pRegKey_                %TMPNAM% > RegTbl.c
  IF ERRORLEVEL 1 EXIT /B 1
  REM //RegTbl.cから、シンボル定義の行を抽出して、RegTbl.hを作成します。
  onigsed.exe -n -e "/^#define RegKey_/p" ^
                 -e "/^\(const unsigned char TBL_RegTbl\[[1-9][0-9]*\]\)={$/{s//extern \1;/;p}" ^
   < RegTbl.c > RegTbl.h
  IF ERRORLEVEL 1 EXIT /B 1
REM //環境変数'REGTBL_BIN'が定義されてたら、バイナリ形式で出力します。
) ELSE (
  dRegTblC.exe -e -pRegKey_ -o%REGTBL_BIN% %TMPNAM% > RegTbl.h
  IF ERRORLEVEL 1 EXIT /B 1
)
DEL %TMPNAM%
