00001 00008 /************************************************************************** 00009 00010 begin : Sun Sep 16 2007 00011 copyright : (C) 2007 by Ewald Arnold 00012 email : log4sendpp at ewald-arnold dot de 00013 00014 This program is free software; you can redistribute it and/or modify 00015 it under the terms of the GNU Lesser General Public License as 00016 published by the Free Software Foundation; either version 2 of the License, 00017 or (at your option) any later version. 00018 00019 This program is distributed in the hope that it will be useful, 00020 but WITHOUT ANY WARRANTY; without even the implied warranty of 00021 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00022 GNU General Public License for more details. 00023 00024 You should have received a copy of the GNU Lesser General Public License 00025 along with this program; if not, write to the Free Software 00026 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00027 00028 **/ 00029 00031 #define LOG4SENDPP_NEED_EXPORTS 00032 #include <log4sendpp/log4sendpp.h> // always first 00033 00034 #include <log4sendpp/ndc.h> 00035 00036 00037 LOG4SENDPP_NS_START 00038 00039 00040 LOG4SENDPP_API_IMPL0 NDC::NDC() 00041 : dirty(true) 00042 { 00043 } 00044 00045 00046 LOG4SENDPP_API_IMPL0 NDC::~NDC() 00047 { 00048 } 00049 00050 00051 LOG4SENDPP_API_IMPL(void) NDC::push(const LOG4SENDPP_STD_NS::string &ndc) 00052 { 00053 const unsigned len = ndc.length(); 00054 00055 if (len == 0 || ndc[len-1] != '\n') 00056 ndcs.push_back(ndc + '\n'); 00057 00058 else 00059 ndcs.push_back(ndc); 00060 00061 dirty = true; 00062 } 00063 00064 00065 LOG4SENDPP_API_IMPL(void) NDC::pop() 00066 { 00067 ndcs.pop_back(); 00068 dirty = true; 00069 } 00070 00071 00072 LOG4SENDPP_API_IMPL(unsigned) NDC::numNDCs() const 00073 { 00074 return ndcs.size(); 00075 } 00076 00077 00078 LOG4SENDPP_API_IMPL(LOG4SENDPP_STD_NS::string) NDC::get() const 00079 { 00080 if (dirty) 00081 { 00082 total.clear(); 00083 for (unsigned i = 0; i < ndcs.size(); ++i) 00084 total += ndcs[i]; 00085 00086 dirty = false; 00087 } 00088 00089 return total; 00090 } 00091 00092 00093 LOG4SENDPP_API_IMPL(void) NDC::clear() 00094 { 00095 ndcs.clear(); 00096 dirty = true; 00097 } 00098 00099 00100 LOG4SENDPP_NS_END 00101