#pragma comment(lib, "libclip.lib")
/****************************************************************************
 *	エラー回避
 ****************************************************************************/
//clippce.c
#define stream_play(a,b,c,d)	((void)0)
#define stream_stop()		((void)0)
#define stream_stat()		(1)
/*--------------------------------------------------------------------------*/
//clipemu.h
#define NTSC_COLOR_SUBCARRIER	3579545	/* NTSCカラーサブキャリア周波数[Hz] */
#define PAL_COLOR_SUBCARRIER	4433619	/* PAL カラーサブキャリア周波数[Hz] (正しくは、4433618.75[Hz]) */
/*--------------------------------------------------------------------------*/
//piece.h
typedef struct tagPCEWAVEINFO {
	volatile unsigned char	stat;			//+ 0 ステータス
	unsigned char		type;			//+ 1 データ形式
	unsigned short		resv;			//+ 2 予約
	const void*		pData;			//+ 4 データへのポインタ
	unsigned long		len;			//+ 8 データの長さ(サンプル数)
	struct tagPCEWAVEINFO*	next;			//+12 次へのポインタ
	void (*pfEndProc)(struct tagPCEWAVEINFO*);	//+16 終了時コールバック
} PCEWAVEINFO;						//=20
/*--------------------------------------------------------------------------*/
//draw.h
#define DRW_CLR(C1,C2)	(((C1)&0x07)|(((C2)&0x07)<<3))	//C1:1の色 C2:0の色
#define DRW_REVX	0x80	//横反転フラグ
#define DRW_REVY	0x40	//縦反転フラグ
/****************************************************************************
 *	
 ****************************************************************************/
