My Project
 All Classes Files Functions Variables Enumerations Enumerator Friends Macros Pages
DataFrame.h
Go to the documentation of this file.
1 #ifndef GCP_UTIL_DATAFRAME_H
2 #define GCP_UTIL_DATAFRAME_H
3 
11 #include "gcp/util/common/AxisRange.h"
12 #include "gcp/util/common/Complex.h"
13 #include "gcp/util/common/RegDate.h"
14 #include "gcp/util/common/DataType.h"
15 #include "gcp/util/common/Mutex.h"
16 
17 namespace gcp {
18  namespace util {
19 
20  class AxisRange;
21 
27  class DataFrame {
28  public:
29 
33  DataFrame();
34 
38  virtual ~DataFrame();
39 
44  virtual void resize(unsigned int nBuffer);
45 
49  virtual unsigned int size() = 0;
50 
54  unsigned int nReg();
55 
59  unsigned int nByte();
60 
64  virtual unsigned char& operator[](unsigned int index);
65 
69  virtual void operator=(DataFrame& frame);
70 
75  virtual unsigned char* data() = 0;
76 
80  void pack(void* data, AxisRange& range, DataType::Type type,
81  unsigned iStart, bool lockFrame=true);
82 
87  void pack(void* data, unsigned ndata, DataType::Type type,
88  unsigned iStart, bool lockFrame=true);
89 
93  void packValue(void* data, AxisRange& range, DataType::Type type,
94  unsigned iStart, bool lockFrame=true);
95 
99  void packValue(void* data, unsigned ndata, DataType::Type type,
100  unsigned iStart, bool lockFrame=true);
101 
105  void addSum(void* data, AxisRange& range, DataType::Type type,
106  unsigned iStart, bool lockFrame=true);
107 
112  void addSum(void* data, unsigned ndata, DataType::Type type,
113  unsigned iStart, bool lockFrame=true);
114 
118  void addRunningAverage(void* data, AxisRange& range, DataType::Type type,
119  unsigned iStart, bool lockFrame=true);
120 
125  void addRunningAverage(void* data, unsigned ndata, DataType::Type type,
126  unsigned iStart, bool lockFrame=true);
127 
128  void resetRunningAvgCounter();
130 
134  void addUnion(void* data, AxisRange& range, DataType::Type type,
135  unsigned iStart, bool lockFrame=true);
136 
141  void addUnion(void* data, unsigned ndata, DataType::Type type,
142  unsigned iStart, bool lockFrame=true);
143 
147  void unpack(void* data, AxisRange& range, DataType::Type type,
148  unsigned iStart, bool lockFrame=true);
149 
154  void unpack(void* data, unsigned ndata, DataType::Type type,
155  unsigned iStart, bool lockFrame=true);
156 
162  void* getPtr(unsigned int index, DataType::Type type);
163 
164  // Methods for returning pointers of different types to internal
165  // data. These are made virtual so that inheritors can define
166  // what, if anything, happens when they are called. For certain
167  // types of frames, it may be inappropriate to recast pointers
168  // to internal data, in which case some of the following should
169  // throw exceptions.
170 
175  virtual bool* getBoolPtr(unsigned int index=0);
176 
181  virtual unsigned char* getUcharPtr(unsigned int index=0);
182 
187  virtual char* getCharPtr(unsigned int index=0);
188 
193  virtual unsigned short* getUshortPtr(unsigned int index=0);
194 
199  virtual short* getShortPtr(unsigned int index=0);
200 
205  virtual unsigned int* getUintPtr(unsigned int index=0);
206 
211  virtual int* getIntPtr(unsigned int index=0);
212 
217  virtual unsigned long* getUlongPtr(unsigned long index=0);
218 
223  virtual long* getLongPtr(unsigned long index=0);
224 
229  virtual float* getFloatPtr(unsigned int index=0);
230 
235  virtual double* getDoublePtr(unsigned int index=0);
236 
241  virtual RegDate::Data* getDatePtr(unsigned int index=0);
242 
247  virtual Complex<float>::Data* getComplexFloatPtr(unsigned int index=0);
248 
252  void lock();
253 
257  void unlock();
258 
259  public:
260 
261  // A counter for running averages
262 
263  unsigned nAvg_;
264 
265  private:
266 
270  Mutex guard_;
271 
275  AxisRange axisRange_;
276 
277  }; // End class DataFrame
278 
279  } // End namespace util
280 } // End namespace gcp
281 
282 
283 
284 
285 #endif // End #ifndef GCP_UTIL_DATAFRAME_H
void pack(void *data, AxisRange &range, DataType::Type type, unsigned iStart, bool lockFrame=true)
Definition: DataFrame.cc:118
void unlock()
Definition: DataFrame.cc:1259
Definition: AxisRange.h:19
void packValue(void *data, AxisRange &range, DataType::Type type, unsigned iStart, bool lockFrame=true)
Definition: DataFrame.cc:276
Definition: RegDate.h:22
virtual RegDate::Data * getDatePtr(unsigned int index=0)
Definition: DataFrame.cc:1230
void unpack(void *data, AxisRange &range, DataType::Type type, unsigned iStart, bool lockFrame=true)
Definition: DataFrame.cc:854
virtual int * getIntPtr(unsigned int index=0)
Definition: DataFrame.cc:1185
virtual bool * getBoolPtr(unsigned int index=0)
Definition: DataFrame.cc:1131
void lock()
Definition: DataFrame.cc:1247
virtual float * getFloatPtr(unsigned int index=0)
Definition: DataFrame.cc:1212
virtual unsigned int * getUintPtr(unsigned int index=0)
Definition: DataFrame.cc:1176
void resetRunningAvgCounter()
Definition: DataFrame.cc:1271
Definition: Mutex.h:16
virtual unsigned short * getUshortPtr(unsigned int index=0)
Definition: DataFrame.cc:1158
virtual void operator=(DataFrame &frame)
Definition: DataFrame.cc:58
virtual ~DataFrame()
Definition: DataFrame.cc:20
virtual Complex< float >::Data * getComplexFloatPtr(unsigned int index=0)
Definition: DataFrame.cc:1239
Definition: DataFrame.h:27
virtual unsigned int size()=0
Definition: DataFrame.cc:32
void * getPtr(unsigned int index, DataType::Type type)
Definition: DataFrame.cc:67
void incrementRunningAvgCounter()
Definition: DataFrame.cc:1279
unsigned int nReg()
Definition: DataFrame.cc:37
void addUnion(void *data, AxisRange &range, DataType::Type type, unsigned iStart, bool lockFrame=true)
Definition: DataFrame.cc:748
virtual short * getShortPtr(unsigned int index=0)
Definition: DataFrame.cc:1167
virtual unsigned char & operator[](unsigned int index)
Definition: DataFrame.cc:53
virtual double * getDoublePtr(unsigned int index=0)
Definition: DataFrame.cc:1221
virtual void resize(unsigned int nBuffer)
Definition: DataFrame.cc:27
virtual long * getLongPtr(unsigned long index=0)
Definition: DataFrame.cc:1203
virtual char * getCharPtr(unsigned int index=0)
Definition: DataFrame.cc:1149
unsigned int nByte()
Definition: DataFrame.cc:45
virtual unsigned long * getUlongPtr(unsigned long index=0)
Definition: DataFrame.cc:1194
virtual unsigned char * data()=0
void addSum(void *data, AxisRange &range, DataType::Type type, unsigned iStart, bool lockFrame=true)
Definition: DataFrame.cc:418
virtual unsigned char * getUcharPtr(unsigned int index=0)
Definition: DataFrame.cc:1140
Definition: Complex.h:26
DataFrame()
Definition: DataFrame.cc:15
void addRunningAverage(void *data, AxisRange &range, DataType::Type type, unsigned iStart, bool lockFrame=true)
Definition: DataFrame.cc:549