BWAPI
SPAR/AIModule/BWTA/vendors/CGAL/CGAL/IO/Verbose_ostream.h
Go to the documentation of this file.
00001 // Copyright (c) 1997  Utrecht University (The Netherlands),
00002 // ETH Zurich (Switzerland), Freie Universitaet Berlin (Germany),
00003 // INRIA Sophia-Antipolis (France), Martin-Luther-University Halle-Wittenberg
00004 // (Germany), Max-Planck-Institute Saarbruecken (Germany), RISC Linz (Austria),
00005 // and Tel-Aviv University (Israel).  All rights reserved.
00006 //
00007 // This file is part of CGAL (www.cgal.org); you can redistribute it and/or
00008 // modify it under the terms of the GNU Lesser General Public License as
00009 // published by the Free Software Foundation; version 2.1 of the License.
00010 // See the file LICENSE.LGPL distributed with CGAL.
00011 //
00012 // Licensees holding a valid commercial license may use this file in
00013 // accordance with the commercial license agreement provided with the software.
00014 //
00015 // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
00016 // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
00017 //
00018 // $URL: svn+ssh://scm.gforge.inria.fr/svn/cgal/branches/CGAL-3.5-branch/Stream_support/include/CGAL/IO/Verbose_ostream.h $
00019 // $Id: Verbose_ostream.h 28567 2006-02-16 14:30:13Z lsaboret $
00020 // 
00021 //
00022 // Author(s)     : Lutz Kettner  <kettner@inf.ethz.ch>
00023 
00024 #ifndef CGAL_IO_VERBOSE_OSTREAM_H
00025 #define CGAL_IO_VERBOSE_OSTREAM_H
00026 
00027 #include <iostream>
00028 
00029 CGAL_BEGIN_NAMESPACE
00030 
00031 #define CGAL__VERB(x) if (b) *o << x; return *this
00032 
00033 class Verbose_ostream {
00034     bool          b;
00035     std::ostream* o;
00036 public:
00037     Verbose_ostream( bool active = false, std::ostream& out = std::cerr)
00038         : b(active), o(&out){}
00039 
00040     bool          verbose()           const { return b; }
00041     void          set_verbose(bool active)  { b = active; }
00042     std::ostream& out()                     { return *o; }
00043 
00044     template < class T >
00045     Verbose_ostream& operator<<(const T& t)
00046     { CGAL__VERB(t); }
00047 
00048     Verbose_ostream& operator<<( std::ostream& (*f)(std::ostream&))
00049     { CGAL__VERB(f); }
00050 
00051     Verbose_ostream& operator<<( std::ios& (*f)(std::ios&))
00052     { CGAL__VERB(f); }
00053 
00054     Verbose_ostream& flush()
00055     {
00056         if (b)
00057             o->flush();
00058         return *this;
00059     }
00060 
00061     Verbose_ostream& put(char c)
00062     {
00063         if (b)
00064             o->put(c);
00065         return *this;
00066     }
00067 
00068     Verbose_ostream& write(const char* s, int n)
00069     {
00070         if (b)
00071             o->write(s, n);
00072         return *this;
00073     }
00074 };
00075 
00076 CGAL_END_NAMESPACE
00077 
00078 #endif // CGAL_IO_VERBOSE_OSTREAM_H
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines