blob: 885e952c9bda64f74dafcfb78b8e9ed58c2dc480 [file] [log] [blame]
#ifndef BUFFER_HPP
#define BUFFER_HPP
#include <stdlib.h>
template < class T > class Buffer
{
protected:
T * buffer;
int size;
public:
Buffer (int size);
~Buffer ();
void grow ();
int
getSize ()
{
return size;
}
T *
get ()
{
return buffer;
}
};
template < class T > Buffer < T >::Buffer (int size)
{
this->size = size;
buffer = (T *) malloc (sizeof (T) * size);
if (!buffer)
throw new XmlPullParserException ();
}
template < class T > Buffer < T >::~Buffer ()
{
free (buffer);
}
template < class T > void Buffer < T >::grow ()
{
size <<= 1;
T *p = (T *) realloc (buffer, sizeof (T) * size);
if (p)
buffer = p;
else
throw new XmlPullParserException ();
}
#endif