Created an 'interfaces' branch. It will host the development of the library as a set of interfaces and their implementation.
Added an IAllocator abstract class. It would be the base for all allocators.
Added a MallocAllocator that uses the system's malloc utility. It is implemented only for linux so far.
Added a PageAllocator that uses the system's page allocating utilities. It is implemented only for linux so far, using mmap.
Added a RegionAllocator that allocates the memory in chunks or a given size. It uses another allocator to do the actual allocations.
All allocators copy the functionality from the template implementations.
Added unit tests for MallocAllocator, PageAllocator and RegionAllocator.
No template source code is removed so far but this would be done in a future commit.
FreeListAllocator.
Added FreeListAllocator that is copied from FreeListLayer.
Renamed the MallocAllocator to HeapAllocator.
Renamed the MMapAllocator to PageAllocator.
Removed all unused now layers.
Added implementation of the windows version of HeapAllocator, copied from MallocLayerWindows.
Added implementation of the windows version of PageAllocator, copied from MMapLayerWindows.
Added an internal helper for the windows' HeapAllocator, in order to support the hash map inside the implementation.
Added an internal helper for the linux' PageAllocator, in order to support the hash map inside the implementation.
Modified the MEMDELETE - now it calls the destructor properly, using a template function that names the type in order to call its destructor.
Added a virtual size() method in the IAllocator interface. Implemented it in all implementers.
Updated the unit tests to test the size() method too.
Interfaces windows build.
Fixed building of interface implementation on windows.
Added private copy constructor and operator= to some classes as otherwise a warning is triggered.
Added some code (in ifdef) in the template function destructType() to workaround a microsoft compilier warning.
Made the hash functions in hashmap.h inline to avoid multiple definitions.
Removed the python pyc files.
DebugAllocator.
Added the DebugAllocator in its interface version.
Added a unit test for the DebugAllocator.
RegionAllocatorFixed.
Added a RegionAllocatorFixed allocator class. It allocates memory only of a fixed, pre-defined (by a constructor argument) size.
Added a unit test for the new allocator.
Modified all HashMap allocators in all classes that use HashMap to use the RegionAllocatorFixed.
Modified the RegionAllocator to use a HashMap to store information for the size of each allocated pointer. This would enable the implementation of a nice MEMDELETE macro (still todo).
MEMDELETEARRAY()
Added implementation of the MEMDELETEARRAY() macro.
Added several helper template functions to ease the implementation of MEMDELETE() and MEMDELETEARRAY().
Added a unit test that tests the memory allocation and deallocation macros.
Global build.
Added possibility to build the memory library from the parent directory and its CMakeLists.txt file. Done by using some CMake variables as a prefix to the source files paths and command parameters.
Added a possibility to add parameters to the chosen cxxtext executable interpreter. Added a '-B' switch in the case of python in order to avoid generating '.pyc' files that later show up in git.
Removed the TagLayer. In the future, a TagAllocator will be added but will have a completely different implementation, by just forwarding the allocations.
Mac OS X experimental support.
Added a define for identifying OSX - LV_OSX.
Renamed all of the ...linux implementations to ...linuxosx and the locklinux to lockpthread.
Made some modifications to use OSX utilities.
Mac OS X support.
Added some missing '#if defined(LV_OSC)' at some places.
Added one more usage of MMAP_FLAGS in pageallocatorlinuxosx.h.
Tested the unit tests in OSX. All work.
Merge branch 'interfaces'