00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __itkMultipleLogOutput_h
00019 #define __itkMultipleLogOutput_h
00020
00021 #include "itkLogOutput.h"
00022
00023 #include <fstream>
00024 #include <set>
00025
00026 namespace itk
00027 {
00028
00040 class ITKCommon_EXPORT MultipleLogOutput : public LogOutput
00041 {
00042
00043 public:
00044
00045 typedef MultipleLogOutput Self;
00046 typedef LogOutput Superclass;
00047 typedef SmartPointer<Self> Pointer;
00048 typedef SmartPointer<const Self> ConstPointer;
00049
00050 typedef LogOutput OutputType;
00051
00052 itkTypeMacro(MultipleLogOutput, LogOutput);
00053
00054 itkNewMacro(MultipleLogOutput);
00055
00056 public:
00057
00061 void AddLogOutput( OutputType * output );
00062
00063
00065 virtual void Flush();
00066
00068 virtual void Write( double timestamp );
00069
00071 virtual void Write(const std::string & content );
00072
00074 virtual void Write(const std::string & content, double timestamp );
00075
00076
00077 protected:
00079 MultipleLogOutput();
00080
00082 virtual ~MultipleLogOutput();
00083
00084 private:
00085 MultipleLogOutput(const Self&);
00086 void operator=(const Self&);
00087
00088 typedef std::set< OutputType::Pointer > ContainerType;
00089
00090 ContainerType m_Output;
00091
00092 };
00093
00094 }
00095
00096 #endif //__itkMultipleLogOutput_h
00097