mirror of
https://github.com/lubosz/overte.git
synced 2025-04-16 06:16:18 +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;
|
||||
}
|
||||
|
||||
static QByteArray getEnumName(const char* scope, const char* name) {
|
||||
return QByteArray(scope) + "::" + name;
|
||||
}
|
||||
|
||||
QHash<ScopeNamePair, const TypeStreamer*> Bitstream::createEnumStreamers() {
|
||||
QHash<ScopeNamePair, const TypeStreamer*> enumStreamers;
|
||||
foreach (const QMetaObject* metaObject, getMetaObjects()) {
|
||||
|
@ -1628,7 +1632,11 @@ QHash<ScopeNamePair, const TypeStreamer*> Bitstream::createEnumStreamers() {
|
|||
QMetaEnum metaEnum = metaObject->enumerator(i);
|
||||
const TypeStreamer*& streamer = enumStreamers[ScopeNamePair(metaEnum.scope(), metaEnum.name())];
|
||||
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) :
|
||||
_metaObject(metaObject),
|
||||
_enumName(name),
|
||||
_name(QByteArray(metaObject->className()) + "::" + name),
|
||||
_name(getEnumName(metaObject->className(), name)),
|
||||
_bits(-1) {
|
||||
|
||||
_type = QMetaType::Int;
|
||||
|
@ -2713,7 +2721,7 @@ EnumTypeStreamer::EnumTypeStreamer(const QMetaObject* metaObject, const char* na
|
|||
}
|
||||
|
||||
EnumTypeStreamer::EnumTypeStreamer(const QMetaEnum& metaEnum) :
|
||||
_name(QByteArray(metaEnum.scope()) + "::" + metaEnum.name()),
|
||||
_name(getEnumName(metaEnum.scope(), metaEnum.name())),
|
||||
_metaEnum(metaEnum),
|
||||
_bits(-1) {
|
||||
|
||||
|
|
|
@ -255,8 +255,6 @@ static bool testSerialization(Bitstream::MetadataType metadataType) {
|
|||
jsonWriter << endRead;
|
||||
QByteArray encodedJson = jsonWriter.getDocument().toJson();
|
||||
|
||||
qDebug() << encodedJson;
|
||||
|
||||
// and read from JSON
|
||||
JSONReader jsonReader(QJsonDocument::fromJson(encodedJson), Bitstream::ALL_GENERICS);
|
||||
jsonReader >> testObjectReadA;
|
||||
|
|
Loading…
Reference in a new issue