Use a signleton JobReport callback sender
authorMichael Andres <ma@suse.de>
Wed, 4 Jun 2014 09:22:27 +0000 (11:22 +0200)
committerMichael Andres <ma@suse.de>
Wed, 4 Jun 2014 09:47:56 +0000 (11:47 +0200)
zypp/ZYppCallbacks.h
zypp/base/String.h

index b6aa668..07058f0 100644 (file)
@@ -790,11 +790,11 @@ namespace zypp
     static callback::SendReport<JobReport> & instance();       // impl in ZYppImpl.cc
 
     /** send message text */
-    static bool info( const std::string & msg_r )      { return instance()->message( MsgType::info, msg_r ); }
+    static bool info( const MessageString & msg_r )    { return instance()->message( MsgType::info, msg_r ); }
     /** send warning text */
-    static bool warning( const std::string & msg_r )   { return instance()->message( MsgType::warning, msg_r ); }
+    static bool warning( const MessageString & msg_r ) { return instance()->message( MsgType::warning, msg_r ); }
     /** send error text */
-    static bool error( const std::string & msg_r )     { return instance()->message( MsgType::error, msg_r ); }
+    static bool error( const MessageString & msg_r )   { return instance()->message( MsgType::error, msg_r ); }
     //@}
   };
 
index dcc9659..1690ab6 100644 (file)
@@ -40,6 +40,7 @@ namespace boost
     return fmter;
   }
 } // namespace boost
+namespace zypp { using boost::formatNAC; }
 ///////////////////////////////////////////////////////////////////
 
 ///////////////////////////////////////////////////////////////////
@@ -59,6 +60,16 @@ namespace zypp
 namespace zypp
 { /////////////////////////////////////////////////////////////////
 
+  struct MessageString : public std::string
+  {
+    MessageString() {}
+    MessageString( const char * str_r )                : std::string( str_r ? str_r : "" ) {}
+    MessageString( const std::string & str_r )         : std::string( str_r ) {}
+    // boost::format, std::ostringstream, str::Str ...
+    template<class _Str>
+    MessageString( const _Str & str_r )        : std::string( str_r.str() ) {}
+  };
+
   /** Convenience \c char* constructible from \c std::string and \c char*,
    *  it maps \c (char*)0 to an empty string.
    *
@@ -223,6 +234,9 @@ namespace zypp
       operator std::string() const
       { return _str.str(); }
 
+      std::string str() const
+      { return _str.str(); }
+
       std::ostream & stream()
       { return _str; }