//#define _CRTDBG_MAP_ALLOC	//clipstd.hの2015/11/17のコメントを参照して下さい。
#include "clipstd.h"		/* 標準ヘッダ取り込み */
#include "clipmisc.h"		/* その他いろいろ */
#include "cliplibc.h"		/* 標準Ｃライブラリの補助 */
#include "clipdie.h"		/* エラー停止処理、トレース出力処理 */
#include "clipdisp.h"		/* 画面解像度 */
#include "cliprnd.h"		/* 乱数 */
#include "clipque.h"		/* 任意長パケットキュー */
#include "clipbuf.h"		/* リングバッファ */
#include "clipdlst.h"		/* ダブルリンクリスト */
#include "clipmatc.h"		/* 検索 */
#include "clipsort.h"		/* ソート */				//⇒{{2016/06/10廃止予定:既存のhsort()とmsort()を、heapsort()とmergesort()に名前変更し、/clip/include/stdlib.hで宣言するようにしました。この変更に伴い、clipsort.hは不要になりました。ひとまず、全体をコメントアウトして残してありますが、折を見てファイルを削除する予定です。}}
#include "clipcoll.h"		/* コレクション */												//{{2016/02/20コメント:clipintf.hに依存している。clipintf.hを外す限りこちらも外さざるを得ない。}}								{{2016/04/30コメント:clipintf.hを含めたので、当モジュールも含められるようになりました。}}
#include "clipintf.h"		/* インターフェイス */												//{{2016/02/20コメント:VC++6.0ではCソースのコンパイルでも変数名にthisは使えないようです。変数名を修正すればWin32プロジェクトにも含められると思います。}}	{{2016/04/30コメント:左記の修正を行い、Win32プロジェクトに含めました。clipintf.hに依存しているため外していた他のモジュールも、含められるようになりました。}}
#include "clipfpk.h"		/* ファイルパック形式 */
//×	#include "cliptask.h"		/* タスクスケジューラ */										//{{2016/02/20コメント:P/ECEの仕様に依存している。Win32プロジェクトには含められない。}}
//×	#include "clipfix.h"		/* 固定小数ライブラリ */										//{{2016/02/20コメント:GCC拡張機能を使っている箇所が多いので、Win32プロジェクトに含められるように修正するのは難しい。}}
#include "clipflt.h"		/* 高速単精度浮動小数点演算ライブラリ */									//{{2016/02/20コメント:アセンブラ版が直接書かれているのでWin32プロジェクトでは外しました。アセンブラ版とC言語版を条件コンパイルで切り分ければWin32プロジェクトにも含められるはずです。}}	{{2016/02/25コメント:左記の修正を行い、Win32プロジェクトに含めました。clipflt.hに依存しているため外していた他のモジュールも、含められるようになりました。}}
#include "clipint.h"		/* 整数演算ライブラリ */											//{{2016/02/20コメント:cliprend.hに依存している。cliprend.hを外す限りこちらも外さざるを得ない。}}	//{{2016/10/04コメント:cliprend.hに依存している部分を条件コンパイルで切り分けたので、当モジュールも含められるようになりました。}}
//×	#include "clipquat.h"		/* クォータニオンライブラリ */										//{{2016/02/20コメント:clipfix.hに依存している。clipfix.hを外す限りこちらも外さざるを得ない。}}
//×	#include "clipldir.h"		/* 高速切替・16階調表示 */										//{{2016/02/20コメント:P/ECEの仕様に依存している。Win32プロジェクトには含められない。}}
//×	#include "cliprend.h"		/* 描画ライブラリ */											//{{2016/02/20コメント:clipfix.hに依存している。clipfix.hを外す限りこちらも外さざるを得ない。}}
//×	#include "clipwire.h"		/* ワイヤーフレーム描画(描画ライブラリ追加機能) */							//{{2016/02/20コメント:cliprend.hに依存している。cliprend.hを外す限りこちらも外さざるを得ない。}}
//×	#include "clipspr.h"		/* 簡易スプライトドライバ */										//{{2016/02/20コメント:cliprend.hに依存している。cliprend.hを外す限りこちらも外さざるを得ない。}}
//×	#include "clipmenu.h"		/* 汎用メニュー */											//{{2016/02/20コメント:cliprend.hに依存している。cliprend.hを外す限りこちらも外さざるを得ない。}}
//#include "clipmus.h"		/* P/ECE標準音楽ライブラリ補助ルーチン */	//{{2015/01/15削除:clipmus.*を削除しました。削除理由はmuslib.cの2015/01/15追記コメントを参照してください。}}
#include "clipmod.h"		/* MODドライバ */
#include "clips3m.h"		/* S3Mドライバ */
#include "clipxm.h"		/* XMドライバ */
#include "clipit.h"		/* ITドライバ */			//※未完成
//×	#include "clipmidi.h"		/* MIDIドライバ */											//{{2016/02/20コメント:P/ECEの仕様に依存している。Win32プロジェクトには含められない。}}
#include "clipmp3.h"		/* MP3ドライバ */
#include "clipz80.h"		/* Z80エミュレーション */
#include "clipz8c.h"		/* Z80エミュレーション(高速版) */
#include "clipay3.h"		/* AY-3-8910(PSG)エミュレーション */
#include "clipay.h"		/* AYドライバ(Z80,PSGに依存) */
#include "clipym.h"		/* YMドライバ(PSGに依存) */
#include "clipm65.h"		/* MOS6502エミュレーション */
#include "clip65c.h"		/* MOS6502エミュレーション(高速版) */
#include "clipw65.h"		/* W65C02エミュレーション */
//×	#include "clipsid.h"		/* SID(MOS6581)エミュレーション */									//{{2016/02/20コメント:構造体名'SID'がWINNT.HのSecurity Idの構造体名'SID'と衝突するので外しました。構造体名を変えればWin32プロジェクトにも含められるはずです。}}
//×	#include "clippsid.h"		/* PSIDドライバ(MOS6502,SIDに依存) */									//{{2016/02/20コメント:clipsid.hに依存している。clipsid.hを外す限りこちらも外さざるを得ない。}}
#include "clippky.h"		/* POKEY(CO12294)エミュレーション */
#include "clipsap.h"		/* SAPドライバ(MOS6502,POKEYに依存) */
#include "clipssm.h"		/* S-SMP(SPC700)エミュレーション */	//※未完成(一部未実装・高速化途中)
#include "clipsds.h"		/* S-DSPエミュレーション */		//※未完成(骨組みだけ、全然未完成)
#include "clipspc.h"		/* SPCドライバ(S-SMP,S-DSPに依存) */	//※未完成(仮実装、未調整・未検証)
#include "clipsp2.h"		/* SPCドライバ・バージョン2 */
#include "clipsn7.h"		/* SN76489/SN76496 エミュレーション */
#include "clipvgm.h"		/* VGMドライバ(SN76489に依存) */
#include "clipdmg.h"		/* DMG-CPUエミュレーション */
#include "clipdmc.h"		/* DMG-CPUエミュレーション(高速版) */
#include "clipdms.h"		/* DMG-Soundエミュレーション */
#include "clipdms2.h"		/* DMG-Soundエミュレーション(高速版) */
#include "clipgbs.h"		/* GBSドライバ(DMG-CPU/Soundに依存) */
#include "clipm68.h"		/* M6800/01/03/HD6301/03エミュレーション */
#include "clipm69.h"		/* M6809エミュレーション */
#include "clipwsg.h"		/* Namco WSGエミュレーション */
#include "clipc62.h"		/* HuC6280-CPUエミュレーション */
#include "clipp62.h"		/* HuC6280-PSGエミュレーション */
#include "cliphes.h"		/* HESドライバ(HuC6280-CPU,HuC6280-PSGに依存) */
#include "clipn2.h"		/* YM2612(OPN2)エミュレーション */
#include "clipgym.h"		/* GYMドライバ(OPN2に依存) */
#include "clipcp8.h"		/* CHIP-8インタプリタ */
#include "clipt18.h"		/* TMS9918(A)エミュレーション */
#include "clipppu.h"		/* PPU(RP2C02)エミュレーション */
#include "clippp4.h"		/* PPU(RP2C02)エミュレーション(1/4解像度版) */
#include "clipapu.h"		/* APU(RP2A03)エミュレーション */
#include "clipdmv.h"		/* DMG-Videoエミュレーション */
#include "cliptia.h"		/* TIA(Television Interface Adapter)エミュレーション */
#include "clipsv.h"		/* SUPERVISION Video/Soundエミュレーション */
#include "clips26.h"		/* Signetics 2650エミュレーション */
#include "clipuvi.h"		/* Signetics 2637 UVI(Universal Video Interface)エミュレーション */
#include "clipc16.h"		/* CP1610エミュレーション */
#include "clipsti.h"		/* STIC(Standard Television Interface Chip)エミュレーション */
//×	#include "clipdct.h"		/* 離散コサイン変換 */											//{{2016/02/20コメント:アセンブラ版が直接書かれているのでWin32プロジェクトでは外しました。アセンブラ版とC言語版を条件コンパイルで切り分ければWin32プロジェクトにも含められるはずです。}}
//×	#include "clipemu.h"		/* エミュレータ用サブルーチン集 */									//{{2016/02/20コメント:VC++6.0でコンパイルエラーになる箇所は僅かです。今回は外しましたが、少し修正すればWin32プロジェクトにも含められると思います。}}
#include "clipzip.h"		/* Zlib/Unzip互換ライブラリ */
#include "cliplzh.h"		/* LHA互換ライブラリ */
#include "clipdes.h"		/* DES暗号化、復号化 */
#include "clipcode.h"		/* 文字コード処理 */
//×	#include "clipgc.h"		/* ガーベージコレクター */										//{{2016/02/20コメント:P/ECEの仕様に依存している。Win32プロジェクトには含められない。}}
//×	#include "clipusb.h"		/* USBドライバ */											//{{2016/02/20コメント:P/ECEの仕様に依存している。Win32プロジェクトには含められない。}}
//×	#include "clipuio.h"		/* USB I/Oドライバ */											//{{2016/02/20コメント:P/ECEの仕様に依存している。Win32プロジェクトには含められない。}}
//×	#include "clipacm.h"		/* USB CDC ACM (Communication Device Class Abstract Control Model) */
//×	#include "clipeth.h"		/* USB Ethernetドライバ */										//{{2016/02/20コメント:GCC拡張機能を使っている箇所が多いので、Win32プロジェクトに含められるように修正するのは難しい。}}
//×	#include "clipip.h"		/* IPプロトコルドライバ */										//{{2016/02/20コメント:clipeth.hに依存している。clipeth.hを外す限りこちらも外さざるを得ない。}}
//×	#include "clipudp.h"		/* UDPプロトコルドライバ */										//{{2016/02/20コメント:clipip.hに依存している。clipip.hを外す限りこちらも外さざるを得ない。}}
//×	#include "cliptcp.h"		/* TCPプロトコルドライバ */										//{{2016/02/20コメント:clipip.hに依存している。clipip.hを外す限りこちらも外さざるを得ない。}}
//×	#include "clipdns.h"		/* DNSクライアント */											//{{2016/02/20コメント:pceTimerGetCount()を呼び出しているのでWin32プロジェクトでは外しました。pceTimerGetCount()を呼び出している箇所だけを条件コンパイルで切り分ければWin32プロジェクトにも含められるはずです。}}
//×	#include "clipufe.h"		/* USBファイルシステムエミュレーション */
//×	#include "clipir.h"		/* 赤外線通信(24/48MHz両対応) */									//{{2016/02/20コメント:P/ECEの仕様に依存している。Win32プロジェクトには含められない。}}
//×	#include "clipcom.h"		/* 調歩同期シリアル通信ドライバ */									//{{2016/02/20コメント:P/ECEの仕様に依存している。Win32プロジェクトには含められない。}}
//×	#include "clipcbx.h"		/* シリアルMIDIドライバ */										//{{2016/02/20コメント:P/ECEの仕様に依存している。Win32プロジェクトには含められない。}}
//×	#include "clipmou.h"		/* シリアルマウスドライバ */										//{{2016/02/20コメント:P/ECEの仕様に依存している。Win32プロジェクトには含められない。}}
#include "clipnet.h"		/* ネットワーク関連のサポートルーチン */
//×	#include "clipslip.h"		/* SLIP(Serial Line Internet Protocol)サーバ */								//{{2016/02/20コメント:clipuio.hに依存している。clipuio.hを外す限りこちらも外さざるを得ない。}}
//×	#include "clipht2.h"		/* 2D当り判定ルーチン */										//{{2016/02/20コメント:clipfix.hに依存している。clipfix.hを外す限りこちらも外さざるを得ない。}}
#include "clipadp.h"		/* 2-bit ADPCM Decoder */
//×	#include "clipdbg.h"		/* デバッグモード */
#include "tixml.h"		/* XML DOM parser */
//×	#include "bltml.h"		/* BulletML */												//{{2016/02/20コメント:clipfix.hに依存している。clipfix.hを外す限りこちらも外さざるを得ない。}}
//×	#include "clipmmio.h"		/* Win32 Multimedia API 互換ライブラリ */
//×	#include "clipcvid.h"		/* Cinepakデコーダ */											//{{2016/02/20コメント:cliprend.hに依存している。cliprend.hを外す限りこちらも外さざるを得ない。}}
//×	#include "clipcp21.h"		/* Silicon Labs CP210x VCP (Virtual COM Port) Emulator */						//{{2016/02/20コメント:P/ECEの仕様に依存している。Win32プロジェクトには含められない。}}
#include "cliptlz.h"		/* 簡易LZ圧縮 */
//×	#include "clipfnt8.h"		/* 8ドットフォント描画ルーチン */									//{{2016/02/20コメント:cliprend.hに依存している。cliprend.hを外す限りこちらも外さざるを得ない。}}
//×	#include "cliprenf.h"		/* 浮動小数点版3D描画モジュール */									//{{2016/02/20コメント:cliprend.hに依存している。cliprend.hを外す限りこちらも外さざるを得ない。}}
#include "clipdct2.h"		/* 二次元DCT */
#include "clipjpeg.h"		/* JPEG Decoder */
#include "clippng.h"		/* PNG Decoder */
#include "clipgif.h"		/* GIF Decoder */
#include "cliptga.h"		/* TGA Decoder */
#include "clipquaf.h"		/* 浮動小数点版クォータニオンライブラリ */									//{{2016/02/20コメント:clipflt.hに依存している。clipflt.hを外す限りこちらも外さざるを得ない。}}		{{2016/02/25コメント:clipflt.hを含めたので、当モジュールも含められるようになりました。}}
//×	#include "clipswf.h"		/* Flash SWF Player */											//{{2016/02/20コメント:cliprend.hに依存している。cliprend.hを外す限りこちらも外さざるを得ない。}}
//×	#include "clipidle.h"		/* アイドルスレッド */											//{{2016/02/20コメント:P/ECEの仕様に依存している。Win32プロジェクトには含められない。}}
//×	#include "clipfntx.h"		/* FONTX描画ルーチン */											//{{2016/02/20コメント:cliprend.hに依存している。cliprend.hを外す限りこちらも外さざるを得ない。}}
//×	#include "clipsrf.h"		/* ld33互換ローダ */											//{{2016/02/20コメント:GCC拡張機能を使っている箇所が多いので、Win32プロジェクトに含められるように修正するのは難しい。}}
#include "clipfp16.h"		/* 半精度浮動小数点数 */											//{{2016/02/20コメント:clipflt.hに依存している。clipflt.hを外す限りこちらも外さざるを得ない。}}		{{2016/02/25コメント:clipflt.hを含めたので、当モジュールも含められるようになりました。}}
#include "cliplzss.h"		/* LZSS展開ルーチン */
#include "clipncs.h"		/* 曲線補間 */													//{{2016/02/20コメント:clipflt.hに依存している。clipflt.hを外す限りこちらも外さざるを得ない。}}		{{2016/02/25コメント:clipflt.hを含めたので、当モジュールも含められるようになりました。}}
#include "clipelf.h"		/* Executable and Linkable Format (ELF) */
#include "clipc17.h"		/* S1C17702エミュレーション */
#include "clipbary.h"		/* 汎用ビット配列 */
#include "cliplot.h"		/* 抽選処理 */
#include "cliplotr.h"		/* 抽選表ROM形式 */
//×	#include "clipprds.h"		/* 演出制御 */												//{{2016/02/20コメント:VC++6.0のバグ(?)で間違ったconst警告が出る。このモジュールは古くもう使わないので回避せずに外してしまって良いだろう。}}
#include "clipihex.h"		/* インテルHEX形式ファイルローダー */
#include "clipmt.h"		/* メルセンヌ・ツイスタ擬似乱数 */
#include "clipwell.h"		/* 乱数生成アルゴリズムWELL */
#include "clipjkis.h"		/* JKISS32擬似乱数 */
#include "clippopc.h"		/* 高速ビットカウント */
#include "clipcosp.h"		/* 色空間ライブラリ */
#include "clipslot.h"		/* スロットゲーム用サブルーチン集 */
#include "clipsndm.h"		/* Sound Manager */
#include "clipsndx.h"		/* Sound Mixer */
#include "clipcntm.h"		/* 汎用カウンタ管理 */
#include "clipsnds.h"		/* サウンドシーケンサ */
#include "clipgpio.h"		/* 汎用I/Oルーチン */
#include "clip7seg.h"		/* 7セグメントディスプレイ */
#include "clipx11c.h"		/* X11の色名称 */
//×	#include "clipsckb.h"		/* オンスクリーンキーボード */										//{{2016/02/20コメント:cliprend.hに依存している。cliprend.hを外す限りこちらも外さざるを得ない。}}
//×	#include "clipredu.h"		/* 縮小文字列描画 */											//{{2016/02/20コメント:cliprend.hに依存している。cliprend.hを外す限りこちらも外さざるを得ない。}}
//×	#include "cliplogb.h"		/* ログバッファ */											//{{2016/02/20コメント:文字列展開バッファとして_def_vbuff[]を利用している。その箇所を修正すればWin32プロジェクトにも含められると思います。}}
#include "clipcrc.h"		/* CRC計算 */
#include "cliphmng.h"		/* ハミング符号 */
#include "machine.h"		/* CPU固有の命令 */
#include "cliprudc.h"		/* パルスモーターの台形制御(Ramp-up/Down control) */
#include "clipruds.h"		/* パルスモーターの台形制御シーケンサ */
#include "clipshya.h"		/* 操車場アルゴリズム */
#include "clipevtm.h"		/* イベントタイマ */
#include "cliptsp.h"		/* DSP Group TrueSpeech Decoder */
//×	#include "clipptp.h"		/* USB PTP Responder (Picture Transfer Protocol), USB MTP Responder (Media Transfer Protocol) */	//{{2016/02/20コメント:P/ECEの仕様に依存している。Win32プロジェクトには含められない。}}
//×	#include "clipaudi.h"		/* USB Audio Device */											//{{2016/02/20コメント:P/ECEの仕様に依存している。Win32プロジェクトには含められない。}}
#include "clipstr.h"		/* ユーティリティ：文字列操作 */
#include "cliptcl.h"		/* Tclインタプリタ */
#include "clipscan.h"		/* コールバックを用いたscanfの実装 */
#include "cliphfm.h"		/* Canonical Huffman Code */
#include "clipdrh.h"		/* 差分圧縮⇒連長圧縮⇒ハフマン圧縮 */
#include "cliprc.h"		/* Range Coder */
//×	#include "clipbmgc.h"		/* Bitmap GC */
//×	#include "clip915g.h"		/* ASUS P5GDC-V+WinXpでP/ECEを使った時に起きたUSBの問題を回避 */
#include "clipbpe.h"		/* Byte Pair Encoding */
#include "clipdirs.h"		/* 演出シーケンサ */
#include "clipleds.h"		/* LEDシーケンサ */
#include "clipunic.h"		/* Unicode */
#include "clipreg.h"		/* レジストリテーブル */
#include "cliphash.h"		/* ユーティリティ：ハッシュ関数 */
#include "clipbakm.h"		/* バックアップ管理 */
//×	#include "clipuvc.h"		/* USB Video Class (UVC) Device */
//×	#include "clipfibr.h"		/* ファイバ関数(Win32 API互換) */
//×	#include "clipprin.h"		/* USB Printer Device */										//{{2016/02/20コメント:P/ECEの仕様に依存している。Win32プロジェクトには含められない。}}
#include "cliptimm.h"		/* タイマ管理 */
#include "ght_hash_table.h"	/* Generic Hash Table (GHT) */
#include "clipfsm.h"		/* 有限状態機械 */
#include "clipseh.h"		/* 構造化例外処理 (Structured Exception Handling) */
#include "clipffa.h"		/* 有限体演算 (Finite Field Arithmetic) */
#include "clipqr.h"		/* QRコード */
#include "clipimg.h"		/* ユーティリティ：画像処理 */
#include "cliptaps.h"		/* TAPシーケンサ */
#include "cliptapx.h"		/* TAPミキサー */
#include "sds.h"		/* Simple Dynamic Strings library for C (SDS) */
#include "clipprp.h"		/* プロパティテーブル */
#include "obstack.h"		/* Obstack - Pool of memory containing a stack of objects. */
#include "argz.h"		/* Argz Functions - Operations on argz vectors. */
#include "clipnvlg.h"		/* 不揮発性ログバッファ */
#include "clipscnm.h"		/* シーン管理 */
#include "clipsrec.h"		/* モトローラS (SREC) 形式ファイルローダー */
#include "cliprinb.h"		/* 無駄を減らしたリングバッファ */
#include "cliptimr.h"		/* ユーティリティ：拡張タイマ */
#include "strv.h"		/* strv形式のユーティリティ関数 */
#include "clipsjis.h"		/* シフトJIS */
#include "clipmemc.h"		/* コンパクション機能付きメモリブロック管理 */
#include "clipmath.h"		/* ユーティリティ：数学関数 */
#include "clipenm.h"		/* 列挙定義 */
#include "cliprrs.h"		/* Round Robin Scheduler (RRS) */
#include "clipcbkq.h"		/* コールバックキュー */
//×	#include "clipcqrd.h"		/* コールバックキューを用いた優先度付き描画 */
#include "gnode.h"		/* N-ary Trees - trees of data with any number of branches */
#include "pcl.h"		/* Portable Coroutine Library (PCL) */		//{{2016/12/10移動:clipact.hがpcl.hに依存するようになったため、pcl.hのインクルード順序をclipact.hよりも前へ移動しました。}}
#include "clipact.h"		/* アクターオブジェクト */
#include "clipvsl.h"		/* ビデオスロットゲーム用サブルーチン集 */
#include "clipstl.h"		/* STLを参考にして作成した関数 */
#include "clipanms.h"		/* ステートレスアニメーションシーケンサ */
#include "clipdurc.h"		/* 存続カウンタ */
#include "clipmsgh.h"		/* メッセージハンドシェイク */
#include "clipncss.h"		/* ステートレスNCS補間シーケンサ */
#include "clippnm.h"		/* Netpbm format */
#include "garray.h"		/* Arrays - arrays of arbitrary elements which grow automatically as elements are added */
#include "clipafxs.h"		/* AfterEffectsアニメーションシーケンサ */
#include "clipyaml.h"		/* LibYAMLヘルパー関数 */
#include "clipafxb.h"		/* AfterEffectsアニメーションシーケンサ(バイナリ形式) */
#include "gstring.h"		/* Strings - text buffers which grow automatically as text is added */
#include "gdataset.h"		/* Keyed Data Lists, Datasets */
#include "clipmems.h"		/* 簡易メモリアロケータ */
#include "clipexpr.h"		/* 操車場アルゴリズム(改良版) */
#include "clipxls.h"		/* ユーティリティ：エクセル */
#include "gtree.h"		/* Balanced Binary Trees - a sorted collection of key/value pairs optimized for searching and traversing in order */
#include "clipwkst.h"		/* ワークシート(多階層ハッシュテーブル) */	//{{2016/07/17移動:clipwkst.hがgtree.hに依存するようになったため、clipwkst.hのインクルード順序をgtree.hよりも後へ移動しました。}}
#include "gslist.h"		/* Singly-Linked Lists - linked lists that can be iterated in one direction */
#include "cliplcds.h"		/* 液晶シーケンサ */
#include "clipxmp1.h"		/* YAMAHA YMZ871 XMP-1 (eXtensible Music Player - 1) 簡易ドライバ */
#include "clipmemp.h"		/* 可変長割り当て・一括開放式のメモリプール */
#include "clipttf.h"		/* TrueType font */
#include "clipvqtc.h"		/* VQ圧縮テクスチャ */
//×	#include "clipvqtd.h"		/* VQ圧縮テクスチャ描画 */
#include "clipusar.h"		/* UnityScript Array */
#ifdef PIECE
//×	#include "clippce.h"		/* P/ECE専用ルーチン */											//{{2016/02/20コメント:P/ECEの仕様に依存している。Win32プロジェクトには含められない。}}
#endif
#ifdef WIN32
//×	#include "clipwin.h"		/* Windows専用ルーチン */										//{{2016/02/20コメント:このモジュールは古い。長い間使っていなかったので現在のWin32プロジェクトではビルド出来ない。}}
#endif
/****************************************************************************
 *	Boehm GC
 ****************************************************************************/
