9 #ifndef Navigation_BlobFieldArray_H
10 #define Navigation_BlobFieldArray_H
30 KY_ROOT_BLOB_CLASS(NavData, BlobFieldArray, 0)
35 BlobArray<char> m_name;
36 BlobArray<BlobField32> m_field32s;
37 BlobArray<BlobFieldString> m_fieldStrings;
38 BlobArray<BlobMultiField32> m_multiField32s;
42 SwapEndianness(e,
self.m_name);
43 SwapEndianness(e,
self.m_field32s);
44 SwapEndianness(e,
self.m_fieldStrings);
45 SwapEndianness(e,
self.m_multiField32s);
49 class BlobFieldsMapping
55 m_field32Maps.Clear();
56 m_fieldStringMaps.Clear();
57 m_multiField32Maps.Clear();
60 void AddString(
const char* name, String& value) { m_fieldStringMaps.PushBack(BlobFieldStringMapping(name, &value)); }
61 void AddGuid(
const char* name, KyGuid& value) { m_fieldStringMaps.PushBack(BlobFieldStringMapping(name, &value)); }
63 void AddBool(
const char* name,
bool& value) { m_field32Maps.PushBack(BlobField32Mapping(BlobField32::Type_KyUInt32 , name, &value)); }
64 void AddInt32(
const char* name,
KyInt32& value) { m_field32Maps.PushBack(BlobField32Mapping(BlobField32::Type_KyInt32 , name, &value)); }
65 void AddFloat32(
const char* name,
KyFloat32& value) { m_field32Maps.PushBack(BlobField32Mapping(BlobField32::Type_KyFloat32, name, &value)); }
66 void AddUInt32(
const char* name,
KyUInt32& value) { m_field32Maps.PushBack(BlobField32Mapping(BlobField32::Type_KyUInt32 , name, &value)); }
68 BlobMultiField32Mapping& AddMultiUInt32(
const char* name,
const char* category,
KyUInt32 size) { m_multiField32Maps.PushBack(BlobMultiField32Mapping(BlobField32::Type_KyUInt32, name, category, size));
return m_multiField32Maps.Back(); }
69 BlobMultiField32Mapping& AddMultiInt32(
const char* name,
const char* category,
KyUInt32 size) { m_multiField32Maps.PushBack(BlobMultiField32Mapping(BlobField32::Type_KyInt32, name, category, size));
return m_multiField32Maps.Back(); }
70 BlobMultiField32Mapping& AddMultiFloat32(
const char* name,
const char* category,
KyUInt32 size) { m_multiField32Maps.PushBack(BlobMultiField32Mapping(BlobField32::Type_KyFloat32, name, category, size));
return m_multiField32Maps.Back(); }
72 KyResult ReadFromBlobFieldArray(
const BlobFieldArray& blobFieldArray);
75 KyArray<BlobField32Mapping> m_field32Maps;
76 KyArray<BlobFieldStringMapping> m_fieldStringMaps;
77 KyArray<BlobMultiField32Mapping> m_multiField32Maps;
80 template <
class OSTREAM>
81 inline OSTREAM& operator<<(OSTREAM& os, BlobFieldsMapping& fieldsMapping)
83 for (
KyUInt32 i = 0; i < fieldsMapping.m_fieldStringMaps.GetCount(); ++i)
84 os << fieldsMapping.m_fieldStringMaps[i] << Endl;
86 for (
KyUInt32 i = 0; i < fieldsMapping.m_field32Maps.GetCount(); ++i)
87 os << fieldsMapping.m_field32Maps[i] << Endl;
89 for (
KyUInt32 i = 0; i < fieldsMapping.m_multiField32Maps.GetCount(); ++i)
90 os << fieldsMapping.m_multiField32Maps[i] << Endl;
97 class BlobFieldArrayBuilder :
public BaseBlobBuilder<BlobFieldArray>
100 BlobFieldArrayBuilder(
const char* name, BlobFieldsMapping& mapping) : m_name(name), m_mapping(&mapping) {}
103 virtual void DoBuild();
107 BlobFieldsMapping* m_mapping;
KyInt32 KyResult
Defines a type that can be returned by methods or functions in the Gameware Navigation SDK to indicat...
Definition: types.h:254
int KyInt32
Type used internally to represent a 32-bit integer.
Definition: types.h:35
#define KY_CLASS_WITHOUT_COPY(ClassName)
Define to forbid copy constructor and copy assignment.
Definition: types.h:387
Target
Enumerates the possible endianness types relative to the current platform.
Definition: endianness.h:35
Definition: gamekitcrowddispersion.h:20
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:137
unsigned int KyUInt32
Type used internally to represent an unsigned 32-bit integer.
Definition: types.h:36
float KyFloat32
Type used internally to represent a 32-bit floating-point number.
Definition: types.h:43