/*
 * ANSI definitions for GNU cc.
 * [atw] 19-Sep-89.
 */

/* * Tue Nov 22 02:39:29 JST 2011 Naoyuki Sawa
 * - /usr/PIECE/include にあるファイルよりも、このファイルが優先されるよう、clip.mkにて、インクルードパスを設定してあります。
 * - wchar_tは、stddef.hとstdlib.hで定義されています。(これはC言語の標準ライブラリ仕様どおりであり、問題ありません。)
 *   しかし、EPSONライブラリのstddef.hとstdlib.hは、wchar_tの多重定義をガードするためのシンボルが食い違っており、stddef.hとstdlib.hをインクルードするとwchar_tの多重定義エラーになる問題があります。
 *   具体的には、stddef.hでの多重定義ガード用シンボルは_WCHART、stdlib.hでの多重定義ガード用シンボルは_WCHAR_Tです。
 *   おそらく、stddef.hの_WCHARTが誤りで、両方とも_WCHAR_Tとするのが正しいのだと思います。
 * - これまではclipstd.hの中で_WCHAR_Tを定義し、stdlib.h側のwchar_t定義を抑制していましたが、今後はstddef.hの多重定義ガード用シンボルを直接変更して対応することにしました。
 *   このように変更した理由は、フリーウェアのコンパイル時など、clipstd.hを経由せずにstddef.hとstdlib.hを直接インクルードした場合にも、wchar_tの多重定義エラーが出ないようにしたいからです。
 * - この変更に伴い、clipstd.hで_WCHAR_Tを定義することは不要になったため、clipstd.hの当該箇所をコメントアウトしました。
 * * Wed Nov 18 21:37:53 JST 2015 Naoyuki Sawa
 * - 'extern "C" {'〜'}'で囲みました。.cppを含むWin32プロジェクトからもインクルード出来るようにするためです。
 */

#ifndef STDDEF_H
#define STDDEF_H

#ifdef  __cplusplus
extern "C" {
#endif//__cplusplus

#ifdef __STRICT_ANSI__
	/* "compiled with -ansi" switch */
#	define TYPEOF __typeof__
#else
#	define TYPEOF typeof
#endif

/*
 * ptrdiff_t : "the signed integral type of the result of subtracting two pointers."
 */

#ifdef __STDC__
	typedef TYPEOF((void *)1-(void *)0) ptrdiff_t;
#else
	/* compiled with "-traditional" switch */
	typedef int ptrdiff_t;
#endif

/*
 * size_t : "the unsigned integral type of the result of the sizeof operator."
 */

#ifndef _SIZE_T
#define _SIZE_T
#ifdef __STDC__
	typedef TYPEOF(sizeof(0)) size_t;
#else
	/* compiled with "-traditional" switch */
	typedef unsigned size_t;
#endif
#endif

/*
 * NULL : null pointer constant.
 */
#ifndef NULL
#define NULL         ((void *)0)
#endif

/*
 * offsetof(type, identifier) : "offset in bytes from identifier to the beginning
 *                               of its structure (type)."
 */
#define offsetof(type,id) ((size_t)&(((type *)0)->id))

/*
 * wchar_t : 
 */
//{{2011/11/22:変更
//#ifndef _WCHART
//#define _WCHART
//↓2011/11/22:変更
#ifndef _WCHAR_T
#define _WCHAR_T
//}}2011/11/22:変更
typedef	unsigned short	_Wchart;
typedef	_Wchart	wchar_t;
#endif

#ifdef  __cplusplus
}//extern "C"
#endif//__cplusplus

#endif
