]> git.saurik.com Git - wxWidgets.git/commitdiff
add public wxLog::Log() to avoid ugly casts needed in order to call DoLog() from...
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 22 Feb 2009 00:46:25 +0000 (00:46 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 22 Feb 2009 00:46:25 +0000 (00:46 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59080 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
include/wx/log.h
interface/wx/log.h
src/common/log.cpp

index f83035377700787bb50305ab5ba49fba2048d673..164e7680fa5013e5cfc59ffb4799f4064fb356b6 100644 (file)
@@ -355,7 +355,8 @@ All:
 - Added wxProtocol::SetDefaultTimeout(); the default timeout for both wxHTTP and wxFTP
   protocols is 60 seconds.
 - Added wxStrnlen() for safe computation of string length.
-- Added wxImage::Clear() (troelsk)
+- Added wxImage::Clear() (troelsk).
+- Added wxLog::Log().
 
 All (Unix):
 
index cfe6b679e42836b3bc24272defb3f151451b8b69..5a2c119abc7b41beaa96bc427d5b9c6de0d08d83 100644 (file)
@@ -243,6 +243,14 @@ public:
     // change it otherwise)
     static void TimeStamp(wxString *str);
 
+    // this method should only be called from derived classes DoLog()
+    // implementations and shouldn't be called directly, use logging functions
+    // instead
+    void Log(wxLogLevel level, const wxString& msg, time_t t)
+    {
+        DoLog(level, msg, t);
+    }
+
     // make dtor virtual for all derived classes
     virtual ~wxLog();
 
@@ -256,7 +264,7 @@ public:
 #endif
 
 protected:
-    // the logging functions that can be overriden
+    // the logging functions that can be overridden
 
     // default DoLog() prepends the time stamp and a prefix corresponding
     // to the message to szString and then passes it to DoLogString()
index 972870e61dc7d7c227179f8f09c8e630d1bef4a8..34cbf28abbf681f38222b22859790cc058d2b4de 100644 (file)
@@ -793,7 +793,7 @@ public:
         Forwards the message at specified level to the @e DoLog() function of the
         active log target if there is any, does nothing otherwise.
     */
-    static void OnLog(wxLogLevel level, const wxString& szString, time_t t);
+    static void OnLog(wxLogLevel level, const wxString& msg, time_t t);
 
     /**
         Remove the @a mask from the list of allowed masks for
@@ -874,6 +874,34 @@ public:
     */
     static void Suspend();
 
+    /**
+        Log the given message.
+
+        This function should only be called from the DoLog() implementations in
+        the derived classes (which can't call wxLog::DoLog() directly as it is
+        protected), it should not be used for logging new messages which can be
+        only sent to the currently active logger using OnLog() which also
+        checks if the logging (for this level) is enabled while this method
+        just directly calls DoLog().
+
+        Example of use of this class from wxLogChain:
+        @code
+        void wxLogChain::DoLog(wxLogLevel level, const wxString& msg, time_t t)
+        {
+            // let the previous logger show it
+            if ( m_logOld && IsPassingMessages() )
+                m_logOld->Log(level, msg, t);
+
+            // and also send it to the new one
+            if ( m_logNew && m_logNew != this )
+                m_logNew->Log(level, msg, t);
+        }
+        @endcode
+
+        @since 2.9.0
+     */
+    void Log(wxLogLevel level, const wxString& msg, time_t timestamp);
+
 protected:
 
     /**
index 9f4134f41b7815861dc0874b2a8c367e3651d1dd..558f17e658e680797d926f292f9e90bed66967f7 100644 (file)
@@ -915,16 +915,11 @@ void wxLogChain::DoLog(wxLogLevel level, const wxString& szString, time_t t)
 {
     // let the previous logger show it
     if ( m_logOld && IsPassingMessages() )
-    {
-        // bogus cast just to access protected DoLog
-        ((wxLogChain *)m_logOld)->DoLog(level, szString, t);
-    }
+        m_logOld->Log(level, szString, t);
 
+    // and also send it to the new one
     if ( m_logNew && m_logNew != this )
-    {
-        // as above...
-        ((wxLogChain *)m_logNew)->DoLog(level, szString, t);
-    }
+        m_logNew->Log(level, szString, t);
 }
 
 #ifdef __VISUALC__