00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
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 }