00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __itk_MultipleLogOutput_h_
00019 #define __itk_MultipleLogOutput_h_
00020
00021 #if defined(_MSC_VER)
00022
00023 #pragma warning( disable : 4786 )
00024
00025 #pragma warning ( disable : 4503 )
00026 #endif
00027
00028
00029 #include <fstream>
00030 #include <set>
00031
00032 #include "itkLogOutput.h"
00033
00034 namespace itk
00035 {
00036
00048 class ITKCommon_EXPORT MultipleLogOutput : public LogOutput
00049 {
00050
00051 public:
00052
00053 typedef MultipleLogOutput Self;
00054 typedef LogOutput Superclass;
00055 typedef SmartPointer<Self> Pointer;
00056 typedef SmartPointer<const Self> ConstPointer;
00057
00058 typedef LogOutput OutputType;
00059
00060 itkTypeMacro(MultipleLogOutput, LogOutput);
00061
00062 itkNewMacro(MultipleLogOutput);
00063
00064 public:
00065
00069 void AddLogOutput( OutputType * output );
00070
00071
00073 virtual void Flush();
00074
00076 virtual void Write( double timestamp );
00077
00079 virtual void Write(const std::string & content );
00080
00082 virtual void Write(const std::string & content, double timestamp );
00083
00084
00085 protected:
00087 MultipleLogOutput();
00088
00090 virtual ~MultipleLogOutput();
00091
00092 private:
00093
00094 typedef std::set< OutputType::Pointer > ContainerType;
00095
00096 ContainerType m_Output;
00097
00098 };
00099
00100 }
00101
00102 #endif //__itk_MultipleLogOutput_h_