This file is indexed.

/usr/include/casacore/tables/Tables/TableInfo.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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
//# TableInfo.h: Table type, subtype and further info
//# Copyright (C) 1996,1997,1999
//# 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 TABLES_TABLEINFO_H
#define TABLES_TABLEINFO_H

//# Includes
#include <casacore/casa/aips.h>
#include <casacore/casa/BasicSL/String.h>


namespace casacore { //# NAMESPACE CASACORE - BEGIN

// <summary>
// Table type, subtype and further info
// </summary>

// <use visibility=local>

// <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="tTable.cc">
// </reviewed>

//# <prerequisite>
//# Classes you should understand before using this one.
//# </prerequisite>

// <etymology>
// TableInfo holds information (like type) about a table.
// </etymology>

// <synopsis> 
// TableInfo holds information about a table. It contains the following
// information:
// <dl>
//  <dt> Type
//  <dd> the type of a table (e.g. IMAGE, LOG).
//  <dt> SubType
//  <dd> the subtype of a table (e.g. UVDATA, MAP or ANTENNAPATTERN for 
//       type IMAGE).
//  <dt> Readme
//  <dd> An arbitrary number of lines containing ancillary text
//       describing the table (or maybe its history).
// </dl>
// This information is stored
// in the file <src>table.info</src> in the table directory.
// Regular tables as well as reference tables (results of sort/select)
// have their own table.info file.
// <br>
// The initial table-info of a regular table is blank. It has to be set
// explicitly by the user.
// <br>
// The initial table-info of a reference table
// is a copy of the table-info of its parent table. The user can add
// lines to the readme information to describe the table in more detail.
// Of course, the type and/or subtype can be changed at will.
// <p>
// The type and subtype information are stored at the beginning of
// the first two lines of the file as:
// <srcblock>
//        Type = TypeString
//        SubType = SubTypeString
// </srcblock>
// These lines in the table.info file can be used by external programs
// (like the filebrowser) to determine the type of table being handled.
// <p>
// The third line in the file is blank. The line(s) thereafter contain
// the possible readme information (note that multiple readme lines are
// possible). They can be added using the function <src>readmeAddLine</src>.
// <p>
// Existing tables do not have a table.info file yet. The table system
// will handle them correctly and use a blank type, subtype
// and readme string. A table.info file will be created when the
// table is opened for update.
// <p>
// To be sure that different table types have unique names, it can be
// useful to use enum's and to define them in one common file. For
// Casacore tables this enum is defined in this file.

// <example>
// <srcblock>
// // Open a table for update.
// Table table("name", Table::Update);
// // Get its TableInfo object.
// TableInfo& info = table.tableInfo();
// // Set type and subtype.
// info.setType ("IMAGE");
// info.setSubType ("SubTypeString");
// // Add a few readme lines. The second one adds 2 lines.
// info.readmeAddLine ("the first readme string");
// info.readmeAddLine ("the second readme string\nthe third readme string");
// // Display the type, etc..
// cout << info.type() << " " << info.subType() << endl;
// cout << info.readme();
// </srcblock>
// </example>

// <motivation>
// External programs need to be able to determine the type of a table.
// </motivation>

//# <todo asof="$DATE:$">
//# A List of bugs, limitations, extensions or planned refinements.
//# </todo>


class TableInfo
{
public:
    // enum for various standard Table types.
    // Underscores in the enumerator indicate different sub-types
    enum Type {
	// a PagedImage is a PagedArray with coordinates and Masking (opt.)
	PAGEDIMAGE,
	// a PagedArray (.../Lattices/PagedArray.h)
	PAGEDARRAY,
	// MeasurementSet main Table
	MEASUREMENTSET,
	// MeasurementSet Antenna table
	ANTENNA,
	// MeasurementSet Array table
	ARRAY,
	// MeasurementSet Feed characteristics table
	FEED,
	// MeasurementSet Field table
	FIELD,
	// MeasurementSet Observation information table
	OBSERVATION,
	// MeasurementSet Oserving Log table
	OBSLOG,
	// MeasurementSet Source table
	SOURCE,
	// MeasurementSet Spectral Window table
	SPECTRALWINDOW,
	// MeasurementSet System Calibration table
	SYSCAL,
	// MeasurementSet Weather table
	WEATHER,
	// Measurement Equation Calibration table
	ME_CALIBRATION,
	// Casacore Log table
	LOG,
	// A ComponentList table contains parameterised representations of the
	// sky brightness.
	COMPONENTLIST
    };

    // Create an empty object.
    TableInfo();

    // Create the object reading it from the given file name.
    // If the file does not exist, type, subtype and readme are
    // initialized to a blank string.
    explicit TableInfo (const String& fileName);

    // Create a TableInfo object of one of the predefined types. 
    // This is a centralised way of setting the Table type only. 
    TableInfo (Type which);

    // Copy constructor (copy semantics).
    TableInfo (const TableInfo& that);

    // Assignment (copy semantics).
    TableInfo& operator= (const TableInfo& that);

    ~TableInfo();

    // Get the table (sub)type.
    // <group>
    const String& type() const;
    const String& subType() const;
    // </group>

    // Get the readme.
    const String& readme() const;

    // Set the table (sub)type.
    void setType (const String& type);
    void setSubType (const String& subType);

    // Convert the Type enumerator to a type and subType string
    // <group>
    static String type(Type tableType);
    static String subType(Type tableType);
    // </group>

    // Clear the readme.
    void readmeClear();

    // Add a line to the readme.
    // It will itself add a newline character ('\n') to the end of the line.
    void readmeAddLine (const String& readmeLine);

    // Write the TableInfo object.
    void flush (const String& fileName);

private:
    String type_p;
    String subType_p;
    String readme_p;
    Bool   writeIt_p;    // True = object has changed, so has to be written
};



inline const String& TableInfo::type() const
{
    return type_p;
}
inline const String& TableInfo::subType() const
{
    return subType_p;
}
inline const String& TableInfo::readme() const
{
    return readme_p;
}




} //# NAMESPACE CASACORE - END

#endif