Update regex module project files.
This commit is contained in:
		@@ -15,7 +15,7 @@ binary.compiler.defines += [
 | 
			
		||||
  'HAVE_STDINT_H',
 | 
			
		||||
]
 | 
			
		||||
binary.sources = [
 | 
			
		||||
  'sdk/amxxmodule.cpp',
 | 
			
		||||
  '../../public/sdk/amxxmodule.cpp',
 | 
			
		||||
  'module.cpp',
 | 
			
		||||
  'CRegEx.cpp',
 | 
			
		||||
  'utils.cpp',
 | 
			
		||||
 
 | 
			
		||||
@@ -7,6 +7,7 @@
 | 
			
		||||
 | 
			
		||||
HLSDK = ../../../hlsdk
 | 
			
		||||
MM_ROOT = ../../../metamod/metamod
 | 
			
		||||
PUBLIC_ROOT = ../../public
 | 
			
		||||
 | 
			
		||||
#####################################
 | 
			
		||||
### EDIT BELOW FOR OTHER PROJECTS ###
 | 
			
		||||
@@ -14,7 +15,7 @@ MM_ROOT = ../../../metamod/metamod
 | 
			
		||||
 | 
			
		||||
PROJECT = regex
 | 
			
		||||
 | 
			
		||||
OBJECTS = sdk/amxxmodule.cpp module.cpp CRegEx.cpp
 | 
			
		||||
OBJECTS = amxxmodule.cpp module.cpp CRegEx.cpp
 | 
			
		||||
 | 
			
		||||
##############################################
 | 
			
		||||
### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ###
 | 
			
		||||
@@ -29,8 +30,10 @@ CPP_OSX = clang
 | 
			
		||||
 | 
			
		||||
LINK = -lpcre
 | 
			
		||||
 | 
			
		||||
INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/common -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared \
 | 
			
		||||
          -I$(HLSDK)/public -I$(MM_ROOT) -Isdk
 | 
			
		||||
INCLUDE = -I. -I$(PUBLIC_ROOT) -I$(PUBLIC_ROOT)/sdk -I$(PUBLIC_ROOT)/amtl \
 | 
			
		||||
			  -I$(HLSDK) -I$(HLSDK)/public -I$(HLSDK)/common -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared -I$(HLSDK)/pm_shared\
 | 
			
		||||
			  -I$(MYSQL_DIR)/include -Ithread -Imysql \
 | 
			
		||||
			  -I$(MM_ROOT)
 | 
			
		||||
 | 
			
		||||
################################################
 | 
			
		||||
### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ###
 | 
			
		||||
@@ -106,7 +109,7 @@ $(BIN_DIR)/%.o: %.cpp
 | 
			
		||||
 | 
			
		||||
all:
 | 
			
		||||
	mkdir -p $(BIN_DIR)
 | 
			
		||||
	mkdir -p $(BIN_DIR)/sdk
 | 
			
		||||
	ln -sf $(PUBLIC_ROOT)/sdk/amxxmodule.cpp
 | 
			
		||||
	$(MAKE) -f $(MAKEFILE_NAME) $(PROJECT)
 | 
			
		||||
 | 
			
		||||
$(PROJECT): $(OBJ_BIN)
 | 
			
		||||
@@ -119,6 +122,5 @@ default: all
 | 
			
		||||
 | 
			
		||||
clean:
 | 
			
		||||
	rm -rf $(BIN_DIR)/*.o
 | 
			
		||||
	rm -rf $(BIN_DIR)/sdk/*.o
 | 
			
		||||
	rm -f $(BIN_DIR)/$(BINARY)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								dlls/regex/sdk/moduleconfig.h → dlls/regex/moduleconfig.h
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								dlls/regex/sdk/moduleconfig.h → dlls/regex/moduleconfig.h
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -52,7 +52,7 @@
 | 
			
		||||
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
 | 
			
		||||
    <ClCompile>
 | 
			
		||||
      <Optimization>Disabled</Optimization>
 | 
			
		||||
      <AdditionalIncludeDirectories>..\;..\..\..\public\amtl;..\sdk;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
 | 
			
		||||
      <AdditionalIncludeDirectories>..\;..\..\..\public;..\..\..\public\sdk; ..\..\..\public\amtl;$(METAMOD)\metamod;$(HLSDK)\common;$(HLSDK)\engine;$(HLSDK)\dlls;$(HLSDK)\pm_shared;$(HLSDK)\public;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
 | 
			
		||||
      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;REGEX_EXPORTS;HAVE_STDINT_H;PCRE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 | 
			
		||||
      <MinimalRebuild>true</MinimalRebuild>
 | 
			
		||||
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
 | 
			
		||||
@@ -75,7 +75,7 @@
 | 
			
		||||
  </ItemDefinitionGroup>
 | 
			
		||||
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
 | 
			
		||||
    <ClCompile>
 | 
			
		||||
      <AdditionalIncludeDirectories>..\;..\..\..\public\amtl;..\sdk;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
 | 
			
		||||
      <AdditionalIncludeDirectories>..\;..\..\..\public;..\..\..\public\sdk; ..\..\..\public\amtl;$(METAMOD)\metamod;$(HLSDK)\common;$(HLSDK)\engine;$(HLSDK)\dlls;$(HLSDK)\pm_shared;$(HLSDK)\public;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
 | 
			
		||||
      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;REGEX_EXPORTS;HAVE_STDINT_H;PCRE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 | 
			
		||||
      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
 | 
			
		||||
      <RuntimeTypeInfo>false</RuntimeTypeInfo>
 | 
			
		||||
@@ -98,16 +98,15 @@
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <ClCompile Include="..\CRegEx.cpp" />
 | 
			
		||||
    <ClCompile Include="..\module.cpp" />
 | 
			
		||||
    <ClCompile Include="..\sdk\amxxmodule.cpp" />
 | 
			
		||||
    <ClCompile Include="..\..\..\public\sdk\amxxmodule.cpp" />
 | 
			
		||||
    <ClCompile Include="..\utils.cpp" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <ClInclude Include="..\CRegEx.h" />
 | 
			
		||||
    <ClInclude Include="..\pcre.h" />
 | 
			
		||||
    <ClInclude Include="..\svn_version.h" />
 | 
			
		||||
    <ClInclude Include="..\sdk\moduleconfig.h" />
 | 
			
		||||
    <ClInclude Include="..\sdk\CVector.h" />
 | 
			
		||||
    <ClInclude Include="..\sdk\amxxmodule.h" />
 | 
			
		||||
    <ClInclude Include="..\moduleconfig.h" />
 | 
			
		||||
    <ClInclude Include="..\..\..\public\sdk\amxxmodule.h" />
 | 
			
		||||
    <ClInclude Include="..\utils.h" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
 
 | 
			
		||||
@@ -12,9 +12,6 @@
 | 
			
		||||
    <Filter Include="Module SDK">
 | 
			
		||||
      <UniqueIdentifier>{105aae8e-12cf-4550-8a4e-38ae0f0bc98b}</UniqueIdentifier>
 | 
			
		||||
    </Filter>
 | 
			
		||||
    <Filter Include="Module SDK\AMXX STL">
 | 
			
		||||
      <UniqueIdentifier>{48ab1482-e0f3-41f0-bb0a-0aca5800115a}</UniqueIdentifier>
 | 
			
		||||
    </Filter>
 | 
			
		||||
    <Filter Include="Module SDK\SDK Base">
 | 
			
		||||
      <UniqueIdentifier>{fece8d7d-8799-45fa-b9d8-7a1e51a65103}</UniqueIdentifier>
 | 
			
		||||
    </Filter>
 | 
			
		||||
@@ -29,12 +26,12 @@
 | 
			
		||||
    <ClCompile Include="..\module.cpp">
 | 
			
		||||
      <Filter>Source Files</Filter>
 | 
			
		||||
    </ClCompile>
 | 
			
		||||
    <ClCompile Include="..\sdk\amxxmodule.cpp">
 | 
			
		||||
      <Filter>Module SDK\SDK Base</Filter>
 | 
			
		||||
    </ClCompile>
 | 
			
		||||
    <ClCompile Include="..\utils.cpp">
 | 
			
		||||
      <Filter>Source Files</Filter>
 | 
			
		||||
    </ClCompile>
 | 
			
		||||
    <ClCompile Include="..\..\..\public\sdk\amxxmodule.cpp">
 | 
			
		||||
      <Filter>Module SDK\SDK Base</Filter>
 | 
			
		||||
    </ClCompile>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <ClInclude Include="..\CRegEx.h">
 | 
			
		||||
@@ -46,18 +43,15 @@
 | 
			
		||||
    <ClInclude Include="..\svn_version.h">
 | 
			
		||||
      <Filter>Header Files</Filter>
 | 
			
		||||
    </ClInclude>
 | 
			
		||||
    <ClInclude Include="..\sdk\moduleconfig.h">
 | 
			
		||||
      <Filter>Module SDK</Filter>
 | 
			
		||||
    </ClInclude>
 | 
			
		||||
    <ClInclude Include="..\sdk\CVector.h">
 | 
			
		||||
      <Filter>Module SDK\AMXX STL</Filter>
 | 
			
		||||
    </ClInclude>
 | 
			
		||||
    <ClInclude Include="..\sdk\amxxmodule.h">
 | 
			
		||||
      <Filter>Module SDK\SDK Base</Filter>
 | 
			
		||||
    </ClInclude>
 | 
			
		||||
    <ClInclude Include="..\utils.h">
 | 
			
		||||
      <Filter>Header Files</Filter>
 | 
			
		||||
    </ClInclude>
 | 
			
		||||
    <ClInclude Include="..\..\..\public\sdk\amxxmodule.h">
 | 
			
		||||
      <Filter>Module SDK\SDK Base</Filter>
 | 
			
		||||
    </ClInclude>
 | 
			
		||||
    <ClInclude Include="..\moduleconfig.h">
 | 
			
		||||
      <Filter>Module SDK</Filter>
 | 
			
		||||
    </ClInclude>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <None Include="..\..\..\plugins\include\regex.inc">
 | 
			
		||||
 
 | 
			
		||||
@@ -1,480 +0,0 @@
 | 
			
		||||
// vim: set ts=4 sw=4 tw=99 noet:
 | 
			
		||||
//
 | 
			
		||||
// AMX Mod X, based on AMX Mod by Aleksander Naszko ("OLO").
 | 
			
		||||
// Copyright (C) The AMX Mod X Development Team.
 | 
			
		||||
//
 | 
			
		||||
// This software is licensed under the GNU General Public License, version 3 or higher.
 | 
			
		||||
// Additional exceptions apply. For full license details, see LICENSE.txt or visit:
 | 
			
		||||
//     https://alliedmods.net/amxmodx-license
 | 
			
		||||
 | 
			
		||||
#ifndef __CVECTOR_H__
 | 
			
		||||
#define __CVECTOR_H__
 | 
			
		||||
 | 
			
		||||
#include <assert.h>
 | 
			
		||||
 | 
			
		||||
// Vector
 | 
			
		||||
template <class T> class CVector
 | 
			
		||||
{
 | 
			
		||||
	bool Grow(size_t amount)
 | 
			
		||||
	{
 | 
			
		||||
		// automatic grow
 | 
			
		||||
		size_t newSize = m_Size * 2;
 | 
			
		||||
 | 
			
		||||
		if (newSize == 0)
 | 
			
		||||
		{
 | 
			
		||||
			newSize = 8;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		while (m_CurrentUsedSize + amount > newSize)
 | 
			
		||||
		{
 | 
			
		||||
			newSize *= 2;
 | 
			
		||||
		}
 | 
			
		||||
		T *newData = new T[newSize];
 | 
			
		||||
		if (!newData)
 | 
			
		||||
			return false;
 | 
			
		||||
		if (m_Data)
 | 
			
		||||
		{
 | 
			
		||||
			for (size_t i=0; i<m_CurrentUsedSize; i++)
 | 
			
		||||
				newData[i] = m_Data[i];
 | 
			
		||||
			delete [] m_Data;
 | 
			
		||||
		}
 | 
			
		||||
		m_Data = newData;
 | 
			
		||||
		m_Size = newSize;
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	bool GrowIfNeeded(size_t amount)
 | 
			
		||||
	{
 | 
			
		||||
		if (m_CurrentUsedSize + amount >= m_Size)
 | 
			
		||||
		{
 | 
			
		||||
			return Grow(amount);
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			return true;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	bool ChangeSize(size_t size)
 | 
			
		||||
	{
 | 
			
		||||
		// change size
 | 
			
		||||
		if (size == m_Size)
 | 
			
		||||
			return true;
 | 
			
		||||
 | 
			
		||||
		if (!size)
 | 
			
		||||
		{
 | 
			
		||||
			if (m_Data)
 | 
			
		||||
			{
 | 
			
		||||
				delete [] m_Data;
 | 
			
		||||
				m_Data = NULL;
 | 
			
		||||
				m_Size = 0;
 | 
			
		||||
			}
 | 
			
		||||
			return true;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		T *newData = new T[size];
 | 
			
		||||
		if (!newData)
 | 
			
		||||
			return false;
 | 
			
		||||
		if (m_Data)
 | 
			
		||||
		{
 | 
			
		||||
			size_t end = (m_CurrentUsedSize < size) ? (m_CurrentUsedSize) : size;
 | 
			
		||||
			for (size_t i=0; i<end; i++)
 | 
			
		||||
				newData[i] = m_Data[i];
 | 
			
		||||
			delete [] m_Data;
 | 
			
		||||
		}
 | 
			
		||||
		m_Data = newData;
 | 
			
		||||
		m_Size = size;
 | 
			
		||||
		if (m_CurrentUsedSize > m_Size)
 | 
			
		||||
			m_CurrentUsedSize = m_Size;
 | 
			
		||||
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void FreeMemIfPossible()
 | 
			
		||||
	{
 | 
			
		||||
		if (!m_Data)
 | 
			
		||||
			return;
 | 
			
		||||
 | 
			
		||||
		if (!m_CurrentUsedSize)
 | 
			
		||||
		{
 | 
			
		||||
			ChangeSize(0);
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		size_t newSize = m_Size;
 | 
			
		||||
		while (m_CurrentUsedSize <= newSize / 2)
 | 
			
		||||
			newSize /= 2;
 | 
			
		||||
 | 
			
		||||
		if (newSize != m_Size)
 | 
			
		||||
			ChangeSize(newSize);
 | 
			
		||||
	}
 | 
			
		||||
protected:
 | 
			
		||||
	T *m_Data;
 | 
			
		||||
	size_t m_Size;
 | 
			
		||||
	size_t m_CurrentUsedSize;
 | 
			
		||||
public:
 | 
			
		||||
	class iterator
 | 
			
		||||
	{
 | 
			
		||||
	protected:
 | 
			
		||||
		T *m_Ptr;
 | 
			
		||||
	public:
 | 
			
		||||
		// constructors / destructors
 | 
			
		||||
		iterator()
 | 
			
		||||
		{
 | 
			
		||||
			m_Ptr = NULL;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		iterator(T * ptr)
 | 
			
		||||
		{
 | 
			
		||||
			m_Ptr = ptr;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// member functions
 | 
			
		||||
		T * base()
 | 
			
		||||
		{
 | 
			
		||||
			return m_Ptr;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		const T * base() const
 | 
			
		||||
		{
 | 
			
		||||
			return m_Ptr;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// operators
 | 
			
		||||
		T & operator*()
 | 
			
		||||
		{
 | 
			
		||||
			return *m_Ptr;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		T * operator->()
 | 
			
		||||
		{
 | 
			
		||||
			return m_Ptr;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		iterator & operator++()		// preincrement
 | 
			
		||||
		{
 | 
			
		||||
			++m_Ptr;
 | 
			
		||||
			return (*this);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		iterator operator++(int)	// postincrement
 | 
			
		||||
		{
 | 
			
		||||
			iterator tmp = *this;
 | 
			
		||||
			++m_Ptr;
 | 
			
		||||
			return tmp;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		iterator & operator--()		// predecrement
 | 
			
		||||
		{
 | 
			
		||||
			--m_Ptr;
 | 
			
		||||
			return (*this);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		iterator operator--(int)	// postdecrememnt
 | 
			
		||||
		{
 | 
			
		||||
			iterator tmp = *this;
 | 
			
		||||
			--m_Ptr;
 | 
			
		||||
			return tmp;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		bool operator==(T * right) const
 | 
			
		||||
		{
 | 
			
		||||
			return (m_Ptr == right);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		bool operator==(const iterator & right) const
 | 
			
		||||
		{
 | 
			
		||||
			return (m_Ptr == right.m_Ptr);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		bool operator!=(T * right) const
 | 
			
		||||
		{
 | 
			
		||||
			return (m_Ptr != right);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		bool operator!=(const iterator & right) const
 | 
			
		||||
		{
 | 
			
		||||
			return (m_Ptr != right.m_Ptr);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		iterator & operator+=(size_t offset)
 | 
			
		||||
		{
 | 
			
		||||
			m_Ptr += offset;
 | 
			
		||||
			return (*this);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		iterator & operator-=(size_t offset)
 | 
			
		||||
		{
 | 
			
		||||
			m_Ptr -= offset;
 | 
			
		||||
			return (*this);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		iterator operator+(size_t offset) const
 | 
			
		||||
		{
 | 
			
		||||
			iterator tmp(*this);
 | 
			
		||||
			tmp.m_Ptr += offset;
 | 
			
		||||
			return tmp;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		iterator operator-(size_t offset) const
 | 
			
		||||
		{
 | 
			
		||||
			iterator tmp(*this);
 | 
			
		||||
			tmp.m_Ptr -= offset;
 | 
			
		||||
			return tmp;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		T & operator[](size_t offset)
 | 
			
		||||
		{
 | 
			
		||||
			return (*(*this + offset));
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		const T & operator[](size_t offset) const
 | 
			
		||||
		{
 | 
			
		||||
			return (*(*this + offset));
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		bool operator<(const iterator & right) const
 | 
			
		||||
		{
 | 
			
		||||
			return m_Ptr < right.m_Ptr;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		bool operator>(const iterator & right) const
 | 
			
		||||
		{
 | 
			
		||||
			return m_Ptr > right.m_Ptr;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		bool operator<=(const iterator & right) const
 | 
			
		||||
		{
 | 
			
		||||
			return m_Ptr <= right.m_Ptr;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		bool operator>=(const iterator & right) const
 | 
			
		||||
		{
 | 
			
		||||
			return m_Ptr >= right.m_Ptr;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		size_t operator-(const iterator & right) const
 | 
			
		||||
		{
 | 
			
		||||
			return m_Ptr - right.m_Ptr;
 | 
			
		||||
		}
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	// constructors / destructors
 | 
			
		||||
	CVector<T>()
 | 
			
		||||
	{
 | 
			
		||||
		m_Size = 0;
 | 
			
		||||
		m_CurrentUsedSize = 0;
 | 
			
		||||
		m_Data = NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	CVector<T>(const CVector<T> & other)
 | 
			
		||||
	{
 | 
			
		||||
		// copy data
 | 
			
		||||
		m_Data = new T [other.m_CurrentUsedSize];
 | 
			
		||||
		m_Size = other.m_CurrentUsedSize;
 | 
			
		||||
		m_CurrentUsedSize = other.m_CurrentUsedSize;
 | 
			
		||||
		for (size_t i=0; i<other.m_CurrentUsedSize; i++)
 | 
			
		||||
			m_Data[i] = other.m_Data[i];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	~CVector<T>()
 | 
			
		||||
	{
 | 
			
		||||
		clear();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// interface
 | 
			
		||||
	size_t size() const
 | 
			
		||||
	{
 | 
			
		||||
		return m_CurrentUsedSize;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	size_t capacity() const
 | 
			
		||||
	{
 | 
			
		||||
		return m_Size;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	iterator begin() const
 | 
			
		||||
	{
 | 
			
		||||
		return iterator(m_Data);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	iterator end() const
 | 
			
		||||
	{
 | 
			
		||||
		return iterator(m_Data + m_CurrentUsedSize);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	iterator iterAt(size_t pos)
 | 
			
		||||
	{
 | 
			
		||||
		if (pos > m_CurrentUsedSize)
 | 
			
		||||
			assert(0);
 | 
			
		||||
		return iterator(m_Data + pos);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	bool reserve(size_t newSize)
 | 
			
		||||
	{
 | 
			
		||||
		if (newSize > m_Size)
 | 
			
		||||
			return ChangeSize(newSize);
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	bool push_back(const T & elem)
 | 
			
		||||
	{
 | 
			
		||||
		if (!GrowIfNeeded(1))
 | 
			
		||||
		{
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		m_Data[m_CurrentUsedSize++] = elem;
 | 
			
		||||
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void pop_back()
 | 
			
		||||
	{
 | 
			
		||||
		--m_CurrentUsedSize;
 | 
			
		||||
		if (m_CurrentUsedSize < 0)
 | 
			
		||||
			m_CurrentUsedSize = 0;
 | 
			
		||||
 | 
			
		||||
		FreeMemIfPossible();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	bool resize(size_t newSize)
 | 
			
		||||
	{
 | 
			
		||||
		if (!ChangeSize(newSize))
 | 
			
		||||
			return false;
 | 
			
		||||
		m_CurrentUsedSize = newSize;
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	bool empty() const
 | 
			
		||||
	{
 | 
			
		||||
		return (m_CurrentUsedSize == 0);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	T & at(size_t pos)
 | 
			
		||||
	{
 | 
			
		||||
		if (pos > m_CurrentUsedSize)
 | 
			
		||||
		{
 | 
			
		||||
			assert(0);
 | 
			
		||||
		}
 | 
			
		||||
		return m_Data[pos];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	const  T & at(size_t pos) const
 | 
			
		||||
	{
 | 
			
		||||
		if (pos > m_CurrentUsedSize)
 | 
			
		||||
		{
 | 
			
		||||
			assert(0);
 | 
			
		||||
		}
 | 
			
		||||
		return m_Data[pos];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	T & operator[](size_t pos)
 | 
			
		||||
	{
 | 
			
		||||
		return at(pos);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	const T & operator[](size_t pos) const
 | 
			
		||||
	{
 | 
			
		||||
		return at(pos);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	T & front()
 | 
			
		||||
	{
 | 
			
		||||
		if (m_CurrentUsedSize < 1)
 | 
			
		||||
		{
 | 
			
		||||
			assert(0);
 | 
			
		||||
		}
 | 
			
		||||
		return m_Data[0];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	const T & front() const
 | 
			
		||||
	{
 | 
			
		||||
		if (m_CurrentUsedSize < 1)
 | 
			
		||||
		{
 | 
			
		||||
			assert(0);
 | 
			
		||||
		}
 | 
			
		||||
		return m_Data[0];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	T & back()
 | 
			
		||||
	{
 | 
			
		||||
		if (m_CurrentUsedSize < 1)
 | 
			
		||||
		{
 | 
			
		||||
			assert(0);
 | 
			
		||||
		}
 | 
			
		||||
		return m_Data[m_CurrentUsedSize - 1];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	const T & back() const
 | 
			
		||||
	{
 | 
			
		||||
		if (m_CurrentUsedSize < 1)
 | 
			
		||||
		{
 | 
			
		||||
			assert(0);
 | 
			
		||||
		}
 | 
			
		||||
		return m_Data[m_CurrentUsedSize - 1];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	iterator insert(iterator where, const T & value)
 | 
			
		||||
	{
 | 
			
		||||
		// validate iter
 | 
			
		||||
		if (where < m_Data || where > (m_Data + m_CurrentUsedSize))
 | 
			
		||||
			return iterator(0);
 | 
			
		||||
 | 
			
		||||
		size_t ofs = where - begin();
 | 
			
		||||
 | 
			
		||||
		if (!GrowIfNeeded(1))
 | 
			
		||||
		{
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		++m_CurrentUsedSize;
 | 
			
		||||
 | 
			
		||||
		where = begin() + ofs;
 | 
			
		||||
 | 
			
		||||
		// Move subsequent entries
 | 
			
		||||
		for (T *ptr = m_Data + m_CurrentUsedSize - 2; ptr >= where.base(); --ptr)
 | 
			
		||||
			*(ptr + 1) = *ptr;
 | 
			
		||||
 | 
			
		||||
		*where.base() = value;
 | 
			
		||||
 | 
			
		||||
		return where;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	iterator erase(iterator where)
 | 
			
		||||
	{
 | 
			
		||||
		// validate iter
 | 
			
		||||
		if (where < m_Data || where >= (m_Data + m_CurrentUsedSize))
 | 
			
		||||
			return iterator(0);
 | 
			
		||||
 | 
			
		||||
		size_t ofs = where - begin();
 | 
			
		||||
 | 
			
		||||
		if (m_CurrentUsedSize > 1)
 | 
			
		||||
		{
 | 
			
		||||
			// move
 | 
			
		||||
			T *theend = m_Data + m_CurrentUsedSize;
 | 
			
		||||
			for (T *ptr = where.base() + 1; ptr < theend; ++ptr)
 | 
			
		||||
				*(ptr - 1) = *ptr;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		--m_CurrentUsedSize;
 | 
			
		||||
 | 
			
		||||
		FreeMemIfPossible();
 | 
			
		||||
 | 
			
		||||
		return begin() + ofs;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void clear()
 | 
			
		||||
	{
 | 
			
		||||
		m_Size = 0;
 | 
			
		||||
		m_CurrentUsedSize = 0;
 | 
			
		||||
		if (m_Data)
 | 
			
		||||
		{
 | 
			
		||||
			delete [] m_Data;
 | 
			
		||||
			m_Data = NULL;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // __CVECTOR_H__
 | 
			
		||||
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user