Zserio C++ runtime library  1.3.0
Built for Zserio 2.18.0
IReflectable.h
Go to the documentation of this file.
1 #ifndef ZSERIO_I_REFLECTABLE_H_INC
2 #define ZSERIO_I_REFLECTABLE_H_INC
3 
4 #include <memory>
5 
6 #include "zserio/AnyHolder.h"
7 #include "zserio/BitBuffer.h"
9 #include "zserio/ParsingInfo.h"
10 #include "zserio/RebindAlloc.h"
11 #include "zserio/Span.h"
12 #include "zserio/String.h"
13 #include "zserio/StringView.h"
14 #include "zserio/Types.h"
15 #include "zserio/Vector.h"
16 
17 namespace zserio
18 {
19 
20 // forward declaration
21 template <typename ALLOC>
22 class IBasicTypeInfo;
23 
32 template <typename ALLOC = std::allocator<uint8_t>>
34 {
35 public:
37  using Ptr = std::shared_ptr<IBasicReflectable>;
38 
40  using ConstPtr = std::shared_ptr<const IBasicReflectable>;
41 
45  virtual ~IBasicReflectable() = default;
46 
52  virtual const IBasicTypeInfo<ALLOC>& getTypeInfo() const = 0;
53 
59  virtual bool isArray() const = 0;
60 
70  virtual void initializeChildren() = 0;
71 
80  virtual void initialize(const vector<AnyHolder<ALLOC>, ALLOC>& typeArguments) = 0;
81 
91  virtual size_t initializeOffsets(size_t bitPosition) = 0;
92 
102  virtual size_t initializeOffsets() = 0;
103 
115  virtual size_t bitSizeOf(size_t bitPosition) const = 0;
116 
128  virtual size_t bitSizeOf() const = 0;
129 
139  virtual void write(BitStreamWriter& writer) const = 0;
140 
154  virtual ConstPtr getField(StringView name) const = 0;
155  virtual Ptr getField(StringView name) = 0;
171  virtual void setField(StringView name, const AnyHolder<ALLOC>& value) = 0;
172 
185  virtual Ptr createField(StringView name) = 0;
186 
200  virtual ConstPtr getParameter(StringView name) const = 0;
201  virtual Ptr getParameter(StringView name) = 0;
218  virtual ConstPtr callFunction(StringView name) const = 0;
219  virtual Ptr callFunction(StringView name) = 0;
231  virtual StringView getChoice() const = 0;
232 
250  virtual ConstPtr find(StringView path) const = 0;
251  virtual Ptr find(StringView path) = 0;
260  virtual ConstPtr operator[](StringView path) const = 0;
261  virtual Ptr operator[](StringView path) = 0;
273  virtual size_t size() const = 0;
274 
284  virtual void resize(size_t size) = 0;
285 
297  virtual ConstPtr at(size_t index) const = 0;
298  virtual Ptr at(size_t index) = 0;
307  virtual ConstPtr operator[](size_t index) const = 0;
308  virtual Ptr operator[](size_t index) = 0;
319  virtual void setAt(const AnyHolder<ALLOC>& value, size_t index) = 0;
320 
328  virtual void append(const AnyHolder<ALLOC>& value) = 0;
329 
347  virtual AnyHolder<ALLOC> getAnyValue(const ALLOC& allocator) const = 0;
348  virtual AnyHolder<ALLOC> getAnyValue(const ALLOC& allocator) = 0;
349  virtual AnyHolder<ALLOC> getAnyValue() const = 0;
359  virtual bool getBool() const = 0;
360 
367  virtual int8_t getInt8() const = 0;
368 
375  virtual int16_t getInt16() const = 0;
376 
383  virtual int32_t getInt32() const = 0;
384 
391  virtual int64_t getInt64() const = 0;
392 
399  virtual uint8_t getUInt8() const = 0;
400 
407  virtual uint16_t getUInt16() const = 0;
408 
415  virtual uint32_t getUInt32() const = 0;
416 
423  virtual uint64_t getUInt64() const = 0;
424 
431  virtual float getFloat() const = 0;
432 
439  virtual double getDouble() const = 0;
440 
447  virtual Span<const uint8_t> getBytes() const = 0;
448 
455  virtual StringView getStringView() const = 0;
456 
463  virtual const BasicBitBuffer<ALLOC>& getBitBuffer() const = 0;
464 
473  virtual int64_t toInt() const = 0;
474 
484  virtual uint64_t toUInt() const = 0;
485 
494  virtual double toDouble() const = 0;
495 
510  virtual string<ALLOC> toString(const ALLOC& allocator) const = 0;
511  virtual string<ALLOC> toString() const = 0;
526  virtual const ParsingInfo& parsingInfo() const = 0;
527 };
528 
531 template <typename ALLOC = std::allocator<uint8_t>>
533 
534 template <typename ALLOC = std::allocator<uint8_t>>
553 template <typename T, typename ALLOC = std::allocator<uint8_t>>
554 IBasicReflectablePtr<ALLOC> enumReflectable(T value, const ALLOC& allocator = ALLOC());
555 
556 } // namespace zserio
557 
558 #endif // ZSERIO_I_REFLECTABLE_H_INC
virtual double getDouble() const =0
virtual Ptr callFunction(StringView name)=0
virtual Span< const uint8_t > getBytes() const =0
virtual string< ALLOC > toString() const =0
virtual void write(BitStreamWriter &writer) const =0
virtual Ptr getParameter(StringView name)=0
virtual size_t bitSizeOf(size_t bitPosition) const =0
virtual StringView getStringView() const =0
virtual void initialize(const vector< AnyHolder< ALLOC >, ALLOC > &typeArguments)=0
virtual ConstPtr getParameter(StringView name) const =0
virtual AnyHolder< ALLOC > getAnyValue(const ALLOC &allocator)=0
virtual int8_t getInt8() const =0
virtual bool isArray() const =0
virtual Ptr find(StringView path)=0
virtual bool getBool() const =0
virtual AnyHolder< ALLOC > getAnyValue() const =0
virtual void resize(size_t size)=0
virtual void setAt(const AnyHolder< ALLOC > &value, size_t index)=0
virtual AnyHolder< ALLOC > getAnyValue(const ALLOC &allocator) const =0
std::shared_ptr< const IBasicReflectable > ConstPtr
Definition: IReflectable.h:40
virtual Ptr getField(StringView name)=0
virtual Ptr operator[](size_t index)=0
virtual int16_t getInt16() const =0
virtual size_t size() const =0
virtual size_t initializeOffsets()=0
virtual const IBasicTypeInfo< ALLOC > & getTypeInfo() const =0
virtual Ptr createField(StringView name)=0
virtual double toDouble() const =0
virtual void setField(StringView name, const AnyHolder< ALLOC > &value)=0
virtual AnyHolder< ALLOC > getAnyValue()=0
virtual ConstPtr operator[](StringView path) const =0
virtual ConstPtr at(size_t index) const =0
virtual const ParsingInfo & parsingInfo() const =0
virtual uint64_t toUInt() const =0
virtual void append(const AnyHolder< ALLOC > &value)=0
virtual uint32_t getUInt32() const =0
virtual float getFloat() const =0
virtual Ptr at(size_t index)=0
virtual Ptr operator[](StringView path)=0
virtual int32_t getInt32() const =0
virtual int64_t getInt64() const =0
virtual ~IBasicReflectable()=default
virtual uint8_t getUInt8() const =0
virtual ConstPtr getField(StringView name) const =0
virtual uint64_t getUInt64() const =0
virtual size_t initializeOffsets(size_t bitPosition)=0
virtual string< ALLOC > toString(const ALLOC &allocator) const =0
virtual ConstPtr find(StringView path) const =0
virtual StringView getChoice() const =0
virtual const BasicBitBuffer< ALLOC > & getBitBuffer() const =0
std::shared_ptr< IBasicReflectable > Ptr
Definition: IReflectable.h:37
virtual uint16_t getUInt16() const =0
virtual void initializeChildren()=0
virtual ConstPtr callFunction(StringView name) const =0
virtual int64_t toInt() const =0
virtual ConstPtr operator[](size_t index) const =0
virtual size_t bitSizeOf() const =0
IBasicReflectablePtr<> IReflectablePtr
Definition: IReflectable.h:541
std::basic_string< char, std::char_traits< char >, RebindAlloc< ALLOC, char > > string
Definition: String.h:17
std::vector< T, RebindAlloc< ALLOC, T > > vector
Definition: Vector.h:17
IBasicReflectablePtr< ALLOC > enumReflectable(T value, const ALLOC &allocator=ALLOC())
IBasicReflectableConstPtr<> IReflectableConstPtr
Definition: IReflectable.h:542
typename IBasicReflectable< ALLOC >::Ptr IBasicReflectablePtr
Definition: IReflectable.h:532
typename IBasicReflectable< ALLOC >::ConstPtr IBasicReflectableConstPtr
Definition: IReflectable.h:535