- Exception: virtual std::ostream & dumpOn( std::ostream & str ) const;
authorMichael Andres <ma@suse.de>
Mon, 12 Dec 2005 11:24:12 +0000 (11:24 +0000)
committerMichael Andres <ma@suse.de>
Mon, 12 Dec 2005 11:24:12 +0000 (11:24 +0000)
  Added to be overloaded and print a proper error message.

zypp/base/Exception.cc
zypp/base/Exception.h

index c27f19e..8984360 100644 (file)
@@ -71,8 +71,18 @@ namespace zypp
     INT << where_r << " " << prefix_r << " " << excpt_r << endl;
   }
 
+  std::ostream & Exception::dumpOn( std::ostream & str ) const
+  {
+    return str << asString(); // fix it!
+  }
+
+  std::ostream & Exception::dumpError( std::ostream & str ) const
+  {
+    return dumpOn( str ); // fix it! prepend location info
+  }
+
   std::ostream & operator<<( std::ostream & str, const Exception & obj )
-  { return str << obj.asString(); }
+  { return obj.dumpError( str ); }
 
   /////////////////////////////////////////////////////////////////
 } // namespace zypp
index bd1f597..7260e55 100644 (file)
@@ -103,6 +103,7 @@ namespace zypp
   class Exception : public std::exception
   {
     friend std::ostream & operator<<( std::ostream & str, const Exception & obj );
+
   public:
     typedef exception_detail::CodeLocation CodeLocation;
 
@@ -133,6 +134,13 @@ namespace zypp
     /** Exception as string */
     std::string asString() const;
 
+  protected:
+
+    /** Overload this to print a proper error message.
+     * CodeLocation is prepended automatically.
+    */
+    virtual std::ostream & dumpOn( std::ostream & str ) const;
+
   public:
      /** Make a string from \a errno_r. */
     static std::string strErrno( int errno_r );
@@ -147,6 +155,9 @@ namespace zypp
   private:
     mutable CodeLocation _where;
     std::string _msg;
+
+    /** Called by <tt>std::ostream & operator\<\<</tt> */
+    std::ostream & dumpError( std::ostream & str ) const;
   };
   ///////////////////////////////////////////////////////////////////