OpenRTM-aist  2.1.0
BufferBase.h
[詳解]
1 // -*- C++ -*-
20 #ifndef RTC_BUFFERBASE_H
21 #define RTC_BUFFERBASE_H
22 
23 #include <cstddef>
24 #include <coil/Properties.h>
25 #include <rtm/BufferStatus.h>
26 #include <chrono>
27 
42 namespace RTC
43 {
104  template <class DataType>
106  {
107  public:
108 
120  virtual ~BufferBase() = default;
121 
133  virtual void init(const coil::Properties& prop) = 0;
134 
154  virtual size_t length() const = 0;
155 
180  virtual BufferStatus length(size_t n) = 0;
181 
205  virtual BufferStatus reset() = 0;
206 
207 
208  //----------------------------------------------------------------------
230  virtual DataType* wptr(long int n = 0) = 0;
231 
254  virtual BufferStatus advanceWptr(long int n = 1, bool unlock_enable = true) = 0;
255 
281  virtual BufferStatus put(const DataType& value) = 0;
282 
308  virtual BufferStatus write(const DataType& value,
309  std::chrono::nanoseconds timeout
310  = std::chrono::nanoseconds(-1)) = 0;
311 
333  virtual size_t writable() const = 0;
334 
354  virtual bool full() const = 0;
355 
356  //----------------------------------------------------------------------
377  virtual DataType* rptr(long int n = 0) = 0;
378 
401  virtual BufferStatus advanceRptr(long int n = 1, bool unlock_enable = true) = 0;
402 
428  virtual BufferStatus get(DataType& value) = 0;
429 
449  virtual DataType& get() = 0;
450 
474  virtual BufferStatus read(DataType& value,
475  std::chrono::nanoseconds nsec
476  = std::chrono::nanoseconds(-1)) = 0;
477 
499  virtual size_t readable() const = 0;
500 
520  virtual bool empty() const = 0;
521 
522  };
523 
550  template <class DataType>
552  : public BufferBase<DataType>
553  {
554  public:
576  explicit NullBuffer(long int size = 1)
577  : m_length(size)
578  {
579  }
580 
596  virtual ~NullBuffer() = default;
597 
617  virtual long int length() const
618  {
619  return 1;
620  }
621 
645  virtual bool write(const DataType& value)
646  {
647  m_data = value;
648  return true;
649  }
650 
674  virtual bool read(DataType& value)
675  {
676  value = m_data;
677  return true;
678  }
679 
699  virtual bool isFull() const
700  {
701  return false;
702  }
703 
723  virtual bool isEmpty() const
724  {
725  return false;
726  }
727 
728  protected:
748  virtual void put(const DataType& data)
749  {
750  m_data = data;
751  }
752 
772  virtual const DataType& get()
773  {
774  return m_data;
775  }
776 
799  virtual DataType& getRef()
800  {
801  return m_data;
802  }
803 
804  private:
805  DataType m_data;
806  long int m_length;
807  };
808 } // namespace RTC
809 #endif // BufferBase_h
Buffer status enum definition
BufferBase 抽象クラス
Definition: BufferBase.h:106
virtual size_t writable() const =0
バッファに書込み可能な要素数
virtual DataType * wptr(long int n=0)=0
バッファの現在の書込み要素のポインタ
virtual BufferStatus advanceRptr(long int n=1, bool unlock_enable=true)=0
読み出しポインタを進める
virtual BufferStatus put(const DataType &value)=0
バッファにデータを書き込む
virtual size_t length() const =0
バッファの長さを取得する
virtual BufferStatus get(DataType &value)=0
バッファからデータを読み出す
virtual ~BufferBase()=default
仮想デストラクタ
virtual void init(const coil::Properties &prop)=0
バッファの設定
virtual BufferStatus reset()=0
バッファの状態をリセットする
virtual size_t readable() const =0
バッファから読み出し可能な要素数
virtual DataType * rptr(long int n=0)=0
バッファの現在の読み出し要素のポインタ
virtual BufferStatus read(DataType &value, std::chrono::nanoseconds nsec=std::chrono::nanoseconds(-1))=0
バッファからデータを読み出す
virtual BufferStatus length(size_t n)=0
バッファの長さをセットする
virtual BufferStatus write(const DataType &value, std::chrono::nanoseconds timeout=std::chrono::nanoseconds(-1))=0
バッファにデータを書き込む
virtual bool full() const =0
バッファfullチェック
virtual bool empty() const =0
バッファemptyチェック
virtual BufferStatus advanceWptr(long int n=1, bool unlock_enable=true)=0
書込みポインタを進める
virtual DataType & get()=0
バッファからデータを読み出す
ダミーバッファ実装クラス
Definition: BufferBase.h:553
virtual void put(const DataType &data)
バッファにデータを格納
Definition: BufferBase.h:748
virtual bool isFull() const
バッファfullチェック
Definition: BufferBase.h:699
virtual long int length() const
バッファ長(1固定)を取得する
Definition: BufferBase.h:617
virtual ~NullBuffer()=default
デストラクタ
virtual const DataType & get()
バッファからデータを取得する
Definition: BufferBase.h:772
NullBuffer(long int size=1)
コンストラクタ
Definition: BufferBase.h:576
virtual DataType & getRef()
次に書き込むバッファへの参照を取得する
Definition: BufferBase.h:799
virtual bool read(DataType &value)
バッファからデータを読み出す
Definition: BufferBase.h:674
virtual bool write(const DataType &value)
バッファにデータを書き込む
Definition: BufferBase.h:645
virtual bool isEmpty() const
バッファemptyチェック
Definition: BufferBase.h:723
RTコンポーネント
coil::Properties Properties
Definition: RTC.h:72
BufferStatus
BufferStatus リターンコード
Definition: BufferStatus.h:57