@ECHO OFF
SETLOCAL
SET BATDIR=%~dp0

REM ■使い方
REM │CALL MkSndDef.bat サウンドシーケンサスクリプト [[サウンドシーケンサスクリプト] ...]
REM │(サウンドシーケンサスクリプトの書式は、dSndSeqC.exeの説明を参照してください。)

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

REM □「サウンドシーケンサコンパイラ」を実行します。
dSndSeqC.exe %* > SndDef.c
IF ERRORLEVEL 1 EXIT /B 1

REM □SndDef.cから、以下の行を抽出して、SndDef.hを作成します。
REM ・インデクスの定義⇒そのまま出力します。
REM ・データ配列の定義⇒データ配列の宣言に変換して出力します。
REM │http://www.gnu.org/software/sed/manual/html_node/Addresses.html
REM │The empty regular expression ‘//’ repeats the last regular expression match (the same holds if the empty regular expression is passed to the s command).
REM │Note that modifiers to regular expressions are evaluated when the regular expression is compiled, thus it is invalid to specify them together with the empty regular expression.
onigsed.exe -n -e "/^#define SndSeq_/p" ^
               -e "/^\(const unsigned short TBL_SndSeq\[[1-9][0-9]*\]\)={$/{s//extern \1;/;p}" ^
 < SndDef.c > SndDef.h
IF ERRORLEVEL 1 EXIT /B 1
