From 887561a4e134e97d30ad11131c83952fc986815c Mon Sep 17 00:00:00 2001 From: Andrzej Kapolka Date: Thu, 5 Jun 2014 15:39:43 -0700 Subject: [PATCH] Slight simplification. --- libraries/metavoxels/src/Bitstream.h | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/libraries/metavoxels/src/Bitstream.h b/libraries/metavoxels/src/Bitstream.h index 9945284775..caf0adf7fc 100644 --- a/libraries/metavoxels/src/Bitstream.h +++ b/libraries/metavoxels/src/Bitstream.h @@ -1084,19 +1084,18 @@ public: template<> inline void Bitstream::readRawDelta(S::N& value, const S::N& reference) { *this >> value; } #define IMPLEMENT_ENUM_METATYPE(S, N) \ - static int S##N##MetaTypeId = registerEnumMetaType(S::staticMetaObject.enumerator( \ + static int S##N##Bits = registerEnumMetaType(S::staticMetaObject.enumerator( \ S::staticMetaObject.indexOfEnumerator(#N))); \ Bitstream& operator<<(Bitstream& out, const S::N& obj) { \ - static int bits = static_cast(Bitstream::getTypeStreamer(qMetaTypeId()))->getBits(); \ - return out.write(&obj, bits); \ + return out.write(&obj, S##N##Bits); \ } \ Bitstream& operator>>(Bitstream& in, S::N& obj) { \ - static int bits = static_cast(Bitstream::getTypeStreamer(qMetaTypeId()))->getBits(); \ obj = (S::N)0; \ - return in.read(&obj, bits); \ + return in.read(&obj, S##N##Bits); \ } /// Registers a simple type and its streamer. +/// \return the metatype id template int registerSimpleMetaType() { int type = qRegisterMetaType(); Bitstream::registerTypeStreamer(type, new SimpleTypeStreamer()); @@ -1104,13 +1103,16 @@ template int registerSimpleMetaType() { } /// Registers an enum type and its streamer. +/// \return the number of bits required to stream the enum template int registerEnumMetaType(const QMetaEnum& metaEnum) { int type = qRegisterMetaType(); - Bitstream::registerTypeStreamer(type, new EnumTypeStreamer(metaEnum)); - return type; + EnumTypeStreamer* streamer = new EnumTypeStreamer(metaEnum); + Bitstream::registerTypeStreamer(type, streamer); + return streamer->getBits(); } /// Registers a streamable type and its streamer. +/// \return the metatype id template int registerStreamableMetaType() { int type = qRegisterMetaType(); Bitstream::registerTypeStreamer(type, new StreamableTypeStreamer()); @@ -1118,6 +1120,7 @@ template int registerStreamableMetaType() { } /// Registers a collection type and its streamer. +/// \return the metatype id template int registerCollectionMetaType() { int type = qRegisterMetaType(); Bitstream::registerTypeStreamer(type, new CollectionTypeStreamer());