28 KY_ROOT_BLOB_CLASS(NavData, BlobFieldArray, 0)
33 BlobArray<char> m_name;
34 BlobArray<BlobField32> m_field32s;
35 BlobArray<BlobFieldString> m_fieldStrings;
36 BlobArray<BlobMultiField32> m_multiField32s;
40 SwapEndianness(e,
self.m_name);
41 SwapEndianness(e,
self.m_field32s);
42 SwapEndianness(e,
self.m_fieldStrings);
43 SwapEndianness(e,
self.m_multiField32s);
47 class BlobFieldsMapping
53 m_field32Maps.Clear();
54 m_fieldStringMaps.Clear();
55 m_multiField32Maps.Clear();
58 void AddString(
const char* name, String& value) { m_fieldStringMaps.PushBack(BlobFieldStringMapping(name, &value)); }
59 void AddGuid(
const char* name, KyGuid& value) { m_fieldStringMaps.PushBack(BlobFieldStringMapping(name, &value)); }
61 void AddBool(
const char* name,
bool& value) { m_field32Maps.PushBack(BlobField32Mapping(BlobField32::Type_KyUInt32 , name, &value)); }
62 void AddInt32(
const char* name,
KyInt32& value) { m_field32Maps.PushBack(BlobField32Mapping(BlobField32::Type_KyInt32 , name, &value)); }
63 void AddFloat32(
const char* name,
KyFloat32& value) { m_field32Maps.PushBack(BlobField32Mapping(BlobField32::Type_KyFloat32, name, &value)); }
64 void AddUInt32(
const char* name,
KyUInt32& value) { m_field32Maps.PushBack(BlobField32Mapping(BlobField32::Type_KyUInt32 , name, &value)); }
66 BlobMultiField32Mapping& AddMultiUInt32(
const char* name,
const char* category,
KyUInt32 size) { m_multiField32Maps.PushBack(BlobMultiField32Mapping(BlobField32::Type_KyUInt32, name, category, size));
return m_multiField32Maps.Back(); }
67 BlobMultiField32Mapping& AddMultiInt32(
const char* name,
const char* category,
KyUInt32 size) { m_multiField32Maps.PushBack(BlobMultiField32Mapping(BlobField32::Type_KyInt32, name, category, size));
return m_multiField32Maps.Back(); }
68 BlobMultiField32Mapping& AddMultiFloat32(
const char* name,
const char* category,
KyUInt32 size) { m_multiField32Maps.PushBack(BlobMultiField32Mapping(BlobField32::Type_KyFloat32, name, category, size));
return m_multiField32Maps.Back(); }
70 KyResult ReadFromBlobFieldArray(
const BlobFieldArray& blobFieldArray);
73 KyArray<BlobField32Mapping> m_field32Maps;
74 KyArray<BlobFieldStringMapping> m_fieldStringMaps;
75 KyArray<BlobMultiField32Mapping> m_multiField32Maps;
78 template <
class OSTREAM>
79 inline OSTREAM& operator<<(OSTREAM& os, BlobFieldsMapping& fieldsMapping)
81 for (
KyUInt32 i = 0; i < fieldsMapping.m_fieldStringMaps.GetCount(); ++i)
82 os << fieldsMapping.m_fieldStringMaps[i] << Endl;
84 for (
KyUInt32 i = 0; i < fieldsMapping.m_field32Maps.GetCount(); ++i)
85 os << fieldsMapping.m_field32Maps[i] << Endl;
87 for (
KyUInt32 i = 0; i < fieldsMapping.m_multiField32Maps.GetCount(); ++i)
88 os << fieldsMapping.m_multiField32Maps[i] << Endl;
95 class BlobFieldArrayBuilder :
public BaseBlobBuilder<BlobFieldArray>
98 BlobFieldArrayBuilder(
const char* name, BlobFieldsMapping& mapping) : m_name(name), m_mapping(&mapping) {}
101 virtual void DoBuild();
105 BlobFieldsMapping* m_mapping;
std::uint32_t KyUInt32
uint32_t
Definition: types.h:29
#define KY_CLASS_WITHOUT_COPY(ClassName)
Define to forbid copy constructor and copy assignment.
Definition: types.h:196
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:132
Target
Enumerates the possible endianness types relative to the current platform.
Definition: endianness.h:27
Navigation return code class.
Definition: types.h:108
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
std::int32_t KyInt32
int32_t
Definition: types.h:24
float KyFloat32
float
Definition: types.h:32