#ifdef  _MT
#define GC_THREADS
#endif//_MT
// * Sat Sep 03 21:12:23 JST 2016 Naoyuki Sawa
// - GC_NOT_DLLシンボルの定義を追加しました。
//   理由は、アプリケーションプロジェクトを、/MTでビルドするか、/MDでビルドするかに関係無く、スタティック版でビルドしたgc.libを使用するためです。
//   GC_NOT_DLLシンボルを定義しないと、gc_config_macros.hが現在のビルドオプションに従ってgc.libもスタティック版かDLL版かを判断して、DLL版のGCの関数を呼び出そうとしてリンクエラーになってしまいます。
//   本来、上記の判断は、gc.libをビルドする時にだけ行われれば良いのですが、アプリケーションからインクルードした時にも、判断されてしまうからです。
//   上記の問題を防ぐには、GC_NOT_DLLを定義すれば、現在のビルドオプションに関係無く、スタティック版でビルドしたgc.libの関数を呼び出すようになります。
//   アプリケーションプロジェクトを/MTでビルドするならば、GC_NOT_DLLを定義してもしなくても同じなのですが、もしアプリケーションプロジェクトを/MDでビルドする場合のために、GC_NOT_DLLを定義しておく事にしました。
#define GC_NOT_DLL
// * Fri Jun 17 22:27:15 JST 2016 Naoyuki Sawa
// - GC_NAME_CONFLICTシンボルの定義を追加しました。
//   理由は、/clip/test.win/app.hでtk.hをインクルードした場合に、'GC'の定義が衝突したからです。
//   GC_NAME_CONFLICTシンボルを定義すると、上記の問題が回避出来る仕組みについては、gc_cpp.h内の'5. GC name conflicts:'を参照して下さい。
#define GC_NAME_CONFLICT
//leak_detector.hよりも先にgc.hをインクルードするかどうかによって、malloc()をGC_malloc()に置き換えるかGC_debug_malloc()に置き換えるかを切り替えられます。
//そうなる理由は、以下の通りです。(free(),strdup()等についても同様です。)
// - leak_detector.hよりも先にgc.hをインクルードしなかった場合:
//   leak_detector.hが、GC_DEBUGを定義してからgc.hをインクルードします。
//   gc.hは、GC_DEBUGが定義されていたら、GC_MALLOC()をGC_debug_malloc()に置き換えます。
//   その後、leak_detector.hがmalloc()をGC_MALLOC()に置き換えます。
//   結果として、malloc()がGC_debug_malloc()に置き換えられます。
// - leak_detector.hよりも先にgc.hをインクルードした場合:
//   gc.hは、GC_DEBUGが定義されていいなければ、GC_MALLOC()をGC_malloc()に置き換えます。
//   leak_detector.hが、GC_DEBUGを定義してからgc.hをインクルードします。
//   しかし、gc.hは既にインクルードされているので、'GC_H'のガードによって何もしません。
//   その後、leak_detector.hがmalloc()をGC_MALLOC()に置き換えます。
//   結果として、malloc()がGC_malloc()に置き換えられます。
//GC_malloc()とGC_debug_malloc()の違いは、メモリリークを検出した時にメモリを確保したソースコードの場所を表示するための情報を、メモリブロックに格納するかどうかです。
//上記の表示はデバッグビルドでは役に立ちますが、リリースビルドではメモリリークのデバッグ表示を見る事も無いと思うので無駄です。
//よって、デバッグビルドではmalloc()をGC_debug_malloc()に置き換えるために、leak_detector.hよりも先にgc.hをインクルード'しない'、
//リリースビルドではmalloc()をGC_debug_malloc()に置き換えるために、leak_detector.hよりも先にgc.hをインクルード'する'事にしました。
#ifndef _DEBUG
#include <gc.h>	//リリースビルドならばleak_detector.hよりも先にgc.hをインクルードする。
#endif//_DEBUG
#include <leak_detector.h>
//↑↓この順序は必須です。gc_cpp.hはgc.hをインクルードしているので、leak_detector.hよりも後でインクルードしなければなりません。leak_detector.hよりも先にインクルードすると、leak_detector.hよりも先にgc.hをインクルードしたのと同じ事になってしまい、malloc()をGC_malloc()に置き換えるかGC_debug_malloc()に置き換えるかを切り替えらる仕組みが無効になってしまいます。
#ifdef  __cplusplus
#if     (_MSC_VER >= 1900)	//┐
#pragma warning(push)		//│
#pragma warning(disable:4595)	//│
#endif//(_MSC_VER >= 1900)	//┴VS2015では、gc_cpp.hをインクルードすると「'...':非メンバーのnewまたはdelete演算子関数はインラインで宣言できません」という警告が出るので、一時的に警告を抑制します。
#include <gc_cpp.h>	//ガベージコレクションの対象とするクラスは「class A: public gc {...};」のように定義する必要が有ります。左記のように定義したクラス以外はガベージコレクションの対象にならず、明示的に開放しなければいつまでも残ってしまいます。詳細は/clip/tool/gc/gc_cpp.hを参照して下さい。
#if     (_MSC_VER >= 1900)	//┬VS2015では、gc_cpp.hをインクルードすると「'...':非メンバーのnewまたはdelete演算子関数はインラインで宣言できません」という警告が出るので、一時的に警告を抑制します。
#pragma warning(pop)		//│
#endif//(_MSC_VER >= 1900)	//┘
#endif//__cplusplus
#ifndef _WIN64
#pragma comment(lib, "gc.lib")		//32ビット版
#else //_WIN64
#pragma comment(lib, "gc_x64.lib")	//64ビット版
#endif//_WIN64
/****************************************************************************
 *	Pthreads-win32
 ****************************************************************************/
