/*	
 *	clipstd.h
 *
 *	標準ヘッダファイルをインクルードします。
 *
 *	CLiP - Common Library for P/ECE
 *	Copyright (C) 2001-2014 Naoyuki Sawa
 *
 *	* Fri Nov 30 15:49:54 JST 2001 Naoyuki Sawa
 *	- 作成開始。
 *	* Thu Dec  6 22:01:32 JST 2001 Naoyuki Sawa
 *	- 1stリリース。
 *	* Thu May 30 06:09:50 JST 2002 Naoyuki Sawa
 *	- s1c33cpu.hとc33208.hのインクルードを追加。
 *	* Thu Jul  4 18:19:00 JST 2002 Naoyuki Sawa
 *	- #include "c33208.h" を "c33209.h" に変更。
 *	- c33209.hは、オリジナルのc33208.hを基に、修正を加えたものです。
 *	  c33208.hはもう使いませんが、keepフォルダに残してありますので、
 *	  c33208.hとc33209.hを比較して、変更か所を確認してください。
 *	* Fri Jul  5 20:05:00 JST 2002 Naoyuki Sawa
 *	- plc_IOの定義をc33209.hに移しました。
 *	* Sat Sep  7 21:39:00 JST 2002 Naoyuki Sawa
 *	- Simpleライブラリのプロジェクトからもclipstd.hを利用するために、
 *	  NOZLIBシンボルを定義するとzlib.hをincludeしないようにしました。
 *	  NOGSM シンボルを定義するとgsm.h をincludeしないようにしました。
 *	  ->Sat Oct 12 06:24:00 やっぱりNOZLIB,NOGSMは削除。
 *	    他のプロジェクトで使うときは、編集してください。
 *	* Mon Nov 26 00:47:00 JST 2002 Naoyuki Sawa
 *	- zlib/unzip.hを追加しました。
 *	  詳しくは、zlib/Makefileの2002/11/26日付コメントを参照してください。
 *	* Sun Mar 23 05:53:00 JST 2003 Naoyuki Sawa
 *	- S1C33 Family C Compiler Packageのpow()バグ回避方法を変更。
 *	  これまではマクロで置き換えていましたが、関数の再定義に変更しました。
 *	  マクロでもいいのですが、関数再定義の方が安全な気がしたので…
 *	  pow()の再定義は、他の関数の再定義と同じく、clippce.cで行っています。
 *	* Tue May 20 06:00:00 JST 2003 Naoyuki Sawa
 *	- 浮動小数点数対応のsprintf()/vsprintf()を作ったので、（→clipprnt.c）
 *	  これらの関数がカーネル呼び出しになってしまわないよう、
 *	  #include <piece.h> より先に #define NOPCESPRINTF を定義しました。
 *	* Wed Jan 04 04:16:00 JST 2006 Naoyuki Sawa
 *	- Win32アプリケーション用の、メモリリーク追跡の定義を追加しました。
 *	  メモリリーク追跡を行うには、main()の最初にDEBUG_INIT()を呼び出してください。
 *	* Thu Jan 05 02:51:00 JST 2006 Naoyuki Sawa
 *	- Win32環境でよく使う、assert.h、io.h等を、ここで読み込むよう追加しました。
 *	  これまでは、それぞれのWin32アプリケーションが、個別に読み込んでいました。
 *	* Thu Mar 23 19:55:00 JST 2006 Naoyuki Sawa
 *	- #include <setjmp.h> を追加しました。
 *	* Thu Jun 08 07:45:00 JST 2006 Naoyuki Sawa
 *	- EPSONライブラリのlimits.hは問題があり、INT_MINを使うと以下のような警告が表示されます。
 *		warning: decimal constant is so large that it is unsigned
 *	  警告を回避するために、INT_MINを再定義しました。(LONG_MINについても同様です。)
 *	  コンパイル時の警告の有無だけの違いであり、生成されるバイナリに変化はありません。
 *	  ややトリッキーですが、INT_MINをこのように定義して警告を回避するのは、C言語の定石です。
 *	* Sat Jun 17 04:53:39 JST 2006 Naoyuki Sawa
 *	- stddef.hとstdlib.hのwchar_t定義衝突を回避し、stddef.hのincludeを有効に戻しました。
 *	* Tue Jun 27 06:49:04 JST 2006 Naoyuki Sawa
 *	- Expatのヘッダファイル(expat/expat.h)インクルードを追加しました。
 *	* Wed Jun 28 05:09:19 JST 2006 Naoyuki Sawa
 *	- Visual C++ 6.0のC言語では、inlineが使えないので、__inlineへの置き換えを定義しました。
 *	  Win32でclipfix.hを利用するときに、プロジェクト毎の置き換え定義が不要になりました。
 *	* Thu Jul 20 06:10:41 JST 2006 Naoyuki Sawa
 *	- assert.hを、P/ECE環境とWin32環境共通でインクルードするよう変更しました。
 *	  これまでは、P/ECE環境にassert.hは存在せず、Win32環境でのみインクルードしていました。
 *	  今回、P/ECE環境のために、include/assert.hを作成しました。
 *	  P/ECE環境では、include/assert.hがインクルードされます。
 *	  CLiPには既にASSERTが存在するので、assert.hは単にassertをASSERTに置き換えるだけです。
 *	- 以上のように変更した理由は、次のとおりです。
 *	  既存のライブラリ等をP/ECEで利用する場合に、ライブラリがassert()を利用していることが多いです。
 *	  これまでは、「#include <assert.h>」をコメントアウトし、assert()をASSERT()に変更していました。
 *	  毎回このような作業を行うよりも、assert.hとassert()を提供する方が早いと判断しました。
 *	* Tue Nov 22 01:13:37 JST 2011 Naoyuki Sawa
 *	- /usr/PIECE/include/limits.h を /clip/include/limits.h にコピーし、直接修正することにしました。
 *	  INT_MINとLONG_MINを再定義して修正する方法をやめ、当該箇所をコメントアウトしました。
 *	  /clip/include/limits.h のコメントを参照してください。
 *	* Tue Nov 22 02:15:06 JST 2011 Naoyuki Sawa
 *	- /usr/PIECE/include/stdarg.h を /clip/include/stdarg.h にコピーし、smcvals.hをインクルードするようにしました。
 *	  ただし、clipstd.hの中のsmcvals.hのインクルードも、そのまま残してあります。
 *	  /clip/include/stdarg.h のコメントを参照してください。
 *	* Tue Nov 22 02:39:29 JST 2011 Naoyuki Sawa
 *	- /usr/PIECE/include/stddef.h を /clip/include/stddef.h にコピーし、直接修正することにしました。
 *	  この変更に伴い、clipstd.hで_WCHAR_Tを定義することは不要になったため、clipstd.hの当該箇所をコメントアウトしました。
 *	  /clip/include/stddef.h のコメントを参照してください。
 *	* Tue Nov 22 02:52:56 JST 2011 Naoyuki Sawa
 *	- Luaのヘッダファイル(liblua/lua.h,liblua/lauxlib.h,liblua/lualib.h)インクルードを追加しました。
 *	* Tue Oct 16 11:50:08 JST 2012 Naoyuki Sawa
 *	- alloca.h のインクルードを追加しました。
 *	* Fri Nov 30 14:17:48 JST 2012 Naoyuki Sawa
 *	- Visual C++ 6.0 で、dirent.h,fnmatch.h,stdint.h,alloca.h をインクルードしないよう除外しました。
 *	* Sun Mar 10 19:53:04 JST 2013 Naoyuki Sawa
 *	- getopt.h のインクルードを追加しました。
 *	* Sat Mar 23 17:48:56 JST 2013 Naoyuki Sawa
 *	- sys/stat.h、sys/types.h のインクルードを追加しました。
 *	* Tue Dec 03 23:45:04 JST 2013 Naoyuki Sawa
 *	- X11/keysym.h のインクルードを追加しました。
 *	* Mon Jan 13 19:05:18 JST 2014 Naoyuki Sawa
 *	- search.h のインクルードを追加しました。
 *	* Mon Mar 10 17:00:24 JST 2014 Naoyuki Sawa
 *	- /usr/PIECE/include/stdio.h を /clip/include/stdio.h にコピーし、直接修正しました。
 *	  /clip/include/stdio.h のコメントを参照してください。
 *	* Sat May 03 22:57:35 JST 2014 Naoyuki Sawa
 *	- Win32環境でのみインクルードするヘッダファイルに、malloc.hを追加しました。
 *	  Win32環境では、alloca()が、alloca.hではなく、malloc.hで宣言させています。
 *	* Sun May 18 04:36:19 JST 2014 Naoyuki Sawa
 *	- malloc.hとcrtdbg.hのインクルード順序を入れ替えました。
 *	  crtdbg.hの後でmalloc.hをインクルードすると、Debugビルド時にエラーになります。
 *	* Tue May 20 12:09:27 JST 2014 Naoyuki Sawa
 *	- Visual C++ 6.0 に無いため除外していたインクルードファイルのうち、
 *	  Windowsでも使用したいファイルを、clipフォルダ相対でインクルードするようにしました。
 *	  Windows用プロジェクトでも、極力、clipstd.h だけのインクルードで済ませたいからです。
 */
