MCPcopy Create free account
hub / github.com/OpenFodder/openfodder / MPVector

Class MPVector

Source/Utils/micropather.h:94–130  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

92 */
93 template <typename T>
94 class MPVector {
95 public:
96 MPVector() : m_allocated( 0 ), m_size( 0 ), m_buf ( 0 ) {}
97 ~MPVector() { delete [] m_buf; }
98
99 void clear() { m_size = 0; } // see warning above
100 void resize( unsigned s ) { capacity( s );
101 m_size = s;
102 }
103 T& operator[](unsigned i) { MPASSERT( i>=0 && i<m_size );
104 return m_buf[i];
105 }
106 const T& operator[](unsigned i) const { MPASSERT( i>=0 && i<m_size );
107 return m_buf[i];
108 }
109 void push_back( const T& t ) { capacity( m_size+1 );
110 m_buf[m_size++] = t;
111 }
112 unsigned size() const { return m_size; }
113
114 private:
115 void capacity( unsigned cap ) {
116 if ( m_allocated < cap ) {
117 unsigned newAllocated = cap * 3/2 + 16;
118 T* newBuf = new T[newAllocated];
119 MPASSERT( m_size <= m_allocated );
120 MPASSERT( m_size < newAllocated );
121 memcpy( newBuf, m_buf, sizeof(T)*m_size );
122 delete [] m_buf;
123 m_buf = newBuf;
124 m_allocated = newAllocated;
125 }
126 }
127 unsigned m_allocated;
128 unsigned m_size;
129 T* m_buf;
130 };
131#endif
132
133 /**

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected