00001 // 00002 // Foundation.h 00003 // 00004 // $Id: //poco/1.3/Foundation/include/Poco/Foundation.h#3 $ 00005 // 00006 // Library: Foundation 00007 // Package: Core 00008 // Module: Foundation 00009 // 00010 // Basic definitions for the POCO Foundation library. 00011 // This file must be the first file included by every other Foundation 00012 // header file. 00013 // 00014 // Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. 00015 // and Contributors. 00016 // 00017 // Permission is hereby granted, free of charge, to any person or organization 00018 // obtaining a copy of the software and accompanying documentation covered by 00019 // this license (the "Software") to use, reproduce, display, distribute, 00020 // execute, and transmit the Software, and to prepare derivative works of the 00021 // Software, and to permit third-parties to whom the Software is furnished to 00022 // do so, all subject to the following: 00023 // 00024 // The copyright notices in the Software and this entire statement, including 00025 // the above license grant, this restriction and the following disclaimer, 00026 // must be included in all copies of the Software, in whole or in part, and 00027 // all derivative works of the Software, unless such copies or derivative 00028 // works are solely in the form of machine-executable object code generated by 00029 // a source language processor. 00030 // 00031 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 00032 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 00033 // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 00034 // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 00035 // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 00036 // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 00037 // DEALINGS IN THE SOFTWARE. 00038 // 00039 00040 00041 #ifndef Foundation_Foundation_INCLUDED 00042 #define Foundation_Foundation_INCLUDED 00043 00044 00045 // 00046 // Include library configuration 00047 // 00048 #include "Poco/Config.h" 00049 00050 00051 // 00052 // Ensure that POCO_DLL is default unless POCO_STATIC is defined 00053 // 00054 #if defined(_WIN32) && defined(_DLL) 00055 #if !defined(POCO_DLL) && !defined(POCO_STATIC) 00056 #define POCO_DLL 00057 #endif 00058 #endif 00059 00060 00061 // 00062 // The following block is the standard way of creating macros which make exporting 00063 // from a DLL simpler. All files within this DLL are compiled with the Foundation_EXPORTS 00064 // symbol defined on the command line. this symbol should not be defined on any project 00065 // that uses this DLL. This way any other project whose source files include this file see 00066 // Foundation_API functions as being imported from a DLL, wheras this DLL sees symbols 00067 // defined with this macro as being exported. 00068 // 00069 #if defined(_WIN32) && defined(POCO_DLL) 00070 #if defined(Foundation_EXPORTS) 00071 #define Foundation_API __declspec(dllexport) 00072 #else 00073 #define Foundation_API __declspec(dllimport) 00074 #endif 00075 #endif 00076 00077 00078 #if !defined(Foundation_API) 00079 #define Foundation_API 00080 #endif 00081 00082 00083 // 00084 // Automatically link Foundation library. 00085 // 00086 #if defined(_MSC_VER) 00087 #if !defined(POCO_NO_AUTOMATIC_LIBS) && !defined(Foundation_EXPORTS) 00088 #if defined(POCO_DLL) 00089 #if defined(_DEBUG) 00090 #pragma comment(lib, "PocoFoundationd.lib") 00091 #else 00092 #pragma comment(lib, "PocoFoundation.lib") 00093 #endif 00094 #else 00095 #if defined(_DEBUG) 00096 #pragma comment(lib, "PocoFoundationmtd.lib") 00097 #else 00098 #pragma comment(lib, "PocoFoundationmt.lib") 00099 #endif 00100 #endif 00101 #endif 00102 #endif 00103 00104 00105 // 00106 // Include platform-specific definitions 00107 // 00108 #include "Poco/Platform.h" 00109 #if defined(_WIN32) 00110 #include "Poco/Platform_WIN32.h" 00111 #elif defined(__VMS) 00112 #include "Poco/Platform_VMS.h" 00113 #elif defined(POCO_OS_FAMILY_UNIX) 00114 #include "Poco/Platform_POSIX.h" 00115 #endif 00116 00117 00118 // 00119 // POCO_JOIN 00120 // 00121 // The following piece of macro magic joins the two 00122 // arguments together, even when one of the arguments is 00123 // itself a macro (see 16.3.1 in C++ standard). The key 00124 // is that macro expansion of macro arguments does not 00125 // occur in POCO_DO_JOIN2 but does in POCO_DO_JOIN. 00126 // 00127 #define POCO_JOIN(X, Y) POCO_DO_JOIN(X, Y) 00128 #define POCO_DO_JOIN(X, Y) POCO_DO_JOIN2(X, Y) 00129 #define POCO_DO_JOIN2(X, Y) X##Y 00130 00131 00132 // 00133 // Pull in basic definitions 00134 // 00135 #include "Poco/Bugcheck.h" 00136 #include "Poco/Types.h" 00137 #include <string> 00138 00139 00140 #endif // Foundation_Foundation_INCLUDED