#ifndef __CLIP_STD_H__
#define __CLIP_STD_H__

/* * Sun May 18 16:37:13 JST 2014 Naoyuki Sawa
 * - 「_WIN32」が定義されていたら、確実に「WIN32」も定義するようにしました。
 * - Visual C++ 6.0は、「_WIN32」を常に定義します。
 *   アンダーバーの無い「 WIN32」は、AppWizardで生成したプロジェクトならば初期値として設定されていますが、
 *   コマンドラインで直接「cl.exe」を実行した場合は、明示的に「-DWIN32」を指定しない限り、定義されません。
 *   CLiPライブラリの各モジュールは「_WIN32」でなく「WIN32」を参照しており、
 *   これまで、「-DWIN32」の指定を忘れると、P/ECE用とWindows用のソース切替バグになり易い問題がありました。
 * - 根本的な修正方法は、各モジュールが参照しているシンボルを、「WIN32」⇒「_WIN32」に修正することですが、
 *   変更箇所が多すぎて、エンバグの危険が大きいと思うため、その方法は取りませんでした。
 *   その代りに、「_WIN32」が定義されていたら、ここで確実に「WIN32」も定義するようにしました。
 */
#ifdef  _WIN32
#ifndef  WIN32
#define  WIN32
#endif// WIN32
#endif//_WIN32