//{{2016/05/28追加:Visual Studio 2015でコンパイルした時に、「C:\Home\Share\Piece\clip\tool\pthreads\pthread.h(320): error C2011: 'timespec': 'struct' 型の再定義」というエラーが出る問題を回避しました。
// * Sat May 28 21:20:19 JST 2016 Naoyuki Sawa
// - Visual Studio 2015でコンパイルした時に、「C:\Home\Share\Piece\clip\tool\pthreads\pthread.h(320): error C2011: 'timespec': 'struct' 型の再定義」というエラーが出る問題を回避しました。
//   今後、Visual C++ .NETへ移行するための準備です。
// - 上記のエラーが発生する理由は、Visual Studio 2015では、コンパイラのtime.hでstruct timespecが定義されるようになったからです。
//   そこで、Visual Studio 2015以降で使用する時は、Pthreads-win32のpthread.hでstruct timespecを定義しないようにしました。
// - 上記の対策方法は、下記の資料を参照させて頂きました。
//   ただし、当ヘッダファイルははVisual C++でしか使用しないし、_CRT_NO_TIME_Tを定義する事も無いので、少し単純化して使用させて頂きました。
//   □「Neff Site - Pthreads-Win32 and Visual Studio 2015」(http://www.neff.co.at/2015/10/09/Pthreads-Win32-and-Visual-Studio-2015.html)
//   │Projects that use Pthreads-Win32 no longer compile with Visual Studio 2015 since timespec gets already defined in time.h.
//   │To avoid this error apply this patch to pthread.h.
//   │It inserts the following modification:
//   │＞#if defined(_MSC_VER) && _MSC_VER >= 1900 && !defined(_CRT_NO_TIME_T)
//   │＞#define _TIMESPEC_DEFINED
//   │＞#endif
#if     (_MSC_VER >= 1900)
#define _TIMESPEC_DEFINED
#endif//(_MSC_VER >= 1900)
//}}2016/05/28追加:Visual Studio 2015でコンパイルした時に、「C:\Home\Share\Piece\clip\tool\pthreads\pthread.h(320): error C2011: 'timespec': 'struct' 型の再定義」というエラーが出る問題を回避しました。
#include <pthread.h>
#include <sched.h>
#include <semaphore.h>
#ifdef  PTHREAD_H
#include "mqueue.h"		//POSIX Message Queue for Windows NT
#endif//PTHREAD_H
//Boehm GCとPthreads-win32が併用されたら、Pthreads-win32の関数をBoehm GC用にラップする。
//Boehm GCにも、GC_WIN32_THREADSシンボルを定義してビルドすれば、Pthreads関数をラップする機能が有るのだが、
//コメントから推測するに、CygwinのPthreadsを想定しているようだ。
//GC_WIN32_THREADSでPthreads-win32をラップするのは危険だと思ったので、自前で最小限のラップを行う事にした。
#if     (defined(GC_H) && defined(PTHREAD_H))
#ifdef  __cplusplus
extern "C" {
#endif//__cplusplus
int GC_pthread_create(pthread_t* tid, const pthread_attr_t* attr, void* (*start)(void*), void* arg);
#define pthread_create(tid,attr,start,arg) GC_pthread_create((tid),(attr),(start),(arg))
#ifdef  __cplusplus
}//extern "C"
#endif//__cplusplus
#endif//(defined(GC_H) && defined(PTHREAD_H))
#ifndef _WIN64
#ifdef  _DEBUG
#pragma comment(lib, "pthreadVC2d.lib")		//32ビット版(Debug)
#else //_DEBUG
#pragma comment(lib, "pthreadVC2.lib")		//32ビット版(Release)
#endif//_DEBUG
#else //_WIN64
#ifdef  _DEBUG
#pragma comment(lib, "pthreadVC2_x64d.lib")	//64ビット版(Debug)
#else //_DEBUG
#pragma comment(lib, "pthreadVC2_x64.lib")	//64ビット版(Release)
#endif//_DEBUG
#endif//_WIN64
//{{2016/09/08変更:init_program_invocation_name()が確実に実行されるように、「#pragma comment(linker, "/INCLUDE:_pinit_program_invocation_name")」及び「#pragma comment(linker, "/INCLUDE:pinit_program_invocation_name")」を追加しました。詳細は、cliplibc.h の'Thu Sep 08 22:20:43 JST 2016'のコメントを参照して下さい。
#ifndef _WIN64
#pragma comment(linker, "/INCLUDE:_pGC_threads_init")	//32ビットでは、シンボル名の先頭に'_'が付きます。
#else //_WIN64
#pragma comment(linker, "/INCLUDE:pGC_threads_init")	//64ビットでは、シンボル名の先頭に'_'が付きません。
#endif//_WIN64
//}}2016/09/08変更:init_program_invocation_name()が確実に実行されるように、「#pragma comment(linker, "/INCLUDE:_pinit_program_invocation_name")」及び「#pragma comment(linker, "/INCLUDE:pinit_program_invocation_name")」を追加しました。詳細は、cliplibc.h の'Thu Sep 08 22:20:43 JST 2016'のコメントを参照して下さい。
/****************************************************************************
 *	SQLite
 ****************************************************************************/
