rlog-novariadic.h

00001 /*****************************************************************************
00002  * Author:   Valient Gough <vgough@pobox.com>
00003  *
00004  *****************************************************************************
00005  * Copyright (c) 2002-2004, Valient Gough
00006  *
00007  * This library is free software; you can distribute it and/or modify it under
00008  * the terms of the GNU Lesser General Public License (LGPL), as published by
00009  * the Free Software Foundation; either version 2.1 of the License, or (at your
00010  * option) any later version.
00011  *
00012  * This library is distributed in the hope that it will be useful, but WITHOUT
00013  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00014  * FITNESS FOR A PARTICULAR PURPOSE.  See the LGPL in the file COPYING for more
00015  * details.
00016  *
00017  */
00018 
00019 #include <stdarg.h> // for va_list
00020 #include <stdio.h> // for NULL
00021 
00022 class RLOG_DECL _rMessageProxy
00023 {
00024 public:
00025     _rMessageProxy( rlog::RLogChannel *channel, rlog::PublishLoc *loc );
00026 
00027     void log(const char *format, ...) PRINTF(2,3);
00028     void log(rlog::RLogChannel *channel, const char *format, ...) PRINTF(3,4);
00029 
00030 private:
00031     void doLog(const char *format, va_list ap);
00032 
00033     rlog::PublishLoc *loc;
00034 };
00035 
00036 #define _rMessageDef(ID, COMPONENT) \
00037   static rlog::PublishLoc ID ={&rlog::RLog_Register, 0, STR(COMPONENT), \
00038       __FILE__, __FUNCTION__, __LINE__, 0}
00039 
00040 #define _rMessage(ID, CHANNEL, COMPONENT) \
00041   _rMessageDef(ID, COMPONENT); \
00042   _rMessageProxy(CHANNEL, &ID).log
00043 
00044 #define rDebug _rMessage( LOGID, rlog::_RLDebugChannel, RLOG_COMPONENT  )
00045 #define rInfo _rMessage( LOGID, rlog::_RLDebugChannel, RLOG_COMPONENT )
00046 #define rWarning _rMessage( LOGID, rlog::_RLWarningChannel, RLOG_COMPONENT )
00047 #define rError _rMessage( LOGID, rlog::_RLErrorChannel, RLOG_COMPONENT )
00048 
00049 #define rLog _rMessage ( LOGID, NULL, RLOG_COMPONENT)
00050 

Generated on Mon Nov 20 22:57:44 2006 for rlog by  doxygen 1.5.0