/* - 「_DEBUG」が定義されていたら、確実に「DEBUG」も定義するようにしました。
 * - Visual C++ 6.0は、Debug版に「_DEBUG」を定義します。アンダーバーの無い「DEBUG」は定義しません。
 *   CLiPライブラリの各モジュールは「_DEBUG」でなく「DEBUG」を参照しており、
 *   そのままでは、P/ECE用とWindows用のどちらで使用するかによってDebug版切替バグになり易い問題があります。
 * - 根本的な修正方法は、各モジュールが参照しているシンボルを、「DEBUG」⇒「_DEBUG」に修正することですが、
 *   変更箇所が多すぎて、エンバグの危険が大きいと思うため、その方法は取りませんでした。
 *   その代りに、「_DEBUG」が定義されていたら、ここで確実に「DEBUG」も定義するようにしました。
 */
#ifdef  _DEBUG
#ifndef  DEBUG
#define  DEBUG
#endif// DEBUG
#endif//_DEBUG

/* S1C33 Family C Compiler Package でサポートされている、
 * 標準ヘッダファイルをインクルードします。
 * * stddef.hをインクルードすると、wchar_tの多重定義エラーになります。
 *   そういえば確かに、コンパイラマニュアルのヘッダファイルリストには
 *   stddef.hは載っていません(他のヘッダファイルは全部載ってるのに)。
 *   とりあえず、インクルードリストから外して様子を見ることにします。
 *   ↓追記 Sat Jun 17 04:53:39 JST 2006 Naoyuki Sawa
 *   この問題の原因は、stddef.hとstdlib.hでwchar_tの定義が衝突していることでした。
 *   stdlib.h側の定義を抑制して問題を回避し、stddef.hのincludeを有効に戻しました。
 *   ↓追記 Tue Nov 22 02:39:29 JST 2011 Naoyuki Sawa
 *   /usr/PIECE/include/stddef.h を /clip/include/stddef.h にコピーし、直接修正することにしました。
 *   この変更に伴い、clipstd.hで_WCHAR_Tを定義することは不要になったため、clipstd.hの当該箇所をコメントアウトしました。
 *   /clip/include/stddef.h のコメントを参照してください。
 * * stdarg.hは単独では使えず、_BOUNDARYの未定義エラーになります。
 *   S1C33アーキテクチャ依存のヘッダファイル、smcvals.hが必要です。
 *   ↓追記 Tue Nov 22 02:15:06 JST 2011 Naoyuki Sawa
 *   /usr/PIECE/include/stdarg.h を /clip/include/stdarg.h にコピーし、smcvals.hをインクルードするようにしました。
 *   ただし、clipstd.hの中のsmcvals.hのインクルードも、そのまま残してあります。
 *   /clip/include/stdarg.h のコメントを参照してください。
 */
