OpenRTM-aist  1.2.1
BufferBase.h
[詳解]
1 // -*- C++ -*-
20 #ifndef RTC_BUFFERBASE_H
21 #define RTC_BUFFERBASE_H
22 
23 #include <stddef.h>
24 #include <coil/Properties.h>
25 #include <rtm/BufferStatus.h>
26 
41 namespace RTC
42 {
103  template <class DataType>
105  : public BufferStatus
106  {
107  public:
109 
121  virtual ~BufferBase(void)
122  {
123  };
124 
136  virtual void init(const coil::Properties& prop) = 0;
137 
157  virtual size_t length(void) const = 0;
158 
183  virtual ReturnCode length(size_t n) = 0;
184 
208  virtual ReturnCode reset() = 0;
209 
210 
211  //----------------------------------------------------------------------
233  virtual DataType* wptr(long int n = 0) = 0;
234 
257  virtual ReturnCode advanceWptr(long int n = 1, bool unlock_enable = true) = 0;
258 
284  virtual ReturnCode put(const DataType& value) = 0;
285 
311  virtual ReturnCode write(const DataType& value,
312  long int sec = -1, long int nsec = -1) = 0;
313 
335  virtual size_t writable() const = 0;
336 
356  virtual bool full(void) const = 0;
357 
358  //----------------------------------------------------------------------
379  virtual DataType* rptr(long int n = 0) = 0;
380 
403  virtual ReturnCode advanceRptr(long int n = 1, bool unlock_enable = true) = 0;
404 
430  virtual ReturnCode get(DataType& value) = 0;
431 
451  virtual DataType& get() = 0;
452 
476  virtual ReturnCode read(DataType& value,
477  long int sec = -1, long int nsec = -1) = 0;
478 
500  virtual size_t readable() const = 0;
501 
521  virtual bool empty(void) const = 0;
522 
523  };
524 
551  template <class DataType>
553  : public BufferBase<DataType>
554  {
555  public:
577  NullBuffer(long int size = 1)
578  : m_length(1)
579  {
580  }
581 
597  virtual ~NullBuffer(void)
598  {
599  }
600 
620  virtual long int length(void) const
621  {
622  return 1;
623  }
624 
648  virtual bool write(const DataType& value)
649  {
650  m_data = value;
651  return true;
652  }
653 
677  virtual bool read(DataType& value)
678  {
679  value = m_data;
680  return true;
681  }
682 
702  virtual bool isFull(void) const
703  {
704  return false;
705  }
706 
726  virtual bool isEmpty(void) const
727  {
728  return false;
729  }
730 
731  protected:
751  virtual void put(const DataType& data)
752  {
753  m_data = data;
754  }
755 
775  virtual const DataType& get(void)
776  {
777  return m_data;
778  }
779 
802  virtual DataType& getRef(void)
803  {
804  return m_data;
805  }
806 
807  private:
808  DataType m_data;
809  long int m_length;
810  };
811 }; // namespace RTC
812 #endif // BufferBase_h
virtual bool isEmpty(void) const
バッファemptyチェック
Definition: BufferBase.h:726
RTコンポーネント
virtual ReturnCode advanceRptr(long int n=1, bool unlock_enable=true)=0
読み出しポインタを進める
ダミーバッファ実装クラス
Definition: BufferBase.h:552
virtual size_t writable() const =0
バッファに書込み可能な要素数
virtual ReturnCode advanceWptr(long int n=1, bool unlock_enable=true)=0
書込みポインタを進める
NullBuffer(long int size=1)
コンストラクタ
Definition: BufferBase.h:577
virtual bool read(DataType &value)
バッファからデータを読み出す
Definition: BufferBase.h:677
virtual BUFFERSTATUS_ENUM ~BufferBase(void)
仮想デストラクタ
Definition: BufferBase.h:121
virtual ReturnCode put(const DataType &value)=0
バッファにデータを書き込む
BufferStatus mixin クラス
Definition: BufferStatus.h:52
virtual ReturnCode reset()=0
バッファの状態をリセットする
virtual long int length(void) const
バッファ長(1固定)を取得する
Definition: BufferBase.h:620
virtual DataType * wptr(long int n=0)=0
バッファの現在の書込み要素のポインタ
#define BUFFERSTATUS_ENUM
RTC::BufferStatus 導入
Definition: BufferStatus.h:157
Buffer status enum definition.
virtual bool full(void) const =0
バッファfullチェック
virtual DataType * rptr(long int n=0)=0
バッファの現在の読み出し要素のポインタ
virtual DataType & getRef(void)
次に書き込むバッファへの参照を取得する
Definition: BufferBase.h:802
virtual ReturnCode read(DataType &value, long int sec=-1, long int nsec=-1)=0
バッファからデータを読み出す
プロパティセットを表現するクラス
Definition: Properties.h:101
Property list class (derived from Java Properties)
virtual size_t readable() const =0
バッファから読み出し可能な要素数
virtual ReturnCode write(const DataType &value, long int sec=-1, long int nsec=-1)=0
バッファにデータを書き込む
virtual bool isFull(void) const
バッファfullチェック
Definition: BufferBase.h:702
virtual void put(const DataType &data)
バッファにデータを格納
Definition: BufferBase.h:751
virtual void init(const coil::Properties &prop)=0
バッファの設定
BufferBase 抽象クラス
Definition: BufferBase.h:104
virtual bool write(const DataType &value)
バッファにデータを書き込む
Definition: BufferBase.h:648
virtual ~NullBuffer(void)
デストラクタ
Definition: BufferBase.h:597
virtual bool empty(void) const =0
バッファemptyチェック
virtual size_t length(void) const =0
バッファの長さを取得する