28 template <
typename... Items>
38 template <
typename Sensor,
typename... Args>
47 template <
size_t Index,
typename Data>
52 return Serializer::Deserialize(std::forward<Data>(data));
55 template <
typename Data,
size_t... Is>
61 std::initializer_list<int> ({
62 (i == Is ? (result = Deserialize_impl<Is>(std::forward<Data>(data))), 0 : 0)...
67 template <
typename Data>
71 std::forward<Data>(data),
80 template <
typename... Items>
81 template <
typename Sensor,
typename... Args>
84 using TheSensor =
typename std::remove_const<Sensor>::type;
88 return Serializer::Serialize(sensor, std::forward<Args>(args)...);
91 template <
typename... Items>
95 RawData message{std::move(data)};
99 return Deserialize(index, std::move(message));
一块原始数据。 请注意,如果需要更多容量,则会分配一个新的内存块,并 删除旧的内存块。这意味着默认情况下,缓冲区只能增长。要释放内存,使用 clear 或 pop。
static Buffer Serialize(Sensor &sensor, Args &&... args)
Serialize the arguments provided into a Buffer by calling to the serializer registered for the given ...
SharedPtr< SensorData > interpreted_type
static interpreted_type Deserialize_impl(Data &&data)
static interpreted_type Deserialize(Buffer &&data)
Deserializes a Buffer by calling the "Deserialize" function of the serializer that generated the Buff...
static interpreted_type Deserialize(size_t index, Data &&data)
static interpreted_type Deserialize_impl(size_t i, Data &&data, std::index_sequence< Is... >)
包装一个传感器生成的原始数据以及一些有用的元信息。
uint64_t GetSensorTypeId() const
生成数据的传感器的类型ID。
boost::shared_ptr< T > SharedPtr
使用这个SharedPtr(boost::shared_ptr)以保持与boost::python的兼容性, 但未来如果可能的话,我们希望能为std::shared_ptr制作一个Python适配器。
一个编译时结构,用于映射两种类型。可以通过键或索引查找元素。
typename detail::CompileTimeTypeMapImpl< sizeof...(Items), Items... >::template get_by_index< Index > get_by_index
static constexpr size_t size()
typename detail::CompileTimeTypeMapImpl< sizeof...(Items), Items... >::template get< InKey > get