diff --git a/Code/Misc/Misc.vcxproj b/Code/Misc/Misc.vcxproj index ca39cada..82888770 100644 --- a/Code/Misc/Misc.vcxproj +++ b/Code/Misc/Misc.vcxproj @@ -152,6 +152,7 @@ + @@ -161,7 +162,8 @@ - + + diff --git a/Code/Misc/Misc.vcxproj.filters b/Code/Misc/Misc.vcxproj.filters index abee7ddd..4ad12e70 100644 --- a/Code/Misc/Misc.vcxproj.filters +++ b/Code/Misc/Misc.vcxproj.filters @@ -27,6 +27,12 @@ Source Files + + Source Files + + + Source Files + Source Files @@ -47,13 +53,22 @@ Header Files - + + Header Files + + Header Files Header Files - + + Header Files + + + Header Files + + Header Files diff --git a/Code/Misc/Utilities-InlineImpl.h b/Code/Misc/Utilities-Impl.h similarity index 93% rename from Code/Misc/Utilities-InlineImpl.h rename to Code/Misc/Utilities-Impl.h index 50d13652..655f06c5 100644 --- a/Code/Misc/Utilities-InlineImpl.h +++ b/Code/Misc/Utilities-Impl.h @@ -1,7 +1,11 @@ ///////////////////////////////////////////////////////////////////// // Inline and template implementations for // the Utility Collection of Miscellanious Handy Functions -// © Dan Andersson 2013 +// +// Created 2013 by Dan Andersson +// Edited 2013 by +// * Dan Andersson +// * Dennis Andersen ///////////////////////////////////////////////////////////////////// #ifndef UTILITIES_INLINE_IMPL_H @@ -51,14 +55,6 @@ namespace Utility SafeDeleteInstance( this->ownedInstance ); } - template - UniquePointer & UniquePointer::operator = ( Type *assignedInstance ) - { - SafeDeleteInstance( this->ownedInstance ); - this->ownedInstance = assignedInstance; - return *this; - } - template UniquePointer & UniquePointer::operator = ( const UniquePointer &donor ) { @@ -144,13 +140,6 @@ namespace Utility SafeDeleteArray( this->ownedArray ); } - template - UniqueArray & UniqueArray::operator = ( Type assignedArray[] ) - { - SafeDeleteArray( this->ownedArray ); - this->ownedArray = assignedArray; - } - template UniqueArray & UniqueArray::operator = ( const UniqueArray &donor ) { diff --git a/Code/Misc/Utilities.h b/Code/Misc/Utilities.h index 2294918e..6f5cf3ab 100644 --- a/Code/Misc/Utilities.h +++ b/Code/Misc/Utilities.h @@ -1,7 +1,11 @@ -//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//! +///////////////////////////////////////////////////////////////////// // Utility Collection of Miscellanious Handy Functions -// © Dan Andersson 2013 -//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//! +// +// Created 2013 by Dan Andersson +// Edited 2013 by +// * Dan Andersson +// * Dennis Andersen +///////////////////////////////////////////////////////////////////// #ifndef UTILITIES_H #define UTILITIES_H @@ -17,60 +21,87 @@ namespace Utility { namespace DynamicMemory { - //! If dynamicInstance is not NULL, then delete + /****************************************************************** + * If dynamicInstance is not NULL, then delete. + ******************************************************************/ template void SafeDeleteInstance( Type *dynamicInstance ); - //! If dynamicArray is not NULL, then delete [] + /****************************************************************** + * If dynamicArray is not NULL, then delete []. + ******************************************************************/ template void SafeDeleteArray( Type dynamicArray[] ); //! Wrapper to safely transfer dynamic ownership/responsibility template struct UniquePointer { public: - //! Assigns assignedInstance ownership to this UniquePonter, old owned instance will be deleted. - //! If NULL is assigned is equivalent with clearing all responsibilities from this UniquePointer. - UniquePointer( Type *assignedInstance = NULL ); + /****************************************************************** + * Assigns assignedInstance ownership to this UniquePonter, old owned instance will be deleted. + * 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. + /****************************************************************** + * 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. + /****************************************************************** + * Will auto delete assigned dynamic instance. + ******************************************************************/ ~UniquePointer(); - //! Assigns assignedInstance ownership to this UniquePonter, old owned instance will be deleted. - //! 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 equivalent with clearing all responsibilities from this UniquePointer. + /****************************************************************** + * 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 & operator = ( const UniquePointer &donor ); - //! Access the assigned dynamic instance. Will crash if nothing there + /****************************************************************** + * Access the assigned dynamic instance. Will crash if nothing there + ******************************************************************/ operator Type* (); - //! Access the assigned dynamic instance. Will crash if nothing there + /****************************************************************** + * Access the assigned dynamic instance. Will crash if nothing there + ******************************************************************/ operator const Type* () const; - //! Access members of the assigned dynamic instance. Will crash if nothing there + /****************************************************************** + * Access members of the assigned dynamic instance. Will crash if nothing there + ******************************************************************/ Type * operator -> (); - //! Access members of the assigned dynamic instance. Will crash if nothing there + /****************************************************************** + * Access members of the assigned dynamic instance. Will crash if nothing there + ******************************************************************/ const Type * operator -> () const; - //! If true, this UniquePointer have a current ownership/responsibility of a dynamic instance. + /****************************************************************** + * @return true if this UniquePointer have a current ownership/responsibility of a dynamic instance. + ******************************************************************/ operator bool () const; - //! @return true if this ownedInstance matches with stray + /****************************************************************** + * @return true if this ownedInstance matches with stray + ******************************************************************/ bool operator == ( Type *stray ) const; - //! @return false if this ownedInstance matches with stray + /****************************************************************** + * @return false if this ownedInstance matches with stray + ******************************************************************/ bool operator != ( Type *stray ) const; - //! This UniquePointer drops all claims of ownership/responsibility and returns the dynamic instance. Now it is your responsibility to delete. + /****************************************************************** + * This UniquePointer drops all claims of ownership/responsibility and returns the dynamic instance. Now it is your responsibility to delete. + ******************************************************************/ Type* Release(); - //! (inline) If true, this UniquePointer have a current ownership/responsibility of a dynamic instance. + /****************************************************************** + * @return true if this UniquePointer have a current ownership/responsibility of a dynamic instance. + * inline of @see operator bool () const + ******************************************************************/ bool HaveOwnership() const; private: @@ -81,46 +112,65 @@ namespace Utility struct UniqueArray { //! 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 equivalent with clearing all responsibilities from this UniqueArray. + /****************************************************************** + * Assigns assignedInstance ownership to this UniquePonter, old owned array will be deleted. + * 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. + /****************************************************************** + * 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. + /****************************************************************** + * Will auto delete assigned dynamic array. + ******************************************************************/ ~UniqueArray(); - - //! Assigns assignedInstance ownership to this UniquePonter, old owned array will be deleted. - //! 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 equivalent with clearing all responsibilities from this UniqueArray. + /****************************************************************** + * 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 & operator = ( const UniqueArray &donor ); - //! Accesses the instance at index i of this UniqeArray's owned dynamic array. - //! Will crash if out-of-bound or there is no assigned array. + /****************************************************************** + * Accesses the instance at index i of this UniqeArray's owned dynamic array. + * Will crash if out-of-bound or there is no assigned array. + ******************************************************************/ template Type & operator [] ( Index i ); - //! Accesses the instance at index i of this UniqeArray's owned dynamic array. - //! Will crash if out-of-bound or there is no assigned array. + /****************************************************************** + * Accesses the instance at index i of this UniqeArray's owned dynamic array. + * Will crash if out-of-bound or there is no assigned array. + ******************************************************************/ template const Type & operator [] ( Index i ) const; - //! If true, this UniqueArray have a current ownership/responsibility of a dynamic instance. + /****************************************************************** + * @return true if this UniqueArray have a current ownership/responsibility of a dynamic array. + ******************************************************************/ operator bool () const; - //! @return true if this ownedInstance matches with stray + /****************************************************************** + * @return true if this ownedInstance matches with stray. + ******************************************************************/ bool operator == ( Type *stray ) const; - //! @return false if this ownedInstance matches with stray + /****************************************************************** + * @return false if this ownedInstance matches with stray. + ******************************************************************/ bool operator != ( Type *stray ) const; - //! This UniqueArray drops all claims of ownership/responsibility and returns the dynamic array. Now it is your responsibility to delete. + /****************************************************************** + * This UniqueArray drops all claims of ownership/responsibility and returns the dynamic array. Now it is your responsibility to delete. + ******************************************************************/ Type* Release(); - //! (inline) If true, this UniqueArray have a current ownership/responsibility of a dynamic array. + /****************************************************************** + * @return true if this UniqueArray have a current ownership/responsibility of a dynamic array. + * inline of @see operator bool () const + ******************************************************************/ bool HaveOwnership() const; private: @@ -331,6 +381,6 @@ namespace Utility } } -#include "Utilities-InlineImpl.h" +#include "Utilities-Impl.h" #endif \ No newline at end of file