/* =============================================================================
 *  scpp_os.hpp
 *  Copyright (c)  2003 - 2011  Nomura Kei
 *  LICENSE :
 *  LGPL (GNU Lesser General General Public License - Version 3,29 June 2007)
 *  http://www.gnu.org/copyleft/lesser.html
 * =============================================================================
 *
 * OS の判定を行う下記マクロ定数を定義している.
 *
 * SCPP_IS_WINDOWS 1/0 (Windows/Windows ではない)
 * SCPP_IS_LINUX   1/0 (Linux  /Linux   ではない)
 * SCPP_IS_UNIX    1/0 (UNIX系 /UNIX系  ではない)
 * SCPP_IS_BSD     1/0 (BSD系  /BSD系   ではない)
 * SCPP_IS_MAC     1/0 (Mac    /Mac     ではない)
 * SCPP_IS_VXWORKS 1/0 (VxWorks/VxWorks ではない)
 *
 * また, 各OSにおいて必須のヘッダファイルを include します.
 */
#ifndef SCPP_OS_HPP
#define SCPP_OS_HPP


////////////////////////////////////////////////////////////////////////////////
//
// Windows 判定
//
// Windows の場合, windows.h と winsock2.h を include しておく
// 
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) || defined(__WIN32__) \
 || defined(WIN64) || defined(_WIN64) || defined(__WIN64) || defined(__WIN64__)
#define SCPP_IS_WINDOWS (1)
// DMC にて winsock2.h を使用する場合, _WINSOCKAPI_ が必要
// 詳細は下記 URL 参照
// http://www.digitalmars.com/d/archives/c++/idde/326.html
#ifdef __DMC__
#define _WINSOCKAPI_
#include <sys/types.h>
#endif
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0501
#endif
#include <windows.h>
#include <winsock2.h>

#else 
#define SCPP_IS_WINDOWS (0)

#endif


////////////////////////////////////////////////////////////////////////////////
//
// Linux 判定
//
#if defined(linux) || defined(__linux) || defined(__linux__)
#define SCPP_IS_LINUX (1)

#else
#define SCPP_IS_LINUX (0)

#endif


////////////////////////////////////////////////////////////////////////////////
//
// UNIX 判定
//
#if defined (unix) || defined(__unix) || defined(__unix__)
#define SCPP_IS_UNIX (1)

#else
#define SCPP_IS_UNIX (0)

#endif


////////////////////////////////////////////////////////////////////////////////
//
// BSD 判定
//
#if defined(BSD) || defined(_BSD) || defined(__BSD)
#define SCPP_IS_BSD (1)

#else
#define SCPP_IS_BSD (0)

#endif


////////////////////////////////////////////////////////////////////////////////
//
// Mac 判定
//
#if defined(mac) || defined(MAC) || defined(_MAC)
#define SCPP_IS_MAC (1)

#else
#define SCPP_IS_MAC (0)

#endif


////////////////////////////////////////////////////////////////////////////////
//
// VxWorks 判定
//
#if defined(VXWORKS) || defined(VxWorkd)
#define SCPP_IS_VXWORKS (1)

#else
#define SCPP_IS_VXWORKS (0)

#endif


#endif	// SCPP_OS_HPP

