Loading...
Searching...
No Matches
FITSTimedTable.h
Go to the documentation of this file.
//# FITSTimedTable.h: A Table with a time column
//# Copyright (C) 1995,1996,1997
//# 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 FITS_FITSTIMEDTABLE_H
#define FITS_FITSTIMEDTABLE_H
#include <casacore/casa/aips.h>
#include <casacore/fits/FITS/FITSTable.h>
#include <casacore/casa/Containers/Record.h>
#include <casacore/casa/Containers/RecordField.h>
namespace casacore { //# NAMESPACE CASACORE - BEGIN
// <summary>
// </summary>
// <use visibility=export>
// <reviewed reviewer="" date="yyyy/mm/dd" tests="" demos="">
// </reviewed>
// <prerequisite>
// <li>
// </prerequisite>
//
// <etymology>
// </etymology>
//
// <synopsis>
// FITSTimedTable is used to look at FITS tables which have a time column. In
// particular, it peeks ahead, and knows the time of the currentRow and of the
// nextRow.
//
// It is constructed with a pointer to any FITSTabular. Presently, no memory
// management is imposed to ensure that the pointer remains valid.
// </synopsis>
//
// <example>
// </example>
//
// <motivation>
// </motivation>
//
// <todo asof="1995/06/01">
// <li>
// </todo>
class FITSTimedTable : public FITSTabular
{
public:
// This is not connected to any data, isValid always returns True,
// keywords and description return the default versions
// hasChanged returns False, name returns an empty string
// pastEnd returns False and next does nothing.
// setTime does nothing, currentRow returns an empty record
// and currentTime returns 0.0
// and ok returns True and nextTime returns 0.0
FITSTimedTable();
// Note, originalTable cannot be destructed, reopened, ...,during the
// lifetime of this object.
FITSTimedTable(FITSTabular *originalTable, uInt whichColumnIsTime=0);
~FITSTimedTable();
virtual Bool isValid() const;
virtual const TableRecord &keywords() const;
virtual const RecordDesc &description() const;
virtual const Record &units() const;
virtual const Record &displayFormats() const;
virtual const Record &nulls() const;
virtual Bool hasChanged() const { return hasChanged_p;}
virtual void resetChangedFlag() { hasChanged_p = False; }
virtual const String &name() const { return table_p->name(); }
virtual Bool pastEnd() const;
virtual Bool pastEnd();
virtual void next();
// interpolate to the desired time which must be >= the currentTime()
// This uses a linear interpolation between adjacent floating point values.
// Non-floating point values are NOT interpolated but have the value of the
// most recent actual row. On the last row of the table, not interpolation
// is done.
virtual void setTime(Double time);
virtual const Record &currentRow() const;
virtual Record &currentRow();
// What is the time of the current row?
Double currentTime() const;
// this is True if the last setTime() finished as expected
// It is False only if the requested time is before the current time
// and the timed table as just been opened
Bool ok() const { return ok_p;}
// What will the time of the next row be? Returns a very large number if
// it is past the end of the table.
Double nextTime();
private:
Bool atStart_p;
Bool ok_p;
Bool hasChanged_p;
Bool changePending_p;
FITSTabular *table_p;
Record *row_now_p;
Record *row_next_p;
RORecordFieldPtr<Double> time_now_p;
RORecordFieldPtr<Double> time_next_p;
RecordDesc rowDesc_p;
Int how_past_end_p;
uInt timeColumn_p;
TableRecord dummyKeywords;
Record dummyUnits;
Record dummyDisps;
Record dummyNulls;
void initNowRecord(const RecordDesc& desc);
void initNextRecord(const RecordDesc& desc);
};
} //# NAMESPACE CASACORE - END
#endif
casacore::FITSTabular
Definition FITSTable.h:78
casacore::FITSTimedTable::dummyDisps
Record dummyDisps
Definition FITSTimedTable.h:134
casacore::FITSTimedTable::currentTime
Double currentTime() const
What is the time of the current row?
casacore::FITSTimedTable::dummyUnits
Record dummyUnits
Definition FITSTimedTable.h:133
casacore::FITSTimedTable::setTime
virtual void setTime(Double time)
interpolate to the desired time which must be >= the currentTime() This uses a linear interpolation b...
casacore::FITSTimedTable::row_now_p
Record * row_now_p
Definition FITSTimedTable.h:125
casacore::FITSTimedTable::time_next_p
RORecordFieldPtr< Double > time_next_p
Definition FITSTimedTable.h:128
casacore::FITSTimedTable::~FITSTimedTable
~FITSTimedTable()
casacore::FITSTimedTable::FITSTimedTable
FITSTimedTable()
This is not connected to any data, isValid always returns True, keywords and description return the d...
casacore::FITSTimedTable::changePending_p
Bool changePending_p
Definition FITSTimedTable.h:123
casacore::FITSTimedTable::resetChangedFlag
virtual void resetChangedFlag()
reset the changed flag, default do nothing
Definition FITSTimedTable.h:94
casacore::FITSTimedTable::isValid
virtual Bool isValid() const
isValid() returns False if this object isn't a valid Tabular data structure.
casacore::FITSTimedTable::hasChanged_p
Bool hasChanged_p
Definition FITSTimedTable.h:122
casacore::FITSTimedTable::displayFormats
virtual const Record & displayFormats() const
Returns any TDISPnnn associated with a column (the field names are the column names,...
casacore::FITSTimedTable::nulls
virtual const Record & nulls() const
Returns any TNULLnnn associated with a column (the field names are the column names,...
casacore::FITSTimedTable::initNowRecord
void initNowRecord(const RecordDesc &desc)
casacore::FITSTimedTable::ok
Bool ok() const
this is True if the last setTime() finished as expected It is False only if the requested time is bef...
Definition FITSTimedTable.h:114
casacore::FITSTimedTable::atStart_p
Bool atStart_p
Definition FITSTimedTable.h:120
casacore::FITSTimedTable::dummyKeywords
TableRecord dummyKeywords
Definition FITSTimedTable.h:132
casacore::FITSTimedTable::pastEnd
virtual Bool pastEnd()
casacore::FITSTimedTable::rowDesc_p
RecordDesc rowDesc_p
Definition FITSTimedTable.h:129
casacore::FITSTimedTable::keywords
virtual const TableRecord & keywords() const
Returns keywords which are associated with the underlying FITS files.
casacore::FITSTimedTable::row_next_p
Record * row_next_p
Definition FITSTimedTable.h:126
casacore::FITSTimedTable::name
virtual const String & name() const
return the name
Definition FITSTimedTable.h:95
casacore::FITSTimedTable::FITSTimedTable
FITSTimedTable(FITSTabular *originalTable, uInt whichColumnIsTime=0)
Note, originalTable cannot be destructed, reopened,...,during the lifetime of this object.
casacore::FITSTimedTable::description
virtual const RecordDesc & description() const
Returns the description of the underlying FITS table.
casacore::FITSTimedTable::currentRow
virtual const Record & currentRow() const
Return the currentRow.
casacore::FITSTimedTable::ok_p
Bool ok_p
Definition FITSTimedTable.h:121
casacore::FITSTimedTable::dummyNulls
Record dummyNulls
Definition FITSTimedTable.h:135
casacore::FITSTimedTable::table_p
FITSTabular * table_p
Definition FITSTimedTable.h:124
casacore::FITSTimedTable::initNextRecord
void initNextRecord(const RecordDesc &desc)
casacore::FITSTimedTable::time_now_p
RORecordFieldPtr< Double > time_now_p
Definition FITSTimedTable.h:127
casacore::FITSTimedTable::nextTime
Double nextTime()
What will the time of the next row be?
casacore::FITSTimedTable::timeColumn_p
uInt timeColumn_p
Definition FITSTimedTable.h:131
casacore::FITSTimedTable::units
virtual const Record & units() const
Returns any TUNITnnn associated with a column (the field names are the column names,...
casacore::FITSTimedTable::how_past_end_p
Int how_past_end_p
Definition FITSTimedTable.h:130
casacore::FITSTimedTable::currentRow
virtual Record & currentRow()
casacore::FITSTimedTable::pastEnd
virtual Bool pastEnd() const
Returns True if we have advanced past the end of data.
casacore::FITSTimedTable::hasChanged
virtual Bool hasChanged() const
Has the description changed since construction, default is False.
Definition FITSTimedTable.h:93
casacore::FITSTimedTable::next
virtual void next()
Advance the row if possible (guaranteed harmless if pastEnd() is True.
casacore::RORecordFieldPtr
Read-Only access to an individual field from a Record.
Definition RecordField.h:209
casacore::RecordDesc
Definition RecordDesc.h:103
casacore::String
String: the storage and methods of handling collections of characters.
Definition String.h:223
casacore::TableRecord
Definition TableRecord.h:183
casacore::Record
Record()
casacore
this file contains all the compiler specific defines
Definition mainpage.dox:28
casacore::False
const Bool False
Definition aipstype.h:42
casacore::time
TableExprNode time(const TableExprNode &node)
Definition ExprNode.h:1584
casacore::uInt
unsigned int uInt
Definition aipstype.h:49
casacore::Int
int Int
Definition aipstype.h:48
casacore::Bool
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:40
casacore::Double
double Double
Definition aipstype.h:53