#ifndef __APP_H__
#define __APP_H__
//#define USE_BISON_FLEX	//Bison/Flexを使用しない場合はこの行をコメントアウトして下さい。
//#define USE_SQLITE	//SQLiteを使用しない場合はこの行をコメントアウトして下さい。
#define USE_PDCURSES	//PDCursesを使用しない場合はこの行をコメントアウトして下さい。
#define USE_DXLIB	//DxLibを使用しない場合はこの行をコメントアウトして下さい。
#define USE_SOFDEC	//Sofdecを使用しない場合はこの行をコメントアウトして下さい。
#define USE_ADX		//ADXを使用しない場合はこの行をコメントアウトして下さい。
#define USE_AFTERFX	//AfterEffectsを使用しない場合はこの行をコメントアウトして下さい。
//#define USE_SSBPLIB	//ssbpLibを使用しない場合はこの行をコメントアウトして下さい。
//#define USE_GDIPLUS	//GDI+を使用しない場合はこの行をコメントアウトして下さい。
#define USE_NUKLEAR	//Nuklearを使用しない場合はこの行をコメントアウトして下さい。
#define USE_PCL		//PCLを使用しない場合はこの行をコメントアウトして下さい。
//#define USE_LUA		//Luaを使用しない場合はこの行をコメントアウトして下さい。
//#define USE_ACTIVETCL	//ActiveTclを使用しない場合はこの行をコメントアウトして下さい。
#if     (defined(_DEBUG) && defined(USE_PDCURSES))
//	#define USE_JOB_DEBUG	//デバッグジョブを使用する場合はこの行を有効にして下さい。
#endif//(defined(_DEBUG) && defined(USE_PDCURSES))
#ifdef  USE_ACTIVETCL
#define __CLIP_TCL_H__	//ActiveTclを使用する場合は自作のcliptcl.hをインクルードしない。
#endif//USE_ACTIVETCL
//-----------------------------------------------------------------------------
#include <clip.h>
//-----------------------------------------------------------------------------
#ifndef USE_PDCURSES
#undef  getch		//PDCursesを使用しない場合は、pdcurses/curses.hで定義された左記のマクロを取り消して、元のDOS関数を呼び出せるようにする。
#undef  ungetch		//PDCursesを使用しない場合は、pdcurses/curses.hで定義された左記のマクロを取り消して、元のDOS関数を呼び出せるようにする。
#endif//USE_PDCURSES
#ifdef  __cplusplus
#if     (defined(USE_GDIPLUS) && !defined(USE_ACTIVETCL))
using namespace Gdiplus;	//GDI+を使用し,かつ,ActiveTclを使用しない場合は、'Font'の定義が衝突しないので、Gdiplus名前空間を導入出来る。必須ではありません。もし何か他の名前が衝突した場合は、この行をコメントアウトして下さい。
#endif//(defined(USE_GDIPLUS) && !defined(USE_ACTIVETCL))
#endif//__cplusplus
#ifdef  USE_ACTIVETCL
//{{2018/07/08変更:ActiveTclの8.6.4.1.299124⇒8.6.6.8607バージョンアップにおいて、デフォルトインストールフォルダが「C:\Tcl」⇒「C:\ActiveTcl」、ライブラリ名が「tcl86.lib,tk86.lib」⇒「tcl86t.lib,tk86t.lib」に変更されていました。
////□ActiveTclを使用する場合は、VC++6.0の「ツール」→「オプション」→「ディレクトリ」に、以下のパスを追加して下さい:
////│インクルードファイル: C:\Tcl\include
////│ライブラリファイル:   C:\Tcl\lib
//#include <tk.h>				//C:\Tcl\include\tk.h	┐
//#pragma comment(lib, "tcl86.lib")	//C:\Tcl\lib\tcl86.lib	├ActiveState ActiveTcl 8.6.4.1.299124 Jun 06, 2015
//#pragma comment(lib, "tk86.lib")	//C:\Tcl\lib\tk86.lib	┘
//↓2018/07/08変更:ActiveTclの8.6.4.1.299124⇒8.6.6.8607バージョンアップにおいて、デフォルトインストールフォルダが「C:\Tcl」⇒「C:\ActiveTcl」、ライブラリ名が「tcl86.lib,tk86.lib」⇒「tcl86t.lib,tk86t.lib」に変更されていました。
//□ActiveTclを使用する場合は、VC++6.0の「ツール」→「オプション」→「ディレクトリ」に、以下のパスを追加して下さい:
//│インクルードファイル: C:\ActiveTcl\include
//│ライブラリファイル:   C:\ActiveTcl\lib
#include <tk.h>				//C:\ActiveTcl\include\tk.h	┐
#pragma comment(lib, "tcl86t.lib")	//C:\ActiveTcl\lib\tcl86t.lib	├ActiveTcl-8.6.6.8607-MSWin32-x86-403667.exe
#pragma comment(lib, "tk86t.lib")	//C:\ActiveTcl\lib\tk86t.lib	┘
//}}2018/07/08変更:ActiveTclの8.6.4.1.299124⇒8.6.6.8607バージョンアップにおいて、デフォルトインストールフォルダが「C:\Tcl」⇒「C:\ActiveTcl」、ライブラリ名が「tcl86.lib,tk86.lib」⇒「tcl86t.lib,tk86t.lib」に変更されていました。
#endif//USE_ACTIVETCL
//{{DATA
#ifdef  __CLIP_REG_H__
#include "RegTbl.h"
#endif//__CLIP_REG_H__
#ifdef  __CLIP_ANMS_H__
#include "AnmSeq.h"
#endif//__CLIP_ANMS_H__
#ifdef  __CLIP_NCSS_H__
#include "NcsSeq.h"
#endif//__CLIP_NCSS_H__
#ifdef  __CLIP_SNRS_H__
#include "SnrSeq.h"
#endif//__CLIP_SNRS_H__
#ifdef  __CLIP_EVTM_H__
#include "EvtTmr.h"
#endif//__CLIP_EVTM_H__
#ifdef  __CLIP_LEDS_H__
#include "LedDef.h"
#endif//__CLIP_LEDS_H__
#ifdef  __CLIP_TAPS_H__
#include "TapDef.h"
#endif//__CLIP_TAPS_H__
#ifdef  __CLIP_LOT_H__
#include "LotTbl.h"
#endif//__CLIP_LOT_H__
#ifdef  __CLIP_ENM_H__
#include "EnmDef.h"
#endif//__CLIP_ENM_H__
#ifdef  __CLIP_PRP_H__
#include "PrpTbl.h"
#endif//__CLIP_PRP_H__
#ifdef  __CLIP_FSM_H__
#include "FsmMap.h"
#endif//__CLIP_FSM_H__
#include "Layout.h"
#include "Define.h"
#include "Struct.h"
#include "Const.h"
//}}DATA
#ifdef  __cplusplus
extern "C" {
#endif//__cplusplus
#ifdef  USE_BISON_FLEX
//--- y.tab.y ---
extern int yynerrs;
#if     (YYDEBUG!=0)
extern int yydebug;
#endif//(YYDEBUG!=0)
int yyparse();
void yyerror(const char* fmt, ...);
extern char err_path[MAX_PATH];
//--- lex.yy.l ---
extern FILE* yyin;
extern FILE* yyout;
extern int yylineno;
int yylex();
void yylex_init(FILE* input_file);
#endif//USE_BISON_FLEX
//--- app.c ---
void app_init(int argc, char* argv[]);
int  app_main(int argc, char* argv[]);
void app_exit();
#ifdef  USE_JOB_DEBUG
void job_debug(ST_RRS* pRRS);
#endif//USE_JOB_DEBUG
#ifdef  __CLIP_RRS_H__
void job_main(ST_RRS* pRRS);	//cpp.cppで実装しても構いません。
#endif//__CLIP_RRS_H__
//{{DATA
#ifdef  __CLIP_PRP_H__
void fnVarFmt(char* buf/*[cap]*/, int cap, int iFmt, int iVal);
#endif//__CLIP_PRP_H__
//}}DATA
#ifdef  USE_DXLIB
//--- cpp.cpp ---
void schedule();
void delay(double sec);
void cpp_init(int argc, char* argv[]);
int  cpp_main(int argc, char* argv[]);
void cpp_exit();
#ifdef  __CLIP_TAPS_H__
void onTapEvt(ST_TapEvt* pTapEvt);
#endif//__CLIP_TAPS_H__
#ifdef  __CLIP_SNRS_H__
int fnSnrSeq(struct _ST_SnrSeq* pSnrSeq, int iCh, int iSnrFnc, struct blob_reader* pArgs);
#endif//__CLIP_SNRS_H__
#ifdef  __CLIP_EVTM_H__
void onEvent(int iEvtTmrCh, int iEvent);
#endif//__CLIP_EVTM_H__
#ifdef  __cplusplus
#ifdef  USE_AFTERFX
void CbkQue_draw_afx(ST_CbkQue* pCbkQue, int pri, int iAfxSeqNo, int iFrame, int bLoop, int position_x = 0, int position_y = 0, double scale_x = 1.0, double scale_y = 1.0, double rotation = 0.0, double opacity = 1.0, int blendingMode = 0);
#endif//USE_AFTERFX
#endif//__cplusplus
#endif//USE_DXLIB
//{{アプリケーション特有の関数
//--- ???.c ---
//void foo(int x, int y);
#ifdef  __cplusplus
//--- ???.cpp ---
//void bar(int x, int y = 0);
#endif//__cplusplus
//}}アプリケーション特有の関数
#ifdef  __cplusplus
}//extern "C"
#endif//__cplusplus
#include "work.h"
#include "resource.h"
#endif//__APP_H__
