Author: afester
Date: Thu Dec 22 11:05:10 2005
New Revision: 358603

URL: http://svn.apache.org/viewcvs?rev=358603&view=rev
Log:
LOGCXX-123: fixed build failure on UNIX for the logchar=UTF8 build

Modified:
    logging/log4cxx/trunk/include/log4cxx/helpers/simpledateformat.h
    logging/log4cxx/trunk/include/log4cxx/stream.h
    logging/log4cxx/trunk/src/logstream.cpp
    logging/log4cxx/trunk/src/simpledateformat.cpp

Modified: logging/log4cxx/trunk/include/log4cxx/helpers/simpledateformat.h
URL: 
http://svn.apache.org/viewcvs/logging/log4cxx/trunk/include/log4cxx/helpers/simpledateformat.h?rev=358603&r1=358602&r2=358603&view=diff
==============================================================================
--- logging/log4cxx/trunk/include/log4cxx/helpers/simpledateformat.h (original)
+++ logging/log4cxx/trunk/include/log4cxx/helpers/simpledateformat.h Thu Dec 22 
11:05:10 2005
@@ -27,21 +27,21 @@
 {
         namespace helpers
         {
+          class PatternToken;
 
           /**
-          Concrete class for formatting and parsing dates in a
-          locale-sensitive manner.
-
-          */
+           * Concrete class for formatting and parsing dates in a
+           * locale-sensitive manner.
+           */
           class LOG4CXX_EXPORT SimpleDateFormat : public DateFormat
           {
           public:
                   /**
-                  Constructs a DateFormat using the given pattern and the 
default
-                  time zone.
-
-                  @param pattern the pattern describing the date and time 
format
-                  */
+                   * Constructs a DateFormat using the given pattern and the 
default
+                   * time zone.
+                   *
+                   * @param pattern the pattern describing the date and time 
format
+                   */
                   SimpleDateFormat(const LogString& pattern);
                   SimpleDateFormat(const LogString& pattern, const 
std::locale* locale);
                   ~SimpleDateFormat();
@@ -51,67 +51,22 @@
                                       log4cxx::helpers::Pool& p) const;
 
                   /**
-                  *    Set time zone.
-                  * @param zone new time zone.
-                  */
+                   * Set time zone.
+                   * @param zone new time zone.
+                   */
                   void setTimeZone(const TimeZonePtr& zone);
 
-
-                  /**
-                  * Abstract inner class representing one format token
-                  * (one or more instances of a character).
-                  */
-                  class PatternToken {
-                  public:
-                       /**
-                        *   Constructor.
-                        */
-                       PatternToken();
-                       /**
-                       * Destructor.
-                       */
-                       virtual ~PatternToken();
-
-                       /**
-                       * Sets the time zone.
-                       * @param zone new time zone.
-                       */
-                       virtual void setTimeZone(const TimeZonePtr& zone);
-
-                      /**
-                      * Appends the formatted content to the string.
-                      * @param s string to which format contribution is 
appended.
-                      * @param date exploded date/time.
-                      * @param p memory pool.
-                      */
-                       virtual void format(LogString& s,
-                                           const apr_time_exp_t& date,
-                                           log4cxx::helpers::Pool& p) const = 
0;
-
-
-
-                  private:
-                      /**
-                      *    Private copy constructor.
-                      */
-                       PatternToken(const PatternToken&);
-                       /**
-                       * Private assignment operator.
-                       */
-                       PatternToken& operator=(const PatternToken&);
-                  };
-
-
-
           private:
                   /**
-                  *    Time zone.
-                  */
+                   * Time zone.
+                   */
                   TimeZonePtr timeZone;
+
                   /**
-                  * List of tokens.
-                  */
+                   * List of tokens.
+                   */
                   typedef std::vector<PatternToken*> PatternTokenList;
+
                   PatternTokenList pattern;
           };
 

Modified: logging/log4cxx/trunk/include/log4cxx/stream.h
URL: 
http://svn.apache.org/viewcvs/logging/log4cxx/trunk/include/log4cxx/stream.h?rev=358603&r1=358602&r2=358603&view=diff
==============================================================================
--- logging/log4cxx/trunk/include/log4cxx/stream.h (original)
+++ logging/log4cxx/trunk/include/log4cxx/stream.h Thu Dec 22 11:05:10 2005
@@ -151,6 +151,10 @@
   ::log4cxx::logstream& lhs,
   const char* rhs);
 
