1 | // |
2 | // Foundation.h |
3 | // |
4 | // Library: Foundation |
5 | // Package: Core |
6 | // Module: Foundation |
7 | // |
8 | // Basic definitions for the POCO Foundation library. |
9 | // This file must be the first file included by every other Foundation |
10 | // header file. |
11 | // |
12 | // Copyright (c) 2004-2010, Applied Informatics Software Engineering GmbH. |
13 | // and Contributors. |
14 | // |
15 | // SPDX-License-Identifier: BSL-1.0 |
16 | // |
17 | |
18 | |
19 | #ifndef Foundation_Foundation_INCLUDED |
20 | #define Foundation_Foundation_INCLUDED |
21 | |
22 | |
23 | // |
24 | // Include library configuration |
25 | // |
26 | #include "Poco/Config.h" |
27 | |
28 | |
29 | // |
30 | // Ensure that POCO_DLL is default unless POCO_STATIC is defined |
31 | // |
32 | #if defined(_WIN32) && defined(_DLL) |
33 | #if !defined(POCO_DLL) && !defined(POCO_STATIC) |
34 | #define POCO_DLL |
35 | #endif |
36 | #endif |
37 | |
38 | |
39 | // |
40 | // The following block is the standard way of creating macros which make exporting |
41 | // from a DLL simpler. All files within this DLL are compiled with the Foundation_EXPORTS |
42 | // symbol defined on the command line. this symbol should not be defined on any project |
43 | // that uses this DLL. This way any other project whose source files include this file see |
44 | // Foundation_API functions as being imported from a DLL, whereas this DLL sees symbols |
45 | // defined with this macro as being exported. |
46 | // |
47 | #if (defined(_WIN32) || defined(_WIN32_WCE)) && defined(POCO_DLL) |
48 | #if defined(Foundation_EXPORTS) |
49 | #define Foundation_API __declspec(dllexport) |
50 | #else |
51 | #define Foundation_API __declspec(dllimport) |
52 | #endif |
53 | #endif |
54 | |
55 | |
56 | #if !defined(Foundation_API) |
57 | #if !defined(POCO_NO_GCC_API_ATTRIBUTE) && defined (__GNUC__) && (__GNUC__ >= 4) |
58 | #define Foundation_API __attribute__ ((visibility ("default"))) |
59 | #else |
60 | #define Foundation_API |
61 | #endif |
62 | #endif |
63 | |
64 | |
65 | // |
66 | // Automatically link Foundation library. |
67 | // |
68 | #if defined(_MSC_VER) |
69 | #if defined(POCO_DLL) |
70 | #if defined(_DEBUG) |
71 | #define POCO_LIB_SUFFIX "d.lib" |
72 | #else |
73 | #define POCO_LIB_SUFFIX ".lib" |
74 | #endif |
75 | #elif defined(_DLL) |
76 | #if defined(_DEBUG) |
77 | #define POCO_LIB_SUFFIX "mdd.lib" |
78 | #else |
79 | #define POCO_LIB_SUFFIX "md.lib" |
80 | #endif |
81 | #else |
82 | #if defined(_DEBUG) |
83 | #define POCO_LIB_SUFFIX "mtd.lib" |
84 | #else |
85 | #define POCO_LIB_SUFFIX "mt.lib" |
86 | #endif |
87 | #endif |
88 | |
89 | #if !defined(POCO_NO_AUTOMATIC_LIBS) && !defined(Foundation_EXPORTS) |
90 | #pragma comment(lib, "PocoFoundation" POCO_LIB_SUFFIX) |
91 | #endif |
92 | #endif |
93 | |
94 | |
95 | // |
96 | // Include platform-specific definitions |
97 | // |
98 | #include "Poco/Platform.h" |
99 | #if defined(_WIN32) |
100 | #include "Poco/Platform_WIN32.h" |
101 | #elif defined(__VMS) |
102 | #include "Poco/Platform_VMS.h" |
103 | #elif defined(POCO_VXWORKS) |
104 | #include "Poco/Platform_VX.h" |
105 | #elif defined(POCO_OS_FAMILY_UNIX) |
106 | #include "Poco/Platform_POSIX.h" |
107 | #endif |
108 | |
109 | |
110 | // |
111 | // Include alignment settings early |
112 | // |
113 | #include "Poco/Alignment.h" |
114 | |
115 | |
116 | // |
117 | // POCO_JOIN |
118 | // |
119 | // The following piece of macro magic joins the two |
120 | // arguments together, even when one of the arguments is |
121 | // itself a macro (see 16.3.1 in C++ standard). The key |
122 | // is that macro expansion of macro arguments does not |
123 | // occur in POCO_DO_JOIN2 but does in POCO_DO_JOIN. |
124 | // |
125 | #define POCO_JOIN(X, Y) POCO_DO_JOIN(X, Y) |
126 | #define POCO_DO_JOIN(X, Y) POCO_DO_JOIN2(X, Y) |
127 | #define POCO_DO_JOIN2(X, Y) X##Y |
128 | |
129 | |
130 | // |
131 | // POCO_DEPRECATED |
132 | // |
133 | // A macro expanding to a compiler-specific clause to |
134 | // mark a class or function as deprecated. |
135 | // |
136 | #if defined(POCO_NO_DEPRECATED) |
137 | #define POCO_DEPRECATED |
138 | #elif defined(_GNUC_) |
139 | #define POCO_DEPRECATED __attribute__((deprecated)) |
140 | #elif defined(__clang__) |
141 | #define POCO_DEPRECATED __attribute__((deprecated)) |
142 | #elif defined(_MSC_VER) |
143 | #define POCO_DEPRECATED __declspec(deprecated) |
144 | #else |
145 | #define POCO_DEPRECATED |
146 | #endif |
147 | |
148 | |
149 | // |
150 | // Pull in basic definitions |
151 | // |
152 | #include "Poco/Bugcheck.h" |
153 | #include "Poco/Types.h" |
154 | #include <string> |
155 | |
156 | |
157 | #endif // Foundation_Foundation_INCLUDED |
158 | |