NewNet/nnlog.cpp

00001 /*  NewNet - A networking framework in C++
00002     Copyright (C) 2006 Ingmar K. Steen (iksteen@gmail.com)
00003 
00004     This program is free software; you can redistribute it and/or modify
00005     it under the terms of the GNU General Public License as published by
00006     the Free Software Foundation; either version 2 of the License, or
00007     (at your option) any later version.
00008 
00009     This program is distributed in the hope that it will be useful,
00010     but WITHOUT ANY WARRANTY; without even the implied warranty of
00011     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012     GNU General Public License for more details.
00013 
00014     You should have received a copy of the GNU General Public License
00015     along with this program; if not, write to the Free Software
00016     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00017 
00018  */
00019 
00020 #include "nnlog.h"
00021 #include <stdarg.h>
00022 #include <stdio.h>
00023 #include <algorithm>
00024 
00025 NewNet::Log NewNet::log;
00026 
00027 void NewNet::Log::operator()(const std::string & domain, const char * fmt, ...)
00028 {
00029   bool enabled = std::find(m_EnabledDomains.begin(), m_EnabledDomains.end(), domain) != m_EnabledDomains.end();
00030   if(! (enabled || m_AllEnabled))
00031     return;
00032 
00033   fprintf(stderr, "[%s] ", domain.c_str());
00034   va_list ap;
00035   va_start(ap, fmt);
00036   vfprintf(stderr, fmt, ap);
00037   va_end(ap);
00038   fprintf(stderr, "\n");
00039 }
00040 
00041 void NewNet::Log::enable(const std::string & domain)
00042 {
00043   if(domain == "ALL")
00044     m_AllEnabled = true;
00045   else if(std::find(m_EnabledDomains.begin(), m_EnabledDomains.end(), domain) == m_EnabledDomains.end())
00046     m_EnabledDomains.push_back(domain);
00047 }
00048 
00049 void NewNet::Log::disable(const std::string & domain)
00050 {
00051   if(domain == "ALL")
00052   {
00053     m_AllEnabled = false;
00054     return;
00055   }
00056   std::vector<std::string>::iterator it;
00057   it = std::find(m_EnabledDomains.begin(), m_EnabledDomains.end(), domain);
00058   if(it != m_EnabledDomains.end())
00059     m_EnabledDomains.erase(it);
00060 }

Generated on Sun Jan 7 14:00:01 2007 for NewNet by  doxygen 1.5.1