log4tango  4.0.3
Level.hh
Go to the documentation of this file.
00001 //
00002 // Level.hh
00003 //
00004 // Copyright (C) :  2000 - 2002
00005 //                                      LifeLine Networks BV (www.lifeline.nl). All rights reserved.
00006 //                                      Bastiaan Bakker. All rights reserved.   
00007 //                                      
00008 //                                      2004,2005,2006,2007,2008,2009,2010
00009 //                                      Synchrotron SOLEIL
00010 //                      L'Orme des Merisiers
00011 //                      Saint-Aubin - BP 48 - France
00012 //
00013 // This file is part of log4tango.
00014 //
00015 // Log4ango is free software: you can redistribute it and/or modify
00016 // it under the terms of the GNU Lesser General Public License as published by
00017 // the Free Software Foundation, either version 3 of the License, or
00018 // (at your option) any later version.
00019 // 
00020 // Log4tango is distributed in the hope that it will be useful,
00021 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00022 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00023 // GNU Lesser General Public License for more details.
00024 // 
00025 // You should have received a copy of the GNU Lesser General Public License
00026 // along with Log4Tango.  If not, see <http://www.gnu.org/licenses/>.
00027 
00028 #ifndef _LOG4TANGO_LEVEL_H
00029 #define _LOG4TANGO_LEVEL_H
00030 
00031 #include <log4tango/Portability.hh>
00032 #include <string>
00033 #include <stdexcept>
00034 
00035 /*
00036  * Optionally work around rudeness in windows.h on Win32.
00037  */
00038 #ifdef ERROR
00039 #ifdef LOG4TANGO_FIX_ERROR_COLLISION
00040 
00041 namespace log4tango {
00042     static const int _tmpERRORValue = ERROR;
00043 }
00044 
00045 #undef ERROR
00046     static const int ERROR = log4tango::_tmpERRORValue;
00047 #define ERROR ERROR
00048 
00049 #else  // LOG4TANGO_FIX_ERROR_COLLISION
00050 #error Naming collision for 'ERROR' detected. Please read the FAQ for a \
00051        workaround. 
00052 #endif // LOG4TANGO_FIX_ERROR_COLLISION 
00053 
00054 #endif // ERROR
00055 
00056 /*
00057  * Other Win32 rudeness in EDK.h
00058  */
00059 #ifdef DEBUG
00060 
00061 #ifdef LOG4TANGO_FIX_ERROR_COLLISION
00062 
00063 #undef DEBUG
00064 #define DEBUG DEBUG
00065 
00066 #else  // LOG4TANGO_FIX_ERROR_COLLISION
00067 #error Naming collision for 'DEBUG' detected. Please read the FAQ for a \
00068        workaround. 
00069 #endif // LOG4TANGO_FIX_ERROR_COLLISION 
00070 
00071 #endif // DEBUG
00072 
00073 
00074 namespace log4tango {
00075 
00076 //-----------------------------------------------------------------------------
00077 // class : Level
00078 //-----------------------------------------------------------------------------
00079 class LOG4TANGO_EXPORT Level 
00080 {
00081 public:
00082 
00086   typedef enum {
00087     OFF         =  100,
00088     FATAL       =  200,
00089     ERROR       =  300, 
00090     WARN        =  400,
00091     INFO        =  500,
00092     DEBUG       =  600
00093   } LevelLevel;
00094 
00098   typedef int Value;
00099 
00108   static const std::string& get_name (Value level);
00109         
00119    static Value get_value (const std::string& level_name)
00120             throw(std::invalid_argument);
00121 };
00122 
00123 } // namespace log4tango
00124 
00125 #endif // _LOG4TANGO_LEVEL_H