PropertyData.h
Go to the documentation of this file.
1 
20 #pragma once
21 
22 #include "PropertyInfo.h"
23 
24 namespace ConfigDB
25 {
31 struct __attribute__((packed)) ArrayId {
32  uint8_t value_[2];
33 
34  constexpr ArrayId(uint16_t value = 0) : value_{uint8_t(value), uint8_t(value >> 8)}
35  {
36  }
37 
38  constexpr operator uint16_t() const
39  {
40  return value_[0] | (value_[1] << 8);
41  }
42 };
43 
44 union __attribute__((packed)) PropertyData {
45  uint8_t uint8;
46  uint16_t uint16;
47  uint32_t uint32;
48  uint64_t uint64;
49  int8_t int8;
50  int16_t int16;
51  int32_t int32;
52  int64_t int64;
53  bool boolean;
57 
58  String getString(const PropertyInfo& info) const;
59 
63  void setValue(const PropertyInfo& prop, const PropertyData& src);
64 
65  bool setValue(PropertyType type, const char* value, unsigned valueLength);
66  bool setValue(const PropertyInfo& prop, const char* value, unsigned valueLength);
67 
68  static PropertyData* fromStruct(const PropertyInfo& prop, void* data)
69  {
70  return data ? reinterpret_cast<PropertyData*>(static_cast<uint8_t*>(data) + prop.offset) : nullptr;
71  }
72 
73  static const PropertyData* fromStruct(const PropertyInfo& prop, const void* data)
74  {
75  return fromStruct(prop, const_cast<void*>(data));
76  }
77 };
78 
79 } // namespace ConfigDB
Base-10 floating-point storage format.
Definition: Number.h:347
The String class.
Definition: WString.h:133
Definition: Array.h:26
PropertyType
Definition: PropertyInfo.h:51
uint16_t StringId
Defines contained string data using index into string pool.
Definition: PropertyInfo.h:60
Identifies array storage within array pool.
Definition: PropertyData.h:31
constexpr ArrayId(uint16_t value=0)
Definition: PropertyData.h:34
Property metadata.
Definition: PropertyInfo.h:112
uint32_t offset
Location of property data in parent object, OR Alias property index.
Definition: PropertyInfo.h:148
Definition: PropertyData.h:44
StringId string
Definition: PropertyData.h:56
uint8_t uint8
Definition: PropertyData.h:45
String getString(const PropertyInfo &info) const
int64_t int64
Definition: PropertyData.h:52
int32_t int32
Definition: PropertyData.h:51
int16_t int16
Definition: PropertyData.h:50
Number number
Definition: PropertyData.h:54
bool boolean
Definition: PropertyData.h:53
bool setValue(const PropertyInfo &prop, const char *value, unsigned valueLength)
ArrayId array
Definition: PropertyData.h:55
bool setValue(PropertyType type, const char *value, unsigned valueLength)
static const PropertyData * fromStruct(const PropertyInfo &prop, const void *data)
Definition: PropertyData.h:73
void setValue(const PropertyInfo &prop, const PropertyData &src)
Range-check raw binary value. Do not use with Strings.
uint32_t uint32
Definition: PropertyData.h:47
int8_t int8
Definition: PropertyData.h:49
static PropertyData * fromStruct(const PropertyInfo &prop, void *data)
Definition: PropertyData.h:68
uint64_t uint64
Definition: PropertyData.h:48
uint16_t uint16
Definition: PropertyData.h:46