// // C++ Interface: MSFillerWrapper // // Description: // // This class is wrapper class for MSFiller // // Author: Takeshi Nakazato , (C) 2010 // // Copyright: See COPYING file that comes with this distribution // // #ifndef ASAPMSFILLER_WRAPPER_H #define ASAPMSFILLER_WRAPPER_H #include #include #include #include #include #include #include "ScantableWrapper.h" #include "MSFiller.h" #include "GILHandler.h" namespace asap { class MSFillerWrapper { public: explicit MSFillerWrapper( ScantableWrapper tbl ) : filler_( 0 ), attached_( false ) { stable_ = tbl.getCP() ; } virtual ~MSFillerWrapper() { close() ; } void open(const std::string& filename, const casacore::Record& rec) { casacore::File file( filename ) ; if ( !file.exists() ) { throw casacore::AipsError( "File does not exist" ) ; } filler_ = new MSFiller( stable_ ) ; if ( filler_->open( filename, rec ) ) { attached_ = true ; return ; } else { throw casacore::AipsError( "Failed to open file" ) ; } } void close() { if ( attached_ ) { filler_->close() ; } } void fill() { GILHandler scopedRelease; if ( attached_ ) { filler_->fill() ; } } // add dummy method for consistency void setReferenceRegex(const std::string& /*rx*/) { // do nothing } private: MSFillerWrapper() ; MSFillerWrapper(const MSFillerWrapper&) ; MSFillerWrapper& operator=(const MSFillerWrapper&) ; casacore::CountedPtr filler_ ; bool attached_ ; casacore::CountedPtr stable_ ; }; }; #endif