This file is indexed.

/usr/include/casacore/ms/MSOper/MSValidIds.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
//# MSValidIds: ensures that required MS Ids are valid or -1 by row number
//# Copyright (C) 2000
//# 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 MS_MSVALIDIDS_H
#define MS_MSVALIDIDS_H

#include <casacore/casa/aips.h>
#include <casacore/ms/MeasurementSets/MeasurementSet.h>

namespace casacore { //# NAMESPACE CASACORE - BEGIN

//# Forward declarations
class ROMSColumns;

// <summary>
// </summary>

// <use visibility=export>

// <reviewed reviewer="" date="yyyy/mm/dd" tests="" demos="">
// </reviewed>

// <prerequisite>
//   <li> MeasurementSet
// </prerequisite>
//
// <etymology>
// </etymology>
//
// <synopsis>
// </synopsis>
//
// <example>
// </example>
//
// <motivation>
// </motivation>
//
// <thrown>
//    <li>
//    <li>
// </thrown>

class MSValidIds
{
public:
    // Construct one unattached to a MeasurementSet.  All functions return -1.
    // Use the attach function to attach this to a MeasurementSet after construction.
    MSValidIds();

    // Construct one attached to the indicated MeasurementSet
    MSValidIds(const MeasurementSet &ms);

    // Construct one from another
    MSValidIds(const MSValidIds &other);

    // The destructor
    ~MSValidIds();

    // Assignment operator, reference semantics.
    MSValidIds &operator=(const MSValidIds &other);

    // Attach this one to a MeasurementSet.  This can also be used to
    // re-attach to the same MeasurementSet when additional optional 
    // subtables have been added since this object was constructed.
    void attach(const MeasurementSet &ms);

    // These functions check on the validity of the appropriate value in
    // the main table or sub-tables in the case of some Ids.  The actual
    // value stored is returned unless the sub-table does not exist (for
    // optional subtables) or the indicated row number does not exist
    // in that sub-table where appropriate.
    // <group>
    Int antenna1(uInt rownr) const;
    Int antenna2(uInt rownr) const;
    Int dataDescId(uInt rownr) const;
    Int fieldId(uInt rownr) const;
    Int observationId(uInt rownr) const;
    Int processorId(uInt rownr) const;
    Int stateId(uInt rownr) const;
    // The polarizationId comes from the DATA_DESCRIPTION subtable, so dataDescId must
    // first be valid in order for this to also be valid.
    Int polarizationId(uInt rownr) const;
    // The spectralWindowId comes from the DATA_DESCRIPTION subtable, so dataDescId must
    // first be valid in order for this to also be valid.
    Int spectralWindowId(uInt rownr) const;
    // the dopplerId comes from the SPECTRAL_WINDOW subtable so spectralWindowId must
    // first be valid in order for this to also be valid.  Since the DOPPLER subtable
    // is not simply indexed by DOPPLER_ID, the DOPPLER subtable exists and a dopplerId
    // can be found in the SPECTRAL_WINDOW subtable, that value will be returned, whatever
    // it is.
    Int dopplerId(uInt rownr) const;
    // The sourceId comes from the FIELD subtable so fieldId must first be valid
    // in order for this to also be valid.  Since the SOURCE table is also
    // indexed by TIME, the only additional check is that a SOURCE table must
    // exist in order for this to be valid.
    Int sourceId(uInt rownr) const;
    // </group>
private:
    MeasurementSet ms_p;
    ROMSColumns *romsCols_p;

    Bool hasDoppler_p, hasSource_p;
    
    void clear();
    Int checkResult(Int testResult, const Table &mstable) const
    { return (testResult < 0 || uInt(testResult) >= mstable.nrow()) ? -1 : testResult;}

    Bool checkRow(uInt rownr) const {return rownr < ms_p.nrow();}
};


} //# NAMESPACE CASACORE - END

#endif