/**
 * @file nstdc_os.h
 * @brief  OS判定マクロを扱うヘッダーファイル
 * @author    Nomura Kei
 * @copyright 2003 - 2017  Nomura Kei
 *
 * 本ヘッダーファイルでは, OS 判定用のマクロを定義しています.
 * また, それぞれのOSにて(ほぼ)必須のヘッダーファイルを include します.
 */
#ifndef NSTDC_OS_H
#define NSTDC_OS_H

#include <nstdc.h>


/** OSが Windows か否かを示します.	*/
#if defined(_WIN32) || defined(__WIN32__) \
 || defined(_WIN64) || defined(__WIN64__)
#	define nstdc_is_windows()		(1)
/* DMC にて winsock2.h を使用する場合 _WINSOCKAPI_ が必要
 * @see http://www.digitalmars.com/d/archives/c++/idde/326.html
 */
#	ifdef __DMC__
#		define _WINSOCKAPI_
#		include <sys/types.h>
#	endif
#	include <winsock2.h>
#	include <windows.h>
#else
#	define nstdc_is_windows()		(0)
#endif


/** OSが Linux か否かを示します.	*/
#if defined(linux) || defined(__linux) || defined(__linux__)
#	define nstdc_is_linux()		(1)
#else
#	define nstdc_is_linux()		(0)
#endif


/** OSが UNIX互換 か否かを示します.	*/
#if defined(unix) || defined(__unix) || defined(__unix__)
#	define nstdc_is_unix()		(1)
#else
#	define nstdc_is_unix()		(0)
#endif


/** OSが BSD系 か否かを示します.	*/
#if defined(BSD) || defined(_BSD) || defined(__BSD)
#	define nstdc_is_bsd()		(1)
#else
#	define nstdc_is_bsd()		(0)
#endif


/** OSが Mac か否かを示します.	*/
#if defined(mac) || defined(MAC) || defined(_MAC)
#	define nstdc_is_mac()		(1)
#else
#	define nstdc_is_mac()		(0)
#endif


/** OSが VxWorks か否かを示します.	*/
#if defined(VXWORKS) || defined(VxWorks)
#	define nstdc_is_vxworks()	(1)
#else
#	define nstdc_is_vxworks()	(0)
#endif



#endif	/* NSTDC_OS_H	*/

