Dev Essential
Loading...
Searching...
No Matches
codec_legacy.h
Go to the documentation of this file.
1
14
15#ifndef DDL_CODEC_LEGACY_CLASS_HEADER
16#define DDL_CODEC_LEGACY_CLASS_HEADER
17
18#include <a_util/preprocessor/deprecated.h> // DEV_ESSENTIAL_DEPRECATED()
19#include <a_util/result.h>
20#include <ddl/codec/codec.h>
22
24#define DEV_ESSENTIAL_DEPRECATED_DECODER \
25 DEV_ESSENTIAL_DEPRECATED("Use the new ddl::codec::Decoder() instead.")
26
27#define DEV_ESSENTIAL_DEPRECATED_CODEC \
28 DEV_ESSENTIAL_DEPRECATED("Use the new ddl::codec::Codec() instead.")
30
31namespace ddl {
32class Codec;
33
38 size_t deserialized;
39 size_t serialized;
40};
41
46class Decoder : public StaticDecoder {
47public:
51 DEV_ESSENTIAL_DEPRECATED_DECODER
52 Decoder() = default;
53
57 Decoder(Decoder&&) = default;
58
62 DEV_ESSENTIAL_DEPRECATED_DECODER
63 Decoder& operator=(Decoder&&) = default;
64
68 Decoder(const Decoder&) = delete;
69
73 Decoder& operator=(const Decoder&) = delete;
74
79
83 size_t getElementCount() const override;
84
90
98 Codec makeCodecFor(void* data, size_t data_size, DataRepresentation rep) const;
99
100protected:
101 friend class CodecFactory;
103 virtual const void* getLayoutElement(size_t index) const;
105 Decoder(const std::shared_ptr<LegacyCodecAccess>& legacy_codec_access);
106
109 Decoder(std::shared_ptr<const StructLayout>,
110 const void* data,
111 size_t data_size,
113
114private:
117 std::shared_ptr<std::vector<int32_t>> _compat_dynamic_elements;
120 LegacyOffsets _compat_buffer_sizes;
121};
122
129class Codec : public Decoder {
130public:
134 DEV_ESSENTIAL_DEPRECATED_CODEC
135 Codec() = default;
136
140 Codec(Codec&&) = default;
141
145 DEV_ESSENTIAL_DEPRECATED_CODEC
146 Codec& operator=(Codec&&) = default;
147
155 a_util::result::Result setElementValue(size_t index, const void* value);
156
164
169 void* getElementAddress(size_t index);
171
177
178protected:
179 friend class CodecFactory;
180 friend class Decoder;
184 Codec(std::shared_ptr<const StructLayout> layout,
185 void* data,
186 size_t data_size,
190};
191
192} // namespace ddl
193
194#endif // DDL_CODEC_LEGACY_CLASS_HEADER
Definition result_type_decl.h:34
Definition variant.h:46
Definition codec_legacy.h:129
Codec(Codec &&)=default
void * getElementAddress(size_t index)
Codec(std::shared_ptr< const StructLayout > layout, void *data, size_t data_size, DataRepresentation rep)
Codec(codec::Codec &&codec)
For internal use only.
a_util::result::Result setElementValue(size_t index, const void *value)
a_util::result::Result setConstants()
DEV_ESSENTIAL_DEPRECATED_CODEC Codec & operator=(Codec &&)=default
a_util::result::Result setElementValue(size_t index, const a_util::variant::Variant &value)
DEV_ESSENTIAL_DEPRECATED_CODEC Codec()=default
DEV_ESSENTIAL_DEPRECATED_DECODER Decoder()=default
Decoder & operator=(const Decoder &)=delete
Codec makeCodecFor(void *data, size_t data_size, DataRepresentation rep) const
Decoder(const Decoder &)=delete
Decoder(std::shared_ptr< const StructLayout >, const void *data, size_t data_size, DataRepresentation rep)
size_t getElementCount() const override
DEV_ESSENTIAL_DEPRECATED_DECODER Decoder & operator=(Decoder &&)=default
size_t getBufferSize(DataRepresentation rep=deserialized) const
Decoder(Decoder &&)=default
virtual const void * getLayoutElement(size_t index) const
this virtual pointer must stay for binary compatiblity.
Decoder(const std::shared_ptr< LegacyCodecAccess > &legacy_codec_access)
For internal use only.
a_util::result::Result isValid() const override
const void * getElementAddress(size_t index) const
DEV_ESSENTIAL_DEPRECATED_STATIC_DECODER StaticDecoder()
Definition codec.h:164
Namespace for the new faster CodecFactory/Decoder/Codec implementation.
Definition codec.h:22
definition of the ddl namespace
Definition codec.h:21
DataRepresentation
Definition data_representation.h:25
@ deserialized
deserialized data, c-structs, arrays, ...
Definition data_representation.h:27
Definition codec_legacy.h:37
size_t serialized
legacy value
Definition codec_legacy.h:39
size_t deserialized
legacy value
Definition codec_legacy.h:38