#ifndef TYPE_H_ #define TYPE_H_ #include #include class Type: public SerializeIF { public: enum ActualType_t { UINT8_T, INT8_T, UINT16_T, INT16_T, UINT32_T, INT32_T, FLOAT, DOUBLE, UNKNOWN_TYPE }; Type(); Type(ActualType_t actualType); Type(const Type& type); Type& operator=(Type rhs); Type& operator=(ActualType_t actualType); operator ActualType_t() const; bool operator==(const Type& rhs); bool operator!=(const Type& rhs); uint8_t getSize() const; ReturnValue_t getPtcPfc(uint8_t *ptc, uint8_t *pfc) const; static ActualType_t getActualType(uint8_t ptc, uint8_t pfc); virtual ReturnValue_t serialize(uint8_t** buffer, size_t* size, const size_t max_size, bool bigEndian) const; virtual size_t getSerializedSize() const; virtual ReturnValue_t deSerialize(const uint8_t** buffer, int32_t* size, bool bigEndian); private: ActualType_t actualType; }; template struct PodTypeConversion { static const Type::ActualType_t type = Type::UNKNOWN_TYPE; }; template<> struct PodTypeConversion { static const Type::ActualType_t type = Type::UINT8_T; }; template<> struct PodTypeConversion { static const Type::ActualType_t type = Type::UINT16_T; }; template<> struct PodTypeConversion { static const Type::ActualType_t type = Type::UINT32_T; }; template<> struct PodTypeConversion { static const Type::ActualType_t type = Type::INT8_T; }; template<> struct PodTypeConversion { static const Type::ActualType_t type = Type::INT16_T; }; template<> struct PodTypeConversion { static const Type::ActualType_t type = Type::INT32_T; }; template<> struct PodTypeConversion { static const Type::ActualType_t type = Type::FLOAT; }; template<> struct PodTypeConversion { static const Type::ActualType_t type = Type::DOUBLE; }; #endif /* TYPE_H_ */