This file is indexed.

/usr/include/casacore/casa/Arrays/VectorIter.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
//# VectorIter.h: Iterate a vector cursor through another array
//# Copyright (C) 1993,1994,1995,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 CASA_VECTORITER_H
#define CASA_VECTORITER_H


#include <casacore/casa/aips.h>
#include <casacore/casa/Arrays/ArrayIter.h>
#include <casacore/casa/Arrays/Vector.h>

namespace casacore { //# NAMESPACE CASACORE - BEGIN

// 
// <summary> Iterate an Vector cursor through another Array. </summary>
// <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="" demos="">
// </reviewed>
//
// VectorIterator steps a Vector (the "cursor") through an array for the
// given axis.
// The cursor "refers" to storage in the array, so that changing the
// values in the cursor changes values in the original array.
//
// This class is derived from ArrayIterator; basically it only adds
// the vector() member function which allows you to access the cursor
// as a Vector.
//
// <note role=tip>
// The origin of the cursor, i.e. the subarray that moves through the
// larger array, is always zero.
// </note>
//
// In this example we sum all the elements of an array; of course we already
// have the "sum" function in ArrayMath.h that we should use instead.
//
// <srcblock>
// Array<Float> af;
// // set af
// VectorIterator vi(af);
// Float sum = 0.0;
// uInt n = vi.vector().nelements();
// while (! vi.pastEnd()) {
//     for (Int i=0; i < n; i++) {   // N.B.; cursor always 0 based.
//         sum += vi.vector()(i);
//     }
//     vi.next();
// }
// </srcblock>

template<class T> class VectorIterator : public ArrayIterator<T>
{
public:
    // Iterate by vector cursors through array "a".
    // The vector cursor is taken for the given axis.
    explicit VectorIterator(Array<T> &a, uInt axis=0);

    // Return a Vector at the current position.
    Vector<T> &vector() {return *(Vector<T> *)this->ap_p;}

private:
    // Not implemented.
    VectorIterator(const VectorIterator<T> &);
    // Not implemented.
    VectorIterator<T> &operator=(const VectorIterator<T> &);
};

// 
// <summary> Iterate a Vector cursor through another Array. </summary>
// <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="" demos="">
// </reviewed>
//
// ReadOnlyVectorIterator behaves exactly like VectorIterator (cf.) only
// it should be used on const Arrays.
//
// <note role=tip> Note that the R/O VectorIterator is not derived from R/O 
//        ArrayIterator.
// </note>

template<class T> class ReadOnlyVectorIterator 
{
public:
    // <group>
    explicit ReadOnlyVectorIterator(const Array<T> &a, uInt axis=0)
      : vi(const_cast<Array<T>&>(a), axis) {}

    void next()   {vi.next();}
    void reset() {vi.origin();}
    void origin() {vi.origin();}
    
    const Array<T> &array() {return vi.array();}
    const Vector<T> &vector() {return vi.vector();}

    Bool atStart() const {return vi.atStart();}
    Bool pastEnd() const {return vi.pastEnd();}
    const IPosition &pos() const {return vi.pos();}
    IPosition endPos() const {return vi.endPos();}
    uInt ndim() const {return vi.ndim();}
    // </group>
private:
    // Not implemented.
    ReadOnlyVectorIterator(const ReadOnlyVectorIterator<T> &);
    // Not implemented.
    ReadOnlyVectorIterator<T> &operator=(const ReadOnlyVectorIterator<T> &);

    VectorIterator<T> vi;
};


} //# NAMESPACE CASACORE - END

#ifndef CASACORE_NO_AUTO_TEMPLATES
#include <casacore/casa/Arrays/VectorIter.tcc>
#endif //# CASACORE_NO_AUTO_TEMPLATES
#endif