You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4cxx-dev@logging.apache.org by ca...@apache.org on 2007/12/21 03:52:42 UTC

svn commit: r606089 [2/6] - in /logging/log4cxx/trunk: ./ src/examples/cpp/ src/main/cpp/ src/main/include/log4cxx/ src/main/include/log4cxx/db/ src/main/include/log4cxx/filter/ src/main/include/log4cxx/helpers/ src/main/include/log4cxx/net/ src/main/i...

Modified: logging/log4cxx/trunk/src/main/cpp/fulllocationpatternconverter.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/fulllocationpatternconverter.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/fulllocationpatternconverter.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/fulllocationpatternconverter.cpp Thu Dec 20 18:52:29 2007
@@ -44,9 +44,9 @@
   LogString& toAppendTo,
   Pool& p) const {
    append(toAppendTo, event->getLocationInformation().getFileName());
-   toAppendTo.append(1, LOG4CXX_STR('('));
-   toAppendTo.append(StringHelper::toString(
+   toAppendTo.append(1, 0x28 /* '(' */);
+   StringHelper::toString(
        event->getLocationInformation().getLineNumber(),
-       p));
-   toAppendTo.append(1, LOG4CXX_STR(')'));
+       p, toAppendTo);
+   toAppendTo.append(1, 0x29 /* ')' */);
 }

Modified: logging/log4cxx/trunk/src/main/cpp/hierarchy.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/hierarchy.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/hierarchy.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/hierarchy.cpp Thu Dec 20 18:52:29 2007
@@ -316,15 +316,13 @@
         int length = name.size();
         bool parentFound = false;
 
-        //tcout << _T("UpdateParents called for ") << name << std::endl;
 
         // if name = "w.x.y.z", loop thourgh "w.x.y", "w.x" and "w", but not "w.x.y.z"
-        for(size_t i = name.find_last_of(LOG4CXX_STR('.'), length-1);
+        for(size_t i = name.find_last_of(0x2E /* '.' */, length-1);
             i != LogString::npos;
-            i = name.find_last_of(LOG4CXX_STR('.'), i-1))
+            i = name.find_last_of(0x2E /* '.' */, i-1))
         {
                 LogString substr = name.substr(0, i);
-                //tcout << _T("UpdateParents processing ") << substr << std::endl;
 
                 LoggerMap::iterator it = loggers.find(substr);
                 if(it != loggers.end())
@@ -342,7 +340,6 @@
                         }
                         else
                         {
-                                //tcout << _T("Inserting ProvisionNode for ") << substr << std::endl;
                                 ProvisionNode node(1, logger);
                                 provisionNodes.insert(
                                         ProvisionNodeMap::value_type(substr, node));
@@ -359,14 +356,12 @@
 
 void Hierarchy::updateChildren(ProvisionNode& pn, LoggerPtr logger)
 {
-        //tcout << _T("updateChildren called for ") << logger->name << std::endl;
 
         ProvisionNode::iterator it, itEnd = pn.end();
 
         for(it = pn.begin(); it != itEnd; it++)
         {
                 LoggerPtr& l = *it;
-                //tcout << _T("Updating child ") << l->name << std::endl;
 
                 // Unless this child already points to a correct (lower) parent,
                 // make cat.parent point to l.parent and l.parent to cat.

Modified: logging/log4cxx/trunk/src/main/cpp/htmllayout.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/htmllayout.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/htmllayout.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/htmllayout.cpp Thu Dec 20 18:52:29 2007
@@ -25,7 +25,6 @@
 #include <log4cxx/helpers/stringhelper.h>
 #include <log4cxx/helpers/transcoder.h>
 
-#include <apr_pools.h>
 #include <apr_time.h>
 #include <apr_strings.h>
 #include <string.h>
@@ -63,21 +62,26 @@
 
 void HTMLLayout::format(LogString& output,
      const spi::LoggingEventPtr& event,
-     Pool& pool) const
+     Pool& p) const
 {
-        output.append(LOG4CXX_EOL LOG4CXX_STR("<tr>") LOG4CXX_EOL LOG4CXX_STR("<td>"));
+        output.append(LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("<tr>"));
+        output.append(LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("<td>"));
 
-        dateFormat.format(output, event->getTimeStamp(), pool);
+        dateFormat.format(output, event->getTimeStamp(), p);
 
 
-        output.append(LOG4CXX_STR("</td>") LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("</td>"));
+        output.append(LOG4CXX_EOL);
 
         output.append(LOG4CXX_STR("<td title=\""));
         LogString threadName(event->getThreadName());
         output.append(threadName);
         output.append(LOG4CXX_STR(" thread\">"));
         output.append(threadName);
-        output.append(LOG4CXX_STR("</td>") LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("</td>"));
+        output.append(LOG4CXX_EOL);
 
         output.append(LOG4CXX_STR("<td title=\"Level\">"));
         if (event->getLevel()->equals(Level::getDebug()))
@@ -97,13 +101,15 @@
                 output.append(event->getLevel()->toString());
         }
 
-        output.append(LOG4CXX_STR("</td>") LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("</td>"));
+        output.append(LOG4CXX_EOL);
 
         output.append(LOG4CXX_STR("<td title=\""));
         output.append(event->getLoggerName());
         output.append(LOG4CXX_STR(" logger\">"));
         Transform::appendEscapingTags(output, event->getLoggerName());
-        output.append(LOG4CXX_STR("</td>") LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("</td>"));
+        output.append(LOG4CXX_EOL);
 
         if(locationInfo)
         {
@@ -111,19 +117,22 @@
                 const LocationInfo& locInfo = event->getLocationInformation();
                 LOG4CXX_DECODE_CHAR(fileName, locInfo.getFileName());
                 Transform::appendEscapingTags(output, fileName);
-                output.append(1, LOG4CXX_STR(':'));
+                output.append(1, 0x3A /* ':' */);
                 int line = event->getLocationInformation().getLineNumber();
                 if (line != 0)
                 {
-                        output.append(StringHelper::toString(line, pool));
+                        StringHelper::toString(line, p, output);
                 }
-                output.append(LOG4CXX_STR("</td>") LOG4CXX_EOL);
+                output.append(LOG4CXX_STR("</td>"));
+                output.append(LOG4CXX_EOL);
         }
 
         output.append(LOG4CXX_STR("<td title=\"Message\">"));
         Transform::appendEscapingTags(output, event->getRenderedMessage());
-        output.append(LOG4CXX_STR("</td>") LOG4CXX_EOL);
-        output.append(LOG4CXX_STR("</tr>") LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("</td>"));
+        output.append(LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("</tr>"));
+        output.append(LOG4CXX_EOL);
 
         LogString ndcVal;
         if (event->getNDC(ndcVal))
@@ -133,52 +142,79 @@
                 output.append(LOG4CXX_STR("title=\"Nested Diagnostic Context\">"));
                 output.append(LOG4CXX_STR("NDC: "));
                 Transform::appendEscapingTags(output, ndcVal);
-                output.append(LOG4CXX_STR("</td></tr>") LOG4CXX_EOL);
+                output.append(LOG4CXX_STR("</td></tr>"));
+                output.append(LOG4CXX_EOL);
         }
 }
 
-void HTMLLayout::appendHeader(LogString& output, Pool& pool)
+void HTMLLayout::appendHeader(LogString& output, Pool& p)
 {
         output.append(LOG4CXX_STR("<!DOCTYPE HTML PUBLIC "));
         output.append(LOG4CXX_STR("\"-//W3C//DTD HTML 4.01 Transitional//EN\" "));
-        output.append(LOG4CXX_STR("\"http://www.w3.org/TR/html4/loose.dtd\">") LOG4CXX_EOL);
-        output.append(LOG4CXX_STR("<html>") LOG4CXX_EOL);
-        output.append(LOG4CXX_STR("<head>") LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("\"http://www.w3.org/TR/html4/loose.dtd\">"));
+        output.append(LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("<html>"));
+        output.append(LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("<head>"));
+        output.append(LOG4CXX_EOL);
         output.append(LOG4CXX_STR("<title>"));
         output.append(title);
-        output.append(LOG4CXX_STR("</title>") LOG4CXX_EOL);
-        output.append(LOG4CXX_STR("<style type=\"text/css\">") LOG4CXX_EOL);
-        output.append(LOG4CXX_STR("<!--") LOG4CXX_EOL);
-        output.append(LOG4CXX_STR("body, table {font-family: arial,sans-serif; font-size: x-small;}") LOG4CXX_EOL);
-        output.append(LOG4CXX_STR("th {background: #336699; color: #FFFFFF; text-align: left;}") LOG4CXX_EOL);
-        output.append(LOG4CXX_STR("-->") LOG4CXX_EOL);
-        output.append(LOG4CXX_STR("</style>") LOG4CXX_EOL);
-        output.append(LOG4CXX_STR("</head>") LOG4CXX_EOL);
-        output.append(LOG4CXX_STR("<body bgcolor=\"#FFFFFF\" topmargin=\"6\" leftmargin=\"6\">") LOG4CXX_EOL);
-        output.append(LOG4CXX_STR("<hr size=\"1\" noshade>") LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("</title>"));
+        output.append(LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("<style type=\"text/css\">"));
+        output.append(LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("<!--"));
+        output.append(LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("body, table {font-family: arial,sans-serif; font-size: x-small;}"));
+        output.append(LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("th {background: #336699; color: #FFFFFF; text-align: left;}"));
+        output.append(LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("-->"));
+        output.append(LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("</style>"));
+        output.append(LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("</head>"));
+        output.append(LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("<body bgcolor=\"#FFFFFF\" topmargin=\"6\" leftmargin=\"6\">"));
+        output.append(LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("<hr size=\"1\" noshade>"));
+        output.append(LOG4CXX_EOL);
         output.append(LOG4CXX_STR("Log session start time "));
 
-        dateFormat.format(output, apr_time_now(), pool);
+        dateFormat.format(output, apr_time_now(), p);
 
-        output.append(LOG4CXX_STR("<br>") LOG4CXX_EOL);
-        output.append(LOG4CXX_STR("<br>") LOG4CXX_EOL);
-        output.append(LOG4CXX_STR("<table cellspacing=\"0\" cellpadding=\"4\" border=\"1\" bordercolor=\"#224466\" width=\"100%\">") LOG4CXX_EOL);
-        output.append(LOG4CXX_STR("<tr>") LOG4CXX_EOL);
-        output.append(LOG4CXX_STR("<th>Time</th>") LOG4CXX_EOL);
-        output.append(LOG4CXX_STR("<th>Thread</th>") LOG4CXX_EOL);
-        output.append(LOG4CXX_STR("<th>Level</th>") LOG4CXX_EOL);
-        output.append(LOG4CXX_STR("<th>Logger</th>") LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("<br>"));
+        output.append(LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("<br>"));
+        output.append(LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("<table cellspacing=\"0\" cellpadding=\"4\" border=\"1\" bordercolor=\"#224466\" width=\"100%\">"));
+        output.append(LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("<tr>"));
+        output.append(LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("<th>Time</th>"));
+        output.append(LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("<th>Thread</th>"));
+        output.append(LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("<th>Level</th>"));
+        output.append(LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("<th>Logger</th>"));
+        output.append(LOG4CXX_EOL);
         if(locationInfo)
         {
-                output.append(LOG4CXX_STR("<th>File:Line</th>") LOG4CXX_EOL);
+                output.append(LOG4CXX_STR("<th>File:Line</th>"));
+                output.append(LOG4CXX_EOL);
         }
-        output.append(LOG4CXX_STR("<th>Message</th>") LOG4CXX_EOL);
-        output.append(LOG4CXX_STR("</tr>") LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("<th>Message</th>"));
+        output.append(LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("</tr>"));
+        output.append(LOG4CXX_EOL);
 }
 
 void HTMLLayout::appendFooter(LogString& output, Pool& /* pool */ )
 {
-        output.append(LOG4CXX_STR("</table>") LOG4CXX_EOL);
-        output.append(LOG4CXX_STR("<br>") LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("</table>"));
+        output.append(LOG4CXX_EOL);
+        output.append(LOG4CXX_STR("<br>"));
+        output.append(LOG4CXX_EOL);
         output.append(LOG4CXX_STR("</body></html>"));
 }

