mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-09 16:30:16 +02:00
Make sure to use same enum streamer for the ones registered by type and the
ones registered by scope/name.
This commit is contained in:
parent
c3090dd223
commit
758beff3d9
2 changed files with 11 additions and 5 deletions
|
@ -1621,6 +1621,10 @@ const QHash<ScopeNamePair, const TypeStreamer*>& Bitstream::getEnumStreamers() {
|
||||||
return enumStreamers;
|
return enumStreamers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static QByteArray getEnumName(const char* scope, const char* name) {
|
||||||
|
return QByteArray(scope) + "::" + name;
|
||||||
|
}
|
||||||
|
|
||||||
QHash<ScopeNamePair, const TypeStreamer*> Bitstream::createEnumStreamers() {
|
QHash<ScopeNamePair, const TypeStreamer*> Bitstream::createEnumStreamers() {
|
||||||
QHash<ScopeNamePair, const TypeStreamer*> enumStreamers;
|
QHash<ScopeNamePair, const TypeStreamer*> enumStreamers;
|
||||||
foreach (const QMetaObject* metaObject, getMetaObjects()) {
|
foreach (const QMetaObject* metaObject, getMetaObjects()) {
|
||||||
|
@ -1628,7 +1632,11 @@ QHash<ScopeNamePair, const TypeStreamer*> Bitstream::createEnumStreamers() {
|
||||||
QMetaEnum metaEnum = metaObject->enumerator(i);
|
QMetaEnum metaEnum = metaObject->enumerator(i);
|
||||||
const TypeStreamer*& streamer = enumStreamers[ScopeNamePair(metaEnum.scope(), metaEnum.name())];
|
const TypeStreamer*& streamer = enumStreamers[ScopeNamePair(metaEnum.scope(), metaEnum.name())];
|
||||||
if (!streamer) {
|
if (!streamer) {
|
||||||
streamer = new EnumTypeStreamer(metaEnum);
|
// look for a streamer registered by name
|
||||||
|
streamer = getTypeStreamers().value(QMetaType::type(getEnumName(metaEnum.scope(), metaEnum.name())));
|
||||||
|
if (!streamer) {
|
||||||
|
streamer = new EnumTypeStreamer(metaEnum);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2705,7 +2713,7 @@ QDebug& operator<<(QDebug& debug, const QMetaObject* metaObject) {
|
||||||
EnumTypeStreamer::EnumTypeStreamer(const QMetaObject* metaObject, const char* name) :
|
EnumTypeStreamer::EnumTypeStreamer(const QMetaObject* metaObject, const char* name) :
|
||||||
_metaObject(metaObject),
|
_metaObject(metaObject),
|
||||||
_enumName(name),
|
_enumName(name),
|
||||||
_name(QByteArray(metaObject->className()) + "::" + name),
|
_name(getEnumName(metaObject->className(), name)),
|
||||||
_bits(-1) {
|
_bits(-1) {
|
||||||
|
|
||||||
_type = QMetaType::Int;
|
_type = QMetaType::Int;
|
||||||
|
@ -2713,7 +2721,7 @@ EnumTypeStreamer::EnumTypeStreamer(const QMetaObject* metaObject, const char* na
|
||||||
}
|
}
|
||||||
|
|
||||||
EnumTypeStreamer::EnumTypeStreamer(const QMetaEnum& metaEnum) :
|
EnumTypeStreamer::EnumTypeStreamer(const QMetaEnum& metaEnum) :
|
||||||
_name(QByteArray(metaEnum.scope()) + "::" + metaEnum.name()),
|
_name(getEnumName(metaEnum.scope(), metaEnum.name())),
|
||||||
_metaEnum(metaEnum),
|
_metaEnum(metaEnum),
|
||||||
_bits(-1) {
|
_bits(-1) {
|
||||||
|
|
||||||
|
|
|
@ -255,8 +255,6 @@ static bool testSerialization(Bitstream::MetadataType metadataType) {
|
||||||
jsonWriter << endRead;
|
jsonWriter << endRead;
|
||||||
QByteArray encodedJson = jsonWriter.getDocument().toJson();
|
QByteArray encodedJson = jsonWriter.getDocument().toJson();
|
||||||
|
|
||||||
qDebug() << encodedJson;
|
|
||||||
|
|
||||||
// and read from JSON
|
// and read from JSON
|
||||||
JSONReader jsonReader(QJsonDocument::fromJson(encodedJson), Bitstream::ALL_GENERICS);
|
JSONReader jsonReader(QJsonDocument::fromJson(encodedJson), Bitstream::ALL_GENERICS);
|
||||||
jsonReader >> testObjectReadA;
|
jsonReader >> testObjectReadA;
|
||||||
|
|
Loading…
Reference in a new issue