Line data Source code
1 : //# CalibratingVi2FactoryI.h: MSVis Interface definition of the CalibratingVi2Factory class. 2 : //# 3 : //# CASA - Common Astronomy Software Applications (http://casa.nrao.edu/) 4 : //# Copyright (C) Associated Universities, Inc. Washington DC, USA 2011, All rights reserved. 5 : //# Copyright (C) European Southern Observatory, 2011, All rights reserved. 6 : //# 7 : //# This library is free software; you can redistribute it and/or 8 : //# modify it under the terms of the GNU Lesser General Public 9 : //# License as published by the Free software Foundation; either 10 : //# version 2.1 of the License, or (at your option) any later version. 11 : //# 12 : //# This library is distributed in the hope that it will be useful, 13 : //# but WITHOUT ANY WARRANTY, without even the implied warranty of 14 : //# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 : //# Lesser General Public License for more details. 16 : //# 17 : //# You should have received a copy of the GNU Lesser General Public 18 : //# License along with this library; if not, write to the Free Software 19 : //# Foundation, Inc., 59 Temple Place, Suite 330, Boston, 20 : //# MA 02111-1307 USA 21 : //# $Id: $ 22 : 23 : #ifndef CalibratingVi2FactoryI_H_ 24 : #define CalibratingVi2FactoryI_H_ 25 : 26 : // Where ViFactory interface is defined 27 : #include <msvis/MSVis/VisibilityIterator2.h> 28 : #include <msvis/MSVis/IteratingParameters.h> 29 : 30 : 31 : namespace casa { //# NAMESPACE CASA - BEGIN 32 : namespace vi { //# NAMESPACE VI - BEGIN 33 : 34 : class CalibratingVi2FactoryI : public vi::ViFactory 35 : { 36 : 37 : friend class LayeredVi2Factory; 38 : 39 : public: 40 : 41 : typedef CalibratingVi2FactoryI* (*CalViFacGenerator)(); 42 : 43 : typedef CalibratingVi2FactoryI* (*CalViFac_byRec_Generator)(casacore::MeasurementSet*, 44 : const casacore::Record&, 45 : const IteratingParameters&); 46 : static casacore::Bool setGenerator(CalViFacGenerator); 47 : static casacore::Bool set_byRec_Generator(CalViFac_byRec_Generator); 48 : 49 0 : CalibratingVi2FactoryI() {} 50 0 : virtual ~CalibratingVi2FactoryI() {} 51 : 52 : // Public function to generate myself via static generator_p implemented in synthesis 53 : static CalibratingVi2FactoryI* generate(); 54 : 55 : // Public function to generate myself via static byRec_generator_p 56 : static CalibratingVi2FactoryI* generate(casacore::MeasurementSet* ms, 57 : const casacore::Record& calrec, 58 : const IteratingParameters& iterpar); 59 : 60 : // Public functions to initialize a generic CVi2F (pure virtual) 61 : virtual void initialize(casacore::MeasurementSet* ms, 62 : const casacore::Record& calrec, 63 : const IteratingParameters& iterpar=IteratingParameters())=0; 64 : virtual void initialize(casacore::MeasurementSet* ms, 65 : const casacore::String& callib, 66 : const IteratingParameters& iterpar=IteratingParameters())=0; 67 : 68 : protected: 69 : 70 : // Create CalibratingVi2 implementation 71 : // this version makes plain one inside 72 : virtual vi::ViImplementation2 * createVi () const = 0; 73 : // If vii not NULL, then use it as the underlying one 74 : virtual vi::ViImplementation2 * createVi (vi::ViImplementation2 * vii) const = 0; 75 : 76 : private: 77 : 78 : static CalViFacGenerator generator_p; 79 : static CalViFac_byRec_Generator byRec_generator_p; 80 : }; 81 : 82 : 83 : } //# NAMESPACE VI - END 84 : } //# NAMESPACE CASA - END 85 : 86 : 87 : #endif /* CalibratingVi2FactoryI_H_ */ 88 :