D:/Zythum/DinoKod/Common/Table.h

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__

Generated on Sun Mar 25 20:02:11 2007 for Zythum Project by  doxygen 1.5.1-p1