Modified: logging/log4cxx/trunk/src/main/cpp/inetaddress.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/inetaddress.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/inetaddress.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/inetaddress.cpp Thu Dec 20 18:52:29 2007
@@ -28,7 +28,7 @@
 
 IMPLEMENT_LOG4CXX_OBJECT(InetAddress)
 
-UnknownHostException::UnknownHostException(const std::string& msg1)
+UnknownHostException::UnknownHostException(const LogString& msg1)
      : Exception(msg1) {
 }
 
@@ -63,9 +63,7 @@
        LogString msg(LOG4CXX_STR("Cannot get information about host: "));
        msg.append(host);
        LogLog::error(msg);
-       std::string s;
-       Transcoder::encode(msg, s);
-       throw UnknownHostException(s);
+       throw UnknownHostException(msg);
     }
 
     std::vector<InetAddressPtr> result;
@@ -75,17 +73,19 @@
         LogString ipAddrString;
         char *ipAddr;
         status = apr_sockaddr_ip_get(&ipAddr, currentAddr);
-      if (status == APR_SUCCESS) {
-         Transcoder::decode(ipAddr, strlen(ipAddr), ipAddrString);
-       }
+        if (status == APR_SUCCESS) {
+            std::string ip(ipAddr);
+            Transcoder::decode(ip, ipAddrString);
+        }
     
         // retrieve the host name of this InetAddress.
         LogString hostNameString;
         char *hostName;
         status = apr_getnameinfo(&hostName, currentAddr, 0);
-      if (status == APR_SUCCESS) {
-         Transcoder::decode(hostName, strlen(hostName), hostNameString);
-      }
+        if (status == APR_SUCCESS) {
+            std::string host(hostName);
+            Transcoder::decode(host, hostNameString);
+        }
 
         result.push_back(new InetAddress(hostNameString, ipAddrString));
         currentAddr = currentAddr->next;

Modified: logging/log4cxx/trunk/src/main/cpp/inputstreamreader.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/inputstreamreader.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/inputstreamreader.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/inputstreamreader.cpp Thu Dec 20 18:52:29 2007
@@ -29,17 +29,17 @@
 InputStreamReader::InputStreamReader(const InputStreamPtr& in1)
    : in(in1), dec(CharsetDecoder::getDefaultDecoder()) {
    if (in1 == 0) {
-      throw NullPointerException("in parameter may not be null.");
+      throw NullPointerException(LOG4CXX_STR("in parameter may not be null."));
    }
 }
 
 InputStreamReader::InputStreamReader(const InputStreamPtr& in1, const CharsetDecoderPtr &dec1) 
     : in(in1), dec(dec1) {
     if (in1 == 0) {
-       throw NullPointerException("in parameter may not be null.");
+       throw NullPointerException(LOG4CXX_STR("in parameter may not be null."));
     }
     if (dec1 == 0) {
-       throw NullPointerException("dec parameter may not be null.");
+       throw NullPointerException(LOG4CXX_STR("dec parameter may not be null."));
     }
 }
 

Modified: logging/log4cxx/trunk/src/main/cpp/integerpatternconverter.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/integerpatternconverter.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/integerpatternconverter.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/integerpatternconverter.cpp Thu Dec 20 18:52:29 2007
@@ -44,8 +44,6 @@
   Pool& p) const {
    IntegerPtr i(obj);
    if (i != NULL) {
-      toAppendTo.append(StringHelper::toString(
-        i->intValue(),
-        p));
+      StringHelper::toString(i->intValue(), p, toAppendTo);
    }
 }

Modified: logging/log4cxx/trunk/src/main/cpp/level.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/level.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/level.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/level.cpp Thu Dec 20 18:52:29 2007
@@ -29,43 +29,43 @@
 
 IMPLEMENT_LOG4CXX_OBJECT_WITH_CUSTOM_CLASS(Level, LevelClass)
 
