/usr/include/casacore/tables/Tables/ColDescSet.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 | //# ColDescSet.h: This class defines a set of column descriptions
//# Copyright (C) 1994,1995,1996,1997,1999,2000,2001
//# 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_COLDESCSET_H
#define TABLES_COLDESCSET_H
//# Includes
#include <casacore/casa/aips.h>
#include <casacore/tables/Tables/ColumnDesc.h>
#include <casacore/casa/Containers/SimOrdMap.h>
#include <casacore/casa/BasicSL/String.h>
#include <casacore/casa/iosfwd.h>
namespace casacore { //# NAMESPACE CASACORE - BEGIN
// <summary>
// Set of table column descriptions
// </summary>
// <use visibility=local>
// <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
// </reviewed>
// <prerequisite>
//# Classes you should understand before using this one.
// <li> TableDesc
// <li> BaseColumnDesc
// <li> Keyword module
// </prerequisite>
// <etymology>
// ColumnDescSet is the set of column descriptions in a table description.
// </etymology>
// <synopsis>
// ColumnDescSet is used by
// <linkto class="TableDesc:description">TableDesc</linkto>
// to store all column descriptions.
//
// In principle this class is only used internally by the table system.
// However, there is a function in TableDesc which gives const access
// to this class. This can be used by the user to call functions
// like isDisjoint.
// </synopsis>
//# <todo asof="$DATE:$">
//# A List of bugs, limitations, extensions or planned refinements.
//# </todo>
class ColumnDescSet
{
friend class TableDesc;
public:
// Construct an empty column set.
ColumnDescSet();
// Copy constructor (copy semantics).
ColumnDescSet (const ColumnDescSet&);
~ColumnDescSet();
// Assignment (copy semantics).
ColumnDescSet& operator= (const ColumnDescSet&);
// Get a column by its name.
// <group>
ColumnDesc& operator[] (const String& name);
const ColumnDesc& operator[] (const String& name) const
{ return (*(ColumnDescSet*)this)[name]; }
// </group>
// Get a column by its index.
// <group>
ColumnDesc& operator[] (uInt index)
{ return *(ColumnDesc*)(colSeq_p[index]); }
const ColumnDesc& operator[] (uInt index) const
{ return *(ColumnDesc*)(colSeq_p[index]); }
// </group>
// Get nr of columns in this set.
uInt ncolumn() const
{ return cols_p.ndefined(); }
// Test if a column is defined in this set.
Bool isDefined (const String& name) const
{ return (cols_p.isDefined (name)); }
// Test if this set equals another one.
// It is equal if the number of columns is equal and all field names in
// this set occur in the other too. The order of the columns
// is not important.
// <br>The flag equalDataTypes is set to True if the data types
// of all columns match.
Bool isEqual (const ColumnDescSet& other, Bool& equalDataTypes) const;
// Test if this set is a subset of another one.
// It is similar to isEqual above.
Bool isSubset (const ColumnDescSet& other, Bool& equalDataTypes) const;
// Test if this set is a strict subset of another one, thus
// if it is a subset and not equal.
Bool isStrictSubset (const ColumnDescSet& other,
Bool& equalDataTypes) const;
// Test if this set is a superset of another one.
Bool isSuperset (const ColumnDescSet& other, Bool& equalDataTypes) const
{ return other.isSubset (*this, equalDataTypes); }
// Test if this set is a strict superset of another one, thus
// if it is a superset and not equal.
Bool isStrictSuperset (const ColumnDescSet& other,
Bool& equalDataTypes) const
{ return other.isStrictSubset (*this, equalDataTypes); }
// Test if this and the other column set are disjoint.
Bool isDisjoint (const ColumnDescSet& other) const;
// Get const access to the column descriptions.
//#// const TypedKeywords<ColumnDesc>& columns() const
//#// { return cols_p; }
// Show the columns in the set.
void show (ostream& os) const;
// Check recursevily if the descriptions of all subtables are known.
void checkSubTableDesc() const;
private:
// Add a column.
// An exception is thrown if a column with this name already exists.
ColumnDesc& addColumn (const ColumnDesc&);
// Add a column with another name.
// An exception is thrown if a column with this name already exists.
ColumnDesc& addColumn (const ColumnDesc&, const String& newname);
// Remove a column.
// An exception is thrown if the column with this name does not exist.
void remove (const String& name);
// Rename a column in the set.
// An exception is thrown if the new name already exists or if
// the old name does not exist.
void rename (const String& newname, const String& oldname);
// Test if all columns are part of the other set.
// The flag equalDataTypes is set to True if the data types of the
// columns in both sets are the same.
Bool allExist (const ColumnDescSet&, Bool& equalDataTypes) const;
// Add another (disjoint) column set.
// If the sets are not disjoint (i.e. the other set contains a column
// with an already existing name, an exception is thrown and nothing
// of the other set is added.
void add (const ColumnDescSet& set);
// Put the object.
void putFile (AipsIO& ios, const TableAttr&) const;
// Get the object
void getFile (AipsIO&, const TableAttr&);
// The set of all columns.
SimpleOrderedMap<String,ColumnDesc> cols_p;
// The order of addition of column descriptions.
//# This is in fact a Block<ColumnDesc*>, but a void* is used
//# to reduce the number of template instantiations.
Block<void*> colSeq_p;
};
} //# NAMESPACE CASACORE - END
#endif
|