From f78027a1cff87497560a7f3cebaf7ef8dd17e1e6 Mon Sep 17 00:00:00 2001 From: Linda Andersson Date: Tue, 26 Nov 2013 09:16:51 +0100 Subject: [PATCH] dll - working fix in unique pointer and array - missing copy constructor --- Bin/DLL/PLACEHOLDER | 0 Code/GameLogic/GameLogic.vcxproj | 16 ++++++++++++---- Code/GameLogic/Player.cpp | 2 +- Code/Misc/Utilities-InlineImpl.h | 16 ++++++++++++++++ Code/Misc/Utilities.h | 20 ++++++++++++++------ 5 files changed, 43 insertions(+), 11 deletions(-) delete mode 100644 Bin/DLL/PLACEHOLDER diff --git a/Bin/DLL/PLACEHOLDER b/Bin/DLL/PLACEHOLDER deleted file mode 100644 index e69de29b..00000000 diff --git a/Code/GameLogic/GameLogic.vcxproj b/Code/GameLogic/GameLogic.vcxproj index df8f429b..b00cd46f 100644 --- a/Code/GameLogic/GameLogic.vcxproj +++ b/Code/GameLogic/GameLogic.vcxproj @@ -66,24 +66,28 @@ - $(SolutionDir)..\External\Bin\DLL\$(ProjectName)\ + $(SolutionDir)..\Bin\DLL\ $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ $(ProjectName)_$(PlatformShortName)D + $(SolutionDir)..\Bin\DLL;$(LibraryPath) - $(SolutionDir)..\External\Bin\DLL\$(ProjectName)\ + $(SolutionDir)..\Bin\DLL\ $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ $(ProjectName)_$(PlatformShortName) + $(SolutionDir)..\Bin\DLL;$(LibraryPath) - $(SolutionDir)..\External\Bin\DLL\$(ProjectName)\ + $(SolutionDir)..\Bin\DLL\ $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ $(ProjectName)_$(PlatformShortName)D + $(SolutionDir)..\Bin\DLL;$(LibraryPath) - $(SolutionDir)..\External\Bin\DLL\$(ProjectName)\ + $(SolutionDir)..\Bin\DLL\ $(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\ $(ProjectName)_$(PlatformShortName) + $(SolutionDir)..\Bin\DLL;$(LibraryPath) @@ -95,6 +99,7 @@ true + GamePhysics_$(PlatformShortName)D.lib;%(AdditionalDependencies) @@ -107,6 +112,7 @@ true + GamePhysics_$(PlatformShortName)D.lib;%(AdditionalDependencies) @@ -123,6 +129,7 @@ true true true + GamePhysics_$(PlatformShortName).lib;%(AdditionalDependencies) @@ -139,6 +146,7 @@ true true true + GamePhysics_$(PlatformShortName).lib;%(AdditionalDependencies) diff --git a/Code/GameLogic/Player.cpp b/Code/GameLogic/Player.cpp index 67cbf52e..131fb456 100644 --- a/Code/GameLogic/Player.cpp +++ b/Code/GameLogic/Player.cpp @@ -47,7 +47,7 @@ Player::Player(void) life = 10; UniquePointer rigidBody = API::Instance().CreateSimpleRigidBody(); - //ref = API::Instance().AddObject(rigidBody); + API::Instance().AddObject(rigidBody); ////ref = API::Instance().AddObject(API::Instance().CreateSimpleRigidBody()); //const ICustomBody* rB; diff --git a/Code/Misc/Utilities-InlineImpl.h b/Code/Misc/Utilities-InlineImpl.h index dc047153..c2bbd2a9 100644 --- a/Code/Misc/Utilities-InlineImpl.h +++ b/Code/Misc/Utilities-InlineImpl.h @@ -37,6 +37,14 @@ namespace Utility this->ownedInstance = assignedInstance; } + template + UniquePointer::UniquePointer( const UniquePointer &donor ) + { + this->ownedInstance = donor.ownedInstance; + donor.ownedInstance = NULL; + + } + template UniquePointer::~UniquePointer() { @@ -110,6 +118,14 @@ namespace Utility this->ownedArray = assignedArray; } + template + UniqueArray::UniqueArray( const UniqueArray &donor ) + { + this->ownedArray = donor.ownedArray; + donor.ownedArray = NULL; + + } + template UniqueArray::~UniqueArray() { diff --git a/Code/Misc/Utilities.h b/Code/Misc/Utilities.h index a07143cf..6ece8155 100644 --- a/Code/Misc/Utilities.h +++ b/Code/Misc/Utilities.h @@ -27,18 +27,22 @@ namespace Utility { public: //! Assigns assignedInstance ownership to this UniquePonter, old owned instance will be deleted. - //! If NULL is assigned is equavalent with clearing all responsibilities from this UniquePointer. + //! If NULL is assigned is equivalent with clearing all responsibilities from this UniquePointer. UniquePointer( Type *assignedInstance = NULL ); + //! Transfers assignedInstance ownership from donor to this UniquePonter, old owned instance will be deleted. + //! If donor had nothing, is equivalent with clearing all responsibilities from this UniquePointer. + UniquePointer( const UniquePointer &donor ); + //! Will auto delete assigned dynamic instance. ~UniquePointer(); //! Assigns assignedInstance ownership to this UniquePonter, old owned instance will be deleted. - //! If NULL is assigned is equavalent with clearing all responsibilities from this UniquePointer. + //! If NULL is assigned is equivalent with clearing all responsibilities from this UniquePointer. UniquePointer & operator = ( Type *assignedInstance ); //! Transfers assignedInstance ownership from donor to this UniquePonter, old owned instance will be deleted. - //! If donor had nothing, is equavalent with clearing all responsibilities from this UniquePointer. + //! If donor had nothing, is equivalent with clearing all responsibilities from this UniquePointer. UniquePointer & operator = ( const UniquePointer &donor ); //! Access the assigned dynamic instance. Will crash if nothing there @@ -71,18 +75,22 @@ namespace Utility { //! Wrapper to safely transfer dynamic ownership/responsibility public: //! Assigns assignedInstance ownership to this UniquePonter, old owned array will be deleted. - //! If NULL is assigned is equavalent with clearing all responsibilities from this UniqueArray. + //! If NULL is assigned is equivalent with clearing all responsibilities from this UniqueArray. UniqueArray( Type assignedArray[] = NULL ); + //! Transfers assignedInstance ownership from donor to this UniquePonter, old owned array will be deleted. + //! If donor had nothing, is equivalent with clearing all responsibilities from this UniqueArray. + UniqueArray( const UniqueArray &donor ); + //! Will auto delete assigned dynamic array. ~UniqueArray(); //! Assigns assignedInstance ownership to this UniquePonter, old owned array will be deleted. - //! If NULL is assigned is equavalent with clearing all responsibilities from this UniqueArray. + //! If NULL is assigned is equivalent with clearing all responsibilities from this UniqueArray. UniqueArray & operator = ( Type assignedArray[] ); //! Transfers assignedInstance ownership from donor to this UniquePonter, old owned array will be deleted. - //! If donor had nothing, is equavalent with clearing all responsibilities from this UniqueArray. + //! If donor had nothing, is equivalent with clearing all responsibilities from this UniqueArray. UniqueArray & operator = ( const UniqueArray &donor ); //! Accesses the instance at index i of this UniqeArray's owned dynamic array.