-const LevelPtr& Level::getOff() {
+LevelPtr Level::getOff() {
    static LevelPtr level(new Level(Level::OFF_INT, LOG4CXX_STR("OFF"), 0));
    return level;
 }
 
-const LevelPtr& Level::getFatal() {
+LevelPtr Level::getFatal() {
    static LevelPtr level(new Level(Level::FATAL_INT, LOG4CXX_STR("FATAL"), 0));
    return level;
 }
 
-const LevelPtr& Level::getError() {
+LevelPtr Level::getError() {
    static LevelPtr level(new Level(Level::ERROR_INT, LOG4CXX_STR("ERROR"), 3));
    return level;
 }
 
-const LevelPtr& Level::getWarn() {
+LevelPtr Level::getWarn() {
    static LevelPtr level(new Level(Level::WARN_INT, LOG4CXX_STR("WARN"), 4));
    return level;
 }
 
-const LevelPtr& Level::getInfo() {
+LevelPtr Level::getInfo() {
    static LevelPtr level(new Level(Level::INFO_INT, LOG4CXX_STR("INFO"), 6));
    return level;
 }
 
-const LevelPtr& Level::getDebug() {
+LevelPtr Level::getDebug() {
    static LevelPtr level(new Level(Level::DEBUG_INT, LOG4CXX_STR("DEBUG"), 7));
    return level;
 }
 
-const LevelPtr& Level::getTrace() {
+LevelPtr Level::getTrace() {
    static LevelPtr level(new Level(Level::TRACE_INT, LOG4CXX_STR("TRACE"), 7));
    return level;
 }
 
 
-const LevelPtr& Level::getAll() {
+LevelPtr Level::getAll() {
    static LevelPtr level(new Level(Level::ALL_INT, LOG4CXX_STR("ALL"), 7));
    return level;
 }
@@ -73,31 +73,29 @@
 
 
 Level::Level(int level1,
-    const logchar* name1, int syslogEquivalent1)
+    const LogString& name1, int syslogEquivalent1)
 : level(level1), name(name1), syslogEquivalent(syslogEquivalent1)
 {
    APRInitializer::initialize();
 }
 
 
-const LevelPtr& Level::toLevel(const std::string& sArg)
+LevelPtr Level::toLevelLS(const LogString& sArg)
 {
-    return toLevel(sArg, Level::getDebug());
+    return toLevelLS(sArg, Level::getDebug());
 }
 
-#if LOG4CXX_HAS_WCHAR_T
-const LevelPtr& Level::toLevel(const std::wstring& sArg)
-{
-    return toLevel(sArg, Level::getDebug());
+LogString Level::toString() const {
+    return name;
 }
-#endif
 
-const LevelPtr& Level::toLevel(int val)
+
+LevelPtr Level::toLevel(int val)
 {
     return toLevel(val, Level::getDebug());
 }
 
-const LevelPtr& Level::toLevel(int val, const LevelPtr& defaultLevel)
+LevelPtr Level::toLevel(int val, const LevelPtr& defaultLevel)
 {
     switch(val)
     {
@@ -113,78 +111,107 @@
     }
 }
 
-const LevelPtr& Level::toLevel(const std::string& sArg, const LevelPtr& defaultLevel)
+LevelPtr Level::toLevel(const std::string& sArg)
 {
-    const size_t len = sArg.length();
+    return toLevel(sArg, Level::getDebug());
+}
 
-    if (len == 4) {
-      if (StringHelper::equalsIgnoreCase(sArg, "INFO", "info")) {
-        return getInfo();
-      }
-      if (StringHelper::equalsIgnoreCase(sArg, "WARN", "warn")) {
-        return getWarn();
-      }
-    } else {
-      if (len == 5) {
-        if (StringHelper::equalsIgnoreCase(sArg, "DEBUG", "debug")) {
-          return getDebug();
-        }
-        if (StringHelper::equalsIgnoreCase(sArg, "TRACE", "trace")) {
-          return getTrace();
-        }
-        if (StringHelper::equalsIgnoreCase(sArg, "ERROR", "error")) {
-          return getError();
-        }
-        if (StringHelper::equalsIgnoreCase(sArg, "FATAL", "fatal")) {
-          return getFatal();
-        }
-      } else {
-        if (len == 3) {
-          if (StringHelper::equalsIgnoreCase(sArg, "OFF", "off")) {
-            return getOff();
-          }
-          if (StringHelper::equalsIgnoreCase(sArg, "ALL", "all")) {
-            return getAll();
-          }
-        }
-      }
-    }
+LevelPtr Level::toLevel(const std::string& sArg, const LevelPtr& defaultLevel)
+{
+    LOG4CXX_DECODE_CHAR(s, sArg);
+    return toLevelLS(s, defaultLevel);
+}
 
-    return defaultLevel;
+void Level::toString(std::string& dst) const {
+    Transcoder::encode(name, dst);
 }
 
-#if LOG4CXX_HAS_WCHAR_T
-const LevelPtr& Level::toLevel(const std::wstring& sArg, const LevelPtr& defaultLevel)
+#if LOG4CXX_WCHAR_T_API
+LevelPtr Level::toLevel(const std::wstring& sArg)
+{
+    return toLevel(sArg, Level::getDebug());
+}
+
+LevelPtr Level::toLevel(const std::wstring& sArg, const LevelPtr& defaultLevel)
+{
+    LOG4CXX_DECODE_WCHAR(s, sArg);
+    return toLevelLS(s, defaultLevel);
+}
+
+void Level::toString(std::wstring& dst) const {
+    Transcoder::encode(name, dst);
+}
+
+#endif
+
+#if LOG4CXX_UNICHAR_API
+LevelPtr Level::toLevel(const std::basic_string<UniChar>& sArg)
+{
+    return toLevel(sArg, Level::getDebug());
+}
+
+LevelPtr Level::toLevel(const std::basic_string<UniChar>& sArg, const LevelPtr& defaultLevel)
+{
+    LOG4CXX_DECODE_UNICHAR(s, sArg);
+    return toLevelLS(s, defaultLevel);
+}
+
+void Level::toString(std::basic_string<UniChar>& dst) const {
+    Transcoder::encode(name, dst);
+}
+
+#endif
+
+#if LOG4CXX_CFSTRING_API
+LevelPtr Level::toLevel(const CFStringRef& sArg)
+{
+    return toLevel(sArg, Level::getDebug());
+}
+
+LevelPtr Level::toLevel(const CFStringRef& sArg, const LevelPtr& defaultLevel)
+{
+    LogString s;
+    Transcoder::decode(sArg, s);
+    return toLevelLS(s, defaultLevel);
+}
+
+void Level::toString(CFStringRef& dst) const {
+    dst = Transcoder::encode(name);
+}
+#endif
+
+
+LevelPtr Level::toLevelLS(const LogString& sArg, const LevelPtr& defaultLevel)
 {
     const size_t len = sArg.length();
 
     if (len == 4) {
-      if (StringHelper::equalsIgnoreCase(sArg, L"INFO", L"info")) {
+      if (StringHelper::equalsIgnoreCase(sArg, LOG4CXX_STR("INFO"), LOG4CXX_STR("info"))) {
         return getInfo();
       }
-      if (StringHelper::equalsIgnoreCase(sArg, L"WARN", L"warn")) {
+      if (StringHelper::equalsIgnoreCase(sArg, LOG4CXX_STR("WARN"), LOG4CXX_STR("warn"))) {
         return getWarn();
       }
     } else {
       if (len == 5) {
-        if (StringHelper::equalsIgnoreCase(sArg, L"DEBUG", L"debug")) {
+        if (StringHelper::equalsIgnoreCase(sArg, LOG4CXX_STR("DEBUG"), LOG4CXX_STR("debug"))) {
           return getDebug();
         }
-        if (StringHelper::equalsIgnoreCase(sArg, L"TRACE", L"trace")) {
+        if (StringHelper::equalsIgnoreCase(sArg, LOG4CXX_STR("TRACE"), LOG4CXX_STR("trace"))) {
           return getTrace();
         }
-        if (StringHelper::equalsIgnoreCase(sArg, L"ERROR", L"error")) {
+        if (StringHelper::equalsIgnoreCase(sArg, LOG4CXX_STR("ERROR"), LOG4CXX_STR("error"))) {
           return getError();
         }
-        if (StringHelper::equalsIgnoreCase(sArg, L"FATAL", L"fatal")) {
+        if (StringHelper::equalsIgnoreCase(sArg, LOG4CXX_STR("FATAL"), LOG4CXX_STR("fatal"))) {
           return getFatal();
         }
       } else {
         if (len == 3) {
-          if (StringHelper::equalsIgnoreCase(sArg, L"OFF", L"off")) {
+          if (StringHelper::equalsIgnoreCase(sArg, LOG4CXX_STR("OFF"), LOG4CXX_STR("off"))) {
             return getOff();
           }
-          if (StringHelper::equalsIgnoreCase(sArg, L"ALL", L"all")) {
+          if (StringHelper::equalsIgnoreCase(sArg, LOG4CXX_STR("ALL"), LOG4CXX_STR("all"))) {
             return getAll();
           }
         }
@@ -193,7 +220,7 @@
 
     return defaultLevel;
 }
-#endif
+
 
 bool Level::equals(const LevelPtr& level1) const
 {
@@ -204,14 +231,4 @@
 {
     return this->level >= level1->level;
 }
-
-void Level::toString(std::string& str) const {
-    Transcoder::encode(name, str);
-}
-
-#if LOG4CXX_HAS_WCHAR_T
-void Level::toString(std::wstring& str) const {
-    Transcoder::encode(name, str);
-}
-#endif
 

Modified: logging/log4cxx/trunk/src/main/cpp/levelmatchfilter.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/levelmatchfilter.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/levelmatchfilter.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/levelmatchfilter.cpp Thu Dec 20 18:52:29 2007
@@ -57,7 +57,7 @@
    this->levelToMatch = OptionConverter::toLevel(levelToMatch1, this->levelToMatch);
 }
 
-const LogString& LevelMatchFilter::getLevelToMatch() const
+LogString LevelMatchFilter::getLevelToMatch() const
 {
    return levelToMatch->toString();
 }

Modified: logging/log4cxx/trunk/src/main/cpp/linelocationpatternconverter.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/linelocationpatternconverter.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/linelocationpatternconverter.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/linelocationpatternconverter.cpp Thu Dec 20 18:52:29 2007
@@ -43,7 +43,7 @@
   const LoggingEventPtr& event,
   LogString& toAppendTo,
   Pool& p) const {
-   toAppendTo.append(StringHelper::toString(
+   StringHelper::toString(
        event->getLocationInformation().getLineNumber(),
-       p));
+       p, toAppendTo);
 }

Modified: logging/log4cxx/trunk/src/main/cpp/literalpatternconverter.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/literalpatternconverter.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/literalpatternconverter.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/literalpatternconverter.cpp Thu Dec 20 18:52:29 2007
@@ -35,7 +35,7 @@
 
 PatternConverterPtr LiteralPatternConverter::newInstance(
    const LogString& literal) {
-   if (literal.length() == 1 && literal[0] == LOG4CXX_STR(' ')) {
+   if (literal.length() == 1 && literal[0] == 0x20 /* ' ' */) {
      static PatternConverterPtr blank(new LiteralPatternConverter(literal));
      return blank;
    }

Modified: logging/log4cxx/trunk/src/main/cpp/logger.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/logger.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/logger.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/logger.cpp Thu Dec 20 18:52:29 2007
@@ -55,8 +55,6 @@
 }
 
 
-
-
 void Logger::addAppender(const AppenderPtr& newAppender)
 {
         synchronized sync(mutex);
@@ -117,16 +115,6 @@
         callAppenders(event, p);
 }
 
-#if LOG4CXX_HAS_WCHAR_T
-void Logger::forcedLog(const LevelPtr& level1, const std::wstring& message,
-        const LocationInfo& location)
-{
-        Pool p;
-        LOG4CXX_DECODE_WCHAR(msg, message);
-        LoggingEventPtr event(new LoggingEvent(this, level1, msg, location));
-        callAppenders(event, p);
-}
-#endif
 
 void Logger::forcedLog(const LevelPtr& level1, const std::string& message) const
 {
@@ -137,17 +125,6 @@
         callAppenders(event, p);
 }
 
-#if LOG4CXX_HAS_WCHAR_T
-void Logger::forcedLog(const LevelPtr& level1, const std::wstring& message) const
-{
-        Pool p;
-        LOG4CXX_DECODE_WCHAR(msg, message);
-        LoggingEventPtr event(new LoggingEvent(this, level1, msg,
-           LocationInfo::getLocationUnavailable()));
-        callAppenders(event, p);
-}
-#endif
-
 void Logger::forcedLogLS(const LevelPtr& level1, const LogString& message,
         const LocationInfo& location)
 {
@@ -198,7 +175,7 @@
                 }
         }
 
-        throw NullPointerException("No level specified for logger or ancestors.");
+        throw NullPointerException(LOG4CXX_STR("No level specified for logger or ancestors."));
 #if LOG4CXX_RETURN_AFTER_THROW
         return this->level;
 #endif
@@ -224,7 +201,7 @@
 }
 
 
-LogString Logger::getResourceBundleString(const LogString& key) const
+LogString Logger::getResourceBundleString(const LogString& key) 
 {
         ResourceBundlePtr rb = getResourceBundle();
 
@@ -251,12 +228,12 @@
 }
 
 
-const LoggerPtr& Logger::getParent() const
+LoggerPtr Logger::getParent() const
 {
         return parent;
 }
 
-const LevelPtr& Logger::getLevel() const
+LevelPtr Logger::getLevel() const
 {
         return level;
 }
@@ -283,7 +260,7 @@
                 return false;
         }
 
-        return Level::getTrace()->isGreaterOrEqual(getEffectiveLevel());
+        return getEffectiveLevel()->toInt() <= Level::TRACE_INT;
 }
 
 bool Logger::isDebugEnabled() const
@@ -293,7 +270,7 @@
                 return false;
         }
 
-        return Level::getDebug()->isGreaterOrEqual(getEffectiveLevel());
+        return getEffectiveLevel()->toInt() <= Level::DEBUG_INT;
 }
 
 bool Logger::isEnabledFor(const LevelPtr& level1) const
@@ -314,7 +291,7 @@
                 return false;
         }
 
-        return Level::getInfo()->isGreaterOrEqual(getEffectiveLevel());
+        return getEffectiveLevel()->toInt() <= Level::INFO_INT;
 }
 
 bool Logger::isErrorEnabled() const
@@ -324,7 +301,7 @@
                 return false;
         }
 
-        return Level::getError()->isGreaterOrEqual(getEffectiveLevel());
+        return getEffectiveLevel()->toInt() <= Level::ERROR_INT;
 }
 
 bool Logger::isWarnEnabled() const
@@ -334,7 +311,7 @@
                 return false;
         }
 
-        return Level::getWarn()->isGreaterOrEqual(getEffectiveLevel());
+        return getEffectiveLevel()->toInt() <= Level::WARN_INT;
 }
 
 bool Logger::isFatalEnabled() const
@@ -344,7 +321,7 @@
                 return false;
         }
 
-        return Level::getFatal()->isGreaterOrEqual(getEffectiveLevel());
+        return getEffectiveLevel()->toInt() <= Level::FATAL_INT;
 }
 
 /*void Logger::l7dlog(const LevelPtr& level, const String& key,
@@ -371,6 +348,7 @@
 }*/
 
 
+
 void Logger::l7dlog(const LevelPtr& level1, const LogString& key,
                     const LocationInfo& location, const std::vector<LogString>& params)
 {
@@ -444,56 +422,6 @@
 }
 
 
-#if LOG4CXX_HAS_WCHAR_T
-
-void Logger::l7dlog(const LevelPtr& level1, const std::wstring& key,
-                    const LocationInfo& location) {
-  LOG4CXX_DECODE_WCHAR(lkey, key);
-
-  std::vector<LogString> values(0);
-  l7dlog(level1, lkey, location, values);
-}
-
-void Logger::l7dlog(const LevelPtr& level1, const std::wstring& key,
-                    const LocationInfo& location,
-                    const std::wstring& val1) {
-  LOG4CXX_DECODE_WCHAR(lval1, val1);
-  LOG4CXX_DECODE_WCHAR(lkey, key);
-
-  std::vector<LogString> values(1);
-  values[0] = lval1;
-  l7dlog(level1, lkey, location, values);
-}
-
-void Logger::l7dlog(const LevelPtr& level1, const std::wstring& key,
-                    const LocationInfo& location,
-                    const std::wstring& val1, const std::wstring& val2) {
-  LOG4CXX_DECODE_WCHAR(lval1, val1);
-  LOG4CXX_DECODE_WCHAR(lval2, val2);
-  LOG4CXX_DECODE_WCHAR(lkey, key);
-
-  std::vector<LogString> values(2);
-  values[0] = lval1;
-  values[1] = lval2;
-  l7dlog(level1, lkey, location, values);
-}
-
-void Logger::l7dlog(const LevelPtr& level1, const std::wstring& key,
-                    const LocationInfo& location,
-                    const std::wstring& val1, const std::wstring& val2, const std::wstring& val3) {
-  LOG4CXX_DECODE_WCHAR(lval1, val1);
-  LOG4CXX_DECODE_WCHAR(lval2, val2);
-  LOG4CXX_DECODE_WCHAR(lval3, val3);
-  LOG4CXX_DECODE_WCHAR(lkey, key);
-
-  std::vector<LogString> values(3);
-  values[0] = lval1;
-  values[1] = lval2;
-  values[2] = lval3;
-  l7dlog(level1, lkey, location, values);
-}
-
-#endif
 
 void Logger::removeAllAppenders()
 {
@@ -554,29 +482,12 @@
         return LogManager::getLogger(lname);
 }
 
-#if LOG4CXX_HAS_WCHAR_T
-LoggerPtr Logger::getLogger(const std::wstring& name)
-{
-        LOG4CXX_DECODE_WCHAR(lname, name);
-        return LogManager::getLogger(lname);
-}
-#endif
 
 LoggerPtr Logger::getLogger(const char* const name)
 {
-        LogString lname;
-        Transcoder::decode(name, strlen(name), lname);
-        return LogManager::getLogger(lname);
+        return LogManager::getLogger(name);
 }
 
-#if LOG4CXX_HAS_WCHAR_T
-LoggerPtr Logger::getLogger(const wchar_t* const name)
-{
-        LogString lname;
-        Transcoder::decode(name, wcslen(name), lname);
-        return LogManager::getLogger(lname);
-}
-#endif
 
 
 LoggerPtr Logger::getRootLogger() {
@@ -593,214 +504,464 @@
     Transcoder::encode(name, rv);
 }
 
-#if LOG4CXX_HAS_WCHAR_T
-void Logger::getName(std::wstring& rv) const {
-    Transcoder::encode(name, rv);
-}
-#endif
 
 void Logger::trace(const std::string& msg, const log4cxx::spi::LocationInfo& location) { 
-  if (isEnabledFor(log4cxx::Level::getTrace())) { 
+  if (isTraceEnabled()) { 
     forcedLog(log4cxx::Level::getTrace(), msg, location); 
   } 
 } 
 
-#if LOG4CXX_HAS_WCHAR_T 
-void Logger::trace(const std::wstring& msg, const log4cxx::spi::LocationInfo& location) { 
-  if (isEnabledFor(log4cxx::Level::getTrace())) { 
-    forcedLog(log4cxx::Level::getTrace(), msg, location); 
-  } 
-} 
-#endif 
 
 void Logger::trace(const std::string& msg) { 
-  if (isEnabledFor(log4cxx::Level::getTrace())) { 
-    forcedLog(log4cxx::Level::getTrace(), msg); 
-  } 
-} 
-
-#if LOG4CXX_HAS_WCHAR_T 
-void Logger::trace(const std::wstring& msg) { 
-  if (isEnabledFor(log4cxx::Level::getTrace())) { 
+  if (isTraceEnabled()) { 
     forcedLog(log4cxx::Level::getTrace(), msg); 
   } 
 } 
-#endif 
 
 void Logger::debug(const std::string& msg, const log4cxx::spi::LocationInfo& location) {
-  if (isEnabledFor(log4cxx::Level::getDebug())) {
+  if (isDebugEnabled()) {
     forcedLog(log4cxx::Level::getDebug(), msg, location);
   }
 }
 
-#if LOG4CXX_HAS_WCHAR_T
-void Logger::debug(const std::wstring& msg, const log4cxx::spi::LocationInfo& location) {
-  if (isEnabledFor(log4cxx::Level::getDebug())) {
-    forcedLog(log4cxx::Level::getDebug(), msg, location);
+void Logger::debug(const std::string& msg) {
+  if (isDebugEnabled()) {
+    forcedLog(log4cxx::Level::getDebug(), msg);
   }
 }
-#endif
 
-void Logger::debug(const std::string& msg) {
-  if (isEnabledFor(log4cxx::Level::getDebug())) {
-    forcedLog(log4cxx::Level::getDebug(), msg);
+
+void Logger::error(const std::string& msg, const log4cxx::spi::LocationInfo& location) {
+  if (isErrorEnabled()) {
+     forcedLog(log4cxx::Level::getError(), msg, location);
   }
 }
 
-#if LOG4CXX_HAS_WCHAR_T
-void Logger::debug(const std::wstring& msg) {
-  if (isEnabledFor(log4cxx::Level::getDebug())) {
-    forcedLog(log4cxx::Level::getDebug(), msg);
+
+void Logger::error(const std::string& msg) const {
+  if (isErrorEnabled()) {
+     forcedLog(log4cxx::Level::getError(), msg);
   }
 }
-#endif
 
-#if LOG4CXX_HAS_WCHAR_T
-void Logger::error(const std::wstring& msg, const log4cxx::spi::LocationInfo& location) {
-  if (isEnabledFor(log4cxx::Level::getError())) {
-     forcedLog(log4cxx::Level::getError(), msg, location);
+void Logger::fatal(const std::string& msg, const log4cxx::spi::LocationInfo& location) {
+  if (isFatalEnabled()) {
+    forcedLog(log4cxx::Level::getFatal(), msg, location);
   }
 }
-#endif
 
-void Logger::error(const std::string& msg, const log4cxx::spi::LocationInfo& location) {
-  if (isEnabledFor(log4cxx::Level::getError())) {
-     forcedLog(log4cxx::Level::getError(), msg, location);
+void Logger::fatal(const std::string& msg) {
+  if (isFatalEnabled()) {
+    forcedLog(log4cxx::Level::getFatal(), msg);
   }
 }
 
-#if LOG4CXX_HAS_WCHAR_T
-void Logger::error(const std::wstring& msg) const {
-  if (isEnabledFor(log4cxx::Level::getError())) {
-     forcedLog(log4cxx::Level::getError(), msg);
+void Logger::info(const std::string& msg, const log4cxx::spi::LocationInfo& location) {
+  if (isInfoEnabled()) {
+    forcedLog(log4cxx::Level::getInfo(), msg, location);
   }
 }
-#endif
 
-void Logger::error(const std::string& msg) const {
-  if (isEnabledFor(log4cxx::Level::getError())) {
-     forcedLog(log4cxx::Level::getError(), msg);
+void Logger::info(const std::string& msg) {
+  if (isInfoEnabled()) {
+    forcedLog(log4cxx::Level::getInfo(), msg);
   }
 }
 
-#if LOG4CXX_HAS_WCHAR_T
-void Logger::fatal(const std::wstring& msg, const log4cxx::spi::LocationInfo& location) {
-  if (isEnabledFor(log4cxx::Level::getFatal())) {
-    forcedLog(log4cxx::Level::getFatal(), msg, location);
+void Logger::log(const LevelPtr& level1, const std::string& message,
+    const log4cxx::spi::LocationInfo& location) {
+    if (isEnabledFor(level1)) {
+      forcedLog(level1, message, location);
+    }
+}
+
+void Logger::log(const LevelPtr& level1, const std::string& message) {
+    if (isEnabledFor(level1)) {
+      forcedLog(level1, message);
+    }
+}
+
+void Logger::logLS(const LevelPtr& level1, const LogString& message,
+    const log4cxx::spi::LocationInfo& location) {
+    if (isEnabledFor(level1)) {
+      forcedLogLS(level1, message, location);
+    }
+}
+
+void Logger::warn(const std::string& msg, const log4cxx::spi::LocationInfo& location) {
+  if (isWarnEnabled()) {
+    forcedLog(log4cxx::Level::getWarn(), msg, location);
   }
 }
-#endif
 
-void Logger::fatal(const std::string& msg, const log4cxx::spi::LocationInfo& location) {
-  if (isEnabledFor(log4cxx::Level::getFatal())) {
-    forcedLog(log4cxx::Level::getFatal(), msg, location);
+void Logger::warn(const std::string& msg) {
+  if (isWarnEnabled()) {
+    forcedLog(log4cxx::Level::getWarn(), msg);
   }
 }
 
-#if LOG4CXX_HAS_WCHAR_T
-void Logger::fatal(const std::wstring& msg) {
-  if (isEnabledFor(log4cxx::Level::getFatal())) {
-    forcedLog(log4cxx::Level::getFatal(), msg);
+LoggerPtr Logger::getLoggerLS(const LogString& name) {
+       return LogManager::getLoggerLS(name);
+}
+
+
+
+
+#if LOG4CXX_WCHAR_T_API
+void Logger::forcedLog(const LevelPtr& level1, const std::wstring& message,
+        const LocationInfo& location)
+{
+        Pool p;
+        LOG4CXX_DECODE_WCHAR(msg, message);
+        LoggingEventPtr event(new LoggingEvent(this, level1, msg, location));
+        callAppenders(event, p);
+}
+
+void Logger::forcedLog(const LevelPtr& level1, const std::wstring& message) const
+{
+        Pool p;
+        LOG4CXX_DECODE_WCHAR(msg, message);
+        LoggingEventPtr event(new LoggingEvent(this, level1, msg,
+           LocationInfo::getLocationUnavailable()));
+        callAppenders(event, p);
+}
+
+void Logger::getName(std::wstring& rv) const {
+    Transcoder::encode(name, rv);
+}
+
+LoggerPtr Logger::getLogger(const std::wstring& name)
+{
+        return LogManager::getLogger(name);
+}
+
+LoggerPtr Logger::getLogger(const wchar_t* const name)
+{
+        return LogManager::getLogger(name);
+}
+
+void Logger::trace(const std::wstring& msg, const log4cxx::spi::LocationInfo& location) { 
+  if (isTraceEnabled()) { 
+    forcedLog(log4cxx::Level::getTrace(), msg, location); 
+  } 
+} 
+
+
+void Logger::trace(const std::wstring& msg) { 
+  if (isTraceEnabled()) { 
+    forcedLog(log4cxx::Level::getTrace(), msg); 
+  } 
+} 
+
+void Logger::debug(const std::wstring& msg, const log4cxx::spi::LocationInfo& location) {
+  if (isDebugEnabled()) {
+    forcedLog(log4cxx::Level::getDebug(), msg, location);
   }
 }
-#endif
 
-void Logger::fatal(const std::string& msg) {
-  if (isEnabledFor(log4cxx::Level::getFatal())) {
-    forcedLog(log4cxx::Level::getFatal(), msg);
+void Logger::debug(const std::wstring& msg) {
+  if (isDebugEnabled()) {
+    forcedLog(log4cxx::Level::getDebug(), msg);
   }
 }
 
-#if LOG4CXX_HAS_WCHAR_T
-void Logger::info(const std::wstring& msg, const log4cxx::spi::LocationInfo& location) {
-  if (isEnabledFor(log4cxx::Level::getInfo())) {
-    forcedLog(log4cxx::Level::getInfo(), msg, location);
+void Logger::error(const std::wstring& msg, const log4cxx::spi::LocationInfo& location) {
+  if (isErrorEnabled()) {
+     forcedLog(log4cxx::Level::getError(), msg, location);
   }
 }
-#endif
 
-void Logger::info(const std::string& msg, const log4cxx::spi::LocationInfo& location) {
-  if (isEnabledFor(log4cxx::Level::getInfo())) {
-    forcedLog(log4cxx::Level::getInfo(), msg, location);
+void Logger::error(const std::wstring& msg) const {
+  if (isErrorEnabled()) {
+     forcedLog(log4cxx::Level::getError(), msg);
   }
 }
 
-#if LOG4CXX_HAS_WCHAR_T
-void Logger::info(const std::wstring& msg) {
-  if (isEnabledFor(log4cxx::Level::getInfo())) {
-    forcedLog(log4cxx::Level::getInfo(), msg);
+void Logger::fatal(const std::wstring& msg, const log4cxx::spi::LocationInfo& location) {
+  if (isFatalEnabled()) {
+    forcedLog(log4cxx::Level::getFatal(), msg, location);
   }
 }
-#endif
 
-void Logger::info(const std::string& msg) {
-  if (isEnabledFor(log4cxx::Level::getInfo())) {
+void Logger::fatal(const std::wstring& msg) {
+  if (isFatalEnabled()) {
+    forcedLog(log4cxx::Level::getFatal(), msg);
+  }
+}
+
+void Logger::info(const std::wstring& msg, const log4cxx::spi::LocationInfo& location) {
+  if (isInfoEnabled()) {
+    forcedLog(log4cxx::Level::getInfo(), msg, location);
+  }
+}
+
+void Logger::info(const std::wstring& msg) {
+  if (isInfoEnabled()) {
     forcedLog(log4cxx::Level::getInfo(), msg);
   }
 }
 
-#if LOG4CXX_HAS_WCHAR_T
 void Logger::log(const LevelPtr& level1, const std::wstring& message,
     const log4cxx::spi::LocationInfo& location) {
     if (isEnabledFor(level1)) {
       forcedLog(level1, message, location);
     }
 }
+
+void Logger::log(const LevelPtr& level1, const std::wstring& message) {
+    if (isEnabledFor(level1)) {
+      forcedLog(level1, message);
+    }
+}
+
+void Logger::warn(const std::wstring& msg, const log4cxx::spi::LocationInfo& location) {
+  if (isWarnEnabled()) {
+    forcedLog(log4cxx::Level::getWarn(), msg, location);
+  }
+}
+
+void Logger::warn(const std::wstring& msg) {
+  if (isWarnEnabled()) {
+    forcedLog(log4cxx::Level::getWarn(), msg);
+  }
+}
+
 #endif
 
-void Logger::log(const LevelPtr& level1, const std::string& message,
+
+#if LOG4CXX_UNICHAR_API || LOG4CXX_CFSTRING_API
+void Logger::forcedLog(const LevelPtr& level1, const std::basic_string<UniChar>& message,
+        const LocationInfo& location)
+{
+        Pool p;
+        LOG4CXX_DECODE_UNICHAR(msg, message);
+        LoggingEventPtr event(new LoggingEvent(this, level1, msg, location));
+        callAppenders(event, p);
+}
+
+void Logger::forcedLog(const LevelPtr& level1, const std::basic_string<UniChar>& message) const
+{
+        Pool p;
+        LOG4CXX_DECODE_UNICHAR(msg, message);
+        LoggingEventPtr event(new LoggingEvent(this, level1, msg,
+           LocationInfo::getLocationUnavailable()));
+        callAppenders(event, p);
+}
+#endif
+
+#if LOG4CXX_UNICHAR_API
+void Logger::getName(std::basic_string<UniChar>& rv) const {
+    Transcoder::encode(name, rv);
+}
+
+LoggerPtr Logger::getLogger(const std::basic_string<UniChar>& name)
+{
+        return LogManager::getLogger(name);
+}
+
+void Logger::trace(const std::basic_string<UniChar>& msg, const log4cxx::spi::LocationInfo& location) { 
+  if (isTraceEnabled()) { 
+    forcedLog(log4cxx::Level::getTrace(), msg, location); 
+  } 
+} 
+
+
+void Logger::trace(const std::basic_string<UniChar>& msg) { 
+  if (isTraceEnabled()) { 
+    forcedLog(log4cxx::Level::getTrace(), msg); 
+  } 
+} 
+
+void Logger::debug(const std::basic_string<UniChar>& msg, const log4cxx::spi::LocationInfo& location) {
+  if (isDebugEnabled()) {
+    forcedLog(log4cxx::Level::getDebug(), msg, location);
+  }
+}
+
+void Logger::debug(const std::basic_string<UniChar>& msg) {
+  if (isDebugEnabled()) {
+    forcedLog(log4cxx::Level::getDebug(), msg);
+  }
+}
+
+void Logger::error(const std::basic_string<UniChar>& msg, const log4cxx::spi::LocationInfo& location) {
+  if (isErrorEnabled()) {
+     forcedLog(log4cxx::Level::getError(), msg, location);
+  }
+}
+
+void Logger::error(const std::basic_string<UniChar>& msg)  {
+  if (isErrorEnabled()) {
+     forcedLog(log4cxx::Level::getError(), msg);
+  }
+}
+
+void Logger::fatal(const std::basic_string<UniChar>& msg, const log4cxx::spi::LocationInfo& location) {
+  if (isFatalEnabled()) {
+    forcedLog(log4cxx::Level::getFatal(), msg, location);
+  }
+}
+
+void Logger::fatal(const std::basic_string<UniChar>& msg) {
+  if (isFatalEnabled()) {
+    forcedLog(log4cxx::Level::getFatal(), msg);
+  }
+}
+
+void Logger::info(const std::basic_string<UniChar>& msg, const log4cxx::spi::LocationInfo& location) {
+  if (isInfoEnabled()) {
+    forcedLog(log4cxx::Level::getInfo(), msg, location);
+  }
+}
+
+void Logger::info(const std::basic_string<UniChar>& msg) {
+  if (isInfoEnabled()) {
+    forcedLog(log4cxx::Level::getInfo(), msg);
+  }
+}
+
+void Logger::log(const LevelPtr& level1, const std::basic_string<UniChar>& message,
     const log4cxx::spi::LocationInfo& location) {
     if (isEnabledFor(level1)) {
       forcedLog(level1, message, location);
     }
 }
 
-#if LOG4CXX_HAS_WCHAR_T
-void Logger::log(const LevelPtr& level1, const std::wstring& message) {
+void Logger::log(const LevelPtr& level1, const std::basic_string<UniChar>& message) {
     if (isEnabledFor(level1)) {
       forcedLog(level1, message);
     }
 }
+
+void Logger::warn(const std::basic_string<UniChar>& msg, const log4cxx::spi::LocationInfo& location) {
+  if (isWarnEnabled()) {
+    forcedLog(log4cxx::Level::getWarn(), msg, location);
+  }
+}
+
+void Logger::warn(const std::basic_string<UniChar>& msg) {
+  if (isWarnEnabled()) {
+    forcedLog(log4cxx::Level::getWarn(), msg);
+  }
+}
+
 #endif
 
-void Logger::log(const LevelPtr& level1, const std::string& message) {
-    if (isEnabledFor(level1)) {
-      forcedLog(level1, message);
-    }
+
+#if LOG4CXX_CFSTRING_API
+void Logger::forcedLog(const LevelPtr& level1, const CFStringRef& message,
+        const LocationInfo& location)
+{
+        Pool p;
+        LOG4CXX_DECODE_CFSTRING(msg, message);
+        LoggingEventPtr event(new LoggingEvent(this, level1, msg, location));
+        callAppenders(event, p);
 }
 
-void Logger::logLS(const LevelPtr& level1, const LogString& message,
+void Logger::forcedLog(const LevelPtr& level1, const CFStringRef& message) const
+{
+        Pool p;
+        LOG4CXX_DECODE_CFSTRING(msg, message);
+        LoggingEventPtr event(new LoggingEvent(this, level1, msg,
+           LocationInfo::getLocationUnavailable()));
+        callAppenders(event, p);
+}
+
+void Logger::getName(CFStringRef& rv) const {
+    rv = Transcoder::encode(name);
+}
+
+LoggerPtr Logger::getLogger(const CFStringRef& name)
+{
+        return LogManager::getLogger(name);
+}
+
+void Logger::trace(const CFStringRef& msg, const log4cxx::spi::LocationInfo& location) { 
+  if (isTraceEnabled()) { 
+    forcedLog(log4cxx::Level::getTrace(), msg, location); 
+  } 
+} 
+
+
+void Logger::trace(const CFStringRef& msg) { 
+  if (isTraceEnabled()) { 
+    forcedLog(log4cxx::Level::getTrace(), msg); 
+  } 
+} 
+
+void Logger::debug(const CFStringRef& msg, const log4cxx::spi::LocationInfo& location) {
+  if (isDebugEnabled()) {
+    forcedLog(log4cxx::Level::getDebug(), msg, location);
+  }
+}
+
+void Logger::debug(const CFStringRef& msg) {
+  if (isDebugEnabled()) {
+    forcedLog(log4cxx::Level::getDebug(), msg);
+  }
+}
+
+void Logger::error(const CFStringRef& msg, const log4cxx::spi::LocationInfo& location) {
+  if (isErrorEnabled()) {
+     forcedLog(log4cxx::Level::getError(), msg, location);
+  }
+}
+
+void Logger::error(const CFStringRef& msg)  {
+  if (isErrorEnabled()) {
+     forcedLog(log4cxx::Level::getError(), msg);
+  }
+}
+
+void Logger::fatal(const CFStringRef& msg, const log4cxx::spi::LocationInfo& location) {
+  if (isFatalEnabled()) {
+    forcedLog(log4cxx::Level::getFatal(), msg, location);
+  }
+}
+
+void Logger::fatal(const CFStringRef& msg) {
+  if (isFatalEnabled()) {
+    forcedLog(log4cxx::Level::getFatal(), msg);
+  }
+}
+
+void Logger::info(const CFStringRef& msg, const log4cxx::spi::LocationInfo& location) {
+  if (isInfoEnabled()) {
+    forcedLog(log4cxx::Level::getInfo(), msg, location);
+  }
+}
+
+void Logger::info(const CFStringRef& msg) {
+  if (isInfoEnabled()) {
+    forcedLog(log4cxx::Level::getInfo(), msg);
+  }
+}
+
+void Logger::log(const LevelPtr& level1, const CFStringRef& message,
     const log4cxx::spi::LocationInfo& location) {
     if (isEnabledFor(level1)) {
-      forcedLogLS(level1, message, location);
+      forcedLog(level1, message, location);
     }
 }
 
-#if LOG4CXX_HAS_WCHAR_T
-void Logger::warn(const std::wstring& msg, const log4cxx::spi::LocationInfo& location) {
-  if (isEnabledFor(log4cxx::Level::getWarn())) {
-    forcedLog(log4cxx::Level::getWarn(), msg, location);
-  }
+void Logger::log(const LevelPtr& level1, const CFStringRef& message) {
+    if (isEnabledFor(level1)) {
+      forcedLog(level1, message);
+    }
 }
-#endif
 
-void Logger::warn(const std::string& msg, const log4cxx::spi::LocationInfo& location) {
-  if (isEnabledFor(log4cxx::Level::getWarn())) {
+void Logger::warn(const CFStringRef& msg, const log4cxx::spi::LocationInfo& location) {
+  if (isWarnEnabled()) {
     forcedLog(log4cxx::Level::getWarn(), msg, location);
   }
 }
 
-#if LOG4CXX_HAS_WCHAR_T
-void Logger::warn(const std::wstring& msg) {
-  if (isEnabledFor(log4cxx::Level::getWarn())) {
+void Logger::warn(const CFStringRef& msg) {
+  if (isWarnEnabled()) {
     forcedLog(log4cxx::Level::getWarn(), msg);
   }
 }
+
 #endif
 
-void Logger::warn(const std::string& msg) {
-  if (isEnabledFor(log4cxx::Level::getWarn())) {
-    forcedLog(log4cxx::Level::getWarn(), msg);
-  }
-}
 

Modified: logging/log4cxx/trunk/src/main/cpp/loglog.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/loglog.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/loglog.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/loglog.cpp Thu Dec 20 18:52:29 2007
@@ -25,6 +25,7 @@
 #include <log4cxx/private/log4cxx_private.h>
 #include <log4cxx/helpers/synchronized.h>
 #include <log4cxx/helpers/aprinitializer.h>
+#include <log4cxx/helpers/systemerrwriter.h>
 
 using namespace log4cxx;
 using namespace log4cxx::helpers;
@@ -60,7 +61,7 @@
 {
         synchronized sync(getInstance().mutex);
         debug(msg);
-        emit(e.what());
+        emit(e);
 }
 
 
@@ -76,7 +77,7 @@
 {
         synchronized sync(getInstance().mutex);
         error(msg);
-        emit(e.what());
+        emit(e);
 }
 
 void LogLog::setQuietMode(bool quietMode1)
@@ -97,21 +98,22 @@
 {
         synchronized sync(getInstance().mutex);
         warn(msg);
-        emit(e.what());
+        emit(e);
 }
 
-
-void LogLog::emit(const std::string& msg) {
-    std::cerr << "log4cxx: " << msg << std::endl;
-}
-
-#if LOG4CXX_HAS_WCHAR_T
-void LogLog::emit(const std::wstring& msg) {
-#if LOG4CXX_HAS_STD_WCOUT
-    std::wcerr << L"log4cxx: " << msg << std::endl;
-#else
-    LOG4CXX_ENCODE_CHAR(encoded, msg);
-    std::cerr << "log4cxx: " << encoded << std::endl;
-#endif
+void LogLog::emit(const LogString& msg) {
+    LogString out(LOG4CXX_STR("log4cxx: "));
+    out.append(msg);
+    SystemErrWriter::write(out);
+}
+
+void LogLog::emit(const std::exception& ex) {
+    LogString out(LOG4CXX_STR("log4cxx: "));
+    const char* raw = ex.what();
+    if (raw != 0) {
+        Transcoder::decode(raw, out);
+    } else {
+        out.append(LOG4CXX_STR("std::exception::what() == null"));
+    }
+    SystemErrWriter::write(out);
 }
-#endif

Modified: logging/log4cxx/trunk/src/main/cpp/logmanager.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/logmanager.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/logmanager.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/logmanager.cpp Thu Dec 20 18:52:29 2007
@@ -61,12 +61,12 @@
 {
         if((LogManager::guard != 0) && (LogManager::guard != guard1))
         {
-          throw IllegalArgumentException("Attempted to reset the LoggerFactory without possessing the guard.");
+          throw IllegalArgumentException(LOG4CXX_STR("Attempted to reset the LoggerFactory without possessing the guard."));
         }
 
         if(selector == 0)
         {
-                throw IllegalArgumentException("RepositorySelector must be non-null.");
+                throw IllegalArgumentException(LOG4CXX_STR("RepositorySelector must be non-null."));
         }
 
         LogManager::guard = guard1;
@@ -96,7 +96,7 @@
 /**
 Retrieve the appropriate Logger instance.
 */
-LoggerPtr LogManager::getLogger(const LogString& name)
+LoggerPtr LogManager::getLoggerLS(const LogString& name)
 {
         return getLoggerRepository()->getLogger(name);
 }
@@ -104,26 +104,91 @@
 /**
 Retrieve the appropriate Logger instance.
 */
-LoggerPtr LogManager::getLogger(const LogString& name,
+LoggerPtr LogManager::getLoggerLS(const LogString& name,
         const spi::LoggerFactoryPtr& factory)
 {
         // Delegate the actual manufacturing of the logger to the logger repository.
         return getLoggerRepository()->getLogger(name, factory);
 }
 
+LoggerPtr LogManager::getLogger(const std::string& name) {
+       LOG4CXX_DECODE_CHAR(n, name);
+       return getLoggerLS(n);
+}
+
+LoggerPtr LogManager::getLogger(const std::string& name,
+        const spi::LoggerFactoryPtr& factory) {
+       LOG4CXX_DECODE_CHAR(n, name);
+       return getLoggerLS(n, factory);
+}
+
 LoggerPtr LogManager::exists(const std::string& name)
 {
         LOG4CXX_DECODE_CHAR(n, name);
-        return getLoggerRepository()->exists(n);
+        return existsLS(n);
+}
+
+#if LOG4CXX_WCHAR_T_API
+LoggerPtr LogManager::getLogger(const std::wstring& name) {
+       LOG4CXX_DECODE_WCHAR(n, name);
+       return getLoggerLS(n);
+}
+
+LoggerPtr LogManager::getLogger(const std::wstring& name,
+        const spi::LoggerFactoryPtr& factory) {
+       LOG4CXX_DECODE_WCHAR(n, name);
+       return getLoggerLS(n, factory);
 }
 
-#if LOG4CXX_HAS_WCHAR_T
 LoggerPtr LogManager::exists(const std::wstring& name)
 {
         LOG4CXX_DECODE_WCHAR(n, name);
-        return getLoggerRepository()->exists(n);
+        return existsLS(n);
 }
 #endif
+
+#if LOG4CXX_UNICHAR_API
+LoggerPtr LogManager::getLogger(const std::basic_string<UniChar>& name) {
+       LOG4CXX_DECODE_UNICHAR(n, name);
+       return getLoggerLS(n);
+}
+
+LoggerPtr LogManager::getLogger(const std::basic_string<UniChar>& name,
+        const spi::LoggerFactoryPtr& factory) {
+       LOG4CXX_DECODE_UNICHAR(n, name);
+       return getLoggerLS(n, factory);
+}
+
+LoggerPtr LogManager::exists(const std::basic_string<UniChar>& name)
+{
+        LOG4CXX_DECODE_UNICHAR(n, name);
+        return existsLS(n);
+}
+#endif
+
+#if LOG4CXX_CFSTRING_API
+LoggerPtr LogManager::getLogger(const CFStringRef& name) {
+       LOG4CXX_DECODE_CFSTRING(n, name);
+       return getLoggerLS(n);
+}
+
+LoggerPtr LogManager::getLogger(const CFStringRef& name,
+        const spi::LoggerFactoryPtr& factory) {
+       LOG4CXX_DECODE_CFSTRING(n, name);
+       return getLoggerLS(n, factory);
+}
+
+LoggerPtr LogManager::exists(const CFStringRef& name)
+{
+        LOG4CXX_DECODE_CFSTRING(n, name);
+        return existsLS(n);
+}
+#endif
+
+LoggerPtr LogManager::existsLS(const LogString& name)
+{
+        return getLoggerRepository()->exists(name);
+}
 
 LoggerList LogManager::getCurrentLoggers()
 {

Modified: logging/log4cxx/trunk/src/main/cpp/logstream.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/logstream.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/logstream.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/logstream.cpp Thu Dec 20 18:52:29 2007
@@ -21,24 +21,24 @@
 #if !defined(LOG4CXX)
 #define LOG4CXX 1
 #endif
-#include <log4cxx/private/log4cxx_private.h>
+#include <log4cxx/private/log4cxx_private.h>
 
 using namespace log4cxx;
 
-logstream_base::logstream_ios_base::logstream_ios_base(std::ios_base::fmtflags initval, 
-                    int initsize) {
-#if LOG4CXX_MEMSET_IOS_BASE
-	//
-	//    the destructor for std::ios_base in the MSVC STL
-	//        releases a pointer that was not initialized in the constructor.
-	//
-    memset(this, 0, sizeof(*this));
-#endif
-    flags(initval);
-    precision(initsize);
-    width(initsize);
-                    
-}
+logstream_base::logstream_ios_base::logstream_ios_base(std::ios_base::fmtflags initval, 
+                    int initsize) {
+#if LOG4CXX_MEMSET_IOS_BASE
+	//
+	//    the destructor for std::ios_base in the MSVC STL
+	//        releases a pointer that was not initialized in the constructor.
+	//
+    memset(this, 0, sizeof(*this));
+#endif
+    flags(initval);
+    precision(initsize);
+    width(initsize);
+                    
+}
 
 
 logstream_base::logstream_base(const LoggerPtr& log,
@@ -77,18 +77,18 @@
      return stream;
 }
 
-logstream_base& logstream_base::nop(logstream_base& stream) {
-     return stream;
-}
-
+logstream_base& logstream_base::nop(logstream_base& stream) {
+     return stream;
+}
+
 void logstream_base::end_message() {
      if (isEnabled()) {
          log(logger, level, location);
      }
      erase();
-}
-
-
+}
+
+
 
 int log4cxx::logstream_base::precision(int p) {
     get_stream_state(initclear, initset, fillchar, fillset);
@@ -176,210 +176,329 @@
     }
 }
 
-
-logstream::logstream(const log4cxx::LoggerPtr& logger,
-                 const log4cxx::LevelPtr& level) : logstream_base(logger, level), stream(0) {
-}
-             
-logstream::logstream(const Ch* loggerName, 
-                const log4cxx::LevelPtr& level) 
-				: logstream_base(log4cxx::Logger::getLogger(loggerName), level), stream(0) {
-}
-
-
-logstream::logstream(const std::basic_string<Ch>& loggerName, 
-                const log4cxx::LevelPtr& level) : logstream_base(log4cxx::Logger::getLogger(loggerName), level), stream(0) {
-}
-             
-logstream::~logstream() {
-    delete stream;
-}
-
-logstream& logstream::operator<<(logstream_base& (*manip)(logstream_base&)) {
-    (*manip)(*this);
-    return *this;
-}
-
-logstream& logstream::operator<<(const LevelPtr& level) {
-    setLevel(level);
-    return *this;
-}
-
-logstream& logstream::operator<<(const log4cxx::spi::LocationInfo& newlocation) {
-   setLocation(newlocation);
-   return *this;
-}
-
-logstream& logstream::operator>>(const log4cxx::spi::LocationInfo& newlocation) {
-   setLocation(newlocation);
-   return *this;
-}
-             
-logstream& logstream::operator<<(std::ios_base& (*manip)(std::ios_base&)) {
-      logstream_base::insert(manip);
-      return *this;
-}
-            
-logstream::operator std::basic_ostream<char>&() {
-      if (stream == 0) {
-          stream = new std::basic_stringstream<Ch>();
-          refresh_stream_state();
-      }
-      return *stream;
-}
-
-void logstream::log(LoggerPtr& logger,
-                               const LevelPtr& level,
-                               const log4cxx::spi::LocationInfo& location) {
-    if (stream != 0) {
-        std::basic_string<Ch> msg = stream->str();
-        if (!msg.empty()) {
-            logger->log(level, msg, location);
-        }
-    }
-}
-              
-
-void logstream::erase() {
-  if (stream != 0) {
-      std::basic_string<Ch> emptyStr;
-      stream->str(emptyStr);
-  }
-}
-              
-
-void logstream::get_stream_state(std::ios_base& base,
-                            std::ios_base& mask,
-                            int& fill,
-                            bool& fillSet) const {
-  if (stream != 0) {
-      std::ios_base::fmtflags flags = stream->flags();
-      base.flags(flags);
-      mask.flags(flags);
-      int width = stream->width();
-      base.width(width);
-      mask.width(width);
-      int precision = stream->precision();
-      base.precision(precision);
-      mask.precision(precision);
-      fill = stream->fill();
-      fillSet = true;
-  }
-}
-
-void logstream::refresh_stream_state() {
-	if (stream != 0) {
-		int fillchar;
-		if(logstream_base::set_stream_state(*stream, fillchar)) {
-			stream->fill(fillchar);
-		}
-	}
-}
-              
-
-#if LOG4CXX_HAS_WCHAR_T
-
-wlogstream::wlogstream(const log4cxx::LoggerPtr& logger,
-                 const log4cxx::LevelPtr& level) : logstream_base(logger, level), stream(0) {
-}
-             
-wlogstream::wlogstream(const Ch* loggerName, 
-                const log4cxx::LevelPtr& level) 
-				: logstream_base(log4cxx::Logger::getLogger(loggerName), level), stream(0) {
-}
-
-
-wlogstream::wlogstream(const std::basic_string<Ch>& loggerName, 
-                const log4cxx::LevelPtr& level) : logstream_base(log4cxx::Logger::getLogger(loggerName), level), stream(0) {
-}
-             
-wlogstream::~wlogstream() {
-    delete stream;
-}
-
-wlogstream& wlogstream::operator<<(logstream_base& (*manip)(logstream_base&)) {
-    (*manip)(*this);
-    return *this;
-}
-
-wlogstream& wlogstream::operator<<(const LevelPtr& level) {
-    setLevel(level);
-    return *this;
-}
-
-wlogstream& wlogstream::operator<<(const log4cxx::spi::LocationInfo& newlocation) {
-   setLocation(newlocation);
-   return *this;
-}
-
-wlogstream& wlogstream::operator>>(const log4cxx::spi::LocationInfo& newlocation) {
-   setLocation(newlocation);
-   return *this;
-}
-
-
-
-             
-wlogstream& wlogstream::operator<<(std::ios_base& (*manip)(std::ios_base&)) {
-      logstream_base::insert(manip);
-      return *this;
-}
-            
-wlogstream::operator std::basic_ostream<wchar_t>&() {
-      if (stream == 0) {
-          stream = new std::basic_stringstream<Ch>();
-          refresh_stream_state();
-      }
-      return *stream;
-}
-
-void wlogstream::log(LoggerPtr& logger,
-                               const LevelPtr& level,
-                               const log4cxx::spi::LocationInfo& location) {
-    if (stream != 0) {
-        std::basic_string<Ch> msg = stream->str();
-        if (!msg.empty()) {
-            logger->log(level, msg, location);
-        }
-    }
-}
-              
-
-void wlogstream::erase() {
-  if (stream != 0) {
-      std::basic_string<Ch> emptyStr;
-      stream->str(emptyStr);
-  }
-}
-              
-
-void wlogstream::get_stream_state(std::ios_base& base,
-                            std::ios_base& mask,
-                            int& fill,
-                            bool& fillSet) const {
-  if (stream != 0) {
-      std::ios_base::fmtflags flags = stream->flags();
-      base.flags(flags);
-      mask.flags(flags);
-      int width = stream->width();
-      base.width(width);
-      mask.width(width);
-      int precision = stream->precision();
-      base.precision(precision);
-      mask.precision(precision);
-      fill = stream->fill();
-      fillSet = true;
-  }
-}
-
-void wlogstream::refresh_stream_state() {
-	if (stream != 0) {
-		int fillchar;
-		if(logstream_base::set_stream_state(*stream, fillchar)) {
-			stream->fill(fillchar);
-		}
-	}
-}
-#endif
-              
-
+
+logstream::logstream(const log4cxx::LoggerPtr& logger,
+                 const log4cxx::LevelPtr& level) : logstream_base(logger, level), stream(0) {
+}
+             
+logstream::logstream(const Ch* loggerName, 
+                const log4cxx::LevelPtr& level) 
+				: logstream_base(log4cxx::Logger::getLogger(loggerName), level), stream(0) {
+}
+
+
+logstream::logstream(const std::basic_string<Ch>& loggerName, 
+                const log4cxx::LevelPtr& level) : logstream_base(log4cxx::Logger::getLogger(loggerName), level), stream(0) {
+}
+             
+logstream::~logstream() {
+    delete stream;
+}
+
+logstream& logstream::operator<<(logstream_base& (*manip)(logstream_base&)) {
+    (*manip)(*this);
+    return *this;
+}
+
+logstream& logstream::operator<<(const LevelPtr& level) {
+    setLevel(level);
+    return *this;
+}
+
+logstream& logstream::operator<<(const log4cxx::spi::LocationInfo& newlocation) {
+   setLocation(newlocation);
+   return *this;
+}
+
+logstream& logstream::operator>>(const log4cxx::spi::LocationInfo& newlocation) {
+   setLocation(newlocation);
+   return *this;
+}
+             
+logstream& logstream::operator<<(std::ios_base& (*manip)(std::ios_base&)) {
+      logstream_base::insert(manip);
+      return *this;
+}
+            
+logstream::operator std::basic_ostream<char>&() {
+      if (stream == 0) {
+          stream = new std::basic_stringstream<Ch>();
+          refresh_stream_state();
+      }
+      return *stream;
+}
+
+void logstream::log(LoggerPtr& logger,
+                               const LevelPtr& level,
+                               const log4cxx::spi::LocationInfo& location) {
+    if (stream != 0) {
+        std::basic_string<Ch> msg = stream->str();
+        if (!msg.empty()) {
+            logger->log(level, msg, location);
+        }
+    }
+}
+              
+
+void logstream::erase() {
+  if (stream != 0) {
+      std::basic_string<Ch> emptyStr;
+      stream->str(emptyStr);
+  }
+}
+              
+
+void logstream::get_stream_state(std::ios_base& base,
+                            std::ios_base& mask,
+                            int& fill,
+                            bool& fillSet) const {
+  if (stream != 0) {
+      std::ios_base::fmtflags flags = stream->flags();
+      base.flags(flags);
+      mask.flags(flags);
+      int width = stream->width();
+      base.width(width);
+      mask.width(width);
+      int precision = stream->precision();
+      base.precision(precision);
+      mask.precision(precision);
+      fill = stream->fill();
+      fillSet = true;
+  }
+}
+
+void logstream::refresh_stream_state() {
+	if (stream != 0) {
+		int fillchar;
+		if(logstream_base::set_stream_state(*stream, fillchar)) {
+			stream->fill(fillchar);
+		}
+	}
+}
+              
+
+#if LOG4CXX_WCHAR_T_API
+
+wlogstream::wlogstream(const log4cxx::LoggerPtr& logger,
+                 const log4cxx::LevelPtr& level) : logstream_base(logger, level), stream(0) {
+}
+             
+wlogstream::wlogstream(const Ch* loggerName, 
+                const log4cxx::LevelPtr& level) 
+				: logstream_base(log4cxx::Logger::getLogger(loggerName), level), stream(0) {
+}
+
+
+wlogstream::wlogstream(const std::basic_string<Ch>& loggerName, 
+                const log4cxx::LevelPtr& level) : logstream_base(log4cxx::Logger::getLogger(loggerName), level), stream(0) {
+}
+             
+wlogstream::~wlogstream() {
+    delete stream;
+}
+
+wlogstream& wlogstream::operator<<(logstream_base& (*manip)(logstream_base&)) {
+    (*manip)(*this);
+    return *this;
+}
+
+wlogstream& wlogstream::operator<<(const LevelPtr& level) {
+    setLevel(level);
+    return *this;
+}
+
+wlogstream& wlogstream::operator<<(const log4cxx::spi::LocationInfo& newlocation) {
+   setLocation(newlocation);
+   return *this;
+}
+
+wlogstream& wlogstream::operator>>(const log4cxx::spi::LocationInfo& newlocation) {
+   setLocation(newlocation);
+   return *this;
+}
+
+
+
+             
+wlogstream& wlogstream::operator<<(std::ios_base& (*manip)(std::ios_base&)) {
+      logstream_base::insert(manip);
+      return *this;
+}
+            
+wlogstream::operator std::basic_ostream<wchar_t>&() {
+      if (stream == 0) {
+          stream = new std::basic_stringstream<Ch>();
+          refresh_stream_state();
+      }
+      return *stream;
+}
+
+void wlogstream::log(LoggerPtr& logger,
+                               const LevelPtr& level,
+                               const log4cxx::spi::LocationInfo& location) {
+    if (stream != 0) {
+        std::basic_string<Ch> msg = stream->str();
+        if (!msg.empty()) {
+            logger->log(level, msg, location);
+        }
+    }
+}
+              
+
+void wlogstream::erase() {
+  if (stream != 0) {
+      std::basic_string<Ch> emptyStr;
+      stream->str(emptyStr);
+  }
+}
+              
+
+void wlogstream::get_stream_state(std::ios_base& base,
+                            std::ios_base& mask,
+                            int& fill,
+                            bool& fillSet) const {
+  if (stream != 0) {
+      std::ios_base::fmtflags flags = stream->flags();
+      base.flags(flags);
+      mask.flags(flags);
+      int width = stream->width();
+      base.width(width);
+      mask.width(width);
+      int precision = stream->precision();
+      base.precision(precision);
+      mask.precision(precision);
+      fill = stream->fill();
+      fillSet = true;
+  }
+}
+
+void wlogstream::refresh_stream_state() {
+	if (stream != 0) {
+		int fillchar;
+		if(logstream_base::set_stream_state(*stream, fillchar)) {
+			stream->fill(fillchar);
+		}
+	}
+}
+#endif
+
+#if LOG4CXX_UNICHAR_API
+ulogstream::ulogstream(const Ch* loggerName, 
+                const log4cxx::LevelPtr& level) 
+				: logstream_base(log4cxx::Logger::getLogger(loggerName), level), stream(0) {
+}
+
+
+ulogstream::ulogstream(const std::basic_string<Ch>& loggerName, 
+                const log4cxx::LevelPtr& level) : logstream_base(log4cxx::Logger::getLogger(loggerName), level), stream(0) {
+}
+#endif
+
+#if LOG4CXX_CFSTRING_API
+ulogstream::ulogstream(const CFStringRef& loggerName, 
+                const log4cxx::LevelPtr& level) 
+				: logstream_base(log4cxx::Logger::getLogger(loggerName), level), stream(0) {
+}
+
+#endif
+              
+
+#if LOG4CXX_UNICHAR_API || LOG4CXX_CFSTRING_API
+
+ulogstream::ulogstream(const log4cxx::LoggerPtr& logger,
+                 const log4cxx::LevelPtr& level) : logstream_base(logger, level), stream(0) {
+}
+             
+             
+             
+ulogstream::~ulogstream() {
+    delete stream;
+}
+
+ulogstream& ulogstream::operator<<(logstream_base& (*manip)(logstream_base&)) {
+    (*manip)(*this);
+    return *this;
+}
+
+ulogstream& ulogstream::operator<<(const LevelPtr& level) {
+    setLevel(level);
+    return *this;
+}
+
+ulogstream& ulogstream::operator<<(const log4cxx::spi::LocationInfo& newlocation) {
+   setLocation(newlocation);
+   return *this;
+}
+
+ulogstream& ulogstream::operator>>(const log4cxx::spi::LocationInfo& newlocation) {
+   setLocation(newlocation);
+   return *this;
+}
+
+
+
+             
+ulogstream& ulogstream::operator<<(std::ios_base& (*manip)(std::ios_base&)) {
+      logstream_base::insert(manip);
+      return *this;
+}
+            
+ulogstream::operator std::basic_ostream<UniChar>&() {
+      if (stream == 0) {
+          stream = new std::basic_stringstream<Ch>();
+          refresh_stream_state();
+      }
+      return *stream;
+}
+
+void ulogstream::log(LoggerPtr& logger,
+                               const LevelPtr& level,
+                               const log4cxx::spi::LocationInfo& location) {
+    if (stream != 0) {
+        std::basic_string<Ch> msg = stream->str();
+        if (!msg.empty() && logger->isEnabledFor(level)) {
+            LOG4CXX_DECODE_UNICHAR(lsmsg, msg);
+            logger->forcedLogLS(level, lsmsg, location);
+        }
+    }
+}
+              
+
+void ulogstream::erase() {
+  if (stream != 0) {
+      std::basic_string<Ch> emptyStr;
+      stream->str(emptyStr);
+  }
+}
+              
+
+void ulogstream::get_stream_state(std::ios_base& base,
+                            std::ios_base& mask,
+                            int& fill,
+                            bool& fillSet) const {
+  if (stream != 0) {
+      std::ios_base::fmtflags flags = stream->flags();
+      base.flags(flags);
+      mask.flags(flags);
+      int width = stream->width();
+      base.width(width);
+      mask.width(width);
+      int precision = stream->precision();
+      base.precision(precision);
+      mask.precision(precision);
+      fill = stream->fill();
+      fillSet = true;
+  }
+}
+
+void ulogstream::refresh_stream_state() {
+	if (stream != 0) {
+		int fillchar;
+		if(logstream_base::set_stream_state(*stream, fillchar)) {
+			stream->fill(fillchar);
+		}
+	}
+}
+#endif
+              
+

Modified: logging/log4cxx/trunk/src/main/cpp/mdc.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/mdc.cpp?rev=606089&r1=606088&r2=606089&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/mdc.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/mdc.cpp Thu Dec 20 18:52:29 2007
@@ -19,39 +19,38 @@
 #include <log4cxx/helpers/transcoder.h>
 #include <log4cxx/helpers/threadspecificdata.h>
 
+#if LOG4CXX_CFSTRING_API
+#include <CoreFoundation/CFString.h>
+#endif
+
+
 using namespace log4cxx;
 using namespace log4cxx::helpers;
 
-MDC::MDC(const LogString& key1, const LogString& value) : key(key1)
+MDC::MDC(const std::string& key1, const std::string& value) : key()
 {
-        put(key1, value);
+        Transcoder::decode(key1, key);
+        LOG4CXX_DECODE_CHAR(v, value);
+        putLS(key, v);
 }
 
 MDC::~MDC()
 {
-        remove(key);
+        LogString prevVal;
+        remove(key, prevVal);
 }
 
-void MDC::putLogString(const LogString& key, const LogString& value)
+void MDC::putLS(const LogString& key, const LogString& value)
 {
         Map& map = ThreadSpecificData::getCurrentThreadMap();
         map[key] = value;
 }
 
-#if LOG4CXX_HAS_WCHAR_T
-void MDC::put(const std::wstring& key, const std::wstring& value)
-{
-        LOG4CXX_DECODE_WCHAR(lkey, key);
-        LOG4CXX_DECODE_WCHAR(lvalue, value);
-        putLogString(lkey, lvalue);
-}
-#endif
-
 void MDC::put(const std::string& key, const std::string& value)
 {
         LOG4CXX_DECODE_CHAR(lkey, key);
         LOG4CXX_DECODE_CHAR(lvalue, value);
-        putLogString(lkey, lvalue);
+        putLS(lkey, lvalue);
 }
 
 bool MDC::get(const LogString& key, LogString& value)
@@ -77,19 +76,6 @@
         return std::string();
 }
 
-#if LOG4CXX_HAS_WCHAR_T
-std::wstring MDC::get(const std::wstring& key)
-{
-        LOG4CXX_DECODE_WCHAR(lkey, key);
-        LogString lvalue;
-        if (get(lkey, lvalue)) {
-          LOG4CXX_ENCODE_WCHAR(value, lvalue);
-          return value;
-        }
-        return std::wstring();
-}
-#endif
-
 bool MDC::remove(const LogString& key, LogString& value)
 {
         Map::iterator it;
@@ -114,7 +100,41 @@
         return std::string();
 }
 
-#if LOG4CXX_HAS_WCHAR_T
+
+void MDC::clear()
+{
+        Map& map = ThreadSpecificData::getCurrentThreadMap();
+        map.erase(map.begin(), map.end());
+}
+
+
+#if LOG4CXX_WCHAR_T_API
+MDC::MDC(const std::wstring& key1, const std::wstring& value) : key()
+{
+        Transcoder::decode(key1, key);
+        LOG4CXX_DECODE_WCHAR(v, value);
+        putLS(key, v);
+}
+
+std::wstring MDC::get(const std::wstring& key)
+{
+        LOG4CXX_DECODE_WCHAR(lkey, key);
+        LogString lvalue;
+        if (get(lkey, lvalue)) {
+          LOG4CXX_ENCODE_WCHAR(value, lvalue);
+          return value;
+        }
+        return std::wstring();
+}
+
+void MDC::put(const std::wstring& key, const std::wstring& value)
+{
+        LOG4CXX_DECODE_WCHAR(lkey, key);
+        LOG4CXX_DECODE_WCHAR(lvalue, value);
+        putLS(lkey, lvalue);
+}
+
+
 std::wstring MDC::remove(const std::wstring& key)
 {
         LOG4CXX_DECODE_WCHAR(lkey, key);
@@ -127,9 +147,80 @@
 }
 #endif
 
-void MDC::clear()
+#if LOG4CXX_UNICHAR_API
+MDC::MDC(const std::basic_string<UniChar>& key1, const std::basic_string<UniChar>& value) {
+        Transcoder::decode(key1, key);
+        LOG4CXX_DECODE_UNICHAR(v, value);
+        putLS(key, v);
+}
+
+std::basic_string<UniChar> MDC::get(const std::basic_string<UniChar>& key)
 {
-        Map& map = ThreadSpecificData::getCurrentThreadMap();
-        map.erase(map.begin(), map.end());
+        LOG4CXX_DECODE_UNICHAR(lkey, key);
+        LogString lvalue;
+        if (get(lkey, lvalue)) {
+          LOG4CXX_ENCODE_UNICHAR(value, lvalue);
+          return value;
+        }
+        return std::basic_string<UniChar>();
+}
+
+void MDC::put(const std::basic_string<UniChar>& key, const std::basic_string<UniChar>& value)
+{
+        LOG4CXX_DECODE_UNICHAR(lkey, key);
+        LOG4CXX_DECODE_UNICHAR(lvalue, value);
+        putLS(lkey, lvalue);
+}
+
+
+std::basic_string<UniChar> MDC::remove(const std::basic_string<UniChar>& key)
+{
+        LOG4CXX_DECODE_UNICHAR(lkey, key);
+        LogString lvalue;
+        if (remove(lkey, lvalue)) {
+          LOG4CXX_ENCODE_UNICHAR(value, lvalue);
+          return value;
+        }
+        return std::basic_string<UniChar>();
 }
+#endif
+
+#if LOG4CXX_CFSTRING_API
+
+MDC::MDC(const CFStringRef& key1, const CFStringRef& value) {
+        Transcoder::decode(key1, key);
+        LOG4CXX_DECODE_CFSTRING(v, value);
+        putLS(key, v);
+}
+
+CFStringRef MDC::get(const CFStringRef& key)
+{
+        LOG4CXX_DECODE_CFSTRING(lkey, key);
+        LogString lvalue;
+        if (get(lkey, lvalue)) {
+          LOG4CXX_ENCODE_CFSTRING(value, lvalue);
+          return value;
+        }
+        return CFSTR("");
+}
+
+void MDC::put(const CFStringRef& key, const CFStringRef& value)
+{
+        LOG4CXX_DECODE_CFSTRING(lkey, key);
+        LOG4CXX_DECODE_CFSTRING(lvalue, value);
+        putLS(lkey, lvalue);
+}
+
+
+CFStringRef MDC::remove(const CFStringRef& key)
+{
+        LOG4CXX_DECODE_CFSTRING(lkey, key);
+        LogString lvalue;
+        if (remove(lkey, lvalue)) {
+          LOG4CXX_ENCODE_CFSTRING(value, lvalue);
+          return value;
+        }
+        return CFSTR("");
+}
+#endif