+LOG4CXX_EXPORT ::log4cxx::logstream& operator<<(
+   ::log4cxx::logstream& lhs,
+   const ::log4cxx::LogString& rhs);
+
 
 LOG4CXX_EXPORT ::log4cxx::logstream& operator<<(
    ::log4cxx::logstream& lhs,

Modified: logging/log4cxx/trunk/src/logstream.cpp
URL: 
http://svn.apache.org/viewcvs/logging/log4cxx/trunk/src/logstream.cpp?rev=358603&r1=358602&r2=358603&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/logstream.cpp (original)
+++ logging/log4cxx/trunk/src/logstream.cpp Thu Dec 22 11:05:10 2005
@@ -37,6 +37,26 @@
 }
 #endif
 
+#if LOG4CXX_HAS_WCHAR_T
+log4cxx::logstream& operator<<(
+  ::log4cxx::logstream& lhs,
+  const ::log4cxx::LogString& rhs) {
+  LOG4CXX_DECODE_CHAR(tmp, rhs);
+  LOG4CXX_ENCODE_WCHAR(msg, tmp);
+  lhs.getStream() << msg;
+  return lhs;
+}
+#else
+log4cxx::logstream& operator<<(
+  ::log4cxx::logstream& lhs,
+  const ::log4cxx::LogString& rhs) {
+  LOG4CXX_DECODE_CHAR(tmp, rhs);
+  LOG4CXX_ENCODE_CHAR(msg, tmp);
+  lhs.getStream() << msg;
+  return lhs;
+}
+#endif
+
 ::log4cxx::logstream& operator<<(
    ::log4cxx::logstream& lhs,
    const ::log4cxx::spi::LocationInfo& rhs) {

Modified: logging/log4cxx/trunk/src/simpledateformat.cpp
URL: 
http://svn.apache.org/viewcvs/logging/log4cxx/trunk/src/simpledateformat.cpp?rev=358603&r1=358602&r2=358603&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/simpledateformat.cpp (original)
+++ logging/log4cxx/trunk/src/simpledateformat.cpp Thu Dec 22 11:05:10 2005
@@ -24,29 +24,20 @@
 #include <locale>
 #endif
 
+
+/*
+ * implementation works on localechar sequences to avoid too many calls
+ * to Transformer::decode() when the date is formatted.
+ */
 #if LOG4CXX_HAS_STD_WLOCALE && LOG4CXX_HAS_WCHAR_T
-typedef wchar_t localechar;
-    #define LOG4CXX_LOCALE_STR(str) L ## str
-  #else
-typedef char localechar;
-    #define LOG4CXX_LOCALE_STR(str) str
+  typedef wchar_t localechar;
+  #define LOG4CXX_LOCALE_STR(str) L ## str
+#else
+  typedef char localechar;
+  #define LOG4CXX_LOCALE_STR(str) str
 #endif
 
-
-
-SimpleDateFormat::PatternToken::PatternToken()
-{
-}
-
-SimpleDateFormat::PatternToken::~PatternToken()
-{
-}
-
-void SimpleDateFormat::PatternToken::setTimeZone( const TimeZonePtr & zone )
-{
-}
-
-
+typedef std::basic_string < localechar > LocaleString;
 
 
 namespace log4cxx
@@ -56,25 +47,34 @@
     namespace SimpleDateFormatImpl
     {
 
-
-
-
 #if LOG4CXX_HAS_STD_LOCALE
-      void renderFacet( const std::locale & locale, std::basic_ostream < 
localechar > & buffer, const tm * time,
-           const localechar spec )
+     /**
+      * Renders a time structure according to a specific format.
+      *
+      * @param locale The locale to use for the formatting.
+      * @param buffer The buffer which retrieves the result.
+      * @param time The time structure to render.
+      * @param spec The format for rendering the structure.
+      */
+     void renderFacet( const std::locale & locale, std::basic_ostream < 
localechar > & buffer, 
+                       const tm * time, const localechar spec )
            {
-
        #if defined(_USEFAC)
              _USEFAC( locale, std::time_put < localechar > ).put( buffer, 
buffer, time, spec );
        #else
              std::use_facet < std::time_put < localechar > > ( locale ).put( 
buffer, buffer, buffer.fill(), time, spec );
        #endif
-
       }
 #endif
 
-
-      void renderFacet( LogString & result, apr_time_exp_t * tm, const char * 
format )
+      /**
+       * Renders an APR time structure according to a specific format.
+       *
+       * @param result The LogString which retrieves the result.
+       * @param tm The APR time structure to render.
+       * @param format The format for rendering the structure.
+       */
+      void renderFacet( LocaleString & res, apr_time_exp_t * tm, const char * 
format )
       {
         enum
         {
@@ -89,25 +89,78 @@
           buf[0] = '?';
           retsize = 1;
         }
+        LogString result;
         Transcoder::decode( buf, retsize, result );
+        Transcoder::encode( result, res );
       }
 
     }
+
+    /**
+     * Abstract inner class representing one format token
+     * (one or more instances of a character).
+     */
+    class PatternToken {
+    public:
+          PatternToken();
+
+          virtual ~PatternToken();
+
+          /**
+           * Sets the time zone.
+           * @param zone new time zone.
+           */
+          virtual void setTimeZone(const TimeZonePtr& zone);
+
+          /**
+           * Appends the formatted content to the string.
+           * @param s string to which format contribution is appended.
+           * @param date exploded date/time.
+           * @param p memory pool.
+           */
+          virtual void format(LocaleString& s,
+                              const apr_time_exp_t& date,
+                              log4cxx::helpers::Pool& p) const = 0;
+
+    private:
+          /**
+           * Private copy constructor.
+           */
+          PatternToken(const PatternToken&);
+
+          /**
+           * Private assignment operator.
+           */
+          PatternToken& operator=(const PatternToken&);
+    };
+
   }
 }
 
 using namespace log4cxx::helpers::SimpleDateFormatImpl;