//#ifdef PIECE
//#define _WCHAR_T			/* 2006/06/17 stddef.hとstdlib.hのwchar_t衝突回避 */
//#endif /*PIECE*/
//→2011/11/22 /usr/PIECE/include/stddef.h を /clip/include/stddef.h にコピーし、直接修正することにしました。
#include <ctype.h>
#include <errno.h>
#include <float.h>
#include <limits.h>
#include <math.h>
#include <stdarg.h>
#include <stddef.h>			/* 2006/06/17 stddef.hのincludeを有効に戻しました */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <setjmp.h>
#include <assert.h>			/* 2006/07/20 assert.hをWin32固有からP/ECEとWin32共通に変更 */
#include <locale.h>			/* 2011/01/03 include/locale.hを新規作成 */
#include <search.h>			/* 2014/01/13 include/search.hを新規作成 */					//Visual C++ 6.0のsearch.hにはhcreate等のPOSIX関数が含まれていないので、WindowsではVisual C++ 6.0のsearch.hに加えてP/ECE用のsearch.hもインクルードする。尚、clipsrch.cの実装はP/ECE,Windows両対応である。下記参照。
#ifdef  PIECE				/* 2012/11/30 {{Visual C++ 6.0 にはこれらのインクルードファイルが無いので除外 */
#include <dirent.h>			/* 2011/01/26 include/dirent.hを新規作成 */					//Windowsでも使用したいので、clipフォルダ相対でインクルードする。下記参照。
#include <fnmatch.h>			/* 2011/02/03 include/fnmatch.hを新規作成 */					//Windowsでも使用したいので、clipフォルダ相対でインクルードする。下記参照。
#include <stdint.h>			/* 2011/05/11 include/stdint.hを新規作成 */					//Windowsでも使用したいので、clipフォルダ相対でインクルードする。下記参照。
#include <alloca.h>			/* 2012/10/16 include/alloca.hを新規作成 */					//Windowsでは使用しない。Windowsでは、malloc.hがこれに相当する。
#include <getopt.h>			/* 2013/03/10 include/getopt.hを新規作成 */					//Windowsでも使用したいので、clipフォルダ相対でインクルードする。下記参照。
#include <X11/keysym.h>			/* 2013/12/02 include/X11/keysym.h,include/X11/keysymdef.hを新規作成 */		//Windowsでは使用しない。X11/keysym.hがインクルードパス相対でX11/keysymdef.hをインクルードしているため、clip/includeをインクルードパスに含めずにclipフォルダ相対でインクルードできないから。Windowsで使用したい場面も無いと思うので、このままで良いだろう。
#endif/*PIECE*/				/* 2012/11/30 }}Visual C++ 6.0 にはこれらのインクルードファイルが無いので除外 */
#ifdef  WIN32				/* 2014/05/20 {{上記で除外したファイルのうち、Windowsでも使用したいファイルを、clipフォルダ相対でインクルードする。尚、Windowsでは、clip/includeをインクルードパスに含めることはできない。もしそうすると、P/ECE用のstdio.h等をインクルードしてしまうから。 */
#include <include/search.h>		/* 2014/05/20 */								//Visual C++ 6.0のsearch.hにはhcreate等のPOSIX関数が含まれていないので、WindowsではVisual C++ 6.0のsearch.hに加えてP/ECE用のsearch.hもインクルードする。尚、clipsrch.cの実装はP/ECE,Windows両対応である。
#include <include/dirent.h>		/* 2014/05/20 */								//Windowsでも使用したいので、clipフォルダ相対でインクルードする。
#include <include/fnmatch.h>		/* 2014/05/20 */								//Windowsでも使用したいので、clipフォルダ相対でインクルードする。
#include <include/stdint.h>		/* 2014/05/20 */								//Windowsでも使用したいので、clipフォルダ相対でインクルードする。
#include <include/getopt.h>		/* 2014/05/20 */								//Windowsでも使用したいので、clipフォルダ相対でインクルードする。
#endif/*WIN32*/				/* 2014/05/20 }}上記で除外したファイルのうち、Windowsでも使用したいファイルを、clipフォルダ相対でインクルードする。尚、Windowsでは、clip/includeをインクルードパスに含めることはできない。もしそうすると、P/ECE用のstdio.h等をインクルードしてしまうから。 */
#include <sys/types.h>			/* 2013/03/23 include/sys/types.hを新規作成 */
#include <sys/stat.h>			/* 2013/03/23 include/sys/stat.hを新規作成 */

