/*****************************************************************************
 * Bison/Flexプログラム部分をテストするための、Windowsアプリケーションの雛型 *
 * □ビルド・実行方法:                                                       *
 * ┃"C:\Program Files (x86)\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT"  *
 * ┃make -f winapp.mk run                                                   *
 *****************************************************************************/
#ifndef __WINAPP_H__
#define __WINAPP_H__
/*{{定型コード:winapp.h======================================================*/
#include <clip.h>
//y.tab.y
extern int yynerrs;
#if     (YYDEBUG!=0)
extern int yydebug;
#endif/*(YYDEBUG!=0)*/
int yyparse();
void yyerror(const char* fmt, ...);
//lex.yy.l
extern FILE* yyin;
extern FILE* yyout;
extern int yylineno;
int yylex();
void yylex_init(FILE* input_file);
/*}}定型コード:winapp.h======================================================*/
/*---------------------------------------------------------------------------*/
//グローバル関数宣言
void inst_def(char* lab);
void inst_repeat();
void inst_end();
void inst_wait(int cnt);
void inst_event(int id);
/*---------------------------------------------------------------------------*/
/*--- 変更履歴 ---*/
// * Sun May 31 14:08:56 JST 2015 Naoyuki Sawa
// - 1st リリース。
// * Wed Aug 12 21:51:06 JST 2015 Naoyuki Sawa
// - 「loop」を廃し、「repeat」〜「end」でループ区間を示すように変更しました。
//   これまでは、全体を一回実行して終了するか(end)、全体をループするか(loop)の指定しか出来ませんでしたが、
//   今後は、一部分のループも出来るようになりました。
//   ループの書式は、概ね、'dLedSeqC.exe'の'シーケンス'のループ書式と同様です。
// * Thu Aug 13 21:54:21 JST 2015 Naoyuki Sawa
// - waitの直後にrepeatが有った場合に、repeatの上のwaitにループしてしまっていたバグを修正しました。
//   詳細は、winapp.cのinst_repeat()のコメント,及び,Sample/Sample.txtのSample4を参照してください。
// - 上記の変更のために、event_id=0をno_jobと見なし、イベントidとしては使用不可にしました。
//   また、'event'の引数を省略した時のイベントidを、'0'でなく'1'に変更しました。
// * Wed Aug 19 23:30:20 JST 2015 Naoyuki Sawa
// - waitの引数に(2^16)以上の値も指定出来るようにしました。
//   waitの引数に(2^16)以上の値を指定したり、複数のwaitの合計が(2^16)以上になったら、当ツールが自動的にダミーの'event 0'を含む複数の命令に展開します。
// - 他のツールでは原則的に、引数の範囲外の値をツール自身で分割することはせず、外部スクリプト(sed等)で展開したりしているのですが、
//   当ツールのwaitだけは特例として、引数の範囲外の値をツール自身にて分割する事にしました。
//   そうする事にした理由は、ツールの性質上、数十分単位の長いwaitを指定する可能性が高い事、
//   また、ダミーの'event 0'を生成出来るのはツール自身だけあり、外部スクリプト(sed等)で展開時に生成する事は出来ないからです。
/*--- バージョン定義 ---*/
#define VERSION "20150819"
/*---------------------------------------------------------------------------*/
#endif//__WINAPP_H__
