45template<
class T,
int N>
class Buffer{
50 unsigned char data[
sizeof(T)];
53 SEG() : index(EMPTY){}
60 Buffer(): search_top(buffer) {}
63 for(SEG* area_p = search_top;area_p<&buffer[N];area_p++){
64 if(area_p->index == EMPTY){
66 search_top = area_p+1;
68 return reinterpret_cast<T*
>(&(area_p->data));
75 SEG* area_p =
reinterpret_cast<SEG*
>(data_p);
76 if((area_p < &buffer[0]) || (area_p >= &buffer[N]))
return FALSE;
77 if(area_p->index == EMPTY)
return FALSE;
79 area_p->index = EMPTY;
80 if(search_top > area_p){ search_top = area_p;}
86 T* area_p =
reinterpret_cast<T*
>(buffer[i].data);
87 if(buffer[i].index == FULL) area_p->~T();
88 buffer[i].index = EMPTY;