/* P/ECE専用 */
#ifdef PIECE
#define NOPCESPRINTF			/* sprintf()/vsprintf()はclipprnt.cで定義 */
#include <smcvals.h>			/* S1C33用: va_start()等に必要   */
#include <piece.h>			/* P/ECE用: 基本ヘッダファイル */
#include <pclsprite.h>			/* P/ECE用: スプライト/BGライブラリ */
#include <muslib.h>			/* P/ECE用: 標準音楽ドライバ */
#include <s1c33cpu.h>			/* P/ECE用: コアCPU制御 */
#include "vector.h"			/* P/ECE用: カーネルサービスベクタ番号 */
#include "c33209.h"			/* S1C33用: I/Oマップ */
///* S1C33 Family C Compiler Package の pow() には不具合があり、間違った値を返すことがあります。
// * 例えば pow(1.25, 1.0) の結果が 0.0 になることがあります。まだ原因は究明できていません。
// * pow(1.0〜1.5, 0.0以外) あたりが危ないようですが、微妙なコーディングの違いによって発症しないこともあります。
// * 現在、二種類の回避方法が発見されています。
// * ・pow()を呼ぶだけのラッピング関数pow_wrap()を用意し、常にpow_wrap()を経由してpow()を呼び出す。
// *   確かに回避できるのですが、なぜこれだけで回避できるのか全くわからないのが不安なところです。
// * ・pow()をexp()とlog()に展開し、pow()を使わないようにします。
// *   もしも不具合の原因がpow()単体の問題であったならば、この方法で確実に回避できるはずです。
// *   ただし、算術関数の呼び出しが増えるため、プログラムが遅くなってしまう欠点があります。
// * いずれにせよ、もともとの原因がわかっていないので、どちらの方法でも確実に回避できるとは言い切れません。
// */
//#define pow(x, y)	exp(log(x) * (y))
//→2003/03/23 マクロで置き換えるのではなく、関数を再定義して置き換えることにしました。clippce.cにあります。
///* * Thu Jun 08 07:45:00 JST 2006 Naoyuki Sawa
// * - EPSONライブラリのlimits.hは問題があり、INT_MINを使うと以下のような警告が表示されます。
// *	warning: decimal constant is so large that it is unsigned
// *   警告を回避するために、INT_MINを再定義しました。(LONG_MINについても同様です。)
// *   コンパイル時の警告の有無だけの違いであり、生成されるバイナリに変化はありません。
// *   ややトリッキーですが、INT_MINをこのように定義して警告を回避するのは、C言語の定石です。
// */
//#undef  INT_MIN  // (-2147483648     )	/* EPSONライブラリの定義 (誤) */
//#define INT_MIN     (-2147483647  - 1)	/* Visual C++ 6.0 の定義 (正) */
//#undef  LONG_MIN // (-2147483648     )	/* EPSONライブラリの定義 (誤) */
//#define LONG_MIN    (-2147483647L - 1)	/* Visual C++ 6.0 の定義 (正) */
//→2011/11/22 /usr/PIECE/include/limits.h を /clip/include/limits.h にコピーし、直接修正することにしました。
#endif /*PIECE*/

