aboutsummaryrefslogtreecommitdiff
path: root/src/util/pointer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/pointer.h')
-rw-r--r--src/util/pointer.h103
1 files changed, 70 insertions, 33 deletions
diff --git a/src/util/pointer.h b/src/util/pointer.h
index ea868b3f0..d29ec8739 100644
--- a/src/util/pointer.h
+++ b/src/util/pointer.h
@@ -23,7 +23,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "debug.h" // For assert()
#include <cstring>
-template <typename T> class Buffer
+template <typename T>
+class Buffer
{
public:
Buffer()
@@ -34,7 +35,7 @@ public:
Buffer(unsigned int size)
{
m_size = size;
- if (size != 0)
+ if(size != 0)
data = new T[size];
else
data = NULL;
@@ -42,41 +43,61 @@ public:
Buffer(const Buffer &buffer)
{
m_size = buffer.m_size;
- if (m_size != 0) {
+ if(m_size != 0)
+ {
data = new T[buffer.m_size];
memcpy(data, buffer.data, buffer.m_size);
- } else
+ }
+ else
data = NULL;
}
Buffer(const T *t, unsigned int size)
{
m_size = size;
- if (size != 0) {
+ if(size != 0)
+ {
data = new T[size];
memcpy(data, t, size);
- } else
+ }
+ else
data = NULL;
}
- ~Buffer() { drop(); }
- Buffer &operator=(const Buffer &buffer)
+ ~Buffer()
{
- if (this == &buffer)
+ drop();
+ }
+ Buffer& operator=(const Buffer &buffer)
+ {
+ if(this == &buffer)
return *this;
drop();
m_size = buffer.m_size;
- if (m_size != 0) {
+ if(m_size != 0)
+ {
data = new T[buffer.m_size];
memcpy(data, buffer.data, buffer.m_size);
- } else
+ }
+ else
data = NULL;
return *this;
}
- T &operator[](unsigned int i) const { return data[i]; }
- T *operator*() const { return data; }
- unsigned int getSize() const { return m_size; }
-
+ T & operator[](unsigned int i) const
+ {
+ return data[i];
+ }
+ T * operator*() const
+ {
+ return data;
+ }
+ unsigned int getSize() const
+ {
+ return m_size;
+ }
private:
- void drop() { delete[] data; }
+ void drop()
+ {
+ delete[] data;
+ }
T *data;
unsigned int m_size;
};
@@ -88,7 +109,8 @@ private:
* ONLY use in a single-threaded context! *
* *
************************************************/
-template <typename T> class SharedBuffer
+template <typename T>
+class SharedBuffer
{
public:
SharedBuffer()
@@ -101,12 +123,12 @@ public:
SharedBuffer(unsigned int size)
{
m_size = size;
- if (m_size != 0)
+ if(m_size != 0)
data = new T[m_size];
else
data = NULL;
refcount = new unsigned int;
- memset(data, 0, sizeof(T) * m_size);
+ memset(data,0,sizeof(T)*m_size);
(*refcount) = 1;
}
SharedBuffer(const SharedBuffer &buffer)
@@ -116,9 +138,9 @@ public:
refcount = buffer.refcount;
(*refcount)++;
}
- SharedBuffer &operator=(const SharedBuffer &buffer)
+ SharedBuffer & operator=(const SharedBuffer & buffer)
{
- if (this == &buffer)
+ if(this == &buffer)
return *this;
drop();
m_size = buffer.m_size;
@@ -133,10 +155,12 @@ public:
SharedBuffer(const T *t, unsigned int size)
{
m_size = size;
- if (m_size != 0) {
+ if(m_size != 0)
+ {
data = new T[m_size];
memcpy(data, t, m_size);
- } else
+ }
+ else
data = NULL;
refcount = new unsigned int;
(*refcount) = 1;
@@ -148,29 +172,42 @@ public:
{
m_size = buffer.getSize();
if (m_size != 0) {
- data = new T[m_size];
- memcpy(data, *buffer, buffer.getSize());
- } else
+ data = new T[m_size];
+ memcpy(data, *buffer, buffer.getSize());
+ }
+ else
data = NULL;
refcount = new unsigned int;
(*refcount) = 1;
}
- ~SharedBuffer() { drop(); }
- T &operator[](unsigned int i) const
+ ~SharedBuffer()
+ {
+ drop();
+ }
+ T & operator[](unsigned int i) const
{
assert(i < m_size);
return data[i];
}
- T *operator*() const { return data; }
- unsigned int getSize() const { return m_size; }
- operator Buffer<T>() const { return Buffer<T>(data, m_size); }
-
+ T * operator*() const
+ {
+ return data;
+ }
+ unsigned int getSize() const
+ {
+ return m_size;
+ }
+ operator Buffer<T>() const
+ {
+ return Buffer<T>(data, m_size);
+ }
private:
void drop()
{
assert((*refcount) > 0);
(*refcount)--;
- if (*refcount == 0) {
+ if(*refcount == 0)
+ {
delete[] data;
delete refcount;
}