20#ifndef RTC_BYTEDATASTREAMBASE_H
21#define RTC_BYTEDATASTREAMBASE_H
23#include <coil/Properties.h>
24#include <coil/Factory.h>
111 virtual void init(
const coil::Properties &prop);
128 virtual void writeData(
const unsigned char *buffer,
unsigned long length) = 0;
145 virtual void readData(
unsigned char *buffer,
unsigned long length)
const = 0;
198 template <
typename DataType>
291 template <
class DataType>
313 template <
class DataType,
class SerializerType>
317 SerializerFactory::instance()
340 template <
class DataType>
344 SerializerFactory::instance().removeFactory(mtype);
362 template <
class DataType>
366 return SerializerFactory::instance().createObject(mtype);
384 template <
class DataType>
387 std::vector<std::string> available_types;
388 std::vector<std::string> types = SerializerFactory::instance().getIdentifiers();
390 for (
auto type : types)
393 if (type.size() >=
id.size() && std::equal(std::begin(
id), std::end(
id), std::begin(type)))
395 type.erase(0,
id.size() + 1);
396 available_types.push_back(type);
399 return available_types;
404EXTERN
template class DLL_PLUGIN coil::GlobalFactory<::RTC::ByteDataStreamBase>;
シリアライザの基底クラス
Definition ByteDataStreamBase.h:63
ByteDataStreamBase()
コンストラクタ
virtual void init(const coil::Properties &prop)
初期化関数(未使用)
virtual unsigned long getDataLength() const =0
データの長さを取得
virtual void writeData(const unsigned char *buffer, unsigned long length)=0
保持しているバッファにデータを書き込む
virtual void readData(unsigned char *buffer, unsigned long length) const =0
引数のバッファにデータを書き込む
virtual void isLittleEndian(bool little_endian)
エンディアンの設定
virtual ~ByteDataStreamBase()
仮想デストラクタ
シリアライザのテンプレートクラス シリアライザを実装する場合は必ずこのクラスを継承する必要がある coil::GlobalFactory <RTC::ByteDataStream>にシリアライザを登録す...
Definition ByteDataStreamBase.h:200
ByteDataStream()=default
コンストラクタ
~ByteDataStream() override=default
仮想デストラクタ
virtual bool deserialize(DataType &data)=0
データの復号化
virtual bool serialize(const DataType &data)=0
データの符号化
const char * toRepositoryId()
CORBA型のリポジトリIDを文字列で取得する
Definition Typename.h:233
void removeSerializer(const std::string &marshalingtype)
GlobalFactoryからシリアライザを削除する
Definition ByteDataStreamBase.h:341
::RTC::ByteDataStreamBase * createSerializer(const std::string &marshalingtype)
GlobalFactoryからシリアライザを生成する
Definition ByteDataStreamBase.h:363
std::string addDataTypeToMarshalingType(const std::string &marshalingtype)
シリアライザの名前にデータ型名を追加する 例えば、"corba:RTC/TimedShort:RTC/TimedDouble"という名前のシリアライザ、 データ型がTimedDouble型の場合以下のよ...
Definition ByteDataStreamBase.h:292
void addSerializer(const std::string &marshalingtype)
GlobalFactoryにシリアライザを追加する
Definition ByteDataStreamBase.h:314
std::vector< std::string > getSerializerList()
使用可能なシリアライザの一覧を取得する
Definition ByteDataStreamBase.h:385
coil::GlobalFactory< ByteDataStreamBase > SerializerFactory
Definition ByteDataStreamBase.h:269