OpenRTM-aist 2.0.2
読み取り中…
検索中…
一致する文字列を見つけられません
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
42namespace 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 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 DataType & get()=0
バッファからデータを読み出す
virtual ~BufferBase()=default
仮想デストラクタ
virtual void init(const coil::Properties &prop)=0
バッファの設定
virtual BufferStatus reset()=0
バッファの状態をリセットする
virtual size_t readable() const =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 DataType * wptr(long int n=0)=0
バッファの現在の書込み要素のポインタ
virtual bool full() const =0
バッファfullチェック
virtual DataType * rptr(long int n=0)=0
バッファの現在の読み出し要素のポインタ
virtual bool empty() const =0
バッファemptyチェック
virtual BufferStatus advanceWptr(long int n=1, bool unlock_enable=true)=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 const DataType & get()
バッファからデータを取得する
Definition BufferBase.h:772
virtual long int length() const
バッファ長(1固定)を取得する
Definition BufferBase.h:617
virtual ~NullBuffer()=default
デストラクタ
virtual DataType & getRef()
次に書き込むバッファへの参照を取得する
Definition BufferBase.h:799
NullBuffer(long int size=1)
コンストラクタ
Definition BufferBase.h:576
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コンポーネント
BufferStatus
BufferStatus リターンコード
Definition BufferStatus.h:57