+using namespace log4cxx::helpers;
 
+PatternToken::PatternToken()
+{
+}
 
+PatternToken::~PatternToken()
+{
+}
 
-class LiteralToken : public SimpleDateFormat::PatternToken
+void PatternToken::setTimeZone( const TimeZonePtr & zone )
+{
+}
+
+
+class LiteralToken : public PatternToken
 {
 public:
   LiteralToken( localechar ch, int count ) : ch( ch ), count( count )
   {
   }
 
-  void format( std::basic_string < localechar > & s, const apr_time_exp_t & 
tm, Pool & p ) const
+  void format( LocaleString& s, const apr_time_exp_t & tm, Pool & p ) const
   {
     s.append( count, ch );
   }
@@ -119,14 +172,14 @@
 
 
 
-class EraToken : public SimpleDateFormat::PatternToken
+class EraToken : public PatternToken
 {
 public:
   EraToken( int count, const std::locale * locale )
   {
   }
 
-  void format( std::basic_string < localechar > & s, const apr_time_exp_t & 
tm, Pool & p ) const
+  void format( LocaleString& s, const apr_time_exp_t & tm, Pool & p ) const
   {
     s.append( LOG4CXX_LOCALE_STR( "AD" ) );
   }
@@ -134,7 +187,7 @@
 
 
 
-class NumericToken : public SimpleDateFormat::PatternToken
+class NumericToken : public PatternToken
 {
 public:
   NumericToken( size_t width ) : width( width )
@@ -143,7 +196,7 @@
 
   virtual int getField( const apr_time_exp_t & tm ) const = 0;
 
-  void format( std::basic_string < localechar > & s, const apr_time_exp_t & 
tm, Pool & p ) const
+  void format( LocaleString& s, const apr_time_exp_t & tm, Pool & p ) const
   {
     size_t initialLength = s.length();
     StringHelper::toString( getField( tm ), p, s );
@@ -191,7 +244,7 @@
 
 
 
-class AbbreviatedMonthNameToken : public SimpleDateFormat::PatternToken
+class AbbreviatedMonthNameToken : public PatternToken
 {
 public:
   AbbreviatedMonthNameToken( int width, const std::locale * locale ) : names( 
12 )
@@ -207,7 +260,7 @@
       {
         time.tm_mon = imon;
         renderFacet( * locale, buffer, & time, LOG4CXX_LOCALE_STR( 'b' ) );
-        std::basic_string < localechar > monthnames( buffer.str() );
+        LocaleString monthnames( buffer.str() );
         names[imon] = monthnames.substr( start );
         start = monthnames.length();
       }
@@ -223,19 +276,19 @@
     }
   }
 
-  void format( std::basic_string < localechar > & s, const apr_time_exp_t & 
tm, Pool & p ) const
+  void format( LocaleString& s, const apr_time_exp_t & tm, Pool & p ) const
   {
     s.append( names[tm.tm_mon] );
   }
 
 private:
-  std::vector < std::basic_string < localechar > > names;
+  std::vector < LocaleString > names;
 
 };
 
 
 
-class FullMonthNameToken : public SimpleDateFormat::PatternToken
+class FullMonthNameToken : public PatternToken
 {
 public:
   FullMonthNameToken( int width, const std::locale * locale ) : names( 12 )
@@ -251,7 +304,7 @@
       {
         time.tm_mon = imon;
         renderFacet( * locale, buffer, & time, LOG4CXX_LOCALE_STR( 'B' ) );
-        std::basic_string < localechar > monthnames( buffer.str() );
+        LocaleString monthnames( buffer.str() );
         names[imon] = monthnames.substr( start );
         start = monthnames.length();
       }
@@ -267,14 +320,13 @@
     }
   }
 
-  void format( std::basic_string < localechar > & s, const apr_time_exp_t & 
tm, Pool & p ) const
+  void format( LocaleString& s, const apr_time_exp_t & tm, Pool & p ) const
   {
     s.append( names[tm.tm_mon] );
   }
 
 private:
-  std::vector < std::basic_string < localechar > > names;
-
+  std::vector < LocaleString > names;
 };
 
 
