/usr/include/casacore/fits/FITS/FITSTimedTable.h is in casacore-dev 2.2.0-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 | //# 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: aips2-request@nrao.edu.
//# Postal address: AIPS++ Project Office
//# National Radio Astronomy Observatory
//# 520 Edgemont Road
//# Charlottesville, VA 22903-2475 USA
//#
//#
//# $Id$
#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 ¤tRow() const;
virtual Record ¤tRow();
// 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
|