From 56f37a04650df80d4633bbf8f5f3374277524fd2 Mon Sep 17 00:00:00 2001 From: Frederik Aalund Date: Fri, 14 Mar 2014 15:36:12 +0100 Subject: [PATCH] Deprecated some abstraction and fixed a memory leak. --- include/assimp/metadata.h | 86 ++++++++++++++------------------------- 1 file changed, 31 insertions(+), 55 deletions(-) diff --git a/include/assimp/metadata.h b/include/assimp/metadata.h index d14a987dc..69d0b8067 100644 --- a/include/assimp/metadata.h +++ b/include/assimp/metadata.h @@ -45,6 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef __AI_METADATA_H_INC__ #define __AI_METADATA_H_INC__ +#include #include @@ -99,58 +100,6 @@ inline aiType GetAiType( aiVector3D ) { return AI_AIVECTOR3D; } -// ------------------------------------------------------------------------------- -/** - * Transform - * - * Applies the callable, c, to the given data of the given type. - * The callable, c, is expected to have the following interface - * - * c( T* data ) - * - * where T can be any type with a corresponding entry in the aiType enum. - */ - // ------------------------------------------------------------------------------- -template -inline void transform( aiType type, void* data, callable c ) -{ - switch (type) - { - case AI_BOOL: - callable(static_cast(data)); - break; - case AI_INT: - callable(static_cast(data)); - break; - case AI_UINT64: - callable(static_cast(data)); - break; - case AI_FLOAT: - callable(static_cast(data)); - break; - case AI_AISTRING: - callable(static_cast(data)); - break; - case AI_AIVECTOR3D: - callable(static_cast(data)); - break; - default: - assert(false); - break; - } -} - -// ------------------------------------------------------------------------------- -/** - * Transform. - * - * This is a convenience overload for aiMetaDataEntry's. - */ - // ------------------------------------------------------------------------------- -template -inline void transform( aiMetaDataEntry entry, callable c ) -{ transform(entry.type, entry.data, c); } - #endif @@ -179,9 +128,9 @@ struct aiMetadata /** Constructor */ aiMetadata() // set all members to zero by default - : mKeys(NULL) + : mNumProperties(0) + , mKeys(NULL) , mValues(NULL) - , mNumProperties(0) {} @@ -194,7 +143,34 @@ struct aiMetadata { // Delete each metadata entry for (unsigned i=0; i(data); + break; + case AI_INT: + delete static_cast(data); + break; + case AI_UINT64: + delete static_cast(data); + break; + case AI_FLOAT: + delete static_cast(data); + break; + case AI_AISTRING: + delete static_cast(data); + break; + case AI_AIVECTOR3D: + delete static_cast(data); + break; + default: + assert(false); + break; + } + } + // Delete the metadata array delete [] mValues; }