@@ -354,7 +406,7 @@
 
 
 
-class AbbreviatedDayNameToken : public SimpleDateFormat::PatternToken
+class AbbreviatedDayNameToken : public PatternToken
 {
 public:
   AbbreviatedDayNameToken( int width, const std::locale * locale ) : names( 7 )
@@ -370,7 +422,7 @@
       {
         time.tm_wday = iday;
         renderFacet( * locale, buffer, & time, LOG4CXX_LOCALE_STR( 'a' ) );
-        std::basic_string < localechar > daynames( buffer.str() );
+        LocaleString daynames( buffer.str() );
         names[iday] = daynames.substr( start );
         start = daynames.length();
       }
@@ -386,19 +438,19 @@
     }
   }
 
-  void format( std::basic_string < localechar > & s, const apr_time_exp_t & 
tm, Pool & p ) const
+  void format( LocaleString& s, const apr_time_exp_t & tm, Pool & p ) const
   {
     s.append( names[tm.tm_wday] );
   }
 
 private:
-  std::vector < std::basic_string < localechar > > names;
+  std::vector < LocaleString > names;
 
 };
 
 
 
-class FullDayNameToken : public SimpleDateFormat::PatternToken
+class FullDayNameToken : public PatternToken
 {
 public:
   FullDayNameToken( int width, const std::locale * locale ) : names( 7 )
@@ -414,7 +466,7 @@
       {
         time.tm_wday = iday;
         renderFacet( * locale, buffer, & time, LOG4CXX_LOCALE_STR( 'A' ) );
-        std::basic_string < localechar > daynames( buffer.str() );
+        LocaleString daynames( buffer.str() );
         names[iday] = daynames.substr( start );
         start = daynames.length();
       }
@@ -430,13 +482,13 @@
     }
   }
 
-  void format( std::basic_string < localechar > & s, const apr_time_exp_t & 
tm, Pool & p ) const
+  void format( LocaleString& s, const apr_time_exp_t & tm, Pool & p ) const
   {
     s.append( names[tm.tm_wday] );
   }
 
 private:
