00001 //--------------------------------------------------------------------------------------------- 00002 // This file is a part of "DinoKod". 00003 // Copyright © 2003 Dino Productions. All Rights Reserved. 00004 // 00005 // File : Table.h 00006 // Author : Sebastien LEIX sebastien.leix@wanadoo.fr 00007 // Date : 00008 // Modification : 00009 // 00010 //--------------------------------------------------------------------------------------------- 00011 #ifndef __TABLE_H__ 00012 #define __TABLE_H__ 00013 00014 #include "Common/CommonDll.h" 00015 #include <vector> 00016 #include "Common/Assert.h" 00017 #include "Common/Types.h" 00018 00019 #pragma warning( disable : 4251 ) 00020 00021 using namespace std; 00022 00023 //--------------------------------------------------------------------------------------------------------------------- 00024 template <class TYPE> 00025 class KTable 00026 { 00027 protected: 00028 vector<TYPE> m_Table; 00029 // TYPE* m_pTable; 00030 // u32 m_Pos; 00031 // u32 m_Size; 00032 00033 public: 00034 KTable() 00035 { 00036 // m_pTable = NULL; 00037 // m_Size = 0; 00038 // m_Pos = 0; 00039 } 00040 /* 00041 virtual ~KTable() 00042 { 00043 Clear(); 00044 } 00045 00046 void Clear() 00047 { 00048 if( m_pTable ) 00049 Deletev( m_pTable ); 00050 00051 m_Size = 0; 00052 m_Pos = 0; 00053 } 00054 00055 u32 Add( TYPE pData ) 00056 { 00057 if( m_Pos >= m_Size ) 00058 { 00059 u32 NewSize = m_Size ? m_Size * 2 : 1; 00060 TYPE* pTemp = new TYPE[NewSize]; 00061 memcpy( pTemp, m_pTable, m_Size * sizeof( TYPE ) ); 00062 if( m_pTable ) 00063 Deletev( m_pTable ); 00064 m_pTable = pTemp; 00065 m_Size = NewSize; 00066 } 00067 00068 m_pTable[m_Pos++] = pData; 00069 00070 return m_Pos - 1; 00071 } 00072 00073 u32 GetSize() { return m_Pos; } 00074 TYPE& operator []( u32 Index ) { return m_pTable[Index]; } 00075 */ 00076 // ~KTable() { KASSERT( m_Table.empty() ); } 00077 void Clear() { m_Table.clear(); } 00078 u32 Add( TYPE pData ) { m_Table.push_back( pData ); return (u32)m_Table.size() - 1; } 00079 void Erase( u32 Index ) { m_Table.erase( m_Table.begin() + Index ); } 00080 u32 GetSize() { return (u32)m_Table.size(); } 00081 TYPE& operator []( u32 Index ) { return m_Table[Index]; } 00082 }; 00083 00084 #endif // __TABLE_H__
1.5.1-p1