casacore
FITSTimedTable.h
Go to the documentation of this file.
1//# FITSTimedTable.h: A Table with a time column
2//# Copyright (C) 1995,1996,1997
3//# Associated Universities, Inc. Washington DC, USA.
4//#
5//# This library is free software; you can redistribute it and/or modify it
6//# under the terms of the GNU Library General Public License as published by
7//# the Free Software Foundation; either version 2 of the License, or (at your
8//# option) any later version.
9//#
10//# This library is distributed in the hope that it will be useful, but WITHOUT
11//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
13//# License for more details.
14//#
15//# You should have received a copy of the GNU Library General Public License
16//# along with this library; if not, write to the Free Software Foundation,
17//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
18//#
19//# Correspondence concerning AIPS++ should be addressed as follows:
20//# Internet email: aips2-request@nrao.edu.
21//# Postal address: AIPS++ Project Office
22//# National Radio Astronomy Observatory
23//# 520 Edgemont Road
24//# Charlottesville, VA 22903-2475 USA
25//#
26//#
27//# $Id$
28
29#ifndef FITS_FITSTIMEDTABLE_H
30#define FITS_FITSTIMEDTABLE_H
31
32#include <casacore/casa/aips.h>
33#include <casacore/fits/FITS/FITSTable.h>
34#include <casacore/casa/Containers/Record.h>
35#include <casacore/casa/Containers/RecordField.h>
36
37namespace casacore { //# NAMESPACE CASACORE - BEGIN
38
39// <summary>
40// </summary>
41
42// <use visibility=export>
43
44// <reviewed reviewer="" date="yyyy/mm/dd" tests="" demos="">
45// </reviewed>
46
47// <prerequisite>
48// <li>
49// </prerequisite>
50//
51// <etymology>
52// </etymology>
53//
54// <synopsis>
55// FITSTimedTable is used to look at FITS tables which have a time column. In
56// particular, it peeks ahead, and knows the time of the currentRow and of the
57// nextRow.
58//
59// It is constructed with a pointer to any FITSTabular. Presently, no memory
60// management is imposed to ensure that the pointer remains valid.
61// </synopsis>
62//
63// <example>
64// </example>
65//
66// <motivation>
67// </motivation>
68//
69// <todo asof="1995/06/01">
70// <li>
71// </todo>
72
74{
75public:
76 // This is not connected to any data, isValid always returns True,
77 // keywords and description return the default versions
78 // hasChanged returns False, name returns an empty string
79 // pastEnd returns False and next does nothing.
80 // setTime does nothing, currentRow returns an empty record
81 // and currentTime returns 0.0
82 // and ok returns True and nextTime returns 0.0
84 // Note, originalTable cannot be destructed, reopened, ...,during the
85 // lifetime of this object.
86 FITSTimedTable(FITSTabular *originalTable, uInt whichColumnIsTime=0);
88
89 virtual Bool isValid() const;
90 virtual const TableRecord &keywords() const;
91 virtual const RecordDesc &description() const;
92 virtual const Record &units() const;
93 virtual const Record &displayFormats() const;
94 virtual const Record &nulls() const;
95
96 virtual Bool hasChanged() const { return hasChanged_p;}
97 virtual void resetChangedFlag() { hasChanged_p = False; }
98 virtual const String &name() const { return table_p->name(); }
99 virtual Bool pastEnd() const;
100 virtual Bool pastEnd();
101 virtual void next();
102 // interpolate to the desired time which must be >= the currentTime()
103 // This uses a linear interpolation between adjacent floating point values.
104 // Non-floating point values are NOT interpolated but have the value of the
105 // most recent actual row. On the last row of the table, not interpolation
106 // is done.
107 virtual void setTime(Double time);
108 virtual const Record &currentRow() const;
109 virtual Record &currentRow();
110
111 // What is the time of the current row?
113
114 // this is True if the last setTime() finished as expected
115 // It is False only if the requested time is before the current time
116 // and the timed table as just been opened
117 Bool ok() const { return ok_p;}
118
119 // What will the time of the next row be? Returns a very large number if
120 // it is past the end of the table.
122private:
139
140 void initNowRecord(const RecordDesc& desc);
141 void initNextRecord(const RecordDesc& desc);
142};
143
144} //# NAMESPACE CASACORE - END
145
146#endif
virtual const String & name() const =0
return the name
Double currentTime() const
What is the time of the current row?
virtual void setTime(Double time)
interpolate to the desired time which must be >= the currentTime() This uses a linear interpolation b...
RORecordFieldPtr< Double > time_next_p
FITSTimedTable()
This is not connected to any data, isValid always returns True, keywords and description return the d...
virtual void resetChangedFlag()
reset the changed flag, default do nothing
virtual Bool isValid() const
isValid() returns False if this object isn't a valid Tabular data structure.
virtual const Record & displayFormats() const
Returns any TDISPnnn associated with a column (the field names are the column names,...
virtual const Record & nulls() const
Returns any TNULLnnn associated with a column (the field names are the column names,...
void initNowRecord(const RecordDesc &desc)
Bool ok() const
this is True if the last setTime() finished as expected It is False only if the requested time is bef...
virtual Bool pastEnd()
virtual const TableRecord & keywords() const
Returns keywords which are associated with the underlying FITS files.
virtual const String & name() const
return the name
FITSTimedTable(FITSTabular *originalTable, uInt whichColumnIsTime=0)
Note, originalTable cannot be destructed, reopened,...,during the lifetime of this object.
virtual const RecordDesc & description() const
Returns the description of the underlying FITS table.
virtual const Record & currentRow() const
Return the currentRow.
void initNextRecord(const RecordDesc &desc)
RORecordFieldPtr< Double > time_now_p
Double nextTime()
What will the time of the next row be? Returns a very large number if it is past the end of the table...
virtual const Record & units() const
Returns any TUNITnnn associated with a column (the field names are the column names,...
virtual Record & currentRow()
virtual Bool pastEnd() const
Returns True if we have advanced past the end of data.
virtual Bool hasChanged() const
Has the description changed since construction, default is False.
virtual void next()
Advance the row if possible (guaranteed harmless if pastEnd() is True.
String: the storage and methods of handling collections of characters.
Definition: String.h:225
this file contains all the compiler specific defines
Definition: mainpage.dox:28
const Bool False
Definition: aipstype.h:44
TableExprNode time(const TableExprNode &node)
Definition: ExprNode.h:1580
unsigned int uInt
Definition: aipstype.h:51
int Int
Definition: aipstype.h:50
bool Bool
Define the standard types used by Casacore.
Definition: aipstype.h:42
double Double
Definition: aipstype.h:55