[Python-ogre-commit] SF.net SVN: python-ogre:[791] trunk/python-ogre
Brought to you by:
andy_miller,
roman_yakovenko
|
From: <and...@us...> - 2008-11-14 07:14:41
|
Revision: 791
http://python-ogre.svn.sourceforge.net/python-ogre/?rev=791&view=rev
Author: andy_miller
Date: 2008-11-14 07:14:30 +0000 (Fri, 14 Nov 2008)
Log Message:
-----------
Cleaning up loder NxOgre files
Modified Paths:
--------------
trunk/python-ogre/environment.py
Removed Paths:
-------------
trunk/python-ogre/ThirdParty/nxogre/BetajaenCC.cpp
trunk/python-ogre/ThirdParty/nxogre/BetajaenCC.h
trunk/python-ogre/ThirdParty/nxogre/NxOgre.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreActor.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreActor.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreActors.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreAllocator.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreAllocator.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreAnimatedRenderable.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreBody.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreBody.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreCharacter.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreCharacter.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreCharacterController.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreCharacterController.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreCharacterModel.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreCharacterModel.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreCharacterMovementModel.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreCharacterMovementModel.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreCloth.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreCloth.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreClothRaycaster.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreClothRaycaster.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreCompoundActor.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreCompoundActor.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreConfig.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreContactCallback.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreContactCallback.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreContactCallbackController.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreContactCallbackController.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreContactStream.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreContactStream.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreContainer.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreContainer.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreDebugRenderer.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreDebugRenderer.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreDeletionCallback.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreDeletionCallback.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreDominanceGroup.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreDominanceGroup.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreDualIdentifier.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreDualIdentifier.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreEffectsSystem.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreEffectsSystem.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreEngine.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreEngine.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreError.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreError.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreExtendedTypes.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreExtendedTypes.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreFileResource.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreFileResource.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreFileResourceManager.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreFileResourceManager.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreFluid.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreFluid.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreForceField.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreForceField.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreGroup.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreGroup.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreHash.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreHeightfield.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreHeightfield.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreHelpers.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreHelpers.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreIntersection.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreIntersection.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreJoint.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreJoint.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreJointCallback.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreJointCallback.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreJointSet1.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreJointSet1.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreJointSet2.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreJointSet2.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreKinematicCharacter.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreKinematicCharacter.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreKinematicCharacterSweep.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreLog.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreLog.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreMachine.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreMachine.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreManualHeightfield.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreManualHeightfield.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreManualMesh.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreManualMesh.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreManualMeshUtil.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreManualMeshUtil.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreMaterial.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreMaterial.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreMaterialAlias.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreMaterialAlias.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreMemoryResource.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreMemoryResource.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreMemoryResourceManager.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreMemoryResourceManager.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreMesh.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreMesh.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreMeshParams.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreMeshParams.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreMeshRenderable.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreMeshRenderable.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreNodeRenderable.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreNodeRenderable.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreNxActorController.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreNxActorController.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreOgreMeshRenderable.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreOgreMeshRenderable.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreOgreNodeRenderable.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreOgreNodeRenderable.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreOgreSceneRenderer.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreOgreSceneRenderer.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreOgreTimeController.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreOgreTimeController.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreParams.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreParams.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreParticleSystem.h
trunk/python-ogre/ThirdParty/nxogre/NxOgrePerformer.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgrePerformer.h
trunk/python-ogre/ThirdParty/nxogre/NxOgrePhysXDriver.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgrePhysXDriver.h
trunk/python-ogre/ThirdParty/nxogre/NxOgrePlatform.h
trunk/python-ogre/ThirdParty/nxogre/NxOgrePose.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgrePose.h
trunk/python-ogre/ThirdParty/nxogre/NxOgrePrerequisites.h
trunk/python-ogre/ThirdParty/nxogre/NxOgrePrerequisitesOgre.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreRaycaster.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreRaycaster.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreRemoteDebuggerConnection.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreRemoteDebuggerConnection.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreRenderable.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreRenderable.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreRenderableSource.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreRenderableSource.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreResource.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreResource.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreResourceCallback.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreResourceCallback.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreResourceManager.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreResourceManager.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreResourceSystem.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreResourceSystem.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreScene.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreScene.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreSceneContactController.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreSceneContactController.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreSceneController.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreSceneController.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreSceneRenderer.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreSceneRenderer.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreSceneSource.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreSceneSource.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreSceneTriggerController.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreSceneTriggerController.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreShape.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreShape.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreShapeMeshes.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreShapeMeshes.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreShapePrimitives.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreShapePrimitives.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreShapeTerrain.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreShapeTerrain.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreShapeWheel.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreShapeWheel.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreSheet.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreSheet.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreSimpleActor.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreSimpleActor.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreSimpleShape.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreSimpleShape.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreSkeletalRenderable.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreSkeleton.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreSkeleton.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreSleepCallback.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreSleepCallback.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreSoftBody.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreSoftBody.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreSpriteRenderable.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreStable.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreStable.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreTesting.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreTesting.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreThrow.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreTimeController.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreTimeController.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreTimeStep.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreTimer.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreTimer.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreTrigger.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreTrigger.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreTriggerCallback.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreTriggerCallback.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreTriggerFunction.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreUserAllocator.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreUserAllocator.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreVoidPointer.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreVoxelRenderable.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreWheelContactCallback.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreWheelSet.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreWheelSet.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreWhen.h
trunk/python-ogre/ThirdParty/nxogre/NxOgreWorld.cpp
trunk/python-ogre/ThirdParty/nxogre/NxOgreWorld.h
trunk/python-ogre/ThirdParty/nxogre_0.9/
Deleted: trunk/python-ogre/ThirdParty/nxogre/BetajaenCC.cpp
===================================================================
--- trunk/python-ogre/ThirdParty/nxogre/BetajaenCC.cpp 2008-11-14 07:08:16 UTC (rev 790)
+++ trunk/python-ogre/ThirdParty/nxogre/BetajaenCC.cpp 2008-11-14 07:14:30 UTC (rev 791)
@@ -1,653 +0,0 @@
-/*
-
-Betajaen's Container Classes
-
-Copyright (c) 2007 Robin Southern, http://www.nxogre.org
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-*/
-
-#include "NxOgreStable.h"
-#include "BetajaenCC.h"
-
-#if 0
-
-BETAJAEN_CC_NAMESPACE_START
-
-/*
- Flat
-
- \note Iterator is known as Type* in this file only.
-*/
-
-template< class Type, class AllocatorType >
-Flat<Type, AllocatorType>::Flat(AllocatorPtr allocator, bool deleteAllocator)
- : First(NULL), Last(NULL), End(NULL), Allocator(allocator), AutoDeleteAllocator(deleteAllocator)
-{
-}
-
-/////////////////////////////////////////////////////////////
-
-template< class Type, class AllocatorType >
-Flat<Type, AllocatorType>::~Flat()
-{
- _deallocate(First);
- if (AutoDeleteAllocator)
- delete Allocator;
-}
-
-/////////////////////////////////////////////////////////////
-
-template< class Type, class AllocatorType >
-unsigned int Flat<Type, AllocatorType>::_size() const
-{
- return (unsigned int) (Last - First);
-}
-
-/////////////////////////////////////////////////////////////
-
-template< class Type, class AllocatorType >
-unsigned int Flat<Type, AllocatorType>::_capacity() const
-{
- return (unsigned int) (First == 0 ? 0 : End - First);
-}
-
-/////////////////////////////////////////////////////////////
-
-template< class Type, class AllocatorType >
-Type* Flat<Type, AllocatorType>::_allocate(unsigned int size)
-{
- return (Type*) Allocator->Allocate(size * sizeof(Type));
-}
-
-/////////////////////////////////////////////////////////////
-
-template< class Type, class AllocatorType >
-void Flat<Type, AllocatorType>::_deallocate(Type* p)
-{
- if (p)
- Allocator->Deallocate(p);
-}
-
-/////////////////////////////////////////////////////////////
-
-template< class Type, class AllocatorType >
-Type* Flat<Type, AllocatorType>::_reallocate(Type* p, unsigned int size)
-{
- return (Iterator) Allocator->Reallocate(p, size * sizeof(Type));
-}
-
-/////////////////////////////////////////////////////////////
-
-template< class Type, class AllocatorType >
-void Flat<Type, AllocatorType>::_clip(unsigned int size)
-{
-
- if (size < _size())
- return;
-
- Iterator new_first = _allocate(size);
- _copy(First, Last, new_first);
- _destroy(First, Last);
- _deallocate(First);
- End = new_first + size;
- Last = new_first + _size();
- First = new_first;
-
-}
-
-/////////////////////////////////////////////////////////////
-
-template< class Type, class AllocatorType >
-void Flat<Type, AllocatorType>::_reserve(unsigned int new_size)
-{
- if (_capacity() >= new_size)
- return;
-
- Iterator new_first = _allocate(new_size);
- _copy(First, Last, new_first);
- _destroy(First, Last);
- _deallocate(First);
- End = new_first + new_size;
- Last = new_first + _size();
- First = new_first;
-
-}
-
-/////////////////////////////////////////////////////////////
-
-template< class Type, class AllocatorType >
-Type* Flat<Type, AllocatorType>::_copy(Type* begin, Type* end, Type* dest)
-{
- for (;begin != end; ++dest, ++begin)
- *dest = *begin;
- return dest;
-}
-
-/////////////////////////////////////////////////////////////
-
-template< class Type, class AllocatorType >
-void Flat<Type, AllocatorType>::_delete_range(Type* begin, Type* end)
-{
- for (; begin != end; ++begin) {
- BETAJAEN_CC_DELETE(*begin);
- }
-}
-
-/////////////////////////////////////////////////////////////
-
-template< class Type, class AllocatorType >
-void Flat<Type, AllocatorType>::_destroy(Type* begin, Type* end)
-{
- for (; begin != end; ++begin) {
- BETAJAEN_CC_DESTRUCTOR(begin)
- begin->~Type();
- }
-}
-
-BETAJAEN_CC_NAMESPACE_END
-
-
-/**
- SharedList
-*/
-
-BETAJAEN_CC_NAMESPACE_START
-
-/////////////////////////////////////////////////////////////
-
-#define SharedListType SharedList<Type, AllocatorType>
-#define TypePtr Type*
-
-/////////////////////////////////////////////////////////////
-
-template < class Type, class AllocatorType >
-SharedList<Type, AllocatorType>::SharedList(AllocatorType* _allocator, bool _auto_delete_allocator)
-{
- if (_allocator == NULL)
- _allocator = new AllocatorType();
-
- _Flat = new FlatType(_allocator, _auto_delete_allocator);
- _Usage = new unsigned int(1);
-
-}
-
-/////////////////////////////////////////////////////////////
-
-template < class Type, class AllocatorType >
-SharedList<Type, AllocatorType>::SharedList(const SharedListType& other)
-{
-
- _Flat = other._Flat;
- _Usage = other._Usage;
- ++(*_Usage);
-
-}
-
-/////////////////////////////////////////////////////////////
-
-template < class Type, class AllocatorType >
-SharedListType& SharedList<Type, AllocatorType>::operator=(const SharedListType& other)
-{
-
- if (_Flat)
- {
- _Flat->_delete_range(_Flat->First, _Flat->Last);
- delete _Flat;
- }
-
- if (_Usage)
- delete _Usage;
-
- _Flat = other._Flat;
- _Usage = other._Usage;
- ++(*_Usage);
-
- return *this;
-
-}
-
-/////////////////////////////////////////////////////////////
-
-template < class Type, class AllocatorType >
-TypePtr SharedList<Type, AllocatorType>::Get(size_t pos)
-{
- if (pos > Size())
- return NULL;
-
- return *(_Flat->First + pos);
-}
-
-/////////////////////////////////////////////////////////////
-
-template < class Type, class AllocatorType >
-TypePtr SharedList<Type, AllocatorType>::operator[](size_t pos)
-{
- if (pos > Size())
- return NULL;
-
- return *(_Flat->First + pos);
-}
-
-/////////////////////////////////////////////////////////////
-
-template < class Type, class AllocatorType >
-unsigned int SharedList<Type, AllocatorType>::WhereIs(TypePtr ptr)
-{
-
- if (_Flat->_size() == 0)
- return 0;
-
- unsigned int i=0;
- for(Iterator begin = _Flat->First; begin != _Flat->Last; ++begin, ++i)
- {
- if (ptr == (*begin))
- return i;
- }
-
- return 0;
-}
-
-/////////////////////////////////////////////////////////////
-
-template < class Type, class AllocatorType >
-bool SharedList<Type, AllocatorType>::Has(TypePtr ptr)
-{
-
- if (_Flat->_size() == 0)
- return false;
-
- for(Iterator begin = _Flat->First; begin != _Flat->Last; ++begin)
- {
- if (ptr == (*begin))
- return true;
- }
-
- return false;
-
-}
-
-/////////////////////////////////////////////////////////////
-
-template < class Type, class AllocatorType >
-unsigned SharedList<Type, AllocatorType>::Size() const
-{
- return _Flat->_size();
-}
-
-/////////////////////////////////////////////////////////////
-
-template < class Type, class AllocatorType >
-void SharedList<Type, AllocatorType>::Insert(Type* const & val)
-{
-
- if (_Flat->End <= _Flat->Last)
- _Flat->_reserve( (1 + Size()) * 2);
-
- *_Flat->Last = val;
- _Flat->Last++;
-
-}
-
-/////////////////////////////////////////////////////////////
-
-template < class Type, class AllocatorType >
-void SharedList<Type, AllocatorType>::Clean(unsigned int n)
-{
- _Flat->_clip(_Flat->_size() + n);
-}
-
-/////////////////////////////////////////////////////////////
-
-template < class Type, class AllocatorType >
-void SharedList<Type, AllocatorType>::Destroy(unsigned int n)
-{
- if (n == 0)
- return Destroy(First);
-
- if (n == Size())
- return Destroy(Last);
-
- delete *(_Flat->First + n);
-
- _Flat->_destroy(_Flat->First + n, _Flat->First + n + 1);
- _Flat->_copy(_Flat->First + n + 1, _Flat->Last, _Flat->First + n);
- _Flat->Last--;
-
-}
-
-/////////////////////////////////////////////////////////////
-
-template < class Type, class AllocatorType >
-void SharedList<Type, AllocatorType>::DestroyAll()
-{
- if (Size() == 0)
- return;
-
- _Flat->_delete_range(_Flat->First, _Flat->Last);
- // Could be iffy.
- _Flat->Last = _Flat->First;
-
-}
-
-/////////////////////////////////////////////////////////////
-
-template < class Type, class AllocatorType >
-void SharedList<Type, AllocatorType>::Destroy(TypePtr val) {
- unsigned int i = WhereIs(val);
- Destroy(i);
-}
-
-/////////////////////////////////////////////////////////////
-
-template < class Type, class AllocatorType >
-void SharedList<Type, AllocatorType>::Destroy(AbsolutePosition position)
-{
-
- switch(position) {
-
- case First:
- {
- delete *_Flat->First;
- _Flat->_copy(_Flat->First + 1, _Flat->Last + 1, _Flat->First);
- _Flat->Last--;
- }
- break;
-
- case Last:
- {
- _Flat->Last--;
- delete *_Flat->Last;
- }
- break;
-
- }
-
-}
-
-/////////////////////////////////////////////////////////////
-
-template < class Type, class AllocatorType >
-TypePtr SharedList<Type, AllocatorType>::Remove(unsigned int n)
-{
-
- if (n == 0)
- return Remove(First);
-
- if (n == Size())
- return Remove(Last);
-
- TypePtr ptr = Get(n);
- _Flat->_destroy(_Flat->First + n, _Flat->First + n + 1);
- _Flat->_copy(_Flat->First + n + 1, _Flat->Last, _Flat->First + n);
- _Flat->Last--;
-
- return ptr;
-}
-
-/////////////////////////////////////////////////////////////
-
-template < class Type, class AllocatorType >
-TypePtr SharedList<Type, AllocatorType>::Remove(AbsolutePosition position)
-{
-
- if (_Flat->_size() == 0)
- return NULL;
-
- switch(position) {
-
- case First:
- {
- TypePtr t = *(_Flat->First);
- _Flat->_copy(_Flat->First + 1, _Flat->Last + 1, _Flat->First);
- _Flat->Last--;
- return t;
- }
-
- break;
-
- case Last:
- {
- _Flat->Last--;
- return *(_Flat->Last);
- }
- break;
- }
-
- return NULL;
-
-}
-
-/////////////////////////////////////////////////////////////
-
-template < class Type, class AllocatorType >
-TypePtr SharedList<Type, AllocatorType>::Begin()
-{
-
- if (_Flat->_size() == 0)
- return NULL;
-
- _Iterator = _Flat->First;
- return *_Iterator;
-
-}
-
-/////////////////////////////////////////////////////////////
-
-template < class Type, class AllocatorType >
-TypePtr SharedList<Type, AllocatorType>::Next()
-{
-
- if (_Flat->_size() == 0)
- return NULL;
- else if (_Iterator == _Flat->Last)
- return NULL;
- else
- return (*_Iterator++);
-
-}
-
-/////////////////////////////////////////////////////////////
-
-template < class Type, class AllocatorType >
-TypePtr SharedList<Type, AllocatorType>::End()
-{
-
- if (_Flat->_size() == 0)
- return NULL;
-
- _Iterator = _Flat->Last - 1;
- return *_Iterator;
-
-}
-
-/////////////////////////////////////////////////////////////
-
-template < class Type, class AllocatorType >
-TypePtr SharedList<Type, AllocatorType>::Previous()
-{
-
- if (_Flat->_size() == 0)
- return NULL;
- else if (_Iterator == _Flat->First - 1)
- return NULL;
- else
- return (*_Iterator--);
-
-}
-
-/////////////////////////////////////////////////////////////
-
-template < class Type, class AllocatorType >
-void SharedList<Type, AllocatorType>::Each(void (Type::*MethodPtr)()) {
-
- if (_Flat->_size() == 0)
- return;
-
- for(Iterator begin = _Flat->First; begin != _Flat->Last; ++begin) {
- (*begin->*MethodPtr)();
- }
-
-}
-
-/////////////////////////////////////////////////////////////
-
-template < typename Type, typename AllocatorType>
-template < typename _A >
-void SharedList<Type, AllocatorType>::Each(void (Type::*MethodPtr)(_A), _A _1) {
-
- if (_Flat->_size() == 0)
- return;
-
- for(Iterator begin = _Flat->First; begin != _Flat->Last; ++begin) {
- (*begin->*MethodPtr)(_1);
- }
-
-}
-
-/////////////////////////////////////////////////////////////
-
-template < typename Type, typename AllocatorType>
-template < typename _A, typename _B>
-void SharedList<Type, AllocatorType>::Each(void (Type::*MethodPtr)(_A, _B), _A _1, _B _2) {
-
- if (_Flat->_size() == 0)
- return;
-
- for(Iterator begin = _Flat->First; begin != _Flat->Last; ++begin)
- (*begin->*MethodPtr)(_1, _2);
-
-}
-
-/////////////////////////////////////////////////////////////
-
-template < typename Type, typename AllocatorType>
-template <typename _A, typename _B, typename _C>
-void SharedList<Type, AllocatorType>::Each(void (Type::*MethodPtr)(_A, _B, _C), _A _1, _B _2, _C _3)
-{
-
- if (_Flat->_size() == 0)
- return;
-
- for(Iterator begin = _Flat->First; begin != _Flat->Last; ++begin)
- (*begin->*MethodPtr)(_1, _2, _3);
-
-}
-
-/////////////////////////////////////////////////////////////
-
-template < typename Type, typename AllocatorType>
-template <typename _A, typename _B, typename _C, typename _D>
-void SharedList<Type, AllocatorType>::Each(void (Type::*MethodPtr)(_A, _B, _C, _D), _A _1, _B _2, _C _3, _D _4)
-{
-
- if (_Flat->_size() == 0)
- return;
-
- for(Iterator begin = _Flat->First; begin != _Flat->Last; ++begin)
- (*begin->*MethodPtr)(_1, _2, _3, _4);
-
-}
-
-/////////////////////////////////////////////////////////////
-
-template < typename Type, typename AllocatorType>
-template <typename _A, typename _B, typename _C, typename _D, typename _E>
-void SharedList<Type, AllocatorType>::Each(void (Type::*MethodPtr)(_A, _B, _C, _D), _A _1, _B _2, _C _3, _D _4, _E _5) {
-
- if (_Flat->_size() == 0)
- return;
-
- for(Iterator begin = _Flat->First; begin != _Flat->Last; ++begin)
- (*begin->*MethodPtr)(_1, _2, _3, _4, _5);
-
-}
-
-/////////////////////////////////////////////////////////////
-
-template < typename Type, typename AllocatorType>
-template <typename _A, typename _B, typename _C, typename _D, typename _E, typename _F>
-void SharedList<Type, AllocatorType>::Each(void (Type::*MethodPtr)(_A, _B, _C, _D), _A _1, _B _2, _C _3, _D _4, _E _5, _F _6)
-{
-
- if (_Flat->_size() == 0)
- return;
-
- for(Iterator begin = _Flat->First; begin != _Flat->Last; ++begin)
- (*begin->*MethodPtr)(_1, _2, _3, _4, _5, _6);
-
-}
-
-/////////////////////////////////////////////////////////////
-
-template < typename Type, typename AllocatorType>
-template <typename _A, typename _B, typename _C, typename _D, typename _E, typename _F, typename _G>
-void SharedList<Type, AllocatorType>::Each(void (Type::*MethodPtr)(_A, _B, _C, _D), _A _1, _B _2, _C _3, _D _4, _E _5, _F _6, _G _7)
-{
-
- if (_Flat->_size() == 0)
- return;
-
- for(Iterator begin = _Flat->First; begin != _Flat->Last; ++begin)
- (*begin->*MethodPtr)(_1, _2, _3, _4, _5, _6, _7);
-
-}
-
-/////////////////////////////////////////////////////////////
-
-template < typename Type, typename AllocatorType>
-template <typename _A, typename _B, typename _C, typename _D, typename _E, typename _F, typename _G, typename _H>
-void SharedList<Type, AllocatorType>::Each(void (Type::*MethodPtr)(_A, _B, _C, _D), _A _1, _B _2, _C _3, _D _4, _E _5, _F _6, _G _7, _H _8)
-{
-
- if (_Flat->_size() == 0)
- return;
-
- for(Iterator begin = _Flat->First; begin != _Flat->Last; ++begin)
- (*begin->*MethodPtr)(_1, _2, _3, _4, _5, _6, _7, _8);
-
-}
-
-/////////////////////////////////////////////////////////////
-
-template < class Type, class AllocatorType >
-unsigned int SharedList<Type, AllocatorType>::getUsageCount() const
-{
- return *_Usage;
-}
-
-/////////////////////////////////////////////////////////////
-
-template < class Type, class AllocatorType >
-Flat<Type*, AllocatorType>* SharedList<Type, AllocatorType>::getFlat() const {
- return _Flat;
-}
-
-/////////////////////////////////////////////////////////////
-
-#undef SharedListType
-#undef TypePtr
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_NAMESPACE_END
-
-
-#endif
\ No newline at end of file
Deleted: trunk/python-ogre/ThirdParty/nxogre/BetajaenCC.h
===================================================================
--- trunk/python-ogre/ThirdParty/nxogre/BetajaenCC.h 2008-11-14 07:08:16 UTC (rev 790)
+++ trunk/python-ogre/ThirdParty/nxogre/BetajaenCC.h 2008-11-14 07:14:30 UTC (rev 791)
@@ -1,3090 +0,0 @@
-/*
-
-Betajaen's Container Classes
-
-Copyright (c) 2007 Robin Southern, http://www.nxogre.org
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-*/
-
-#ifndef BETAJAENS_CC_H
-#define BETAJAENS_CC_H
-
-#include "NxOgrePlatform.h"
-#include "NxOgreAllocator.h"
-
-// Configuration
-
-/** \brief Namespace to place the Containers in. Comment out if you want it in the global namespace.
-*/
-#define BETAJAEN_CC_NAMESPACE Betajaen
-
-
-/** \brief Enable debug comments. Set to zero to disable, 1 to enable
-*/
-#define BETAJAEN_CC_DEBUG_COMMENTS 1
-
-
-/** \brief Export Class Macro, replace value with your export macro
-*/
-#define BETAJAEN_CC_CLASS_EXPORT __declspec(dllexport)
-#define BETAJAEN_CC_TEMPLATE_CLASS_EXPORT __forceinline
-// #define BETAJAEN_CC_FUNCTION_EXPORT NxPublicFunction
-
-
-/** \brief Delete macro. Used if you have your own leak checker, etc.
-*/
-// #define BETAJAEN_CC_DELETE(ptr) \
-// {::NxOgre::Allocator::getPtr()->watch_delete(static_cast<void*>(ptr));}; \
-// delete ptr;
-
-// /** \brief Called just before when a class is destroyed using it's destructor.
-// */
-// #define BETAJAEN_CC_DESTRUCTOR(ptr) \
-// ::NxOgre::Allocator::getPtr()->watch_delete(begin);
-
-//////////////////////////////////////////////////////////////////////////
-
-#if (BETAJAEN_CC_DEBUG_COMMENTS == 1)
-# include <stdio.h>
-#endif
-
-#ifdef BETAJAEN_CC_NAMESPACE
-# define BETAJAEN_CC_NAMESPACE_START namespace BETAJAEN_CC_NAMESPACE {
-# define BETAJAEN_CC_NAMESPACE_END }
-#else
-# define BETAJAEN_CC_NAMESPACE_START /**/
-# define BETAJAEN_CC_NAMESPACE_END /**/
-#endif
-
-BETAJAEN_CC_NAMESPACE_START
-
-#if (BETAJAEN_CC_DEBUG_COMMENTS == 1)
-# define BETAJAEN_CC_PRINT(x) printf(x "\n");
-# define BETAJAEN_CC_PRINTF(x, y) printf(x "\n",y);
-#else
-# define BETAJAEN_CC_PRINT(x) /* x */
-# define BETAJAEN_CC_PRINTF(x,y) /* x, y*/
-#endif
-
-#if (_MSC_VER>=1000)
-# define BETAJAEN_CC_INLINE __forceinline
-#else
-# define BETAJAEN_CC_INLINE inline
-#endif
-
-#ifndef BETAJAEN_CC_CLASS_EXPORT
-# define BETAJAEN_CC_CLASS_EXPORT
-#endif
-
-#ifndef BETAJAEN_CC_TEMPLATE_CLASS_EXPORT
-# define BETAJAEN_CC_TEMPLATE_CLASS_EXPORT
-#endif
-
-#ifndef BETAJAEN_CC_FUNCTION_EXPORT
-# define BETAJAEN_CC_FUNCTION_EXPORT
-#endif
-
-#ifndef BETAJAEN_CC_DELETE
-# define BETAJAEN_CC_DELETE(ptr) delete ptr;
-#endif
-
-#ifndef BETAJAEN_CC_DESTRUCTOR
-# define BETAJAEN_CC_DESTRUCTOR(ptr)
-#endif
-
-BETAJAEN_CC_NAMESPACE_END
-
-//////////////////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_NAMESPACE_START
-
-class SharedAllocator;
-template <class TypePtr, class AllocatorType = SharedAllocator> class Flat;
-
-template <class BaseType, class AllocatorType = SharedAllocator> class Array;
-template <class BaseType, class AllocatorType = SharedAllocator> class SharedList;
-template <typename IdentifierType, class BaseType, class AllocatorType = SharedAllocator> class SharedMap;
-template <typename IdentifierType, class TypePtr> class Tree;
-template <typename> class Vector2;
-template <typename> class Vector3;
-template <typename> class Vector4;
-
-BETAJAEN_CC_NAMESPACE_END
-
-//////////////////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_NAMESPACE_START
-
-class BETAJAEN_CC_CLASS_EXPORT SharedAllocator {
-
-public:
-
-/////////////////////////////////////////////////////////////
-
-void* Allocate(size_t size)
-{
- return malloc(size);
-}
-
-/////////////////////////////////////////////////////////////
-
-void Deallocate(void* mem)
-{
- if (mem)
- free(mem);
-}
-
-/////////////////////////////////////////////////////////////
-
-void* Reallocate(void* mem, size_t size)
-{
- return realloc(mem, size);
-}
-
-/////////////////////////////////////////////////////////////
-
-}; // End of the SharedAllocator class.
-
-BETAJAEN_CC_NAMESPACE_END
-
-//////////////////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_NAMESPACE_START
-
-template
- <
- class Type,
- class AllocatorType
- >
-class BETAJAEN_CC_CLASS_EXPORT Flat
-{
-
-public:
-
-typedef Type * Iterator;
-typedef AllocatorType* AllocatorPtr;
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE Flat(AllocatorPtr allocator, bool deleteAllocator)
- : First(NULL), Last(NULL), End(NULL), Allocator(allocator), AutoDeleteAllocator(deleteAllocator)
-{
-}
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE ~Flat()
-{
- _deallocate(First);
- if (AutoDeleteAllocator)
- delete Allocator;
-}
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE unsigned int _size() const
-{
- return (unsigned int) (Last - First);
-}
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE unsigned int _capacity() const
-{
- return (unsigned int) (First == 0 ? 0 : End - First);
-}
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE Type* _allocate(unsigned int size)
-{
- return (Type*) Allocator->Allocate(size * sizeof(Type));
-}
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE void _deallocate(Type* p)
-{
- if (p)
- Allocator->Deallocate(p);
-}
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE Iterator _reallocate(Iterator p, unsigned int size)
-{
- return (Iterator) Allocator->Reallocate(p, size * sizeof(Type));
-}
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE void _clip(unsigned int size)
-{
-
- if (size < _size())
- return;
-
- Iterator new_first = _allocate(size);
- _copy(First, Last, new_first);
- _destroy(First, Last);
- _deallocate(First);
- End = new_first + size;
- Last = new_first + _size();
- First = new_first;
-
-}
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE void _reserve(unsigned int new_size)
-{
- if (_capacity() >= new_size)
- return;
-
- Iterator new_first = _allocate(new_size);
- _copy(First, Last, new_first);
- _destroy(First, Last);
- _deallocate(First);
- End = new_first + new_size;
- Last = new_first + _size();
- First = new_first;
-
-}
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE Iterator _copy(Iterator begin, Iterator end, Iterator dest)
-{
- for (;begin != end; ++dest, ++begin)
- *dest = *begin;
- return dest;
-}
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE void _delete_range(Iterator begin, Iterator end)
-{
- for (; begin != end; ++begin) {
- BETAJAEN_CC_DELETE(*begin);
- }
-}
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE void _destroy(Iterator begin, Iterator end)
-{
- for (; begin != end; ++begin) {
- BETAJAEN_CC_DESTRUCTOR(begin)
- begin->~Type();
- }
-}
-
-/////////////////////////////////////////////////////////////
-
-protected: AllocatorPtr Allocator;
-protected: bool AutoDeleteAllocator;
-public: Iterator First, Last, End;
-
-}; // End of Flat<Type,AllocatorType> class.
-
-BETAJAEN_CC_NAMESPACE_END
-
-//////////////////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_NAMESPACE_START
-
-template
- <
- class Type, /* Class to Store; A, myClassName, etc. */
- class AllocatorType /* Allocator to use, or leave blank for SharedAllocator */
- >
-class BETAJAEN_CC_CLASS_EXPORT Array {
-
-public:
-
-typedef Type* TypePtr;
-typedef Array<Type, AllocatorType> ArrayType;
-typedef Flat<Type, AllocatorType> FlatType;
-typedef FlatType* FlatPtr;
-
-BETAJAEN_CC_INLINE Array(AllocatorType* _allocator = NULL, bool _auto_delete_allocator = true)
-{
- if (_allocator == NULL)
- _allocator = new AllocatorType();
-
- _Flat = new FlatType(_allocator, _auto_delete_allocator);
-
-}
-
-BETAJAEN_CC_INLINE ~Array()
-{
- delete _Flat;
-}
-
-BETAJAEN_CC_INLINE TypePtr getPtr()
-{
- return _Flat->First;
-}
-
-BETAJAEN_CC_INLINE unsigned int Size()
-{
- return _Flat->_size();
-}
-
-BETAJAEN_CC_INLINE void Append(Type v) {
-
- if (_Flat->End <= _Flat->Last)
- _Flat->_reserve( (1 + _Flat->_size()) * 2);
-
- *_Flat->Last = v;
- _Flat->Last++;
-
-}
-
-BETAJAEN_CC_INLINE void Clip() {
- _Flat->_clip(0);
-}
-
-private: FlatPtr _Flat;
-
-};
-
-BETAJAEN_CC_NAMESPACE_END
-
-//////////////////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_NAMESPACE_START
-
-/** \brief A list of pointers with garbage collections and the ability to
- share the same list with similar lists. Like STL's Vector.
-
- \example
- <code>
- class A;
-
- SharedList<A> aList;
- a.Insert(new A());
- a.Remove(a.Last);
- </code>
-
-*/
-template
- <
- class Type, /* Class to Store; A, myClassName, etc. */
- class AllocatorType /* Allocator to use, or leave blank for SharedAllocator */
- >
-class BETAJAEN_CC_CLASS_EXPORT SharedList {
-
-public:
-
-typedef Type* TypePtr;
-typedef TypePtr* Iterator;
-typedef SharedList<Type, AllocatorType> SharedListType;
-typedef Flat<TypePtr, AllocatorType> FlatType;
-typedef FlatType* FlatPtr;
-
-/////////////////////////////////////////////////////////////
-
-enum AbsolutePosition
-{
- First,
- Last
-};
-
-/**
- Constructor with optional custom allocator
-*/
-BETAJAEN_CC_INLINE SharedList(AllocatorType* _allocator = NULL, bool _auto_delete_allocator = true)
-{
- if (_allocator == NULL)
- _allocator = new AllocatorType();
-
- _Flat = new FlatType(_allocator, _auto_delete_allocator);
- _Usage = new unsigned int(1);
-
-}
-
-/** \brief Copy Constructor between SharedList's. The Flat will not be copied but referenced.
- Any action on this list will effect all lists using the same Flat. Clean up will only
- happen on the destruction of the last surviving list.
-
- \example
- <code>
- typedef SharedList<A> AList;
- AList a;
- AList b(a);
- </code>
-*/
-BETAJAEN_CC_INLINE SharedList(const SharedListType& other)
-{
-
- _Flat = other._Flat;
- _Usage = other._Usage;
- ++(*_Usage);
-
-}
-
-
-/** \brief Copy Operator. Functions the same as Copy Constructor but deletes the set that this
- may already have.
-
- \example
- <code>
- typedef SharedList<A> AList;
- AList a;
- AList b;
- b = a;
- </code>
-*/
-BETAJAEN_CC_INLINE SharedListType& operator=(const SharedListType& other)
-{
-
- if (_Flat)
- {
- _Flat->_delete_range(_Flat->First, _Flat->Last);
- delete _Flat;
- }
-
- if (_Usage)
- delete _Usage;
-
- _Flat = other._Flat;
- _Usage = other._Usage;
- ++(*_Usage);
-
- return *this;
-
-}
-
-
-/** \brief Destructor. If this is the last of all SharedLists sharing the same set,
- the set will be destroyed otherwise the Flat will be ignored and this SharedList
- dies gracefully.
-*/
-BETAJAEN_CC_INLINE ~SharedList()
-{
-
- if (--(*_Usage) == 0)
- {
- _Flat->_delete_range(_Flat->First, _Flat->Last);
- delete _Flat;
- delete _Usage;
- }
-
-}
-
-
-/** \brief Gets the pointer to the nth Type in the list. Alternate interface to operator[].
-*/
-BETAJAEN_CC_INLINE TypePtr Get(size_t pos)
-{
- if (pos > Size())
- return NULL;
-
- return *(_Flat->First + pos);
-}
-
-
-/** \brief Gets the pointer to the nth TypePtr in the list.
-*/
-BETAJAEN_CC_INLINE TypePtr operator[](size_t pos)
-{
- if (pos > Size())
- return NULL;
-
- return *(_Flat->First + pos);
-}
-
-
-/** \brief Where is something in the list.
-*/
-BETAJAEN_CC_INLINE unsigned int WhereIs(TypePtr ptr)
-{
-
- if (_Flat->_size() == 0)
- return 0;
-
- unsigned int i=0;
- for(Iterator begin = _Flat->First; begin != _Flat->Last; ++begin, ++i)
- {
- if (ptr == (*begin))
- return i;
- }
-
- return 0;
-}
-
-BETAJAEN_CC_INLINE bool Has(TypePtr ptr)
-{
-
- if (_Flat->_size() == 0)
- return false;
-
- for(Iterator begin = _Flat->First; begin != _Flat->Last; ++begin)
- {
- if (ptr == (*begin))
- return true;
- }
-
- return false;
-
-}
-
-/** \brief The size of the SharedList.
-*/
-BETAJAEN_CC_INLINE unsigned Size() const
-{
- return _Flat->_size();
-}
-
-
-/** \brief Insert something into the list
-*/
-BETAJAEN_CC_INLINE void Insert(const TypePtr& val)
-{
-
- if (_Flat->End <= _Flat->Last)
- _Flat->_reserve( (1 + Size()) * 2);
-
- *_Flat->Last = val;
- _Flat->Last++;
-
-}
-
-
-/** \brief Resize the capacity of the list to size + n.
-*/
-BETAJAEN_CC_INLINE void Clean(unsigned int n = 4)
-{
- _Flat->_clip(_Flat->_size() + n);
-}
-
-
-/** \brief Destroy something nth position into the list.
-*/
-BETAJAEN_CC_INLINE void Destroy(unsigned int n)
-{
- if (n == 0)
- return Destroy(First);
-
- if (n == Size())
- return Destroy(Last);
-
- delete *(_Flat->First + n);
-
- _Flat->_destroy(_Flat->First + n, _Flat->First + n + 1);
- _Flat->_copy(_Flat->First + n + 1, _Flat->Last, _Flat->First + n);
- _Flat->Last--;
-
-}
-
-// \brief Destroys everything
-//
-BETAJAEN_CC_INLINE void DestroyAll()
-{
- if (Size() == 0)
- return;
-
- _Flat->_delete_range(_Flat->First, _Flat->Last);
- // Could be iffy.
- _Flat->Last = _Flat->First;
-
-}
-
-/** \brief Destroys something in the list based on the pointer in the list.
-*/
-BETAJAEN_CC_INLINE void Destroy(TypePtr val) {
- unsigned int i = WhereIs(val);
- Destroy(i);
-}
-
-/** \brief Deletes something from the list based on AbsolutePosition
-*/
-BETAJAEN_CC_INLINE void Destroy(AbsolutePosition position)
-{
-
- switch(position) {
-
- case First:
- {
- delete *_Flat->First;
- _Flat->_copy(_Flat->First + 1, _Flat->Last + 1, _Flat->First);
- _Flat->Last--;
- }
- break;
-
- case Last:
- {
- _Flat->Last--;
- delete *_Flat->Last;
- }
- break;
-
- }
-
-}
-
-
-/** \brief Removes something from the list based on numerical position.
-*/
-BETAJAEN_CC_INLINE TypePtr Remove(unsigned int n)
-{
-
- if (n == 0)
- return Remove(First);
-
- if (n == Size())
- return Remove(Last);
-
- TypePtr ptr = Get(n);
- _Flat->_destroy(_Flat->First + n, _Flat->First + n + 1);
- _Flat->_copy(_Flat->First + n + 1, _Flat->Last, _Flat->First + n);
- _Flat->Last--;
-
- return ptr;
-}
-
-
-/** \brief Removes something from the list based on AbsolutePosition
-*/
-BETAJAEN_CC_INLINE TypePtr Remove(AbsolutePosition position)
-{
-
- if (_Flat->_size() == 0)
- return NULL;
-
- switch(position) {
-
- case First:
- {
- TypePtr t = *(_Flat->First);
- _Flat->_copy(_Flat->First + 1, _Flat->Last + 1, _Flat->First);
- _Flat->Last--;
- return t;
- }
-
- break;
-
- case Last:
- {
- _Flat->Last--;
- return *(_Flat->Last);
- }
- break;
- }
-
- return NULL;
-
-}
-
-// \brief Destroys everything
-//
-BETAJAEN_CC_INLINE void RemoveAll()
-{
- if (Size() == 0)
- return;
-
- _Flat->_deallocate(_Flat->First);
-
- // Could be iffy.
- _Flat->Last = _Flat->First;
-
-}
-
-
-/** \brief Places the Iterator at the beginning of the List
-*/
-BETAJAEN_CC_INLINE TypePtr Begin()
-{
-
- if (_Flat->_size() == 0)
- return NULL;
-
- _Iterator = _Flat->First;
- return *_Iterator;
-
-}
-
-
-/** \brief Advances the Iterator forward by one, and returns the value of the list or NULL
- \returns The next item in the list, or NULL if it has reached the end of it.
-*/
-BETAJAEN_CC_INLINE TypePtr Next()
-{
-
- if (_Flat->_size() == 0)
- return NULL;
- else if (_Iterator == _Flat->Last)
- return NULL;
- else
- return (*_Iterator++);
-
-}
-
-
-/** \brief Places the iterator at the end of the List
-*/
-BETAJAEN_CC_INLINE TypePtr End()
-{
-
- if (_Flat->_size() == 0)
- return NULL;
-
- _Iterator = _Flat->Last - 1;
- return *_Iterator;
-
-}
-
-
-/** \brief Advances the Iterator backwards by one, and returns the value of the list or NULL
- \returns The previous item in the list, or NULL if it has reached the beginning of it.
-*/
-BETAJAEN_CC_INLINE TypePtr Previous()
-{
-
- if (_Flat->_size() == 0)
- return NULL;
- else if (_Iterator == _Flat->First - 1)
- return NULL;
- else
- return (*_Iterator--);
-
-}
-
-/** \brief For each item in the list call it's own method.
-*/
-BETAJAEN_CC_INLINE void Each(void (Type::*MethodPtr)()) {
-
- if (_Flat->_size() == 0)
- return;
-
- for(Iterator begin = _Flat->First; begin != _Flat->Last; ++begin) {
- (*begin->*MethodPtr)();
- }
-
-}
-
-
-/** \brief For each item in the list call it's own method, with one argument.
-*/
-template <typename _A>
-BETAJAEN_CC_INLINE void Each(void (Type::*MethodPtr)(_A), _A _1) {
-
- if (_Flat->_size() == 0)
- return;
-
- for(Iterator begin = _Flat->First; begin != _Flat->Last; ++begin) {
- (*begin->*MethodPtr)(_1);
- }
-
-}
-
-
-/** \brief For each item in the list call it's own method, with two arguments.
-*/
-template <typename _A, typename _B>
-BETAJAEN_CC_INLINE void Each(void (Type::*MethodPtr)(_A, _B), _A _1, _B _2) {
-
- if (_Flat->_size() == 0)
- return;
-
- for(Iterator begin = _Flat->First; begin != _Flat->Last; ++begin)
- (*begin->*MethodPtr)(_1, _2);
-
-}
-
-
-/** \brief For each item in the list call it's own method, with three arguments.
-*/
-template <typename _A, typename _B, typename _C>
-BETAJAEN_CC_INLINE void Each(void (Type::*MethodPtr)(_A, _B, _C), _A _1, _B _2, _C _3) {
-
- if (_Flat->_size() == 0)
- return;
-
- for(Iterator begin = _Flat->First; begin != _Flat->Last; ++begin)
- (*begin->*MethodPtr)(_1, _2, _3);
-
-}
-
-
-/** \brief For each item in the list call it's own method, with four arguments.
-*/
-template <typename _A, typename _B, typename _C, typename _D>
-BETAJAEN_CC_INLINE void Each(void (Type::*MethodPtr)(_A, _B, _C, _D), _A _1, _B _2, _C _3, _D _4) {
-
- if (_Flat->_size() == 0)
- return;
-
- for(Iterator begin = _Flat->First; begin != _Flat->Last; ++begin)
- (*begin->*MethodPtr)(_1, _2, _3, _4);
-
-}
-
-
-/** \brief For each item in the list call it's own method, with five arguments.
-*/
-template <typename _A, typename _B, typename _C, typename _D, typename _E>
-BETAJAEN_CC_INLINE void Each(void (Type::*MethodPtr)(_A, _B, _C, _D), _A _1, _B _2, _C _3, _D _4, _E _5) {
-
- if (_Flat->_size() == 0)
- return;
-
- for(Iterator begin = _Flat->First; begin != _Flat->Last; ++begin)
- (*begin->*MethodPtr)(_1, _2, _3, _4, _5);
-
-}
-
-
-/** \brief For each item in the list call it's own method, with six arguments.
-*/
-template <typename _A, typename _B, typename _C, typename _D, typename _E, typename _F>
-BETAJAEN_CC_INLINE void Each(void (Type::*MethodPtr)(_A, _B, _C, _D), _A _1, _B _2, _C _3, _D _4, _E _5, _F _6) {
-
- if (_Flat->_size() == 0)
- return;
-
- for(Iterator begin = _Flat->First; begin != _Flat->Last; ++begin)
- (*begin->*MethodPtr)(_1, _2, _3, _4, _5, _6);
-
-}
-
-
-/** \brief For each item in the list call it's own method, with seven arguments.
-*/
-template <typename _A, typename _B, typename _C, typename _D, typename _E, typename _F, typename _G>
-BETAJAEN_CC_INLINE void Each(void (Type::*MethodPtr)(_A, _B, _C, _D), _A _1, _B _2, _C _3, _D _4, _E _5, _F _6, _G _7) {
-
- if (_Flat->_size() == 0)
- return;
-
- for(Iterator begin = _Flat->First; begin != _Flat->Last; ++begin)
- (*begin->*MethodPtr)(_1, _2, _3, _4, _5, _6, _7);
-
-}
-
-
-/** \brief For each item in the list call it's own method, with eight arguments.
-*/
-template <typename _A, typename _B, typename _C, typename _D, typename _E, typename _F, typename _G, typename _H>
-BETAJAEN_CC_INLINE void Each(void (Type::*MethodPtr)(_A, _B, _C, _D), _A _1, _B _2, _C _3, _D _4, _E _5, _F _6, _G _7, _H _8) {
-
- if (_Flat->_size() == 0)
- return;
-
- for(Iterator begin = _Flat->First; begin != _Flat->Last; ++begin)
- (*begin->*MethodPtr)(_1, _2, _3, _4, _5, _6, _7, _8);
-
-}
-
-/** \brief Returns the pointer to the working set.
-*/
-BETAJAEN_CC_INLINE FlatPtr getFlat() const {
- return _Flat;
-}
-
-
-/** \brief Returns the number of SharedLists using this set.
-*/
-BETAJAEN_CC_INLINE unsigned int getUsageCount() const {
- return *_Usage;
-}
-
-
-private: unsigned int* _Usage;
-private: FlatPtr _Flat;
-private: Iterator _Iterator;
-
-}; // End of SharedList<Type, AllocatorType> Class.
-
-BETAJAEN_CC_NAMESPACE_END
-
-//////////////////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_NAMESPACE_START
-
-
-/** \brief Binary Tree with variable identifer and storage type.
-
-*/
-template <typename NodeIdentifier, class Type>
-class BETAJAEN_CC_CLASS_EXPORT Tree
-{
- // Much of this Tree was from the excellent tutorial by Julienne Walker
- // http://eternallyconfuzzled.com/tuts/datastructures/jsw_tut_bst1.aspx
-
-public:
-
-class Node;
-typedef Node* NodePtr;
-typedef Type* TypePtr;
-
-/** \brief A tree is made up of nodes.
-*/
-class BETAJAEN_CC_CLASS_EXPORT Node
-{
-
-public:
-
-Node(NodeIdentifier id, TypePtr val) : _ID(id), _Val(val)
-{
- _Children[0] = NULL;
- _Children[1] = NULL;
-}
-
-void Replace(Node* n)
-{
- _ID = n->_ID;
- _Val = n->_Val;
-}
-
-NodeIdentifier _ID;
-TypePtr _Val;
-NodePtr _Children[2];
-
-};
-
-class BETAJAEN_CC_CLASS_EXPORT NodeIterator
-{
-public:
- NodePtr _Up[50];
- NodePtr _It;
- int _Top;
-};
-
-/** \brief Tree constructor
-*/
-public: BETAJAEN_CC_INLINE Tree() : _Root(NULL)
-{
-}
-
-
-/** \brief Tree destructor.
- \note Does not remove or destroy the contents of the tree.
-*/
-public: BETAJAEN_CC_INLINE ~Tree()
-{
-}
-
-public: BETAJAEN_CC_INLINE bool isEmpty() const {
- return (_Root == 0);
-}
-
-/** \brief Destroys all the nodes in the tree and deletes all of the values referenced in it.
-*/
-public: BETAJAEN_CC_INLINE void DestroyAll()
-{
- if (_Root == NULL)
- return;
-
- NodePtr iterator = _Root;
- NodePtr save = 0;
-
- while (iterator != NULL)
- {
- if (iterator->_Children[0] != NULL)
- {
- save = iterator->_Children[0];
- iterator->_Children[0] = save->_Children[1];
- save->_Children[1] = iterator;
- }
- else
- {
- save = iterator->_Children[1];
- delete iterator->_Val;
- delete iterator;
- }
-
- iterator = save;
- }
-
- _Root = NULL;
-}
-
-
-/** \brief Destroys all the nodes in the tree, but not all of the values referenced in it.
-*/
-public: BETAJAEN_CC_INLINE void RemoveAll()
-{
-
- if (_Root == NULL)
- return;
-
- NodePtr iterator = _Root;
- NodePtr save = 0;
-
- while (iterator != NULL)
- {
- if (iterator->_Children[0] != NULL)
- {
- save = iterator->_Children[0];
- iterator->_Children[0] = save->_Children[1];
- save->_Children[1] = iterator;
- }
- else
- {
- save = iterator->_Children[1];
- delete iterator;
- iterator = NULL;
- }
-
- iterator = save;
- }
-
- _Root = NULL;
-
-}
-
-
-/** \brief Remove a Node based of an identifier
-*/
-public: BETAJAEN_CC_INLINE void Remove(NodeIdentifier id)
-{
-
- if (_Root == NULL)
- return;
-
- Node head = {0};
- NodePtr iterator = &head;
- NodePtr *f = 0, *p = 0;
- int direction = 1;
-
- iterator->_Children[1] = _Root;
-
- //while (iterator =
-
-}
-
-
-
-/** \brief Removes a ranges of nodes based on max. and min. identifiers.
- \note This operates based on the "operator <" of the TypeIdentifier the class,
- which defines if the type is in the range or not. Types such as ints, or reals
- aren't a problem but things like strings or complicated classes may produce
- strange results.
-*/
-public: BETAJAEN_CC_INLINE void RemoveRange(NodeIdentifier id_min, NodeIdentifier id_max)
-{
-
-
-}
-
-
-/**
-*/
-public: BETAJAEN_CC_INLINE void Destroy(NodeIdentifier id)
-{
-
-}
-
-
-/**
-*/
-public: BETAJAEN_CC_INLINE void DestroyRange(NodeIdentifier id_min, NodeIdentifier id_max)
-{
-
-}
-
-
-/**
-*/
-public: BETAJAEN_CC_INLINE TypePtr Find(NodeIdentifier target)
-{
- NodePtr iterator = _Root;
- while (iterator != NULL)
- {
- if (iterator->_ID == target)
- {
- return iterator->_Val;
- }
- else
- {
- iterator = iterator->_Children[int(iterator->_ID < target)];
- }
- }
-
- return 0;
-}
-
-/**
-*/
-public: BETAJAEN_CC_INLINE TypePtr First(NodeIterator* it)
-{
-
- it->_It = _Root;
- it->_Top = 0;
-
- if (it->_It != 0) {
- while (it->_It->_Children[0] != 0) {
- it->_Up[it->_Top++] = it->_It;
- it->_It = it->_It->_Children[0];
- }
- }
-
- if (it->_It != 0)
- return it->_It->_Val;
- else
- return 0;
-
-}
-
-/**
-*/
-public: BETAJAEN_CC_INLINE TypePtr Next(NodeIterator* it)
-{
- if (it->_It->_Children[1] != 0) {
- it->_Up[it->_Top++] = it->_It;
- it->_It = it->_It->_Children[1];
-
- while (it->_It->_Children[0] != 0) {
- it->_Up[it->_Top++] = it->_It;
- it->_It = it->_It->_Children[0];
- }
-
- }
- else {
- NodePtr last;
-
- do {
-
- if (it->_Top == 0) {
- it->_It = 0;
- break;
- }
-
- last = it->_It;
- it->_It = it->_Up[--it->_Top];
-
- } while (last == it->_It->_Children[1]);
-
- }
-
- if (it->_It != 0)
- return it->_It->_Val;
- else
- return 0;
-
-}
-
-/**
-*/
-public: BETAJAEN_CC_INLINE bool Insert(NodeIdentifier target, TypePtr val)
-{
- Node* node = new Node(target, val);
-
-
- if (_Root == NULL)
- {
- _Root = node;
- return true;
- }
- else
- {
- Node* iterator = _Root;
- unsigned int direction;
-
- for ( ; ; )
- {
- direction = iterator->_ID < target;
-
- if (iterator->_ID == target)
- {
- delete node;
- return false;
- }
- else if (iterator->_Children[direction] == NULL)
- break;
-
-
- iterator = iterator->_Children[direction];
- }
-
- iterator->_Children[direction] = node;
- }
-
- return true;
-}
-
-
-private: NodePtr _Root;
-
-};
-
-BETAJAEN_CC_NAMESPACE_END
-
-//////////////////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_NAMESPACE_START
-
-template <
- typename IdentifierType,
- class Type,
- class AllocatorType
- >
-class BETAJAEN_CC_CLASS_EXPORT SharedMap
-{
-
-public:
-
-typedef Type* TypePtr;
-typedef Tree<IdentifierType, Type> TreeType;
-typedef TreeType* TreePtr;
-
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE SharedMap()
-{
- _Tree = new TreeType();
-}
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE ~SharedMap()
-{
- _Tree->DestroyAll();
- delete _Tree;
-}
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE TypePtr Get(IdentifierType identifier)
-{
- return _Tree->Find(identifier);
-}
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE TypePtr operator[](IdentifierType identifier)
-{
- return _Tree->Find(identifier);
-}
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE void Insert(IdentifierType identifier, TypePtr ptr)
-{
- _Tree->Insert(identifier, ptr);
-}
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE void DestroyAll()
-{
- _Tree->DestroyAll();
-}
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE void RemoveAll() {
- _Tree->RemoveAll();
-}
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE void Destroy(IdentifierType);
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE void Remove(IdentifierType);
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE TypePtr Begin();
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE TypePtr Next();
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE TypePtr End();
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE TypePtr Previous();
-
-/////////////////////////////////////////////////////////////
-
-/** \brief For each item in the list call it's own method.
-*/
-BETAJAEN_CC_INLINE void Each(void (Type::*MethodPtr)()) {
-
- if (_Tree->isEmpty())
- return;
-
- typename TreeType::NodeIterator iterator;
- TypePtr ptr = _Tree->First(&iterator);
-
- while (ptr != 0) {
- (ptr->*MethodPtr)();
- ptr = _Tree->Next(&iterator);
- }
-}
-
-
-/** \brief For each item in the list call it's own method, with one argument.
-*/
-template <typename _A>
-BETAJAEN_CC_INLINE void Each(void (Type::*MethodPtr)(_A), _A _1) {
-
- if (_Tree->isEmpty())
- return;
-
- typename TreeType::NodeIterator iterator;
- TypePtr ptr = _Tree->First(&iterator);
-
- while (ptr != 0) {
- (ptr->*MethodPtr)(_1);
- ptr = _Tree->Next(&iterator);
- }
-}
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE TreePtr getTree() const
-{
- return _Tree;
-}
-
-/////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_INLINE unsigned int getUsage() const
-{
- return *_Usage;
-}
-
-/////////////////////////////////////////////////////////////
-
-private: TreePtr _Tree;
-private: unsigned int* _Usage;
-
-/////////////////////////////////////////////////////////////
-
-};
-
-BETAJAEN_CC_NAMESPACE_END
-
-//////////////////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_NAMESPACE_START
-
-/** \brief Vector with two rows.
-*/
-template <
- typename Type
- >
-class BETAJAEN_CC_CLASS_EXPORT Vector2
-{
-
-public:
-
-typedef Vector2<Type> ThisType;
-
-/* \brief First */
-Type i;
-
-/* \brief Second */
-Type j;
-
-BETAJAEN_CC_INLINE Vector2()
-{
-}
-
-BETAJAEN_CC_INLINE Vector2(Type _i, Type _j)
-: i(_i), j(_j)
-{
-}
-
-BETAJAEN_CC_INLINE void swap(ThisType& other)
-{
- Type First = i, Second = j;
- i = other.i; other.i = First;
- j = other.j; other.j = Second;
-}
-
-BETAJAEN_CC_INLINE ThisType& operator = (const ThisType& other)
-{
- i = other.i; j = other.j;
- return *this;
-}
-
-BETAJAEN_CC_INLINE ThisType& operator = (const Type& other)
-{
- i = other; j = other;
- return *this;
-}
-
-BETAJAEN_CC_INLINE ThisType& operator *= (const Type& other)
-{
- i *= other; j *= other;
-}
-
-BETAJAEN_CC_INLINE ThisType& operator *= (const ThisType& other)
-{
- i *= other.i; j *= other.j;
-}
-
-BETAJAEN_CC_INLINE bool operator == (const ThisType& other) const
-{
- return (i == other.i && j == other.j);
-}
-
-BETAJAEN_CC_INLINE bool operator != (const ThisType& other) const
-{
- return (i != other.i || j != other.j);
-}
-
-};
-
-BETAJAEN_CC_NAMESPACE_END
-
-//////////////////////////////////////////////////////////////////////////
-
-BETAJAEN_CC_NAMESPACE_START
-
-/** \brief Vector with three rows.
-*/
-template <
- typename Type
- >
-class BETAJAEN_CC_CLASS_EXPORT Vector3
-{
-
-public:
-
-typedef Vector3<Type> ThisType;
-
-/* \...
[truncated message content] |