include/pantheios/pantheios.hpp

Go to the documentation of this file.
00001 /* /////////////////////////////////////////////////////////////////////////
00002  * File:        pantheios/pantheios.hpp
00003  *
00004  * Purpose:     Primary header file for Pantheios
00005  *
00006  * Created:     21st June 2005
00007  * Updated:     2nd September 2006
00008  *
00009  * Author:      Matthew Wilson
00010  *
00011  * Home:        http://www.pantheios.org/
00012  *
00013  * Copyright:   Matthew Wilson and Synesis Software Pty Ltd, 1999-2005.
00014  *              Matthew Wilson, (c) 2005-2006.
00015  *
00016  * Redistribution and use in source and binary forms, with or without
00017  * modification, are permitted provided that the following conditions are met:
00018  *
00019  * - Redistributions of source code must retain the above copyright notice, this
00020  *   list of conditions and the following disclaimer.
00021  * - Redistributions in binary form must reproduce the above copyright notice,
00022  *   this list of conditions and the following disclaimer in the documentation
00023  *   and/or other materials provided with the distribution.
00024  * - Neither the names of Matthew Wilson and Synesis Software nor the names of
00025  *   any contributors may be used to endorse or promote products derived from
00026  *   this software without specific prior written permission.
00027  *
00028  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00029  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00030  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00031  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
00032  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00033  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00034  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00035  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00036  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00037  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00038  * POSSIBILITY OF SUCH DAMAGE.
00039  *
00040  * ////////////////////////////////////////////////////////////////////// */
00041 
00042 
00054 #ifndef PANTHEIOS_INCL_PANTHEIOS_HPP_PANTHEIOS
00055 #define PANTHEIOS_INCL_PANTHEIOS_HPP_PANTHEIOS
00056 
00057 /* /////////////////////////////////////////////////////////////////////////
00058  * Version information
00059  */
00060 
00061 #ifndef PANTHEIOS_DOCUMENTATION_SKIP_SECTION
00062 # define PANTHEIOS_VER_PANTHEIOS_HPP_PANTHEIOS_MAJOR      3
00063 # define PANTHEIOS_VER_PANTHEIOS_HPP_PANTHEIOS_MINOR      0
00064 # define PANTHEIOS_VER_PANTHEIOS_HPP_PANTHEIOS_REVISION   1
00065 # define PANTHEIOS_VER_PANTHEIOS_HPP_PANTHEIOS_EDIT       71
00066 #endif /* !PANTHEIOS_DOCUMENTATION_SKIP_SECTION */
00067 
00068 /* /////////////////////////////////////////////////////////////////////////
00069  * Includes
00070  */
00071 
00072 /* Main Panthieos Header */
00073 #include <pantheios/pantheios.h>
00074 
00075 /* Now select various headers to bring in string access shims */
00076 #include <stlsoft/shims/access/string/fwd.h>
00077 
00078 #if !defined(PANTHEIOS_NO_INCLUDE_STLSOFT_SHIM_ACCESS_SHIMS)
00079 # include <stlsoft/shims/access/string.hpp>
00080 # include <stlsoft/shims/access/string/std/time.hpp>
00081 
00082  /* Include shims for ATL, if
00083   *
00084   *  - it's not been proscribed, by PANTHEIOS_NO_INCLUDE_ATLSTL_STRING_ACCESS, and either
00085   *      - it's been explicitly requested, by PANTHEIOS_FORCE_INCLUDE_ATLSTL_STRING_ACCESS, or
00086   *      - _ATL and _ATL_VER are defined
00087   */
00088 #  if !defined(PANTHEIOS_NO_INCLUDE_ATLSTL_STRING_ACCESS) && \
00089       (   defined(PANTHEIOS_FORCE_INCLUDE_ATLSTL_STRING_ACCESS) || \
00090           (   defined(_ATL) && \
00091               defined(_ATL_VER)))
00092 #  include <atlstl/shims/access/string.hpp>
00093 # endif /* ATL */
00094 
00095  /* Include shims for COM, if
00096   *
00097   *  - it's not been proscribed, by PANTHEIOS_NO_INCLUDE_COMSTL_STRING_ACCESS, and either
00098   *      - it's been explicitly requested, by PANTHEIOS_FORCE_INCLUDE_COMSTL_STRING_ACCESS, or
00099   *      - WIN32 is defined
00100   */
00101 #  if !defined(PANTHEIOS_NO_INCLUDE_COMSTL_STRING_ACCESS) && \
00102       (   defined(PANTHEIOS_FORCE_INCLUDE_COMSTL_STRING_ACCESS) || \
00103           defined(WIN32))
00104 #  include <comstl/shims/access/string.hpp>
00105 # endif /* COM */
00106 
00107  /* Include shims for MFC, if
00108   *
00109   *  - it's not been proscribed, by PANTHEIOS_NO_INCLUDE_MFCSTL_STRING_ACCESS, and either
00110   *      - it's been explicitly requested, by PANTHEIOS_FORCE_INCLUDE_MFCSTL_STRING_ACCESS, or
00111   *      - _AFX and _MFC_VER are defined
00112   */
00113 #  if !defined(PANTHEIOS_NO_INCLUDE_MFCSTL_STRING_ACCESS) && \
00114       (   defined(PANTHEIOS_FORCE_INCLUDE_MFCSTL_STRING_ACCESS) || \
00115           defined(_AFXDLL) || \
00116           (   defined(_AFX) && \
00117               defined(_MFC_VER)))
00118 #  include <mfcstl/shims/access/string.hpp>
00119 # endif /* MFC */
00120 
00121  /* Include shims for UNIX, if
00122   *
00123   *  - it's not been proscribed, by PANTHEIOS_NO_INCLUDE_UNIXSTL_STRING_ACCESS, and either
00124   *      - it's been explicitly requested, by PANTHEIOS_FORCE_INCLUDE_UNIXSTL_STRING_ACCESS, or
00125   *      - unix, __unix, __unix__ or UNIX is defined
00126   */
00127 #  if !defined(PANTHEIOS_NO_INCLUDE_WINSTL_STRING_ACCESS) && \
00128       (   defined(PANTHEIOS_FORCE_INCLUDE_WINSTL_STRING_ACCESS) || \
00129           (  defined(unix) || \
00130              defined(__unix) || \
00131              defined(__unix__) || \
00132              defined(UNIX)))
00133 #  include <unixstl/shims/access/string.hpp>
00134 # endif /* UNIX */
00135 
00136  /* Include shims for Windows, if
00137   *
00138   *  - it's not been proscribed, by PANTHEIOS_NO_INCLUDE_WINSTL_STRING_ACCESS, and either
00139   *      - it's been explicitly requested, by PANTHEIOS_FORCE_INCLUDE_WINSTL_STRING_ACCESS, or
00140   *      - WIN32 is defined
00141   */
00142 #  if !defined(PANTHEIOS_NO_INCLUDE_WINSTL_STRING_ACCESS) && \
00143       (   defined(PANTHEIOS_FORCE_INCLUDE_WINSTL_STRING_ACCESS) || \
00144           defined(WIN32))
00145 #  include <winstl/shims/access/string.hpp>
00146 #  include <winstl/shims/access/string/time.hpp>
00147 # endif /* Win */
00148 
00149 #endif /* !PANTHEIOS_NO_INCLUDE_STLSOFT_SHIM_ACCESS_SHIMS */
00150 
00151 /* /////////////////////////////////////////////////////////////////////////
00152  * GCC bug
00153  */
00154 
00155 /* NOTE: We must include <pantheios/inserters.hpp> here, as GCC is a bit thick
00156  * about its two-phase name lookup when resolving shim functions for the
00157  * Pantheios inserter types integer, pointer and real.
00158  */
00159 
00160 #if defined(STLSOFT_COMPILER_IS_GCC) && \
00161     __GNUC__ < 4
00162 # include <pantheios/inserters.hpp>
00163 #endif /* compiler */
00164 
00165 /* /////////////////////////////////////////////////////////////////////////
00166  * Namespace
00167  */
00168 
00169 #if !defined(PANTHEIOS_NO_NAMESPACE)
00170 namespace pantheios
00171 {
00172 #endif /* !PANTHEIOS_NO_NAMESPACE */
00173 
00174 /* /////////////////////////////////////////////////////////////////////////
00175  * C++ API components
00176  */
00177 
00178 
00179 #include "./c/log_dispatch_functions.h"         // log(s), log(s, s) etc etc
00180 
00181 #ifndef PANTHEIOS_DOCUMENTATION_SKIP_SECTION
00182 # include "./cpp/log_dispatch_functions.hpp"    // log(s), log(s, s) etc etc
00183 #endif /* !PANTHEIOS_DOCUMENTATION_SKIP_SECTION */
00184 
00185 #include "./cpp/log_functions.hpp"              // log(s), log(s, s) etc etc
00186 
00187 #ifndef PANTHEIOS_NO_SEVERITY_SPECIFIC_FUNCTIONS
00188 # include "./cpp/log_sev_functions.hpp"         // log_ALERT() overloads, log_ERROR() overloads, etc.
00189 #endif /* !PANTHEIOS_NO_SEVERITY_SPECIFIC_FUNCTIONS */
00190 
00191 /* /////////////////////////////////////////////////////////////////////////
00192  * Namespace
00193  */
00194 
00195 #if !defined(PANTHEIOS_NO_NAMESPACE)
00196 } /* namespace pantheios */
00197 #endif /* !PANTHEIOS_NO_NAMESPACE */
00198 
00199 /* /////////////////////////////////////////////////////////////////////////
00200  * Auto-initialisation
00201  *
00202  * Except when making a DLL, this is automatic, unless PANTHEIOS_NO_AUTO_INIT
00203  * is defined.
00204  *
00205  * To force it for a DLL, define PANTHEIOS_FORCE_AUTO_INIT
00206  */
00207 
00208 #if defined(_USRDLL) || \
00209     defined(_AFXDLL)
00210 # define PANTHEIOS_NO_AUTO_INIT
00211 #endif /* dynamic library */
00212 
00213 #if defined(PANTHEIOS_FORCE_AUTO_INIT) || \
00214     !defined(PANTHEIOS_NO_AUTO_INIT)
00215 # include "./cpp/initialiser.hpp"    // Schwarz counter initialisation
00216 #endif /* PANTHEIOS_FORCE_AUTO_INIT || !PANTHEIOS_NO_AUTO_INIT */
00217 
00218 /* /////////////////////////////////////////////////////////////////////////
00219  * Inclusion
00220  */
00221 
00222 #ifdef STLSOFT_CF_PRAGMA_ONCE_SUPPORT
00223 # pragma once
00224 #endif /* STLSOFT_CF_PRAGMA_ONCE_SUPPORT */
00225 
00226 /* ////////////////////////////////////////////////////////////////////// */
00227 
00228 #endif /* !PANTHEIOS_INCL_PANTHEIOS_HPP_PANTHEIOS */
00229 
00230 /* ////////////////////////////////////////////////////////////////////// */

pantheios Library documentation © Matthew Wilson, 2006 SourceForge.net Logo