summaryrefslogtreecommitdiff
path: root/cpp/include/IceUtil/Config.h
blob: 6f14abcf7ff544930657ac9e151cf7c3bcf79d3f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
// **********************************************************************
//
// Copyright (c) 2001
// MutableRealms, Inc.
// Huntsville, AL, USA
//
// All Rights Reserved
//
// **********************************************************************

#ifndef ICE_UTIL_CONFIG_H
#define ICE_UTIL_CONFIG_H

//
// For STLport. If we compile in debug mode, we want to use the debug
// STLport library. This is done by setting _STLP_DEBUG before any
// STLport header files are included.
//
#   if !defined(NDEBUG) && !defined(_STLP_DEBUG)
#       define _STLP_DEBUG
#   endif

//
// For STLport. If we compile in debug mode, we want to use the debug
// memory allocation, so that purify doesn't report bogus memory
// leaks. This is done by setting _STLP_USE_MALLOC before any STLport
// header files are included.
//
#   if !defined(NDEBUG) && !defined(_STLP_USE_MALLOC)
#       define _STLP_USE_MALLOC
#   endif

#if defined(_WIN32)

// Necessary for TryEnterCriticalSection.
#   define _WIN32_WINNT 0x0400

#   if !defined(_UNICODE)
#       error "Only unicode libraries can be used with Ice!"
#   endif

#   if !defined(_DLL) || !defined(_MT)
#       error "Only multi-threaded DLL libraries can be used with Ice!"
#   endif

#   ifdef ICE_UTIL_API_EXPORTS
#       define ICE_UTIL_API __declspec(dllexport)
#   else
#       define ICE_UTIL_API __declspec(dllimport)
#   endif

#   include <windows.h>

// '...' : forcing value to bool 'true' or 'false' (performance warning)
#   pragma warning( disable : 4800 )
// ... identifier was truncated to '255' characters in the debug information
#   pragma warning( disable : 4786 )
// 'this' : used in base member initializer list
#   pragma warning( disable : 4355 )
// class ... needs to have dll-interface to be used by clients of class ...
#   pragma warning( disable : 4251 )
// ... : inherits ... via dominance
#   pragma warning( disable : 4250 )
// non dll-interface class ... used as base for dll-interface class ...
#   pragma warning( disable : 4275 )
//  ...: decorated name length exceeded, name was truncated
#   pragma warning( disable : 4503 )  

#   define SIZEOF_WCHAR_T 2

#elif defined(__linux__) && defined(i386)

#   define ICE_UTIL_API /**/
#   define HAVE_READLINE
#   define SIZEOF_WCHAR_T 4

#else

#   error "unsupported operating system or platform"

#endif

//
// Some include files we need almost everywhere
//
#include <cassert>
#include <iostream>
#include <sstream>

#ifndef _WIN32
#   ifndef _REENTRANT
#       define _REENTRANT 1
#   endif
#   include <pthread.h>
#   include <errno.h>
#endif

//
// By deriving from this class, other classes are made non-copyable
//
namespace IceUtil
{

//
// TODO: Constructor and destructor should not be inlined, as they are
// not performance critical.
//
// TODO: Naming conventions?
//
class noncopyable
{
protected:

    noncopyable() { }
    ~noncopyable() { } // May not be virtual! Classes without virtual operations also derive from noncopyable.

private:

    noncopyable(const noncopyable&);
    const noncopyable& operator=(const noncopyable&);
};
//
//
// Some definitions for 64-bit integers
//
#if defined(_WIN32)
    typedef __int64 Int64;
    const Int64 Int64Min = -9223372036854775808i64;
    const Int64 Int64Max =  9223372036854775807i64;
#elif defined(__linux__) && defined(i386)
    typedef long long Int64;
    const Int64 Int64Min = LONGLONG_MIN;
    const Int64 Int64Max = LONGLONG_MAX;
#endif

}

//
// The Ice version
//
#define ICE_STRING_VERSION "0.0.1"
#define ICE_INT_VERSION 0x00000001

#endif