diff options
author | Treeki <treeki@gmail.com> | 2014-01-23 23:45:19 +0100 |
---|---|---|
committer | Treeki <treeki@gmail.com> | 2014-01-23 23:45:19 +0100 |
commit | 22b35add6baa191b6c82347686e2599d848f2cb7 (patch) | |
tree | 48536b5631d35c972dd5f93af4f68d428cf2a18c /buffer.h | |
parent | f923cd4beaf1c97f5873a9549b216c67520a8cca (diff) | |
download | bounce4-22b35add6baa191b6c82347686e2599d848f2cb7.tar.gz bounce4-22b35add6baa191b6c82347686e2599d848f2cb7.zip |
move bouncer files into the bouncer directory
Diffstat (limited to 'buffer.h')
-rw-r--r-- | buffer.h | 197 |
1 files changed, 0 insertions, 197 deletions
diff --git a/buffer.h b/buffer.h deleted file mode 100644 index bfba94a..0000000 --- a/buffer.h +++ /dev/null @@ -1,197 +0,0 @@ -#ifndef BUFFER_H -#define BUFFER_H - -#include <string.h> -#include <stdint.h> - -class Buffer { -private: - char *m_data; - bool m_freeBuffer; - int m_size; - int m_capacity; - int m_readPointer; - char m_preAllocBuffer[0x200]; - -public: - Buffer() { - m_data = m_preAllocBuffer; - m_freeBuffer = false; - m_size = 0; - m_capacity = sizeof(m_preAllocBuffer); - m_readPointer = 0; - } - - ~Buffer() { - if ((m_data != NULL) && m_freeBuffer) { - delete[] m_data; - m_data = NULL; - } - } - - void useExistingBuffer(char *data, int size) { - if (m_freeBuffer) - delete[] m_data; - - m_data = data; - m_freeBuffer = false; - m_size = size; - m_capacity = size; - m_readPointer = 0; - } - - char *data() const { return m_data; } - int size() const { return m_size; } - int capacity() const { return m_capacity; } - - void setCapacity(int capacity) { - if (capacity == m_capacity) - return; - - // Trim the size down if it's too big to fit - if (m_size > capacity) - m_size = capacity; - - char *newBuf = new char[capacity]; - - if (m_data != NULL) { - memcpy(newBuf, m_data, m_size); - if (m_freeBuffer) - delete[] m_data; - } - - m_data = newBuf; - m_capacity = capacity; - m_freeBuffer = true; - } - - void clear() { - m_size = 0; - } - void append(const char *data, int size) { - if (size <= 0) - return; - - int requiredSize = m_size + size; - if (requiredSize > m_capacity) - setCapacity(requiredSize + 0x100); - - memcpy(&m_data[m_size], data, size); - m_size += size; - } - void append(const Buffer &buf) { - append(buf.data(), buf.size()); - } - void resize(int size) { - if (size > m_capacity) - setCapacity(size + 0x100); - m_size = size; - } - - void trimFromStart(int amount) { - if (amount <= 0) - return; - if (amount >= m_size) { - clear(); - return; - } - - memmove(m_data, &m_data[amount], m_size - amount); - m_size -= amount; - } - - - void writeU32(uint32_t v) { append((const char *)&v, 4); } - void writeU16(uint16_t v) { append((const char *)&v, 2); } - void writeU8(uint8_t v) { append((const char *)&v, 1); } - void writeS32(int32_t v) { append((const char *)&v, 4); } - void writeS16(int16_t v) { append((const char *)&v, 2); } - void writeS8(int8_t v) { append((const char *)&v, 1); } - - void writeStr(const char *data, int size = -1) { - if (size == -1) - size = strlen(data); - writeU32(size); - append(data, size); - } - - void readSeek(int pos) { - m_readPointer = pos; - } - int readTell() const { - return m_readPointer; - } - bool readRemains(int size) const { - if ((size > 0) && ((m_readPointer + size) <= m_size)) - return true; - return false; - } - void read(char *output, int size) { - if ((m_readPointer + size) > m_size) { - // Not enough space to read the whole thing...! - int copy = m_size - m_readPointer; - if (copy > 0) - memcpy(output, &m_data[m_readPointer], copy); - memset(&output[copy], 0, size - copy); - m_readPointer = m_size; - } else { - memcpy(output, &m_data[m_readPointer], size); - m_readPointer += size; - } - } - uint32_t readU32() { uint32_t v; read((char *)&v, 4); return v; } - uint16_t readU16() { uint16_t v; read((char *)&v, 2); return v; } - uint8_t readU8() { uint8_t v; read((char *)&v, 1); return v; } - int32_t readS32() { int32_t v; read((char *)&v, 4); return v; } - int16_t readS16() { int16_t v; read((char *)&v, 2); return v; } - int8_t readS8() { int8_t v; read((char *)&v, 1); return v; } - - void readStr(char *output, int bufferSize) { - uint32_t size = readU32(); - if (!readRemains(size)) { - strcpy(output, ""); - return; - } - - // How much can we safely get? - int readAmount; - if (size < (bufferSize - 1)) - readAmount = size; - else - readAmount = bufferSize - 1; - - // Put this into the buffer - read(output, readAmount); - output[readAmount] = 0; - - // In case the buffer was too small, skip over the extra source data - m_readPointer += (size - readAmount); - } - - - void dump() { - for (int base = 0; base < m_size; base += 0x10) { - printf("%08x | ", base); - - int pos; - for (pos = base; (pos < m_size) && (pos < (base + 0x10)); pos++) - printf("%02x ", (uint8_t)m_data[pos]); - - if (pos < (base + 0x10)) - for (; pos < (base + 0x10); pos++) - printf(" "); - - printf("| "); - - for (pos = base; (pos < m_size) && (pos < (base + 0x10)); pos++) - if (m_data[pos] >= 32) - printf("%c", m_data[pos]); - else - printf("."); - - printf("\n"); - } - } -}; - -#endif /* BUFFER_H */ |