![]() |
QxOrm 1.1.6
C++ Object Relational Mapping library
|
00001 /**************************************************************************** 00002 ** 00003 ** http://www.qxorm.com/ 00004 ** http://sourceforge.net/projects/qxorm/ 00005 ** Original file by Lionel Marty 00006 ** 00007 ** This file is part of the QxOrm library 00008 ** 00009 ** This software is provided 'as-is', without any express or implied 00010 ** warranty. In no event will the authors be held liable for any 00011 ** damages arising from the use of this software. 00012 ** 00013 ** GNU Lesser General Public License Usage 00014 ** This file must be used under the terms of the GNU Lesser 00015 ** General Public License version 2.1 as published by the Free Software 00016 ** Foundation and appearing in the file 'license.lgpl.txt' included in the 00017 ** packaging of this file. Please review the following information to 00018 ** ensure the GNU Lesser General Public License version 2.1 requirements 00019 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 00020 ** 00021 ** If you have questions regarding the use of this file, please contact : 00022 ** contact@qxorm.com 00023 ** 00024 ****************************************************************************/ 00025 00026 #ifndef _QX_MACRO_H_ 00027 #define _QX_MACRO_H_ 00028 00029 #ifdef _MSC_VER 00030 #pragma once 00031 #endif 00032 00040 #include <QxCommon/QxConfig.h> 00041 00042 #ifndef qAssert 00043 #if _QX_USE_ASSERT 00044 #define qAssert Q_ASSERT 00045 #else // _QX_USE_ASSERT 00046 #define qAssert(x) /* Nothing */ 00047 #endif // _QX_USE_ASSERT 00048 #endif // qAssert 00049 00050 #ifndef QX_PRAGMA 00051 #ifdef __GNUC__ 00052 #define QX_PRAGMA(x) _Pragma( #x ) 00053 #endif // __GNUC__ 00054 #ifdef _MSC_VER 00055 #define QX_PRAGMA(x) __pragma( x ) 00056 #endif // _MSC_VER 00057 #ifndef QX_PRAGMA 00058 #define QX_PRAGMA(x) /* Nothing */ 00059 #endif // QX_PRAGMA 00060 #endif // QX_PRAGMA 00061 00062 #ifndef QX_DLL_EXPORT_HELPER 00063 #ifdef Q_OS_WIN 00064 #define QX_DLL_EXPORT_HELPER __declspec(dllexport) 00065 #elif (_QX_USE_GCC_VISIBILITY && (__GNUC__ >= 4)) 00066 #define QX_DLL_EXPORT_HELPER __attribute__ ((visibility("default"))) 00067 #else 00068 #define QX_DLL_EXPORT_HELPER /* Nothing */ 00069 #endif // Q_OS_WIN 00070 #endif // QX_DLL_EXPORT_HELPER 00071 00072 #ifndef QX_DLL_IMPORT_HELPER 00073 #ifdef Q_OS_WIN 00074 #define QX_DLL_IMPORT_HELPER __declspec(dllimport) 00075 #elif (_QX_USE_GCC_VISIBILITY && (__GNUC__ >= 4)) 00076 #define QX_DLL_IMPORT_HELPER __attribute__ ((visibility("default"))) 00077 #else 00078 #define QX_DLL_IMPORT_HELPER /* Nothing */ 00079 #endif // Q_OS_WIN 00080 #endif // QX_DLL_IMPORT_HELPER 00081 00082 #ifdef __GNUC__ 00083 #if _QX_USE_GCC_EXPORT_ALL_SYMBOLS 00084 #undef QX_DLL_EXPORT_HELPER 00085 #undef QX_DLL_IMPORT_HELPER 00086 #define QX_DLL_EXPORT_HELPER /* Nothing */ 00087 #define QX_DLL_IMPORT_HELPER /* Nothing */ 00088 #endif // _QX_USE_GCC_EXPORT_ALL_SYMBOLS 00089 #endif // __GNUC__ 00090 00091 #ifndef QX_DLL_INTERNAL_HELPER 00092 #if (_QX_USE_GCC_VISIBILITY && (__GNUC__ >= 4)) 00093 #define QX_DLL_INTERNAL_HELPER __attribute__ ((visibility("hidden"))) 00094 #else 00095 #define QX_DLL_INTERNAL_HELPER /* Nothing */ 00096 #endif // (_QX_USE_GCC_VISIBILITY && (__GNUC__ >= 4)) 00097 #endif // QX_DLL_INTERNAL_HELPER 00098 00099 #ifndef QX_DLL_EXPORT_TEMPLATE_HELPER 00100 #ifdef _MSC_VER 00101 #define QX_DLL_EXPORT_TEMPLATE_HELPER QX_DLL_EXPORT_HELPER 00102 #else // _MSC_VER 00103 #define QX_DLL_EXPORT_TEMPLATE_HELPER /* Nothing */ 00104 #endif // _MSC_VER 00105 #endif // QX_DLL_EXPORT_TEMPLATE_HELPER 00106 00107 #ifndef QX_DLL_IMPORT_TEMPLATE_HELPER 00108 #ifdef _MSC_VER 00109 #define QX_DLL_IMPORT_TEMPLATE_HELPER QX_DLL_IMPORT_HELPER 00110 #else // _MSC_VER 00111 #define QX_DLL_IMPORT_TEMPLATE_HELPER /* Nothing */ 00112 #endif // _MSC_VER 00113 #endif // QX_DLL_IMPORT_TEMPLATE_HELPER 00114 00115 #ifndef QX_PRAGMA_VISIBILITY_BEGIN 00116 #ifndef Q_OS_WIN 00117 #if (_QX_USE_GCC_VISIBILITY && (__GNUC__ >= 4)) 00118 #define QX_PRAGMA_VISIBILITY_BEGIN QX_PRAGMA(GCC visibility push( default )) 00119 #endif // (_QX_USE_GCC_VISIBILITY && (__GNUC__ >= 4)) 00120 #endif // Q_OS_WIN 00121 #ifndef QX_PRAGMA_VISIBILITY_BEGIN 00122 #define QX_PRAGMA_VISIBILITY_BEGIN /* Nothing */ 00123 #endif // QX_PRAGMA_VISIBILITY_BEGIN 00124 #endif // QX_PRAGMA_VISIBILITY_BEGIN 00125 00126 #ifndef QX_PRAGMA_VISIBILITY_END 00127 #ifndef Q_OS_WIN 00128 #if (_QX_USE_GCC_VISIBILITY && (__GNUC__ >= 4)) 00129 #define QX_PRAGMA_VISIBILITY_END QX_PRAGMA(GCC visibility pop) 00130 #endif // (_QX_USE_GCC_VISIBILITY && (__GNUC__ >= 4)) 00131 #endif // Q_OS_WIN 00132 #ifndef QX_PRAGMA_VISIBILITY_END 00133 #define QX_PRAGMA_VISIBILITY_END /* Nothing */ 00134 #endif // QX_PRAGMA_VISIBILITY_END 00135 #endif // QX_PRAGMA_VISIBILITY_END 00136 00137 #define QX_DLL_EXPORT_TEMPLATE_HPP(CL, T) QX_PRAGMA_VISIBILITY_BEGIN extern template CL QX_DLL_IMPORT_TEMPLATE_HELPER T; QX_PRAGMA_VISIBILITY_END 00138 #define QX_DLL_EXPORT_TEMPLATE_T_P1_HPP(CL, T, P1) QX_PRAGMA_VISIBILITY_BEGIN extern template CL QX_DLL_IMPORT_TEMPLATE_HELPER T< P1 >; QX_PRAGMA_VISIBILITY_END 00139 #define QX_DLL_EXPORT_TEMPLATE_T_U_P1_HPP(CL, T, U, P1) QX_PRAGMA_VISIBILITY_BEGIN extern template CL QX_DLL_IMPORT_TEMPLATE_HELPER T< U< P1 > >; QX_PRAGMA_VISIBILITY_END 00140 #define QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(CL, T, P1, P2) QX_PRAGMA_VISIBILITY_BEGIN extern template CL QX_DLL_IMPORT_TEMPLATE_HELPER T< P1, P2 >; QX_PRAGMA_VISIBILITY_END 00141 #define QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(CL, T, U, P1, P2) QX_PRAGMA_VISIBILITY_BEGIN extern template CL QX_DLL_IMPORT_TEMPLATE_HELPER T< U< P1, P2 > >; QX_PRAGMA_VISIBILITY_END 00142 00143 #define QX_DLL_EXPORT_TEMPLATE_CPP(CL, T) QX_PRAGMA_VISIBILITY_BEGIN template CL QX_DLL_EXPORT_TEMPLATE_HELPER T; QX_PRAGMA_VISIBILITY_END 00144 #define QX_DLL_EXPORT_TEMPLATE_T_P1_CPP(CL, T, P1) QX_PRAGMA_VISIBILITY_BEGIN template CL QX_DLL_EXPORT_TEMPLATE_HELPER T< P1 >; QX_PRAGMA_VISIBILITY_END 00145 #define QX_DLL_EXPORT_TEMPLATE_T_U_P1_CPP(CL, T, U, P1) QX_PRAGMA_VISIBILITY_BEGIN template CL QX_DLL_EXPORT_TEMPLATE_HELPER T< U< P1 > >; QX_PRAGMA_VISIBILITY_END 00146 #define QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(CL, T, P1, P2) QX_PRAGMA_VISIBILITY_BEGIN template CL QX_DLL_EXPORT_TEMPLATE_HELPER T< P1, P2 >; QX_PRAGMA_VISIBILITY_END 00147 #define QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(CL, T, U, P1, P2) QX_PRAGMA_VISIBILITY_BEGIN template CL QX_DLL_EXPORT_TEMPLATE_HELPER T< U< P1, P2 > >; QX_PRAGMA_VISIBILITY_END 00148 00149 #define QX_TEMPLATE_T(T) T<> 00150 #define QX_TEMPLATE_T_P1(T, P1) T< P1 > 00151 #define QX_TEMPLATE_T_P1_P2(T, P1, P2) T< P1, P2 > 00152 #define QX_TEMPLATE_T_P1_P2_P3(T, P1, P2, P3) T< P1, P2, P3 > 00153 #define QX_TEMPLATE_T_U_P1(T, U, P1) T< U< P1 > > 00154 #define QX_TEMPLATE_T_U_P1_P2(T, U, P1, P2) T< U< P1, P2 > > 00155 #define QX_TEMPLATE_T_U_P1_P2_P3(T, U, P1, P2, P3) T< U< P1, P2, P3 > > 00156 00157 #ifndef QX_DLL_EXPORT 00158 #ifdef _QX_BUILDING_QX_ORM 00159 #define QX_DLL_EXPORT QX_DLL_EXPORT_HELPER 00160 #else // _QX_BUILDING_QX_ORM 00161 #define QX_DLL_EXPORT QX_DLL_IMPORT_HELPER 00162 #endif // _QX_BUILDING_QX_ORM 00163 #endif // QX_DLL_EXPORT 00164 00165 #ifndef QX_DLL_EXPORT_QX_SINGLETON_HPP 00166 #ifdef _QX_BUILDING_QX_ORM 00167 #define QX_DLL_EXPORT_QX_SINGLETON_HPP(x) /* Nothing */ 00168 #else // _QX_BUILDING_QX_ORM 00169 #define QX_DLL_EXPORT_QX_SINGLETON_HPP(x) QX_DLL_EXPORT_TEMPLATE_HPP(class, qx::QxSingleton< x >) 00170 #endif // _QX_BUILDING_QX_ORM 00171 #endif // QX_DLL_EXPORT_QX_SINGLETON_HPP 00172 00173 #ifndef QX_DLL_EXPORT_QX_SINGLETON_CPP 00174 #ifdef _QX_BUILDING_QX_ORM 00175 #define QX_DLL_EXPORT_QX_SINGLETON_CPP(x) QX_DLL_EXPORT_TEMPLATE_CPP(class, qx::QxSingleton< x >) 00176 #else // _QX_BUILDING_QX_ORM 00177 #define QX_DLL_EXPORT_QX_SINGLETON_CPP(x) /* Nothing */ 00178 #endif // _QX_BUILDING_QX_ORM 00179 #endif // QX_DLL_EXPORT_QX_SINGLETON_CPP 00180 00181 #ifndef QX_DLL_EXPORT_INLINE_FCT 00182 #ifdef _MSC_VER 00183 #define QX_DLL_EXPORT_INLINE_FCT QX_DLL_EXPORT 00184 #else // _MSC_VER 00185 #define QX_DLL_EXPORT_INLINE_FCT /* Nothing */ 00186 #endif // _MSC_VER 00187 #endif // QX_DLL_EXPORT_INLINE_FCT 00188 00189 #ifdef __GNUC__ 00190 #define QX_GCC_WORKAROUND_TEMPLATE_SPEC_INLINE inline 00191 #else 00192 #define QX_GCC_WORKAROUND_TEMPLATE_SPEC_INLINE /* Nothing */ 00193 #endif // __GNUC__ 00194 00195 #ifdef _MSC_VER 00196 #define QX_STRNCPY strncpy_s 00197 #define QX_VSPRINTF vsprintf_s 00198 #else // _MSC_VER 00199 #define QX_STRNCPY strncpy 00200 #define QX_VSPRINTF vsprintf 00201 #endif // _MSC_VER 00202 00203 #endif // _QX_MACRO_H_