#include <sqlite.h>
#ifdef  _SQLITE_H_
#include "SqliteHelper.h"	//ヘルパー関数:/clip/SqliteHelper.h,SqliteHelper.c
#endif//_SQLITE_H_
#pragma comment(lib, "sqlite.lib")
/****************************************************************************
 *	SQLite3
 ****************************************************************************/
#include <sqlite3.h>
#ifdef  _SQLITE3_H_
//※TODO:	#include "Sqlite3Helper.h"	//ヘルパー関数:/clip/Sqlite3Helper.h,Sqlite3Helper.c
#endif//_SQLITE3_H_
#pragma comment(lib, "sqlite3.lib")
/****************************************************************************
 *	PDCurses
 ****************************************************************************/
#undef  MOUSE_MOVED
//{{2016/05/28追加:Visual Studio 2015でコンパイルした時に、「C:\Home\Share\Piece\clip\tool\pdcurses\curses.h(85): error C2632: 'char' と 'bool' の 2 つの型指定子のあいだにコードがありません。」というエラーが出る問題を回避しました。
// * Sat May 28 21:20:19 JST 2016 Naoyuki Sawa
// - Visual Studio 2015でコンパイルした時に、「C:\Home\Share\Piece\clip\tool\pdcurses\curses.h(85): error C2632: 'char' と 'bool' の 2 つの型指定子のあいだにコードがありません。」というエラーが出る問題を回避しました。
//   今後、Visual C++ .NETへ移行するための準備です。
// - 上記のエラーが発生する理由は、以下の通りです。
//   1. curses.hにて、「typedef unsigned char bool;」という宣言が行われています。
//   2. 本来、C99でもstdbool.hをインクルードしなければbool型は定義されないので、上記の宣言で型の衝突は起きないはずです。
//      2016/05/28時点では、当ライブラリのclipstd.hや、使用している各種ライブラリ内で、明示的にstdbool.hをインクルードしている個所は有りません。
//      それにもかかわらず、stdbool.hがインクルードされてしまってい理由は、process.hがstdbool.hをインクルードしているからです。
//      ・clipstd.hにて、process.hをインクルードしています。
//        →c:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\process.h
//          →c:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\corecrt_startup.h
//            →c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\vcruntime_startup.h
//              →c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\stdbool.h
//   3. これでは、process.hが必要なアプリケーションでは(必要無くても)bool型が定義されてしまう事になり、VC++2015のヘッダファイル構成に問題が有ると思います。
//      下記のフォーラムで、この問題が議論されていますが、簡単な解決策は見つかっていないようです。
//      │「VS 2015 process.h ends up including stdbool.h. How to avoid this?」
//      │(https://social.msdn.microsoft.com/Forums/vstudio/en-US/9cd409e8-8edc-4a32-ab0c-ea12208ea3bc/vs-2015-processh-ends-up-including-stdboolh-how-to-avoid-this?forum=vcgeneral)
//   4. 仕方が無いので、curses.hをインクルードする前後で少し工夫をして、この問題を回避する事にしました。
// - この問題を回避した方法は、以下の通りです。
//   1. curses.hを見ると、C++の場合にboolが衝突しないようにするための対策は、既に取られています。
//      │#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS)
//      │extern "C"
//      │{
//      │# define bool _bool
//      │#endif
//      │〜〜〜(中略)〜〜〜
//      │#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS)
//      │# undef bool
//      │}
//      │#endif
//   2. 上記でboolに対して行っているのと同じ対策を、_Boolに対して行えば良いのです。
//      何故なら、(不本意ながら)stdbool.hがインクルードされているので、boolは_Boolに置換されるからです。
//   3. 結論としては、以下の通りです。
//      ・VC++2015で、Cソースのコンパイル時ならば、curses.hをインクルードする直前に、_Boolをダミーの名前に置き換える。
//      ・VC++2015で、Cソースのコンパイル時ならば、curses.hをインクルードした直後に、_Boolをダミーの名前に置き換えたのを解除する。	この解除は必須ではありませんが、もし今後_Bool型を使用する場合のために、本物の_Boolに戻しておくのが安全です。
//      尚、ダミーの名前は何でも良いのですが、curses.hがC++のboolに対して一時的に置き換えているダミーの名前に倣って、'_bool'という名前を使う事にしました。
#if     ((_MSC_VER >= 1900) && !defined(__cplusplus))
#define _Bool _bool
#endif//((_MSC_VER >= 1900) && !defined(__cplusplus))
//}}2016/05/28追加:Visual Studio 2015でコンパイルした時に、「C:\Home\Share\Piece\clip\tool\pdcurses\curses.h(85): error C2632: 'char' と 'bool' の 2 つの型指定子のあいだにコードがありません。」というエラーが出る問題を回避しました。
#include <curses.h>
//{{2016/05/28追加:Visual Studio 2015でコンパイルした時に、「C:\Home\Share\Piece\clip\tool\pdcurses\curses.h(85): error C2632: 'char' と 'bool' の 2 つの型指定子のあいだにコードがありません。」というエラーが出る問題を回避しました。
#if     ((_MSC_VER >= 1900) && !defined(__cplusplus))
#undef  _Bool
#endif//((_MSC_VER >= 1900) && !defined(__cplusplus))
//}}2016/05/28追加:Visual Studio 2015でコンパイルした時に、「C:\Home\Share\Piece\clip\tool\pdcurses\curses.h(85): error C2632: 'char' と 'bool' の 2 つの型指定子のあいだにコードがありません。」というエラーが出る問題を回避しました。
#include <panel.h>
#include <term.h>
#ifndef _WIN64
#pragma comment(lib, "pdcurses.lib")		//32ビット版
#else //_WIN64
#pragma comment(lib, "pdcurses_x64.lib")	//64ビット版
#endif//_WIN64
/****************************************************************************
 *	DxLib
 ****************************************************************************/
