My Project
 All Classes Files Functions Variables Enumerations Enumerator Friends Macros Pages
DoubleBufferVec.h
Go to the documentation of this file.
1 // $Id: DoubleBufferVec.h,v 1.1.1.1 2009/07/06 23:57:25 eml Exp $
2 
3 #ifndef GCP_UTIL_DOUBLEBUFFERVEC_H
4 #define GCP_UTIL_DOUBLEBUFFERVEC_H
5 
15 #include "gcp/util/common/DoubleBuffer.h"
16 
17 #include <iostream>
18 #include <valarray>
19 
20 namespace gcp {
21  namespace util {
22 
23  template<class type>
24  class DoubleBufferVec : public DoubleBuffer {
25  public:
26 
30  DoubleBufferVec(unsigned n=0)
31  {
32  resize(n);
33  }
34 
35  type* getReadBuffer()
36  {
37  return (type*)grabReadBuffer();
38  }
39 
40  type* getWriteBuffer()
41  {
42  return (type*)grabWriteBuffer();
43  }
44 
48  virtual ~DoubleBufferVec() {};
49 
50  unsigned size() {
51  return data1_.size();
52  }
53 
54  void resize(unsigned n) {
55 
56  data1_.resize(n);
57  data2_.resize(n);
58 
59  buf1_.data_ = &data1_[0];
60  buf2_.data_ = &data2_[0];
61  }
62 
63  private:
64 
65  std::valarray<type> data1_;
66  std::valarray<type> data2_;
67 
68  }; // End class DoubleBufferVec
69 
70  } // End namespace util
71 } // End namespace gcp
72 
73 
74 
75 #endif // End #ifndef GCP_UTIL_DOUBLEBUFFERVEC_H
Definition: DoubleBufferVec.h:24
void * grabReadBuffer()
Definition: DoubleBuffer.cc:60
virtual ~DoubleBufferVec()
Definition: DoubleBufferVec.h:48
Definition: DoubleBuffer.h:24
void * grabWriteBuffer()
Definition: DoubleBuffer.cc:69
DoubleBufferVec(unsigned n=0)
Definition: DoubleBufferVec.h:30