$search
00001 /* 00002 * Priority.cpp 00003 * 00004 * Copyright 2000, LifeLine Networks BV (www.lifeline.nl). All rights reserved. 00005 * Copyright 2000, Bastiaan Bakker. All rights reserved. 00006 * 00007 * See the COPYING file for the terms of usage and distribution. 00008 */ 00009 00010 #include "PortabilityImpl.hh" 00011 #include <log4cpp/Priority.hh> 00012 #include <cstdlib> 00013 00014 namespace log4cpp { 00015 00016 namespace { 00017 const std::string names[10] = { 00018 "FATAL", 00019 "ALERT", 00020 "CRIT", 00021 "ERROR", 00022 "WARN", 00023 "NOTICE", 00024 "INFO", 00025 "DEBUG", 00026 "NOTSET", 00027 "UNKNOWN" 00028 }; 00029 } 00030 00031 const int log4cpp::Priority::MESSAGE_SIZE = 8; 00032 00033 00034 const std::string& Priority::getPriorityName(int priority) throw() { 00035 00036 priority++; 00037 priority /= 100; 00038 return names[((priority < 0) || (priority > 8)) ? 8 : priority]; 00039 } 00040 00041 Priority::Value Priority::getPriorityValue(const std::string& priorityName) 00042 throw(std::invalid_argument) { 00043 Priority::Value value = -1; 00044 00045 for (unsigned int i = 0; i < 10; i++) { 00046 if (priorityName == names[i]) { 00047 value = i * 100; 00048 break; 00049 } 00050 } 00051 00052 if (value == -1) { 00053 if (priorityName == "EMERG") { 00054 value = 0; 00055 } else { 00056 char* endPointer; 00057 value = std::strtoul(priorityName.c_str(), &endPointer, 10); 00058 if (*endPointer != 0) { 00059 throw std::invalid_argument( 00060 std::string("unknown priority name: '") + priorityName + "'" 00061 ); 00062 } 00063 } 00064 } 00065 00066 return value; 00067 } 00068 }