/* Windows専用 */
#ifdef WIN32
#define STRICT
#pragma warning(disable: 4115)		/* 関数の仮引数リストで構造体、共用体、列挙型の定義に使われました。 */
#include <windows.h>
#pragma warning(default: 4115)
/* 非標準の拡張機能に関する警告を抑制します。 */
//#pragma warning(disable: 4200)	/* 非標準の拡張機能が使用されています:構造体または共用体中にサイズが0の配列があります。 */
#pragma warning(disable: 4204)		/* 非標準の拡張機能が使用されています:定数でない初期化子の集合です。 */
//#pragma warning(disable: 4214)	/* 非標準の拡張機能が使用されています:整数型以外のビットフィールドです。 */
#pragma warning(disable: 4244)		/* '...'から'...'に変換しました。データが失われているかもしれません。 */
//#pragma warning(disable: 4761)	/* 関数の仮引数と実引数のベース型が異なっています。実引数を仮引数の型に変換します。 */
/* P/ECEには無く、Windowsでよく使うヘッダファイルを、ここで読み込みます。 */
//#include <assert.h>	/* assert() */
//→2006/07/20 assert.hをWin32固有からP/ECEとWin32共通に変更
#include <io.h>		/* open()、isatty()等 */
#include <conio.h>	/* kbhit()、getch()等 */
#include <malloc.h>	/* alloca() */										//←┐この順序必須です。
/*{{2006/01/04 --------------------------------- メモリリーク追跡 --------------------------------- */		//　│malloc.hの中でもmalloc()等の関数宣言が行われており、
/* malloc()等をデバッグ版に置き換えて、メモリリークのレポート時に、ファイル名、行番号を表示します。 */		//　│crtdbg.hのマクロ置き換えより先にする必要があります。
#define _CRTDBG_MAP_ALLOC /* ← この二行の順番、必須です!! 逆にすると */					//　│逆にすると、マクロ定義後に関数宣言を行うことになり、
#include <crtdbg.h>       /* ← _CRTDBG_MAP_ALLOCが有効になりません!! */					//←┘Debugビルド時にエラーになります。
/* プログラム終了時に、メモリリークをレポートするよう指示します。main()の最初に呼び出してください。 */
#define DEBUG_INIT() do {											\
	/* * メモリリークのレポートは、警告レベルのデバッグメッセージとして出力されます。               */	\
	/*   初期状態では、警告レベルのデバッグメッセージはどこにも表示されないようです。               */	\
	/* - VC++ 6.0のヘルプには、初期状態では、stderrまたはデバッガに出力されると書いてありますが、   */	\
	/*   VC++ 6.0 SP6＋Windows 2000で試してみたところ、初期状態ではどこにも出力されませんでした。   */	\
	/* * メモリリークのレポートを表示するために、警告レベルのデバッグメッセージ出力先を設定します。 */	\
	/*   出力先は、stderrと、デバッガの両方とします。(_CrtSetReportMode()は複数設定が可能です)      */	\
	/* - stderrへ出力する理由は、プログラムを直接実行した場合は、デバッガ出力が見られないからです。 */	\
	/* - デバッガへ出力する理由は、コンソールプログラムをVC++上でデバッグ実行した場合、終了間際に   */	\
	/*   stderrへレポートが出力されても、すぐにコンソールが閉じてしまって、見られないからです。     */	\
	/* * エラーレベル、および、アサートレベルのデバッグメッセージ出力は、メモリリークのレポートには */	\
	/*   関係無いので、ここで出力先を設定する必要はありません。                                     */	\
	_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG);					\
	_CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR);							\
	/* _CrtSetReportMode(_CRT_ERROR, ...); → 変更しません */						\
	/* _CrtSetReportMode(_CRT_ASSERT, ...); → 変更しません */						\
	/* デバッグヒープマネージャのメモリ割り当て動作を設定します。 */					\
	_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF      | /* Turn on debug allocation       */				\
		       _CRTDBG_CHECK_ALWAYS_DF   | /* Check heap every alloc/dealloc */				\
		    /* _CRTDBG_CHECK_CRT_DF      |    Leak check/diff CRT blocks     */				\
		    /* _CRTDBG_DELAY_FREE_MEM_DF |    Don't actually free memory     */				\
		       _CRTDBG_LEAK_CHECK_DF);     /* Leak check at program exit     */				\
} while(0);
/*}}2006/01/04 --------------------------------- メモリリーク追跡 --------------------------------- */
/*{{2006/06/28 Visual C++ 6.0のC言語では、inlineが使えないので、__inlineへの置き換えを定義しました。*/
#define inline __inline
/*}}2006/06/28 Visual C++ 6.0のC言語では、inlineが使えないので、__inlineへの置き換えを定義しました。*/
#endif /*WIN32*/

/* GSM */
#include "gsm/gsm.h"

/* Zlib */
#include "zlib/zlib.h"
#include "zlib/unzip.h"

/* Expat */
#include "expat/expat.h"

/* Lua */
#include "liblua/lua.h"
#include "liblua/lauxlib.h"
#include "liblua/lualib.h"

#endif /*__CLIP_STD_H__*/