//□｢ﾂｰﾙ｣⇒｢ｵﾌﾟｼｮﾝ｣⇒｢ﾃﾞｨﾚｸﾄﾘ｣⇒｢表示するﾃﾞｨﾚｸﾄﾘ｣⇒｢ｲﾝｸﾙｰﾄﾞﾌｧｲﾙ｣
//│C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE
//│C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE
//│C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE
//│C:\Home\Share\DxLib_VC\プロジェクトに追加すべきファイル_VC用 ← これを追加しました｡
//□｢ﾂｰﾙ｣⇒｢ｵﾌﾟｼｮﾝ｣⇒｢ﾃﾞｨﾚｸﾄﾘ｣⇒｢表示するﾃﾞｨﾚｸﾄﾘ｣⇒｢ﾗｲﾌﾞﾗﾘﾌｧｲﾙ｣
//│C:\Program Files\Microsoft Visual Studio\VC98\LIB
//│C:\Program Files\Microsoft Visual Studio\VC98\MFC\LIB
//│C:\Home\Share\DxLib_VC\プロジェクトに追加すべきファイル_VC用 ← これを追加しました｡
#ifdef  __cplusplus
#include <DxLib.h>
#ifdef  __DXLIB
#include "DxlibHelper.h"	//ヘルパー関数:/clip/DxlibHelper.h,DxlibHelper.cpp
#endif//__DXLIB
#endif//__cplusplus
/*--------------------------------------------------------------------------*/
#include "SofdecHelper.h"	//ヘルパー関数:/clip/tool/SofdecHelper/SofdecHelper.h,SofdecHelper.lib,/clip/tool/SofdecHelper.dll
#include "ssbpLib.h"		//ヘルパー関数:/clip/tool/ssbpLib/ssbpLib.h,ssbpLib.lib,/clip/tool/ssbpLib.dll
/****************************************************************************
 *	GDI+
 ****************************************************************************/
//gdiplus.hはC++ソース専用ですが、GdiplusHelper.hはCソースからもインクルード出来ます。
//#ifdef  _GDIPLUS_H
#include "GdiplusHelper.h"	//ヘルパー関数:/clip/GdiplusHelper.h,GdiplusHelper.cpp
//#endif//_GDIPLUS_H
/****************************************************************************
 *	Nuklear
 ****************************************************************************/
#ifdef  __DXLIB
#include "nuklear/nuklear_dxlib.h"	//NuklearのDxLib用レンダリングバックエンド
#endif//__DXLIB
