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

REM //--------------------------------------------------------------------------
REM // * Fri Jan 01 21:14:34 JST 2016 Naoyuki Sawa
REM // - 1st リリース。MkPrpTbl.batをベースにしました。
REM // * Sat Jan 23 21:37:38 JST 2016 Naoyuki Sawa
REM // - パイプライン実行に、pipefail.exeを使用するように変更しました。
REM //   処理内容には、変更は有りません。

REM //--------------------------------------------------------------------------
REM //■使い方
REM //│CALL MkEnmDef.bat 列挙定義スクリプト [[列挙定義スクリプト] ...]
REM //│(列挙定義スクリプトの書式は、dEnmDefC.exeの説明を参照してください。)

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

REM //--------------------------------------------------------------------------
REM //□「列挙定義コンパイラ」を実行します。
REM // - ヘッダファイルにタブ文字を追加して列幅を揃えます。
pipefail.exe -q dEnmDefC.exe -e -rRegEnmDef.tmp %TMPNAM% ^
             ^| TabAlign.exe ^
 > EnmDef.h
IF ERRORLEVEL 1 GOTO L_ERR
DEL %TMPNAM%

REM //--------------------------------------------------------------------------
REM //□レジストリスクリプトにタブ文字を追加して列幅を揃えます。
TabAlign.exe RegEnmDef.tmp > RegEnmDef.txt
IF ERRORLEVEL 1 GOTO L_ERR
DEL RegEnmDef.tmp

REM //--------------------------------------------------------------------------
REM //ECHO 完了しました。
REM //PAUSE
EXIT /B

REM //--------------------------------------------------------------------------
:L_ERR
REM //□不完全な最終出力ファイルを確実に削除します。
IF EXIST    EnmDef.h   DEL    EnmDef.h
IF EXIST RegEnmDef.txt DEL RegEnmDef.txt
ECHO ###エラーが発生しました。
REM //PAUSE
EXIT /B 1
