blob: a781ed0652e22205244df5f6bec5bef6e62fd051 [file] [log] [blame]
// Copyright (C) 1999-2005 Open Source Telecom Corporation.
// Copyright (C) 2006-2010 David Sugar, Tycho Softworks.
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
// As a special exception to the GNU General Public License, permission is
// granted for additional uses of the text contained in its release
// of Common C++.
//
// The exception is that, if you link the Common C++ library with other
// files to produce an executable, this does not by itself cause the
// resulting executable to be covered by the GNU General Public License.
// Your use of that executable is in no way restricted on account of
// linking the Common C++ library code into it.
//
// This exception does not however invalidate any other reasons why
// the executable file might be covered by the GNU General Public License.
//
// This exception applies only to the code released under the
// name Common C++. If you copy code from other releases into a copy of
// Common C++, as the General Public License permits, the exception does
// not apply to the code that you add in this way. To avoid misleading
// anyone as to the status of such modified files, you must delete
// this exception notice from them.
//
// If you write modifications of your own for Common C++, it is your choice
// whether to permit this exception to apply to your modifications.
// If you do not wish that, delete this exception notice.
#ifndef CCXX_CONFIG_H_
#define CCXX_CONFIG_H_
#define CCXX_PACKED
#define CCXX_PACKING
// Config option: uncomment this line if you want to use static linkage!
//#define CCXX_STATIC
// define automatically WIN32 for windows application compiled with Borland
#ifndef WIN32
# if defined(__BORLANDC__) && defined(_Windows)
# define WIN32
# elif defined(_MSC_VER) && defined(_WIN32)
# define WIN32
# endif
#endif
#pragma warning(disable: 4996)
#pragma warning(disable: 4355)
// check multithreading
#if defined(__BORLANDC__) && !defined(__MT__)
# error Please enable multithreading
#endif
#if defined(_MSC_VER) && !defined(_MT)
# error Please enable multithreading (Project -> Settings -> C/C++ -> Code Generation -> Use Runtime Library)
#endif
// check DLL compiling
#ifdef _MSC_VER
#ifndef CCXX_STATIC
# ifndef _DLL
# error Please enable DLL linking (Project -> Settings -> C/C++ -> Code Generation -> Use Runtime Library)
# endif
#endif
#endif
#ifndef CCXX_WIN32
#define CCXX_WIN32
/**
* @todo Why may be need using kernel object Mutex as a background for ost::Mutex?
*/
// Select the way, that the ost::Mutex based on.
//#define MUTEX_UNDERGROUND_WIN32_MUTEX
#define MUTEX_UNDERGROUND_WIN32_CRITICALSECTION
/*
http://msdn.microsoft.com/library/en-us/winprog/winprog/using_the_windows_headers.asp
Minimum system required Macros to define
Windows "Longhorn" _WIN32_WINNT >= 0x0600
WINVER >= 0x0600
Windows Server 2003 _WIN32_WINNT> = 0x0502
WINVER >= 0x0502
Windows XP _WIN32_WINNT >= 0x0501
WINVER >= 0x0501
Windows 2000 _WIN32_WINNT >= 0x0500
WINVER >= 0x0500
Windows NT 4.0 _WIN32_WINNT >= 0x0400
WINVER >= 0x0400
Windows Me _WIN32_WINDOWS >= 0x0500
WINVER >= 0x0500
Windows 98 _WIN32_WINDOWS >= 0x0410
WINVER >= 0x0410
Windows 95 _WIN32_WINDOWS >= 0x0400
WINVER >= 0x0400
Faster Builds with Smaller Header Files
WIN32_LEAN_AND_MEAN
*/
// Require for compiling with critical sections.
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0400
#endif
// Make sure we're consistent with _WIN32_WINNT
#ifndef WINVER
#define WINVER _WIN32_WINNT
#endif
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#define _CCXX_WIN32_LEAN_AND_MEAN_
#endif
#include <winsock2.h>
#include <ws2tcpip.h>
#ifdef _CCXX_WIN32_LEAN_AND_MEAN_
#undef WIN32_LEAN_AND_MEAN
#undef _CCXX_WIN32_LEAN_AND_MEAN_
#endif
#if _WIN32_WINNT >= 0x0501
#define CCXX_IPV6
#endif
#endif /* #ifndef CCXX_WIN32 */
#ifdef WIN32
#ifndef ssize_t
#define ssize_t int
#endif
#endif
#undef __DLLRTL
#undef CCXX_EMPTY
#define CCXX_EMPTY
#if defined(__MINGW32__) && !defined(__MSVCRT__)
#define CCXX_NOMSVCRT
#endif
#if defined(__MINGW32__) || defined(__CYGWIN32__)
#define HAVE_OLD_IOSTREAM
#define HAVE_LIBXML
#undef __LOCAL
#undef __EXPORT
#undef __stdcall
#define __stdcall
#define __EXPORT
#define __LOCAL
typedef char int8;
typedef short int16;
typedef long int32;
typedef long long int64;
typedef unsigned char uint8;
typedef unsigned short uint16;
typedef unsigned long uint32;
typedef unsigned long long uint64;
#ifdef __MINGW32__
# define HAVE_MODULES 1
# define alloca(x) __builtin_alloca(x)
# define THROW(x) throw x
# define THROWS(x) throw(x)
# define NEW_THROWS throw()
# define THROWS_EMPTY throw()
typedef unsigned int uint;
# define snprintf _snprintf
# ifndef ETC_PREFIX
# define ETC_PREFIX "c:/"
# endif
#else /* #ifndef __MINGW32__ */
typedef DWORD size_t;
#endif /* #ifndef __MINGW32__ */
#else /* !defined(__MINGW32__) && !defined(__CYGWIN32__) */
#ifdef CCXX_STATIC
#define __DLLRTL
#define __EXPORT
#define __LOCAL
#define __EXPORT_TEMPLATE(x)
#else
#define __DLLRTL __declspec(dllexport)
#define __EXPORT __declspec(dllimport)
#define __EXPORT_TEMPLATE(x) template class __EXPORT x;
#define __LOCAL
#endif
#if !defined(_MSC_VER) || _MSC_VER >= 1300
#define HAVE_GETADDRINFO
#endif
#define HAVE_MEMMOVE
#define HAVE_SNPRINTF
#define snprintf _snprintf
#if defined(_MSC_VER) && _MSC_VER < 1500
#define vsnprintf _vsnprintf
#endif
typedef __int8 int8;
typedef __int16 int16;
typedef __int32 int32;
typedef __int64 int64;
typedef unsigned int uint;
typedef unsigned __int8 uint8;
typedef unsigned __int16 uint16;
typedef unsigned __int32 uint32;
typedef unsigned __int64 uint64;
#define SECS_BETWEEN_EPOCHS ((__int64)(11644473600))
#define SECS_TO_100NS ((__int64)(10000000))
#define THROW(x) throw x
#define THROWS(x) throw(x)
#define USING(x)
#define NEW_THROWS throw()
#define THROWS_EMPTY throw()
#define HAVE_MODULES 1
#undef HAVE_PTHREAD_RWLOCK
#undef PTHREAD_MUTEXTYPE_RECURSIVE
// define endian macros
#define __BYTE_ORDER __LITTLE_ENDIAN
#define __LITTLE_ENDIAN 1234
#define __BIG_ENDIAN 4321
#define __BYTE_ALIGNMENT 1
#pragma warning (disable:4786)
#if _MSC_VER >= 1300
#pragma warning (disable:4290)
#endif
#ifndef ETC_PREFIX
#define ETC_PREFIX "c:/"
#endif
#endif /* !defined(__MINGW32__) && !defined(__CYGWIN32__) */
// have exceptions
#ifdef CCXX_NO_EXCEPTIONS
#undef CCXX_EXCEPTIONS
#else
#define CCXX_EXCEPTIONS 1
#endif
// use namespace
#define CCXX_NAMESPACES 1
#define COMMON_DEADLOCK_DEBUG
#define COMMON_TPPORT_TYPE_DEFINED
#define CCXX_HAVE_NEW_INIT
#define HAVE_SSTREAM
#define HAVE_EXCEPTION
#ifdef __BORLANDC__
#define HAVE_LOCALTIME_R
#endif
#endif /* #ifndef CCXX_CONFIG_H_ */
/** EMACS **
* Local variables:
* mode: c++
* c-basic-offset: 4
* End:
*/