#ifndef _BLOCK_HPP_ #define _BLOCK_HPP_ #include #include #include template class Vector; template class Container { friend class Block; public: Container *Next(); void Next(Container *nextItem); private: Container *mNext; T *mItem; Container(); ~Container(); }; template class Block { public: typedef LONG Index; Block(void); virtual ~Block(void); LONG size(void)const; void insert(const T *item); void insert(Block &newBlock); void remove(void); void remove(const T *item); void remove(Block &oldBlock); void remove(Index itemIndex); int operator=(Block &someBlock); int operator=(Vector &someVector); T &operator[](LONG itemIndex); private: void synchronizeBlock(void); LONG mSize; LONG mLastIndexReferenced; Container *mLastObjectReferenced; Container *mLastObjectInserted; Container *mContainer; }; #endif