debug.hpp
Go to the documentation of this file.
00001 /*
00002 
00003   This file is part of OpenFLUID software
00004   Copyright(c) 2007, INRA - Montpellier SupAgro
00005 
00006 
00007  == GNU General Public License Usage ==
00008 
00009   OpenFLUID is free software: you can redistribute it and/or modify
00010   it under the terms of the GNU General Public License as published by
00011   the Free Software Foundation, either version 3 of the License, or
00012   (at your option) any later version.
00013 
00014   OpenFLUID is distributed in the hope that it will be useful,
00015   but WITHOUT ANY WARRANTY; without even the implied warranty of
00016   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00017   GNU General Public License for more details.
00018 
00019   You should have received a copy of the GNU General Public License
00020   along with OpenFLUID. If not, see <http://www.gnu.org/licenses/>.
00021 
00022 
00023  == Other Usage ==
00024 
00025   Other Usage means a use of OpenFLUID that is inconsistent with the GPL
00026   license, and requires a written agreement between You and INRA.
00027   Licensees for Other Usage of OpenFLUID may use this file in accordance
00028   with the terms contained in the written agreement between You and INRA.
00029   
00030 */
00031 
00032 
00033 /**
00034   \file debug.hpp
00035   \brief Header of ...
00036 
00037   \author Jean-Christophe FABRE <fabrejc@supagro.inra.fr>
00038  */
00039 
00040 
00041 #ifndef __DEBUG_HPP__
00042 #define __DEBUG_HPP__
00043 
00044 // =====================================================================
00045 // =====================================================================
00046 
00047 
00048 #ifndef NDEBUG
00049 
00050 #include <iostream>
00051 #include <openfluid/config.hpp>
00052 
00053 #define OFDBG_ENABLED 1
00054 #define OFDBG_OUTSTREAM std::cout
00055 
00056 #else
00057 
00058 #define OFDBG_ENABLED 0
00059 #define OFDBG_OUTSTREAM
00060 
00061 #endif
00062 
00063 
00064 // =====================================================================
00065 // =====================================================================
00066 
00067 
00068 #ifndef NDEBUG
00069 
00070 #define OFDBG_LOCATE { OFDBG_OUTSTREAM << openfluid::config::DEBUG_PREFIX << " File " << __FILE__ << ", Line " << __LINE__ << std::endl; }
00071 
00072 #else
00073 
00074 #define OFDBG_LOCATE ;
00075 
00076 #endif
00077 
00078 
00079 // =====================================================================
00080 // =====================================================================
00081 
00082 
00083 #ifndef NDEBUG
00084 
00085 #define OFDBG_BANNER \
00086   { \
00087     OFDBG_OUTSTREAM << openfluid::config::DEBUG_PREFIX << std::endl; \
00088     OFDBG_OUTSTREAM << openfluid::config::DEBUG_PREFIX << "   OpenFLUID debugging mode is enabled" << std::endl; \
00089     OFDBG_OUTSTREAM << openfluid::config::DEBUG_PREFIX << std::endl; \
00090   }
00091 
00092 #else
00093 
00094 #define OFDBG_BANNER
00095 
00096 #endif
00097 
00098 
00099 // =====================================================================
00100 // =====================================================================
00101 
00102 
00103 #ifndef NDEBUG
00104 
00105 #define OFDBG_MESSAGE(stream) \
00106   { OFDBG_OUTSTREAM << openfluid::config::DEBUG_PREFIX << " " << stream << std::endl; }
00107 
00108 #else
00109 
00110 #define OFDBG_MESSAGE(stream)
00111 
00112 #endif
00113 
00114 
00115 // =====================================================================
00116 // =====================================================================
00117 
00118 
00119 #ifndef NDEBUG
00120 
00121 #define OFDBG_UNIT(unitptr) \
00122   { OFDBG_OUTSTREAM << openfluid::config::DEBUG_PREFIX << " Unit class " << (unitptr)->getClass() << ", ID " << (unitptr)->getID() << std::endl; }
00123 
00124 #else
00125 
00126 #define OFDBG_UNIT(unitptr)
00127 
00128 #endif
00129 
00130 
00131 // =====================================================================
00132 // =====================================================================
00133 
00134 
00135 #ifndef NDEBUG
00136 
00137 #define OFDBG_UNIT_EXTENDED(unitptr) \
00138   { \
00139     OFDBG_OUTSTREAM << openfluid::config::DEBUG_PREFIX << " Unit class " << (unitptr)->getClass() << ", ID " << (unitptr)->getID() << std::endl; \
00140     std::vector<openfluid::core::AttributeName_t> _M_DBG_AttrsNames = (unitptr)->getAttributes()->getAttributesNames(); \
00141     OFDBG_OUTSTREAM << openfluid::config::DEBUG_PREFIX << "   - Attributes: "; \
00142     for (unsigned int i=0; i<_M_DBG_AttrsNames.size();i++) OFDBG_OUTSTREAM << _M_DBG_AttrsNames[i] << " , "; \
00143     OFDBG_OUTSTREAM << std::endl; \
00144     std::vector<openfluid::core::VariableName_t> _M_DBG_VarNames = (unitptr)->getVariables()->getVariablesNames(); \
00145     OFDBG_OUTSTREAM << openfluid::config::DEBUG_PREFIX << "   - Variables: "; \
00146     for (unsigned int i=0; i<_M_DBG_VarNames.size();i++) OFDBG_OUTSTREAM << _M_DBG_VarNames[i] << " , "; \
00147     OFDBG_OUTSTREAM << std::endl; \
00148   }
00149 
00150 #else
00151 
00152 #define OFDBG_UNIT_EXTENDED(unitptr)
00153 
00154 #endif
00155 
00156 
00157 // =====================================================================
00158 // =====================================================================
00159 
00160 
00161 #ifndef NDEBUG
00162 
00163 #define OFDBG_EVENT(eventptr) \
00164   { \
00165     OFDBG_OUTSTREAM << openfluid::config::DEBUG_PREFIX << " Event at " << (eventptr)->getDateTime().getAsISOString() << std::endl; \
00166     openfluid::core::Event::EventInfosMap_t::iterator _M_DBG_EvInfoiter; \
00167     for (_M_DBG_EvInfoiter = (eventptr)->getInfos().begin();_M_DBG_EvInfoiter != (eventptr)->getInfos().end();++_M_DBG_EvInfoiter) \
00168     { \
00169       OFDBG_OUTSTREAM << openfluid::config::DEBUG_PREFIX << "   - " << (*_M_DBG_EvInfoiter).first << " = " << (*_M_DBG_EvInfoiter).second.get() << std::endl; \
00170     } \
00171   }
00172 
00173 #else
00174 
00175 #define OFDBG_EVENT(eventptr)
00176 
00177 #endif
00178 
00179 
00180 // =====================================================================
00181 // =====================================================================
00182 
00183 
00184 #ifndef NDEBUG
00185 
00186 #define OFDBG_EVENTCOLLECTION(eventcoll) \
00187   { \
00188     OFDBG_OUTSTREAM << openfluid::config::DEBUG_PREFIX << " Event collection size : " << eventcoll.getEventsList()->size() << std::endl; \
00189     openfluid::core::EventsList_t::iterator _M_DBG_EvListiter; \
00190     for (_M_DBG_EvListiter=(EvColl.getEventsList())->begin(); _M_DBG_EvListiter != (EvColl.getEventsList())->end(); _M_DBG_EvListiter++) \
00191     { \
00192       OFDBG_EVENT(&(*_M_DBG_EvListiter)); \
00193     } \
00194   }
00195 
00196 #else
00197 
00198 #define OFDBG_EVENTCOLLECTION(eventcoll)
00199 
00200 #endif
00201 
00202 
00203 #endif /* __DEBUG_HPP__ */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines