Vi2StatsWeightsIterator.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef MSVIS_STATISTICS_VI2_STATS_WEIGHTS_ITERATOR_H_
00030 #define MSVIS_STATISTICS_VI2_STATS_WEIGHTS_ITERATOR_H_
00031
00032 #include <casacore/casa/aips.h>
00033 #include <msvis/MSVis/VisibilityIterator2.h>
00034 #include <msvis/MSVis/VisBuffer2.h>
00035 #include <iterator>
00036
00037 namespace casa {
00038
00039
00040
00041
00042 template<class T>
00043 class Vi2StatsWeightsIterator
00044 : public std::iterator<std::input_iterator_tag,Float> {
00045
00046 public:
00047 Vi2StatsWeightsIterator& operator++();
00048
00049 Vi2StatsWeightsIterator operator++(int);
00050
00051 bool operator==(const Vi2StatsWeightsIterator& rhs);
00052
00053 bool operator!=(const Vi2StatsWeightsIterator& rhs);
00054
00055 Float operator*();
00056
00057 bool atEnd();
00058
00059 protected:
00060 Vi2StatsWeightsIterator(vi::VisBuffer2 *vb2)
00061 : vb2(vb2) {};
00062
00063 Vi2StatsWeightsIterator() {};
00064
00065 vi::VisBuffer2 *vb2;
00066 };
00067
00068
00069 class Vi2StatsWeightsCubeIterator final
00070 : public Vi2StatsWeightsIterator<Vi2StatsWeightsCubeIterator> {
00071
00072 public:
00073 Vi2StatsWeightsCubeIterator(vi::VisBuffer2 *vb2);
00074
00075 Vi2StatsWeightsCubeIterator();
00076
00077 Vi2StatsWeightsCubeIterator& operator++();
00078
00079 Vi2StatsWeightsCubeIterator operator++(int);
00080
00081 bool operator==(const Vi2StatsWeightsCubeIterator& rhs);
00082
00083 bool operator!=(const Vi2StatsWeightsCubeIterator& rhs);
00084
00085 Float operator*();
00086
00087 bool atEnd();
00088
00089 protected:
00090 uInt correlation;
00091 uInt nCorrelations;
00092 uInt channel;
00093 uInt nChannels;
00094 uInt row;
00095 uInt nRows;
00096 };
00097
00098
00099 class Vi2StatsWeightsRowIterator final
00100 : public Vi2StatsWeightsIterator<Vi2StatsWeightsRowIterator> {
00101
00102 public:
00103 Vi2StatsWeightsRowIterator(vi::VisBuffer2 *vb2);
00104
00105 Vi2StatsWeightsRowIterator();
00106
00107 Vi2StatsWeightsRowIterator& operator++();
00108
00109 Vi2StatsWeightsRowIterator operator++(int);
00110
00111 bool operator==(const Vi2StatsWeightsRowIterator& rhs);
00112
00113 bool operator!=(const Vi2StatsWeightsRowIterator& rhs);
00114
00115 Float operator*();
00116
00117 bool atEnd();
00118
00119 protected:
00120 uInt row;
00121 uInt nRows;
00122 };
00123
00124 }
00125
00126 #endif // MSVIS_STATISTICS_VI2_STATS_WEIGHTS_ITERATOR_H_