//-------------------------------------------------------------------------- // File and Version Information: // $Id: AppXXXStream.cc,v 1.5 2002/01/28 00:10:49 rico Exp $ // // Description: // The XXX output stream class; derives from FileOutputStream // // Author List: // Kevin McFarland Original Author // //------------------------------------------------------------------------ #include "Experiment/Experiment.hh" //----------------------- // This Class's Header -- //----------------------- #include "Level3Mods/AppXXXStream.hh" //------------- // C Headers -- //------------- #include //--------------- // C++ Headers -- //--------------- #include //------------------------------- // Collaborating Class Headers -- //------------------------------- #ifdef CDF #ifdef USE_CDFEDM2 #include "Edm/AbstractFile.hh" #include "Edm/SeqRootDiskFile.hh" #include "Edm/FlatRootDiskFile.hh" #else #include "Trybos/TRY_Abstract_File.hh" #include "Trybos/TRY_Ybos_Disk_File.hh" #endif #endif #include "Framework/APPPath.hh" // ---------------------------------------- // -- Public Function Member Definitions -- // ---------------------------------------- //---------------- // Constructors -- //---------------- AppXXXStream::AppXXXStream( const char* const theName, const char* const theFile, const char* const theDescription ) : AppStream( theName, theFile, theDescription) #ifdef CDF , _file( NULL ) #endif { } //-------------- // Destructor -- //-------------- AppXXXStream::~AppXXXStream( ) { #ifdef CDF close( ); #endif } //------------- // Selectors -- //------------- const char* AppXXXStream::filename( ) const { return destination( ); } bool AppXXXStream::isOpen( ) const { bool result = false; if ( NULL != _destination ) { #ifdef CDF if ( _file != NULL ) result = _file->is_open(); #else if ( ((fstream*)&_file)->rdbuf()->is_open( ) ) { result = true; } #endif } return result; } //------------- // Modifiers -- //------------- void AppXXXStream::setFilename( const char* const theName ) { setDestination( theName ); } bool AppXXXStream::open( ) { bool result = false; if ( NULL != _destination) { #ifndef CDF _file.open( _destination, ios::out ); #else #ifdef USE_CDFEDM2 _file = new FlatRootDiskFile ; _file->open( _destination, AbstractFile::recreate ); #else _file = new TRY_Ybos_Disk_File; _file->open( _destination, TRY_Abstract_File::recreate ); #endif // USE_CDFEDM2 #endif if ( isOpen( ) ) { result = true; std::cout << "*****\n***** Opened output file: "; std::cout << _destination << "\n*****\n"; } else { std::cout << name() << "::open Failed to open Output file" << std::endl; } } return result; } void AppXXXStream::close( ) { if ( isOpen( ) ) { #ifndef CDF _file.close( ); #else _file->close( ); delete _file; _file = NULL; #endif } } // ------------------------------------------- // -- Protected Function Member Definitions -- // ------------------------------------------- bool AppXXXStream::writeToDestination( AbsEvent*& anEvent ) { bool result = true; #ifdef CDF #ifdef USE_CDFEDM2 #include "Edm/AbstractFile.hh" if (! _file->write( anEvent ) ) { #else #include "Trybos/TRY_Abstract_File.hh" if (! _file->write( *anEvent ) ) { #endif std::cout << name() << "::write failed, event not written"; } #endif return result; }