summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2016-05-17 10:56:24 +0200
committerMarc Mutz <marc.mutz@kdab.com>2016-05-19 04:34:06 +0000
commit72f2c87d15c76cc861699aea536e01bc8d56c8f2 (patch)
tree83693090187220f613ff4be790c60ad5f342cb61 /tools
parent67537fa10c24b9f098a659ed4982ce4235395724 (diff)
qgltf: mark types movable/complex
All structs are Q_MOVABLE_TYPE, except Node, whose address is used as its identity, so by definition it is not trivially relocatable. Therefore explicitly marked as Q_COMPLEX_TYPE. Change-Id: I338491a57cc0f70b3971dec34b7dd9d913a92462 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/qgltf/qgltf.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/tools/qgltf/qgltf.cpp b/tools/qgltf/qgltf.cpp
index f879e421f..b57ea8df2 100644
--- a/tools/qgltf/qgltf.cpp
+++ b/tools/qgltf/qgltf.cpp
@@ -352,6 +352,17 @@ protected:
Node *m_rootNode;
QVector<AnimationInfo> m_animations;
};
+QT_BEGIN_NAMESPACE
+Q_DECLARE_TYPEINFO(Importer::BufferInfo, Q_MOVABLE_TYPE);
+Q_DECLARE_TYPEINFO(Importer::MeshInfo::BufferView, Q_MOVABLE_TYPE);
+Q_DECLARE_TYPEINFO(Importer::MeshInfo::Accessor, Q_MOVABLE_TYPE);
+Q_DECLARE_TYPEINFO(Importer::MaterialInfo, Q_MOVABLE_TYPE);
+Q_DECLARE_TYPEINFO(Importer::CameraInfo, Q_MOVABLE_TYPE);
+Q_DECLARE_TYPEINFO(Importer::EmbeddedTextureInfo, Q_MOVABLE_TYPE);
+Q_DECLARE_TYPEINFO(Importer::Node, Q_COMPLEX_TYPE); // uses address as identity
+Q_DECLARE_TYPEINFO(Importer::KeyFrame, Q_MOVABLE_TYPE);
+Q_DECLARE_TYPEINFO(Importer::AnimationInfo, Q_MOVABLE_TYPE);
+QT_END_NAMESPACE
Importer::Importer()
: m_rootNode(nullptr)
@@ -1265,6 +1276,8 @@ private:
QVector<Param> attributes;
QVector<Param> uniforms;
};
+ friend class QTypeInfo<ProgramInfo>;
+ friend class QTypeInfo<ProgramInfo::Param>;
void writeShader(const QString &src, const QString &dst, const QVector<QPair<QByteArray, QByteArray> > &substTab);
QString exportNode(const Importer::Node *n, QJsonObject &nodes);
@@ -1297,6 +1310,7 @@ private:
bool opaque;
ProgramInfo *prog;
};
+ friend class QTypeInfo<TechniqueInfo>;
QVector<TechniqueInfo> m_techniques;
QSet<ProgramInfo *> m_usedPrograms;
@@ -1305,6 +1319,11 @@ private:
QHash<QString, bool> m_imageHasAlpha;
};
+QT_BEGIN_NAMESPACE
+Q_DECLARE_TYPEINFO(GltfExporter::ProgramInfo, Q_MOVABLE_TYPE);
+Q_DECLARE_TYPEINFO(GltfExporter::ProgramInfo::Param, Q_MOVABLE_TYPE);
+Q_DECLARE_TYPEINFO(GltfExporter::TechniqueInfo, Q_MOVABLE_TYPE);
+QT_END_NAMESPACE
GltfExporter::GltfExporter(Importer *importer)
: Exporter(importer)