diff --git a/src/common/scripting/core/types.cpp b/src/common/scripting/core/types.cpp index 078845d6d6..9f777da389 100644 --- a/src/common/scripting/core/types.cpp +++ b/src/common/scripting/core/types.cpp @@ -2377,60 +2377,50 @@ void PMap::GetTypeIDs(intptr_t &id1, intptr_t &id2) const // //========================================================================== +#define FOR_EACH_MAP_TYPE(FN) \ + case PMap::MAP_I32_I8: \ + FN( uint32_t , uint8_t ) \ + case PMap::MAP_I32_I16: \ + FN( uint32_t , uint16_t ) \ + case PMap::MAP_I32_I32: \ + FN( uint32_t , uint32_t ) \ + case PMap::MAP_I32_F32: \ + FN( uint32_t , float ) \ + case PMap::MAP_I32_F64: \ + FN( uint32_t , double ) \ + case PMap::MAP_I32_OBJ: \ + FN( uint32_t , DObject* ) \ + case PMap::MAP_I32_PTR: \ + FN( uint32_t , void* ) \ + case PMap::MAP_I32_STR: \ + FN( uint32_t , FString ) \ + case PMap::MAP_STR_I8: \ + FN( FString , uint8_t ) \ + case PMap::MAP_STR_I16: \ + FN( FString , uint16_t ) \ + case PMap::MAP_STR_I32: \ + FN( FString , uint32_t ) \ + case PMap::MAP_STR_F32: \ + FN( FString , float ) \ + case PMap::MAP_STR_F64: \ + FN( FString , double ) \ + case PMap::MAP_STR_OBJ: \ + FN( FString , DObject* ) \ + case PMap::MAP_STR_PTR: \ + FN( FString , void* ) \ + case PMap::MAP_STR_STR: \ + FN( FString , FString ) + void PMap::Construct(void * addr) const { switch(BackingClass) { - case MAP_I32_I8: - new(addr) ZSMap(); - break; - case MAP_I32_I16: - new(addr) ZSMap(); - break; - case MAP_I32_I32: - new(addr) ZSMap(); - break; - case MAP_I32_F32: - new(addr) ZSMap(); - break; - case MAP_I32_F64: - new(addr) ZSMap(); - break; - case MAP_I32_OBJ: - new(addr) ZSMap(); - break; - case MAP_I32_PTR: - new(addr) ZSMap(); - break; - case MAP_I32_STR: - new(addr) ZSMap(); - break; - case MAP_STR_I8: - new(addr) ZSMap(); - break; - case MAP_STR_I16: - new(addr) ZSMap(); - break; - case MAP_STR_I32: - new(addr) ZSMap(); - break; - case MAP_STR_F32: - new(addr) ZSMap(); - break; - case MAP_STR_F64: - new(addr) ZSMap(); - break; - case MAP_STR_OBJ: - new(addr) ZSMap(); - break; - case MAP_STR_PTR: - new(addr) ZSMap(); - break; - case MAP_STR_STR: - new(addr) ZSMap(); - break; + #define MAP_CONSTRUCT(KT, VT) new(addr) ZSMap< KT, VT >(); break; + FOR_EACH_MAP_TYPE(MAP_CONSTRUCT) + #undef MAP_CONSTRUCT }; } + void PMap::InitializeValue(void *addr, const void *def) const { Construct(addr); @@ -2446,54 +2436,9 @@ void PMap::DestroyValue(void *addr) const { switch(BackingClass) { - case MAP_I32_I8: - static_cast*>(addr)->~ZSMap(); - break; - case MAP_I32_I16: - static_cast*>(addr)->~ZSMap(); - break; - case MAP_I32_I32: - static_cast*>(addr)->~ZSMap(); - break; - case MAP_I32_F32: - static_cast*>(addr)->~ZSMap(); - break; - case MAP_I32_F64: - static_cast*>(addr)->~ZSMap(); - break; - case MAP_I32_OBJ: - static_cast*>(addr)->~ZSMap(); - break; - case MAP_I32_PTR: - static_cast*>(addr)->~ZSMap(); - break; - case MAP_I32_STR: - static_cast*>(addr)->~ZSMap(); - break; - case MAP_STR_I8: - static_cast*>(addr)->~ZSMap(); - break; - case MAP_STR_I16: - static_cast*>(addr)->~ZSMap(); - break; - case MAP_STR_I32: - static_cast*>(addr)->~ZSMap(); - break; - case MAP_STR_F32: - static_cast*>(addr)->~ZSMap(); - break; - case MAP_STR_F64: - static_cast*>(addr)->~ZSMap(); - break; - case MAP_STR_OBJ: - static_cast*>(addr)->~ZSMap(); - break; - case MAP_STR_PTR: - static_cast*>(addr)->~ZSMap(); - break; - case MAP_STR_STR: - static_cast*>(addr)->~ZSMap(); - break; + #define MAP_DESTRUCT(KT, VT) static_cast*>(addr)->~ZSMap(); break; + FOR_EACH_MAP_TYPE(MAP_DESTRUCT) + #undef MAP_DESTRUCT } } @@ -2568,54 +2513,9 @@ void PMap::WriteValue(FSerializer &ar, const char *key, const void *addr) const { switch(BackingClass) { - case MAP_I32_I8: - PMapValueWriter(ar, static_cast*>(addr), this); - break; - case MAP_I32_I16: - PMapValueWriter(ar, static_cast*>(addr), this); - break; - case MAP_I32_I32: - PMapValueWriter(ar, static_cast*>(addr), this); - break; - case MAP_I32_F32: - PMapValueWriter(ar, static_cast*>(addr), this); - break; - case MAP_I32_F64: - PMapValueWriter(ar, static_cast*>(addr), this); - break; - case MAP_I32_OBJ: - PMapValueWriter(ar, static_cast*>(addr), this); - break; - case MAP_I32_PTR: - PMapValueWriter(ar, static_cast*>(addr), this); - break; - case MAP_I32_STR: - PMapValueWriter(ar, static_cast*>(addr), this); - break; - case MAP_STR_I8: - PMapValueWriter(ar, static_cast*>(addr), this); - break; - case MAP_STR_I16: - PMapValueWriter(ar, static_cast*>(addr), this); - break; - case MAP_STR_I32: - PMapValueWriter(ar, static_cast*>(addr), this); - break; - case MAP_STR_F32: - PMapValueWriter(ar, static_cast*>(addr), this); - break; - case MAP_STR_F64: - PMapValueWriter(ar, static_cast*>(addr), this); - break; - case MAP_STR_OBJ: - PMapValueWriter(ar, static_cast*>(addr), this); - break; - case MAP_STR_PTR: - PMapValueWriter(ar, static_cast*>(addr), this); - break; - case MAP_STR_STR: - PMapValueWriter(ar, static_cast*>(addr), this); - break; + #define MAP_WRITE(KT, VT) PMapValueWriter(ar, static_cast*>(addr), this); break; + FOR_EACH_MAP_TYPE(MAP_WRITE) + #undef MAP_WRITE } ar.EndObject(); } @@ -2668,38 +2568,9 @@ bool PMap::ReadValue(FSerializer &ar, const char *key, void *addr) const { switch(BackingClass) { - case MAP_I32_I8: - return PMapValueReader(ar, static_cast*>(addr), this); - case MAP_I32_I16: - return PMapValueReader(ar, static_cast*>(addr), this); - case MAP_I32_I32: - return PMapValueReader(ar, static_cast*>(addr), this); - case MAP_I32_F32: - return PMapValueReader(ar, static_cast*>(addr), this); - case MAP_I32_F64: - return PMapValueReader(ar, static_cast*>(addr), this); - case MAP_I32_OBJ: - return PMapValueReader(ar, static_cast*>(addr), this); - case MAP_I32_PTR: - return PMapValueReader(ar, static_cast*>(addr), this); - case MAP_I32_STR: - return PMapValueReader(ar, static_cast*>(addr), this); - case MAP_STR_I8: - return PMapValueReader(ar, static_cast*>(addr), this); - case MAP_STR_I16: - return PMapValueReader(ar, static_cast*>(addr), this); - case MAP_STR_I32: - return PMapValueReader(ar, static_cast*>(addr), this); - case MAP_STR_F32: - return PMapValueReader(ar, static_cast*>(addr), this); - case MAP_STR_F64: - return PMapValueReader(ar, static_cast*>(addr), this); - case MAP_STR_OBJ: - return PMapValueReader(ar, static_cast*>(addr), this); - case MAP_STR_PTR: - return PMapValueReader(ar, static_cast*>(addr), this); - case MAP_STR_STR: - return PMapValueReader(ar, static_cast*>(addr), this); + #define MAP_READ(KT, VT) return PMapValueReader(ar, static_cast*>(addr), this); + FOR_EACH_MAP_TYPE(MAP_READ) + #undef MAP_READ } } return false; @@ -2790,11 +2661,11 @@ PMap *NewMap(PType *keyType, PType *valueType) return (PMap *)mapType; } -/* PMap *******************************************************************/ +/* PMapIterator ***********************************************************/ //========================================================================== // -// PMap - Parameterized Constructor +// PMapIterator - Parameterized Constructor // //========================================================================== @@ -2844,54 +2715,9 @@ void PMapIterator::GetTypeIDs(intptr_t &id1, intptr_t &id2) const void PMapIterator::Construct(void * addr) const { switch(BackingClass) { - case PMap::MAP_I32_I8: - new(addr) ZSMapIterator(); - break; - case PMap::MAP_I32_I16: - new(addr) ZSMapIterator(); - break; - case PMap::MAP_I32_I32: - new(addr) ZSMapIterator(); - break; - case PMap::MAP_I32_F32: - new(addr) ZSMapIterator(); - break; - case PMap::MAP_I32_F64: - new(addr) ZSMapIterator(); - break; - case PMap::MAP_I32_OBJ: - new(addr) ZSMapIterator(); - break; - case PMap::MAP_I32_PTR: - new(addr) ZSMapIterator(); - break; - case PMap::MAP_I32_STR: - new(addr) ZSMapIterator(); - break; - case PMap::MAP_STR_I8: - new(addr) ZSMapIterator(); - break; - case PMap::MAP_STR_I16: - new(addr) ZSMapIterator(); - break; - case PMap::MAP_STR_I32: - new(addr) ZSMapIterator(); - break; - case PMap::MAP_STR_F32: - new(addr) ZSMapIterator(); - break; - case PMap::MAP_STR_F64: - new(addr) ZSMapIterator(); - break; - case PMap::MAP_STR_OBJ: - new(addr) ZSMapIterator(); - break; - case PMap::MAP_STR_PTR: - new(addr) ZSMapIterator(); - break; - case PMap::MAP_STR_STR: - new(addr) ZSMapIterator(); - break; + #define MAP_IT_CONSTRUCT(KT, VT) new(addr) ZSMapIterator< KT, VT >(); break; + FOR_EACH_MAP_TYPE(MAP_IT_CONSTRUCT) + #undef MAP_IT_CONSTRUCT }; } @@ -2910,54 +2736,9 @@ void PMapIterator::DestroyValue(void *addr) const { switch(BackingClass) { - case PMap::MAP_I32_I8: - static_cast*>(addr)->~ZSMapIterator(); - break; - case PMap::MAP_I32_I16: - static_cast*>(addr)->~ZSMapIterator(); - break; - case PMap::MAP_I32_I32: - static_cast*>(addr)->~ZSMapIterator(); - break; - case PMap::MAP_I32_F32: - static_cast*>(addr)->~ZSMapIterator(); - break; - case PMap::MAP_I32_F64: - static_cast*>(addr)->~ZSMapIterator(); - break; - case PMap::MAP_I32_OBJ: - static_cast*>(addr)->~ZSMapIterator(); - break; - case PMap::MAP_I32_PTR: - static_cast*>(addr)->~ZSMapIterator(); - break; - case PMap::MAP_I32_STR: - static_cast*>(addr)->~ZSMapIterator(); - break; - case PMap::MAP_STR_I8: - static_cast*>(addr)->~ZSMapIterator(); - break; - case PMap::MAP_STR_I16: - static_cast*>(addr)->~ZSMapIterator(); - break; - case PMap::MAP_STR_I32: - static_cast*>(addr)->~ZSMapIterator(); - break; - case PMap::MAP_STR_F32: - static_cast*>(addr)->~ZSMapIterator(); - break; - case PMap::MAP_STR_F64: - static_cast*>(addr)->~ZSMapIterator(); - break; - case PMap::MAP_STR_OBJ: - static_cast*>(addr)->~ZSMapIterator(); - break; - case PMap::MAP_STR_PTR: - static_cast*>(addr)->~ZSMapIterator(); - break; - case PMap::MAP_STR_STR: - static_cast*>(addr)->~ZSMapIterator(); - break; + #define MAP_IT_DESTROY(KT, VT) static_cast*>(addr)->~ZSMapIterator(); break; + FOR_EACH_MAP_TYPE(MAP_IT_DESTROY) + #undef MAP_IT_DESTROY } }