From 2d50410deec0dfbd1a034a6f4fff6053ed80111c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Tue, 13 Dec 2011 15:22:09 +0100 Subject: [PATCH] C++11 (move semantics) compatible class copy/move disabling. Not using macro this time, as some classes could want only to disable either copy or move and with macros this would become unintuitive and error-prone. --- src/AbstractShaderProgram.h | 5 ++++- src/AbstractTexture.h | 5 ++++- src/Buffer.h | 5 ++++- src/Image.h | 5 ++++- src/Mesh.h | 5 ++++- src/Object.h | 5 ++++- src/Shader.h | 5 ++++- 7 files changed, 28 insertions(+), 7 deletions(-) diff --git a/src/AbstractShaderProgram.h b/src/AbstractShaderProgram.h index e75ceccfa..5072b3fb5 100644 --- a/src/AbstractShaderProgram.h +++ b/src/AbstractShaderProgram.h @@ -78,7 +78,10 @@ Basic workflow with AbstractShaderProgram subclasses is: instancing the class and calling Mesh::draw() (see its documentation for more). */ class AbstractShaderProgram { - DISABLE_COPY(AbstractShaderProgram) + AbstractShaderProgram(const AbstractShaderProgram& other) = delete; + AbstractShaderProgram(AbstractShaderProgram&& other) = delete; + AbstractShaderProgram& operator=(const AbstractShaderProgram& other) = delete; + AbstractShaderProgram& operator=(AbstractShaderProgram&& other) = delete; public: /** @brief Logging level */ diff --git a/src/AbstractTexture.h b/src/AbstractTexture.h index 41a019fac..cb7594431 100644 --- a/src/AbstractTexture.h +++ b/src/AbstractTexture.h @@ -31,7 +31,10 @@ namespace Magnum { See Texture documentation for more information. */ class AbstractTexture { - DISABLE_COPY(AbstractTexture) + AbstractTexture(const AbstractTexture& other) = delete; + AbstractTexture(AbstractTexture&& other) = delete; + AbstractTexture& operator=(const AbstractTexture& other) = delete; + AbstractTexture& operator=(AbstractTexture&& other) = delete; public: /** @brief Texture filtering */ diff --git a/src/Buffer.h b/src/Buffer.h index cd9f179b2..cb0a698df 100644 --- a/src/Buffer.h +++ b/src/Buffer.h @@ -27,7 +27,10 @@ namespace Magnum { * @brief Class for managing buffers */ class Buffer { - DISABLE_COPY(Buffer) + Buffer(const Buffer& other) = delete; + Buffer(Buffer&& other) = delete; + Buffer& operator=(const Buffer& other) = delete; + Buffer& operator=(Buffer&& other) = delete; public: /** @brief Buffer type */ diff --git a/src/Image.h b/src/Image.h index 1586e90c7..40f7335d3 100644 --- a/src/Image.h +++ b/src/Image.h @@ -42,7 +42,10 @@ transparent envelope around the data, which holds additional information about data type and dimensions. */ template class Image { - DISABLE_COPY(Image) + Image(const Image& other) = delete; + Image(Image&& other) = delete; + Image& operator=(const Image& other) = delete; + Image& operator=(Image&& other) = delete; public: const static size_t Dimensions = imageDimensions; /**< @brief Image dimension count */ diff --git a/src/Mesh.h b/src/Mesh.h index b811a6870..8269d4a3b 100644 --- a/src/Mesh.h +++ b/src/Mesh.h @@ -37,7 +37,10 @@ class Buffer; * shader as floating-point vec4) */ class Mesh { - DISABLE_COPY(Mesh) + Mesh(const Mesh& other) = delete; + Mesh(Mesh&& other) = delete; + Mesh& operator=(const Mesh& other) = delete; + Mesh& operator=(Mesh&& other) = delete; public: /** @brief Primitive type */ diff --git a/src/Object.h b/src/Object.h index 93a789994..ee5af73b9 100644 --- a/src/Object.h +++ b/src/Object.h @@ -34,7 +34,10 @@ class Scene; * place. */ class Object { - DISABLE_COPY(Object) + Object(const Object& other) = delete; + Object(Object&& other) = delete; + Object& operator=(const Object& other) = delete; + Object& operator=(Object&& other) = delete; friend class Scene; diff --git a/src/Shader.h b/src/Shader.h index 5da07a2f5..5abb7b25e 100644 --- a/src/Shader.h +++ b/src/Shader.h @@ -34,7 +34,10 @@ namespace Magnum { * for linking and usage. */ class Shader { - DISABLE_COPY(Shader) + Shader(const Shader& other) = delete; + Shader(Shader&& other) = delete; + Shader& operator=(const Shader& other) = delete; + Shader& operator=(Shader&& other) = delete; public: /** @brief Logging level */