Loading...
Searching...
No Matches
MSTimeParse.h
Go to the documentation of this file.
//# MSTimeParse.h: Classes to hold results from time grammar parser
//# Copyright (C) 1994,1995,1997,1998,1999,2000,2001,2003
//# Associated Universities, Inc. Washington DC, USA.
//#
//# This library is free software; you can redistribute it and/or modify it
//# under the terms of the GNU Library General Public License as published by
//# the Free Software Foundation; either version 2 of the License, or (at your
//# option) any later version.
//#
//# This library is distributed in the hope that it will be useful, but WITHOUT
//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
//# License for more details.
//#
//# You should have received a copy of the GNU Library General Public License
//# along with this library; if not, write to the Free Software Foundation,
//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
//#
//# Correspondence concerning AIPS++ should be addressed as follows:
//# Internet email: casa-feedback@nrao.edu.
//# Postal address: AIPS++ Project Office
//# National Radio Astronomy Observatory
//# 520 Edgemont Road
//# Charlottesville, VA 22903-2475 USA
#ifndef MS_MSTIMEPARSE_H
#define MS_MSTIMEPARSE_H
//# Includes
#include <casacore/casa/aips.h>
#include <casacore/ms/MSSel/MSParse.h>
#include <casacore/ms/MSSel/MSSelectableMainColumn.h>
#include <casacore/measures/Measures/MEpoch.h>
#include <casacore/ms/MSSel/MSTimeDefinitions.h>
#include <casacore/casa/Containers/Block.h>
#include <casacore/casa/Arrays/Matrix.h>
namespace casacore { //# NAMESPACE CASACORE - BEGIN
//# Forward Declarations
// <summary>
// Class to hold values from time grammar parser
// </summary>
// <use visibility=local>
// <reviewed reviewer="" date="" tests="">
// </reviewed>
// <prerequisite>
//# Classes you should understand before using this one.
// </prerequisite>
// <etymology>
// MSTimeParse is the class used to parse a time command.
// </etymology>
// <synopsis>
// MSTimeParse is used by the parser of time sub-expression statements.
// The parser is written in Bison and Flex in files MSTimeGram.y and .l.
// The statements in there use the routines in this file to act
// upon a reduced rule.
// Since multiple tables can be given (with a shorthand), the table
// names are stored in a list. The variable names can be qualified
// by the table name and will be looked up in the appropriate table.
//
// The class MSTimeParse only contains information about a table
// used in the table command. Global variables (like a list and a vector)
// are used in MSTimeParse.cc to hold further information.
//
// Global functions are used to operate on the information.
// The main function is the global function msTimeCommand.
// It executes the given STaQL command and returns the resulting ms.
// This is, in fact, the only function to be used by a user.
// </synopsis>
// <motivation>
// It is necessary to be able to give a ms command in ASCII.
// This can be used in a CLI or in the table browser to get a subset
// of a table or to sort a table.
// </motivation>
//# <todo asof="$DATE:$">
//# A List of bugs, limitations, extensions or planned refinements.
//# </todo>
class MSTimeParse : public MSParse
{
public:
// Default constructor
MSTimeParse ();
// Associate the ms and the shorthand.
MSTimeParse (const MeasurementSet* ms,const TableExprNode& otherTens,const Bool honourRowFlags=True);
MSTimeParse (const MeasurementSet* ms,const TableExprNode& colAsTEN,
MSSelectableMainColumn& msMainColInterface,
const TableExprNode& otherTEN,
const Bool honourRowFlags=True);
~MSTimeParse() {columnAsTEN_p=TableExprNode();}
// ~MSTimeParse()
// {
// if (node_p) delete node_p;node_p=0x0;
// if (otherTens_p) delete otherTens_p;otherTens_p=0x0;
// }
const TableExprNode *selectTime(const MEpoch& time,
bool daytime = false);
const TableExprNode *selectTimeGT(const MEpoch& lowboundTime,
bool daytime = false);
const TableExprNode *selectTimeLT(const MEpoch& upboundTime,
bool daytime = false);
const TableExprNode *selectTimeRange(const MEpoch& lowboundTime,
const MEpoch& upboundTime,
bool daytime = false,
Float edgeWidth=-1.0);
Matrix<Double> selectedTimes() {return timeList;}
const TableExprNode *addCondition(TableExprNode& condition);
/*
static const MEpoch *dayTimeConvert(Int day=-1, Int hour = -1,
Int minute = -1, Int second = -1,
Int millisec = -1);
*/
static void setDefaults(TimeFields& tf, Bool dataOrigin=True);
void getDefaults();
static void copyDefaults(TimeFields& target, TimeFields& source);
static const MEpoch *yearTimeConvert(Int year=-1, Int month=-1, Int day=-1,
Int hour = -1, Int minute = -1,
Int second = -1, Int millisec = -1);
static const MEpoch *yearTimeConvert(const TimeFields& tf);
// Get table expression node object.
static const TableExprNode* node();
Int year0() {return defaultYear;}
Int month0() {return defaultMonth;}
Int day0() {return defaultDay;}
Int hour0() {return defaultHour;}
Int minute0() {return defaultMinute;}
Int second0() {return defaultSeconds;}
Int fractionalsec0() {return defaultFractionalSec;}
Double defaultInteg() {return defaultExposure;}
static void validate(const TimeFields& tf);
static void reset(){timeList.resize(3,0);}
static void cleanup() {if (node_p) delete node_p;node_p=0x0;}
static TableExprNode* node_p;
//private:
static TableExprNode *otherTens_p;
static Bool defaultTimeComputed;
MVTime firstRowTime;
static MeasurementSet *ms_p;
static Double toTAIInSec(const MEpoch& time);
static MEpoch* yeartime;
static MEpoch* daytime;
Int defaultYear, defaultMonth, defaultDay,
defaultHour, defaultMinute, defaultSeconds, defaultFractionalSec;
Double defaultExposure;
const String colName;
Bool honourRowFlags_p;
static Matrix<Double> timeList;
void accumulateTimeList(const Double t0, const Double t1,const Double dT=-1);
static MSTimeParse *thisMSTParser;
static TableExprNode columnAsTEN_p;
static MSSelectableMainColumn *mainColumn_p;
};
} //# NAMESPACE CASACORE - END
#endif
casacore::MEpoch
Definition MEpoch.h:101
casacore::MSParse::MSParse
MSParse()
Default constructor for List container class.
casacore::MSParse::ms
MeasurementSet * ms()
Get ms object.
casacore::MSSelectableMainColumn
Definition MSSelectableMainColumn.h:44
casacore::MSTimeParse::setDefaults
static void setDefaults(TimeFields &tf, Bool dataOrigin=True)
casacore::MSTimeParse::selectedTimes
Matrix< Double > selectedTimes()
Definition MSTimeParse.h:119
casacore::MSTimeParse::daytime
static MEpoch * daytime
Definition MSTimeParse.h:161
casacore::MSTimeParse::defaultFractionalSec
Int defaultFractionalSec
Definition MSTimeParse.h:163
casacore::MSTimeParse::month0
Int month0()
Definition MSTimeParse.h:140
casacore::MSTimeParse::day0
Int day0()
Definition MSTimeParse.h:141
casacore::MSTimeParse::colName
const String colName
Definition MSTimeParse.h:165
casacore::MSTimeParse::thisMSTParser
static MSTimeParse * thisMSTParser
Definition MSTimeParse.h:169
casacore::MSTimeParse::validate
static void validate(const TimeFields &tf)
casacore::MSTimeParse::columnAsTEN_p
static TableExprNode columnAsTEN_p
Definition MSTimeParse.h:170
casacore::MSTimeParse::mainColumn_p
static MSSelectableMainColumn * mainColumn_p
Definition MSTimeParse.h:171
casacore::MSTimeParse::second0
Int second0()
Definition MSTimeParse.h:144
casacore::MSTimeParse::toTAIInSec
static Double toTAIInSec(const MEpoch &time)
casacore::MSTimeParse::selectTime
const TableExprNode * selectTime(const MEpoch &time, bool daytime=false)
~MSTimeParse() { if (node_p) delete node_p;node_p=0x0; if (otherTens_p) delete otherTens_p;otherTens_...
casacore::MSTimeParse::addCondition
const TableExprNode * addCondition(TableExprNode &condition)
casacore::MSTimeParse::firstRowTime
MVTime firstRowTime
Definition MSTimeParse.h:157
casacore::MSTimeParse::hour0
Int hour0()
Definition MSTimeParse.h:142
casacore::MSTimeParse::selectTimeLT
const TableExprNode * selectTimeLT(const MEpoch &upboundTime, bool daytime=false)
casacore::MSTimeParse::ms_p
static MeasurementSet * ms_p
Definition MSTimeParse.h:158
casacore::MSTimeParse::getDefaults
void getDefaults()
casacore::MSTimeParse::defaultMinute
Int defaultMinute
Definition MSTimeParse.h:163
casacore::MSTimeParse::defaultExposure
Double defaultExposure
Definition MSTimeParse.h:164
casacore::MSTimeParse::defaultTimeComputed
static Bool defaultTimeComputed
Definition MSTimeParse.h:156
casacore::MSTimeParse::year0
Int year0()
Definition MSTimeParse.h:139
casacore::MSTimeParse::timeList
static Matrix< Double > timeList
Definition MSTimeParse.h:167
casacore::MSTimeParse::otherTens_p
static TableExprNode * otherTens_p
private:
Definition MSTimeParse.h:155
casacore::MSTimeParse::selectTimeGT
const TableExprNode * selectTimeGT(const MEpoch &lowboundTime, bool daytime=false)
casacore::MSTimeParse::fractionalsec0
Int fractionalsec0()
Definition MSTimeParse.h:145
casacore::MSTimeParse::MSTimeParse
MSTimeParse(const MeasurementSet *ms, const TableExprNode &otherTens, const Bool honourRowFlags=True)
Associate the ms and the shorthand.
casacore::MSTimeParse::defaultMonth
Int defaultMonth
Definition MSTimeParse.h:162
casacore::MSTimeParse::defaultDay
Int defaultDay
Definition MSTimeParse.h:162
casacore::MSTimeParse::honourRowFlags_p
Bool honourRowFlags_p
Definition MSTimeParse.h:166
casacore::MSTimeParse::yearTimeConvert
static const MEpoch * yearTimeConvert(Int year=-1, Int month=-1, Int day=-1, Int hour=-1, Int minute=-1, Int second=-1, Int millisec=-1)
casacore::MSTimeParse::accumulateTimeList
void accumulateTimeList(const Double t0, const Double t1, const Double dT=-1)
casacore::MSTimeParse::defaultSeconds
Int defaultSeconds
Definition MSTimeParse.h:163
casacore::MSTimeParse::selectTimeRange
const TableExprNode * selectTimeRange(const MEpoch &lowboundTime, const MEpoch &upboundTime, bool daytime=false, Float edgeWidth=-1.0)
casacore::MSTimeParse::MSTimeParse
MSTimeParse()
Default constructor.
casacore::MSTimeParse::~MSTimeParse
~MSTimeParse()
Definition MSTimeParse.h:101
casacore::MSTimeParse::yearTimeConvert
static const MEpoch * yearTimeConvert(const TimeFields &tf)
casacore::MSTimeParse::cleanup
static void cleanup()
Definition MSTimeParse.h:150
casacore::MSTimeParse::defaultYear
Int defaultYear
Definition MSTimeParse.h:162
casacore::MSTimeParse::node_p
static TableExprNode * node_p
Definition MSTimeParse.h:152
casacore::MSTimeParse::yeartime
static MEpoch * yeartime
Definition MSTimeParse.h:160
casacore::MSTimeParse::reset
static void reset()
Definition MSTimeParse.h:149
casacore::MSTimeParse::MSTimeParse
MSTimeParse(const MeasurementSet *ms, const TableExprNode &colAsTEN, MSSelectableMainColumn &msMainColInterface, const TableExprNode &otherTEN, const Bool honourRowFlags=True)
casacore::MSTimeParse::minute0
Int minute0()
Definition MSTimeParse.h:143
casacore::MSTimeParse::defaultHour
Int defaultHour
Definition MSTimeParse.h:163
casacore::MSTimeParse::node
static const TableExprNode * node()
Get table expression node object.
casacore::MSTimeParse::copyDefaults
static void copyDefaults(TimeFields &target, TimeFields &source)
casacore::MSTimeParse::defaultInteg
Double defaultInteg()
Definition MSTimeParse.h:146
casacore::MVTime
Definition MVTime.h:268
casacore::Matrix
Definition Matrix.h:87
casacore::MeasurementSet
Definition MeasurementSet.h:278
casacore::String
String: the storage and methods of handling collections of characters.
Definition String.h:223
casacore::TableExprNode
Definition ExprNode.h:154
casacore
this file contains all the compiler specific defines
Definition mainpage.dox:28
casacore::time
TableExprNode time(const TableExprNode &node)
Definition ExprNode.h:1584
casacore::day
TableExprNode day(const TableExprNode &node)
Definition ExprNode.h:1527
casacore::month
TableExprNode month(const TableExprNode &node)
Definition ExprNode.h:1523
casacore::year
TableExprNode year(const TableExprNode &node)
Definition ExprNode.h:1519
casacore::Float
float Float
Definition aipstype.h:52
casacore::Int
int Int
Definition aipstype.h:48
casacore::Bool
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:40
casacore::True
const Bool True
Definition aipstype.h:41
casacore::Double
double Double
Definition aipstype.h:53
casacore::TimeFields
Definition MSTimeDefinitions.h:33