-  std::vector < std::basic_string < localechar > > names;
+  std::vector < LocaleString > names;
 
 };
 
@@ -523,7 +575,7 @@
 
 
 
-class AMPMToken : public SimpleDateFormat::PatternToken
+class AMPMToken : public PatternToken
 {
 public:
   AMPMToken( int width, const std::locale * locale ) : names( 2 )
@@ -539,7 +591,7 @@
       {
         time.tm_hour = i * 12;
         renderFacet( * locale, buffer, & time, LOG4CXX_LOCALE_STR( 'p' ) );
-        std::basic_string < localechar > ampm = buffer.str();
+        LocaleString ampm = buffer.str();
         names[i] = ampm.substr( start );
         start = ampm.length();
       }
@@ -555,27 +607,27 @@
     }
   }
 
-  void format( std::basic_string < localechar > & s, const apr_time_exp_t & 
tm, Pool & p ) const
+  void format( LocaleString& s, const apr_time_exp_t & tm, Pool & p ) const
   {
     s.append( names[tm.tm_hour / 12] );
   }
 
 private:
-  std::vector < std::basic_string < localechar > > names;
+  std::vector < LocaleString > names;
 };
 
 
 
-class GeneralTimeZoneToken : public SimpleDateFormat::PatternToken
+class GeneralTimeZoneToken : public PatternToken
 {
 public:
   GeneralTimeZoneToken( int width )
   {
   }
 
-  void format( std::basic_string < localechar > & s, const apr_time_exp_t & 
tm, Pool & p ) const
+  void format( LocaleString& s, const apr_time_exp_t & tm, Pool & p ) const
   {
-    std::basic_string < localechar > tzID;
+    LocaleString tzID;
     Transcoder::encode( timeZone->getID(), tzID );
     s.append( tzID );
   }
@@ -591,14 +643,14 @@
 
 
 
-class RFC822TimeZoneToken : public SimpleDateFormat::PatternToken
+class RFC822TimeZoneToken : public PatternToken
 {
 public:
   RFC822TimeZoneToken( int width )
   {
   }
 
-  void format( std::basic_string < localechar > & s, const apr_time_exp_t & 
tm, Pool & p ) const
+  void format( LocaleString& s, const apr_time_exp_t & tm, Pool & p ) const
   {
     if ( tm.tm_gmtoff == 0 )
     {
@@ -614,7 +666,7 @@
         s[basePos] = LOG4CXX_LOCALE_STR( '-' );
         off = -off;
       }
-      std::basic_string < localechar > hours;
+      LocaleString hours;
       StringHelper::toString( off / 3600, p, hours );
       size_t hourPos = basePos + 2;
       //
@@ -624,7 +676,7 @@
       {
         s[hourPos--] = hours[i];
       }
-      std::basic_string < localechar > min;
+      LocaleString min;
       StringHelper::toString( ( off % 3600 ) / 60, p, min );
       size_t minPos = basePos + 4;
       //
@@ -650,9 +702,9 @@
 
 
       void addToken( const localechar spec, const int repeat, const 
std::locale * locale,
-           std::vector < SimpleDateFormat::PatternToken * > & pattern )
+           std::vector < PatternToken * > & pattern )
            {
-             SimpleDateFormat::PatternToken * token = NULL;
+             PatternToken * token = NULL;
              switch ( spec )
              {
                case LOG4CXX_LOCALE_STR( 'G' ):
@@ -757,7 +809,7 @@
       }
 
       void parsePattern( const LogString & fmt, const std::locale * locale,
-           std::vector < SimpleDateFormat::PatternToken * > & pattern )
+           std::vector < PatternToken * > & pattern )
            {
              if ( !fmt.empty() )
              {
@@ -826,7 +878,7 @@
   apr_status_t stat = timeZone->explode( & exploded, time );
   if ( stat == APR_SUCCESS )
   {
-    std::basic_string < localechar > formatted;
+    LocaleString formatted;
     for ( PatternTokenList::const_iterator iter = pattern.begin(); iter != 
pattern.end(); iter++ )
     {
       ( * iter )->format( formatted, exploded, p );


Reply via email to