diff --git a/headers/private/shared/Variant.h b/headers/private/shared/Variant.h index 4da5eb5b46..d0ca3bd7c8 100644 --- a/headers/private/shared/Variant.h +++ b/headers/private/shared/Variant.h @@ -73,6 +73,8 @@ public: void* ToPointer() const; const char* ToString() const; + static size_t SizeOfType(uint32 type); + private: void _SetTo(const BVariant& other); void _SetTo(int8 value); diff --git a/src/kits/shared/Variant.cpp b/src/kits/shared/Variant.cpp index 8ca9fd9e44..c80e644584 100644 --- a/src/kits/shared/Variant.cpp +++ b/src/kits/shared/Variant.cpp @@ -220,6 +220,38 @@ BVariant::_SetTo(const BVariant& other) } +/*static*/ size_t +BVariant::SizeOfType(uint32 type) +{ + switch (type) { + case B_INT8_TYPE: + return 1; + case B_UINT8_TYPE: + return 1; + case B_INT16_TYPE: + return 2; + case B_UINT16_TYPE: + return 2; + case B_INT32_TYPE: + return 4; + case B_UINT32_TYPE: + return 4; + case B_INT64_TYPE: + return 8; + case B_UINT64_TYPE: + return 8; + case B_FLOAT_TYPE: + return sizeof(float); + case B_DOUBLE_TYPE: + return sizeof(double); + case B_POINTER_TYPE: + return sizeof(void*); + default: + return 0; + } +} + + void BVariant::_SetTo(int8 value) {