#ifndef GFXTOOLS_BUFFER_INCLUDED // -*- C++ -*- #define GFXTOOLS_BUFFER_INCLUDED #include namespace simplif { template class buffer : public array { protected: int fill; public: buffer() { init(8); } buffer(int l) { init(l); } inline void init(int l) { array::init(l); fill=0; } inline int add(const T& t); inline void reset(); inline int find(const T&); inline T remove(int i); inline int addAll(const buffer& buf); inline void removeDuplicates(); inline int length() const { return fill; } inline int maxLength() const { return len; } inline void setFill(int l){fill = l;} }; template inline int buffer::add(const T& t) { if( fill == len ) resize( len*2 ); data[fill] = t; return fill++; } template inline void buffer::reset() { fill = 0; } template inline int buffer::find(const T& t) { for(int i=0;i inline T buffer::remove(int i) { #ifdef SAFETY assert( i>=0 ); assert( i inline int buffer::addAll(const buffer& buf) { for(int i=0; i inline void buffer::removeDuplicates() { for(int i=0; i