00001 // ===================================================================== 00017 // ===================================================================== 00018 #ifndef CLDAQ__TEXCEPTION_HH 00019 #define CLDAQ__TEXCEPTION_HH 00020 00021 #include "Ttypes.h" 00022 00023 class TSystemAction; 00024 00045 class TStringStreamBuffer 00046 : public std::streambuf 00047 { 00048 00049 protected: 00050 TSystemAction* theSystemAction; 00051 Tchar* theString; 00052 Tint theLength; 00053 Tint theIndex; 00054 Tint theLogLevel; 00055 00056 public: 00057 TStringStreamBuffer( Tint len = 0x1000 ); 00058 virtual ~TStringStreamBuffer(); 00059 00060 public: 00061 virtual Tint sync(); 00062 virtual Tint overflow( Tint c = EOF); 00063 virtual Tvoid ReceiveString(); 00064 00065 public: 00066 TSystemAction* GetSystemAction() const; 00067 Tchar* GetString() const; 00068 Tint GetLength() const; 00069 Tint GetIndex() const; 00070 Tint GetLogLevel() const; 00071 Tvoid SetSystemAction( TSystemAction* action ); 00072 Tvoid SetLogLevel( Tint level ); 00073 00074 protected: 00075 TStringStreamBuffer( const TStringStreamBuffer& right ); 00076 virtual TStringStreamBuffer& operator=( const TStringStreamBuffer& right ); 00077 00078 #ifdef __CLDAQ_ROOT_DLL 00079 ClassDef(TStringStreamBuffer,0) 00080 #endif 00081 00082 }; 00083 00084 inline TSystemAction* TStringStreamBuffer::GetSystemAction() const 00085 { 00086 return theSystemAction; 00087 } 00088 00089 inline Tchar* TStringStreamBuffer::GetString() const 00090 { 00091 return theString; 00092 } 00093 00094 inline Tint TStringStreamBuffer::GetLength() const 00095 { 00096 return theLength; 00097 } 00098 00099 inline Tint TStringStreamBuffer::GetIndex() const 00100 { 00101 return theIndex; 00102 } 00103 00104 inline Tint TStringStreamBuffer::GetLogLevel() const 00105 { 00106 return theLogLevel; 00107 } 00108 00109 inline Tvoid TStringStreamBuffer::SetSystemAction( TSystemAction* action ) 00110 { 00111 theSystemAction = action; 00112 return; 00113 } 00114 00115 inline Tvoid TStringStreamBuffer::SetLogLevel( Tint level ) 00116 { 00117 theLogLevel = level; 00118 } 00119 00120 #endif