CARMA C++
DataFrame.h
Go to the documentation of this file.
1 #ifndef SZA_UTIL_DATAFRAME_H
2 #define SZA_UTIL_DATAFRAME_H
3 
12 #include "carma/szautil/Complex.h"
13 #include "carma/szautil/RegDate.h"
14 #include "carma/szautil/DataType.h"
15 #include "carma/szautil/Mutex.h"
16 
17 namespace sza {
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  virtual std::vector<unsigned char>& dataVec() = 0;
77 
81  void pack(void* data, AxisRange& range, DataType::Type type,
82  unsigned iStart, bool lockFrame=true);
83 
88  void pack(void* data, unsigned ndata, DataType::Type type,
89  unsigned iStart, bool lockFrame=true);
90 
94  void packValue(void* data, AxisRange& range, DataType::Type type,
95  unsigned iStart, bool lockFrame=true);
96 
100  void packValue(void* data, unsigned ndata, DataType::Type type,
101  unsigned iStart, bool lockFrame=true);
102 
106  void addSum(void* data, AxisRange& range, DataType::Type type,
107  unsigned iStart, bool lockFrame=true);
108 
113  void addSum(void* data, unsigned ndata, DataType::Type type,
114  unsigned iStart, bool lockFrame=true);
115 
119  void addRunningAverage(void* data, AxisRange& range, DataType::Type type,
120  unsigned iStart, bool lockFrame=true);
121 
126  void addRunningAverage(void* data, unsigned ndata, DataType::Type type,
127  unsigned iStart, bool lockFrame=true);
128 
129  void resetRunningAvgCounter();
130  void incrementRunningAvgCounter();
131 
135  void addUnion(void* data, AxisRange& range, DataType::Type type,
136  unsigned iStart, bool lockFrame=true);
137 
142  void addUnion(void* data, unsigned ndata, DataType::Type type,
143  unsigned iStart, bool lockFrame=true);
144 
148  void unpack(void* data, AxisRange& range, DataType::Type type,
149  unsigned iStart, bool lockFrame=true);
150 
155  void unpack(void* data, unsigned ndata, DataType::Type type,
156  unsigned iStart, bool lockFrame=true);
157 
163  void* getPtr(unsigned int index, DataType::Type type);
164 
165  // Methods for returning pointers of different types to internal
166  // data. These are made virtual so that inheritors can define
167  // what, if anything, happens when they are called. For certain
168  // types of frames, it may be inappropriate to recast pointers
169  // to internal data, in which case some of the following should
170  // throw exceptions.
171 
176  virtual bool* getBoolPtr(unsigned int index=0);
177 
182  virtual unsigned char* getUcharPtr(unsigned int index=0);
183 
188  virtual char* getCharPtr(unsigned int index=0);
189 
194  virtual unsigned short* getUshortPtr(unsigned int index=0);
195 
200  virtual short* getShortPtr(unsigned int index=0);
201 
206  virtual unsigned int* getUintPtr(unsigned int index=0);
207 
212  virtual int* getIntPtr(unsigned int index=0);
213 
218  virtual unsigned long* getUlongPtr(unsigned long index=0);
219 
224  virtual long* getLongPtr(unsigned long index=0);
225 
230  virtual float* getFloatPtr(unsigned int index=0);
231 
236  virtual double* getDoublePtr(unsigned int index=0);
237 
242  virtual RegDate::Data* getDatePtr(unsigned int index=0);
243 
248  virtual Complex<float>::Data* getComplexFloatPtr(unsigned int index=0);
249 
253  void lock();
254 
258  void unlock();
259 
260  public:
261 
262  // A counter for running averages
263 
264  unsigned nAvg_;
265 
266  private:
267 
271  Mutex guard_;
272 
276  AxisRange axisRange_;
277 
278  }; // End class DataFrame
279 
280  } // End namespace util
281 } // End namespace sza
282 
283 
284 
285 #endif // End #ifndef SZA_UTIL_DATAFRAME_H
virtual long * getLongPtr(unsigned long index=0)
Return a pointer to our internal data, cast as an integer pointer.
Tagged: Tue Jun 22 22:32:16 UTC 2004.
void addUnion(void *data, AxisRange &range, DataType::Type type, unsigned iStart, bool lockFrame=true)
Pack an array into our internal memory.
void addRunningAverage(void *data, AxisRange &range, DataType::Type type, unsigned iStart, bool lockFrame=true)
Pack an array into our internal memory.
void unlock()
Unlock the frame.
unsigned int nReg()
Return the number of registers in the internal buffer.
virtual unsigned long * getUlongPtr(unsigned long index=0)
Return a pointer to our internal data, cast as an unsigned long pointer.
void pack(void *data, AxisRange &range, DataType::Type type, unsigned iStart, bool lockFrame=true)
Pack an array into our internal memory.
void addSum(void *data, AxisRange &range, DataType::Type type, unsigned iStart, bool lockFrame=true)
Pack an array into our internal memory.
virtual ~DataFrame()
Destructor.
virtual unsigned char * data()=0
Get a pointer to our internal data suitable for using as an external network buffer.
virtual Complex< float >::Data * getComplexFloatPtr(unsigned int index=0)
Return a pointer to our internal data, cast as a Complex&lt;float&gt; pointer.
virtual RegDate::Data * getDatePtr(unsigned int index=0)
Return a pointer to our internal data, cast as a Date pointer.
virtual char * getCharPtr(unsigned int index=0)
Return a pointer to our internal data, cast as a char pointer.
virtual double * getDoublePtr(unsigned int index=0)
Return a pointer to our internal data, cast as a double pointer.
void lock()
Lock the frame.
virtual unsigned short * getUshortPtr(unsigned int index=0)
Return a pointer to our internal data, cast as an unsigned short pointer.
virtual unsigned int size()=0
Return the size of the internal buffer.
virtual unsigned int * getUintPtr(unsigned int index=0)
Return a pointer to our internal data, cast as an unsigned int pointer.
void packValue(void *data, AxisRange &range, DataType::Type type, unsigned iStart, bool lockFrame=true)
Pack a single value for all elements of an array.
unsigned int nByte()
Return the number of bytes in the internal buffer.
Tagged: Tue Oct 12 09:13:47 PDT 2004.
Tagged: Tue Oct 5 13:18:11 PDT 2004.
void unpack(void *data, AxisRange &range, DataType::Type type, unsigned iStart, bool lockFrame=true)
Unpack an array from our internal memory.
virtual bool * getBoolPtr(unsigned int index=0)
Return a pointer to our internal data, cast as a bool pointer.
virtual int * getIntPtr(unsigned int index=0)
Return a pointer to our internal data, cast as an integer pointer.
void * getPtr(unsigned int index, DataType::Type type)
Return an arbitrary pointer to our internal data, cast as the requested type.
virtual short * getShortPtr(unsigned int index=0)
Return a pointer to our internal data, cast as a short pointer.
virtual float * getFloatPtr(unsigned int index=0)
Return a pointer to our internal data, cast as a float pointer.
virtual void resize(unsigned int nBuffer)
Resize the internal buffer.
Tagged: Sat Mar 27 16:28:13 PST 2004.
DataFrame()
Constructors.
virtual void operator=(DataFrame &frame)
Define an overloadable operator for assignment.
A generic interface for a data frame consisting of contiguous blocks of arbitrary-sized types...
Definition: DataFrame.h:27
Tagged: Tue Oct 12 10:25:49 PDT 2004.
virtual unsigned char * getUcharPtr(unsigned int index=0)
Return a pointer to our internal data, cast as an unsigned char pointer.
virtual unsigned char & operator[](unsigned int index)
Define an operator for accessing elements of the frame buffer.