From 3b859de22e04665e4d0ac67c78df1daf2ebfda1e Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Mon, 13 Jul 2009 18:33:06 +0000 Subject: [PATCH] Added handy static method SizeOfType(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31538 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/shared/Variant.h | 2 ++ src/kits/shared/Variant.cpp | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) 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) {