diff --git a/src/Trade/AbstractMaterialData.h b/src/Trade/AbstractMaterialData.h index 23654384e..e737c57da 100644 --- a/src/Trade/AbstractMaterialData.h +++ b/src/Trade/AbstractMaterialData.h @@ -39,11 +39,6 @@ namespace Magnum { namespace Trade { Subclasses provide access to parameters for given material type. */ class MAGNUM_EXPORT AbstractMaterialData { - AbstractMaterialData(const AbstractMaterialData&) = delete; - AbstractMaterialData(AbstractMaterialData&&) = delete; - AbstractMaterialData& operator=(const AbstractMaterialData&) = delete; - AbstractMaterialData& operator=(AbstractMaterialData&&) = delete; - public: /** @brief Material type */ enum class Type: UnsignedByte { @@ -59,6 +54,18 @@ class MAGNUM_EXPORT AbstractMaterialData { /** @brief Destructor */ virtual ~AbstractMaterialData() = 0; + /** @brief Copying is not allowed */ + AbstractMaterialData(const AbstractMaterialData&) = delete; + + /** @brief Move constructor */ + AbstractMaterialData(AbstractMaterialData&&) = default; + + /** @brief Copying is not allowed */ + AbstractMaterialData& operator=(const AbstractMaterialData&) = delete; + + /** @brief Move assignment */ + AbstractMaterialData& operator=(AbstractMaterialData&&) = default; + /** @brief Material type */ Type type() const { return _type; } diff --git a/src/Trade/MeshObjectData2D.h b/src/Trade/MeshObjectData2D.h index b250e28df..77f819b18 100644 --- a/src/Trade/MeshObjectData2D.h +++ b/src/Trade/MeshObjectData2D.h @@ -39,11 +39,6 @@ Provides access to material information for given mesh instance. @see MeshObjectData3D */ class MAGNUM_EXPORT MeshObjectData2D: public ObjectData2D { - MeshObjectData2D(const MeshObjectData2D&) = delete; - MeshObjectData2D(MeshObjectData2D&&) = delete; - MeshObjectData2D& operator=(const MeshObjectData2D&) = delete; - MeshObjectData2D& operator=(MeshObjectData2D&&) = delete; - public: /** * @brief Constructor @@ -56,6 +51,18 @@ class MAGNUM_EXPORT MeshObjectData2D: public ObjectData2D { */ explicit MeshObjectData2D(std::vector children, const Matrix3& transformation, UnsignedInt instance, UnsignedInt material); + /** @brief Copying is not allowed */ + MeshObjectData2D(const MeshObjectData2D&) = delete; + + /** @brief Move constructor */ + MeshObjectData2D(MeshObjectData2D&&) = default; + + /** @brief Copying is not allowed */ + MeshObjectData2D& operator=(const MeshObjectData2D&) = delete; + + /** @brief Move assignment */ + MeshObjectData2D& operator=(MeshObjectData2D&&) = default; + /** @brief Material ID */ UnsignedInt material() const { return _material; } diff --git a/src/Trade/MeshObjectData3D.h b/src/Trade/MeshObjectData3D.h index e29250553..1a5b820af 100644 --- a/src/Trade/MeshObjectData3D.h +++ b/src/Trade/MeshObjectData3D.h @@ -39,11 +39,6 @@ Provides access to material information for given mesh instance. @see MeshObjectData2D */ class MAGNUM_EXPORT MeshObjectData3D: public ObjectData3D { - MeshObjectData3D(const MeshObjectData3D&) = delete; - MeshObjectData3D(MeshObjectData3D&&) = delete; - MeshObjectData3D& operator=(const MeshObjectData3D&) = delete; - MeshObjectData3D& operator=(MeshObjectData3D&&) = delete; - public: /** * @brief Constructor @@ -56,6 +51,18 @@ class MAGNUM_EXPORT MeshObjectData3D: public ObjectData3D { */ explicit MeshObjectData3D(std::vector children, const Matrix4& transformation, UnsignedInt instance, UnsignedInt material); + /** @brief Copying is not allowed */ + MeshObjectData3D(const MeshObjectData3D&) = delete; + + /** @brief Move constructor */ + MeshObjectData3D(MeshObjectData3D&&) = default; + + /** @brief Copying is not allowed */ + MeshObjectData3D& operator=(const MeshObjectData3D&) = delete; + + /** @brief Move assignment */ + MeshObjectData3D& operator=(MeshObjectData3D&&) = default; + /** @brief Material ID */ UnsignedInt material() const { return _material; } diff --git a/src/Trade/ObjectData2D.cpp b/src/Trade/ObjectData2D.cpp index e4d8413b9..a9fb2e861 100644 --- a/src/Trade/ObjectData2D.cpp +++ b/src/Trade/ObjectData2D.cpp @@ -30,8 +30,12 @@ ObjectData2D::ObjectData2D(std::vector children, const Matrix3& tra ObjectData2D::ObjectData2D(std::vector children, const Matrix3& transformation): _children(children), _transformation(transformation), _instanceType(InstanceType::Empty), _instanceId(-1) {} +ObjectData2D::ObjectData2D(ObjectData2D&&) = default; + ObjectData2D::~ObjectData2D() = default; +ObjectData2D& ObjectData2D::operator=(ObjectData2D&&) = default; + #ifndef DOXYGEN_GENERATING_OUTPUT Debug operator<<(Debug debug, ObjectData2D::InstanceType value) { switch(value) { diff --git a/src/Trade/ObjectData2D.h b/src/Trade/ObjectData2D.h index ec44b0181..0ee54dd5b 100644 --- a/src/Trade/ObjectData2D.h +++ b/src/Trade/ObjectData2D.h @@ -43,11 +43,6 @@ MeshObjectData2D, which is specialized for objects with mesh instance type. @see ObjectData3D */ class MAGNUM_EXPORT ObjectData2D { - ObjectData2D(const ObjectData2D&) = delete; - ObjectData2D(ObjectData2D&&) = delete; - ObjectData2D& operator=(const ObjectData2D&) = delete; - ObjectData2D& operator=(ObjectData2D&&) = delete; - public: /** @brief Instance type */ enum class InstanceType { @@ -72,9 +67,21 @@ class MAGNUM_EXPORT ObjectData2D { */ explicit ObjectData2D(std::vector children, const Matrix3& transformation); + /** @brief Copying is not allowed */ + ObjectData2D(const ObjectData2D&) = delete; + + /** @brief Move constructor */ + ObjectData2D(ObjectData2D&&); + /** @brief Destructor */ virtual ~ObjectData2D(); + /** @brief Copying is not allowed */ + ObjectData2D& operator=(const ObjectData2D&) = delete; + + /** @brief Move assignment */ + ObjectData2D& operator=(ObjectData2D&&); + /** @brief Child objects */ std::vector& children() { return _children; } diff --git a/src/Trade/ObjectData3D.cpp b/src/Trade/ObjectData3D.cpp index 81b5e2dde..217eaee73 100644 --- a/src/Trade/ObjectData3D.cpp +++ b/src/Trade/ObjectData3D.cpp @@ -30,6 +30,10 @@ ObjectData3D::ObjectData3D(std::vector children, const Matrix4& tra ObjectData3D::ObjectData3D(std::vector children, const Matrix4& transformation): _children(std::move(children)), _transformation(transformation), _instanceType(InstanceType::Empty), _instanceId(-1) {} +ObjectData3D::ObjectData3D(ObjectData3D&&) = default; + +ObjectData3D& ObjectData3D::operator=(ObjectData3D&&) = default; + #ifndef DOXYGEN_GENERATING_OUTPUT Debug operator<<(Debug debug, ObjectData3D::InstanceType value) { switch(value) { diff --git a/src/Trade/ObjectData3D.h b/src/Trade/ObjectData3D.h index a2ccffe21..e3ff8d821 100644 --- a/src/Trade/ObjectData3D.h +++ b/src/Trade/ObjectData3D.h @@ -43,11 +43,6 @@ MeshObjectData3D, which is specialized for objects with mesh instance type. @see ObjectData2D */ class MAGNUM_EXPORT ObjectData3D { - ObjectData3D(const ObjectData3D&) = delete; - ObjectData3D(ObjectData3D&&) = delete; - ObjectData3D& operator=(const ObjectData3D&) = delete; - ObjectData3D& operator=(ObjectData3D&&) = delete; - public: /** @brief Instance type */ enum class InstanceType { @@ -73,9 +68,21 @@ class MAGNUM_EXPORT ObjectData3D { */ explicit ObjectData3D(std::vector children, const Matrix4& transformation); + /** @brief Copying is not allowed */ + ObjectData3D(const ObjectData3D&) = delete; + + /** @brief Move constructor */ + ObjectData3D(ObjectData3D&&); + /** @brief Destructor */ virtual ~ObjectData3D() {} + /** @brief Copying is not allowed */ + ObjectData3D& operator=(const ObjectData3D&) = delete; + + /** @brief Move assignment */ + ObjectData3D& operator=(ObjectData3D&&); + /** @brief Child objects */ std::vector& children() { return _children; } diff --git a/src/Trade/SceneData.cpp b/src/Trade/SceneData.cpp index 889085bb0..5289be73e 100644 --- a/src/Trade/SceneData.cpp +++ b/src/Trade/SceneData.cpp @@ -28,4 +28,8 @@ namespace Magnum { namespace Trade { SceneData::SceneData(std::vector children2D, std::vector children3D): _children2D(std::move(children2D)), _children3D(std::move(children3D)) {} +SceneData::SceneData(SceneData&&) = default; + +SceneData& SceneData::operator=(SceneData&&) = default; + }} diff --git a/src/Trade/SceneData.h b/src/Trade/SceneData.h index ba81ff8c8..2a2a5d7fa 100644 --- a/src/Trade/SceneData.h +++ b/src/Trade/SceneData.h @@ -40,11 +40,6 @@ namespace Magnum { namespace Trade { @brief %Scene data */ class MAGNUM_EXPORT SceneData { - SceneData(const SceneData&) = delete; - SceneData(SceneData&&) = delete; - SceneData& operator=(const SceneData&) = delete; - SceneData& operator=(SceneData&&) = delete; - public: /** * @brief Constructor @@ -53,6 +48,18 @@ class MAGNUM_EXPORT SceneData { */ explicit SceneData(std::vector children2D, std::vector children3D); + /** @brief Copying is not allowed */ + SceneData(const SceneData&) = delete; + + /** @brief Move constructor */ + SceneData(SceneData&&); + + /** @brief Copying is not allowed */ + SceneData& operator=(const SceneData&) = delete; + + /** @brief Move assignment */ + SceneData& operator=(SceneData&&); + /** @brief Two-dimensional child objects */ const std::vector& children2D() const { return _children2D; } diff --git a/src/Trade/TextureData.h b/src/Trade/TextureData.h index 870ab392d..996198c42 100644 --- a/src/Trade/TextureData.h +++ b/src/Trade/TextureData.h @@ -33,11 +33,19 @@ namespace Magnum { namespace Trade { /** @brief %Texture data */ -class MAGNUM_EXPORT TextureData { - TextureData(const TextureData&) = delete; - TextureData(TextureData&&) = delete; - TextureData& operator=(const TextureData&) = delete; - TextureData& operator=(TextureData&&) = delete; +class TextureData { + public: + /** @brief Copying is not allowed */ + TextureData(const TextureData&) = delete; + + /** @brief Move constructor */ + TextureData(TextureData&&) = default; + + /** @brief Copying is not allowed */ + TextureData& operator=(const TextureData&) = delete; + + /** @brief Move assignment */ + TextureData& operator=(TextureData&&) = default; }; }}