#ifndef ELOUTPUT_H #define ELOUTPUT_H // ---------------------------------------------------------------------- // // ELoutput is a subclass of ELdestination representing the standard // provided destination. // // 7/8/98 mf Created file. // 6/17/99 jvr Made output format options available for ELdestControl only // 7/2/99 jvr Added separate/attachTime, Epilogue, and Serial options // 2/22/00 mf Changed myDetX to myOutputX (to avoid future puzzlement!) // and added ELoutput(ox) to cacilitate inherited classes. // 6/7/00 web Consolidated ELoutput/X; add filterModule() // 6/14/00 web Declare classes before granting friendship; remove using // 10/4/00 mf add excludeModule() // 4/4/01 mf Removed moduleOfInterest and moduleToExclude, in favor // of using base class method. // 6/23/03 mf changeFile(), flush() // // ---------------------------------------------------------------------- #ifndef ZMENVIRONMENT_H #include "ZMutility/ZMenvironment.h" #endif #ifndef ELSTRING_H #include "ErrorLogger/ELstring.h" #endif #ifndef ELEXTENDEDID_H #include "ErrorLogger/ELextendedID.h" #endif #ifndef ELDESTINATION_H #include "ErrorLogger/ELdestination.h" #endif #ifndef IOSTREAM_INCLUDED #include "ZMutility/iostream" #endif ZM_BEGIN_NAMESPACE( zmel ) /* namespace zmel { */ // ---------------------------------------------------------------------- // prerequisite classes: // ---------------------------------------------------------------------- class ErrorObj; class ELdestControl; // ---------------------------------------------------------------------- // ELoutput: // ---------------------------------------------------------------------- class ELoutput : public ELdestination { friend class ELdestControl; public: // --- Birth/death: // ELoutput(); ELoutput( std::ostream & os, bool emitAtStart = true ); ELoutput( const ELstring & fileName, bool emitAtStart = true ); ELoutput( const ELoutput & orig ); virtual ~ELoutput(); // --- Methods invoked by the ELadministrator: // public: virtual ZM_COVARIANT_TYPE(ELdestination *, ELoutput *) clone() const; // Used by attach() to put the destination on the ELadministrators list //-| There is a note in Design Notes about semantics //-| of copying a destination onto the list: ofstream //-| ownership is passed to the new copy. virtual bool log( const ErrorObj & msg ); // --- Methods invoked through the ELdestControl handle: // protected: // trivial clearSummary(), wipe(), zero() from base class // trivial three summary(..) from base class // --- Data affected by methods of specific ELdestControl handle: // protected: // ELoutput uses the generic ELdestControl handle // --- Internal Methods -- Users should not invoke these: // protected: virtual void emit( const ELstring & s, bool nl=false ); virtual void suppressTime(); virtual void includeTime(); virtual void suppressModule(); virtual void includeModule(); virtual void suppressSubroutine(); virtual void includeSubroutine(); virtual void suppressText(); virtual void includeText(); virtual void suppressContext(); virtual void includeContext(); virtual void suppressSerial(); virtual void includeSerial(); virtual void useFullContext(); virtual void useContext(); virtual void separateTime(); virtual void attachTime(); virtual void separateEpilogue(); virtual void attachEpilogue(); virtual void summarization ( const ELstring & fullTitle , const ELstring & sumLines ); virtual void changeFile (std::ostream & os); virtual void changeFile (const ELstring & filename); virtual void flush(); // --- Maintenance and Testing Methods -- Users should not invoke these: // public: void xxxxSet( int i ); // Testing only void xxxxShout(); // Testing only protected: // --- member data: // std::ostream * os; bool osIsOwned; int charsOnLine; ELextendedID xid; bool wantTimestamp , wantModule , wantSubroutine , wantText , wantSomeContext , wantSerial , wantFullContext , wantTimeSeparate , wantEpilogueSeparate ; // *** Maintenance and Testing Data *** int xxxxInt; // Testing only // --- Verboten method: // ELoutput & operator=( const ELoutput & orig ); }; // ELoutput // ---------------------------------------------------------------------- ZM_END_NAMESPACE( zmel ) /* } // namespace zmel */ #endif // ELOUTPUT_H