|
libcaf
0.15.0
|
A data processor translates an object into a format that can be stored or vice versa. More...
#include <data_processor.hpp>
Public Types | |
| enum | builtin { i8_v, u8_v, i16_v, u16_v, i32_v, u32_v, i64_v, u64_v, float_v, double_v, ldouble_v, string8_v, string16_v, string32_v } |
| Lists all types an implementation has to accept as builtin types. | |
| using | builtin_t = detail::type_list< int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, float, double, long double, std::string, std::u16string, std::u32string > |
Public Member Functions | |
| data_processor (const data_processor &)=delete | |
| data_processor & | operator= (const data_processor &)=delete |
| data_processor (execution_unit *ctx=nullptr) | |
| virtual void | begin_object (uint16_t &typenr, std::string &name)=0 |
| Begins processing of an object. More... | |
| virtual void | end_object ()=0 |
| Ends processing of an object. | |
| virtual void | begin_sequence (size_t &num)=0 |
| Begins processing of a sequence. More... | |
| virtual void | end_sequence ()=0 |
| Ends processing of a sequence. | |
| execution_unit * | context () |
| Returns the actor system associated to this data processor. | |
| template<class T > | |
| std::enable_if< std::is_floating_point< T >::value >::type | apply (T &x) |
| Applies this processor to an arithmetic type. | |
| template<class T > | |
| std::enable_if< std::is_integral< T >::value &&!std::is_same< bool, T >::value >::type | apply (T &x) |
| void | apply (std::string &x) |
| void | apply (std::u16string &x) |
| void | apply (std::u32string &x) |
| template<atom_value V> | |
| void | apply (atom_constant< V > &x) |
| template<class T > | |
| std::enable_if< std::is_enum< T >::value &&!detail::has_serialize< T >::value >::type | apply (T &x) |
| Serializes enums using the underlying type if no user-defined serialization is defined. More... | |
| template<class T > | |
| std::enable_if< std::is_empty< T >::value >::type | apply (T &) |
| Applies this processor to an empty type. | |
| void | apply (bool &x) |
| template<class T > | |
| std::enable_if< detail::is_iterable< T >::value &&!detail::has_serialize< T >::value >::type | apply (T &xs) |
| Applies this processor to a sequence of values. | |
| template<class T , size_t S> | |
| std::enable_if< detail::is_serializable< T >::value >::type | apply (std::array< T, S > &xs) |
| Applies this processor to an array. | |
| template<class T , size_t S> | |
| std::enable_if< detail::is_serializable< T >::value >::type | apply (T(&xs)[S]) |
| Applies this processor to an array. | |
| template<class F , class S > | |
| std::enable_if< detail::is_serializable< typename std::remove_const< F >::type >::value &&detail::is_serializable< S >::value >::type | apply (std::pair< F, S > &xs) |
| template<class... Ts> | |
| std::enable_if< detail::conjunction< detail::is_serializable< Ts >::value... >::value >::type | apply (std::tuple< Ts...> &xs) |
| template<class T > | |
| std::enable_if< !std::is_empty< T >::value &&detail::has_serialize< T >::value >::type | apply (T &x) |
| template<class Rep , class Period > | |
| std::enable_if< std::is_integral< Rep >::value >::type | apply (std::chrono::duration< Rep, Period > &x) |
| template<class Rep , class Period > | |
| std::enable_if< std::is_floating_point< Rep >::value >::type | apply (std::chrono::duration< Rep, Period > &x) |
| virtual void | apply_raw (size_t num_bytes, void *data)=0 |
Applies this processor to a raw block of data of size num_bytes. | |
Static Public Member Functions | |
| template<class D , atom_value V> | |
| static void | apply_atom_constant (D &self, atom_constant< V > &) |
| template<class D , class T > | |
| static std::enable_if< D::is_saving::value &&!detail::is_byte_sequence< T >::value >::type | apply_sequence (D &self, T &xs) |
| template<class D , class T > | |
| static std::enable_if< !D::is_saving::value &&!detail::is_byte_sequence< T >::value >::type | apply_sequence (D &self, T &xs) |
| template<class D , class T > | |
| static std::enable_if< D::is_saving::value &&detail::is_byte_sequence< T >::value >::type | apply_sequence (D &self, T &xs) |
| template<class D , class T > | |
| static std::enable_if< !D::is_saving::value &&detail::is_byte_sequence< T >::value >::type | apply_sequence (D &self, T &xs) |
Protected Member Functions | |
| virtual void | apply_builtin (builtin in_out_type, void *in_out)=0 |
| Applies this processor to a single builtin value. | |
A data processor translates an object into a format that can be stored or vice versa.
A data processor can be either in saving or loading mode.
| std::enable_if< std::is_enum<T>::value && ! detail::has_serialize<T>::value >::type caf::data_processor< Derived >::apply | ( | T & | x | ) |
Serializes enums using the underlying type if no user-defined serialization is defined.
|
pure virtual |
Begins processing of an object.
Saves the type information to the underlying storage when in saving mode, otherwise extracts them and sets both arguments accordingly.
Implemented in caf::stream_deserializer< Streambuf >, and caf::stream_serializer< Streambuf >.
|
pure virtual |
Begins processing of a sequence.
Saves the size to the underlying storage when in saving mode, otherwise sets num accordingly.
Implemented in caf::stream_deserializer< Streambuf >, and caf::stream_serializer< Streambuf >.
1.8.9.1