diff options
Diffstat (limited to 'src/libjin/Filesystem/je_buffer.h')
-rw-r--r-- | src/libjin/Filesystem/je_buffer.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/libjin/Filesystem/je_buffer.h b/src/libjin/Filesystem/je_buffer.h new file mode 100644 index 0000000..f0d987a --- /dev/null +++ b/src/libjin/Filesystem/je_buffer.h @@ -0,0 +1,67 @@ +#ifndef __LIBJIN_BUFFER_H +#define __LIBJIN_BUFFER_H + +#include <string.h> +#include <stdlib.h> + +namespace jin +{ + namespace filesystem + { + + /** + * ڶϷָռbuffer + */ + class Buffer + { + public: + Buffer() : data(0), size(0) {} + Buffer(const Buffer& src) + { + delete[] data; + size = src.size; + data = new char[size]; + memcpy(data, src.data, size); + } + Buffer(void* d, int s) + { + data = new char[size]; + memcpy(data, d, size); + size = s; + } + Buffer(size_t s) + { + data = new char[s]; + memset(data, 0, s); + size = s; + } + ~Buffer() + { + delete[] data; + size = 0; + } + void operator = (const Buffer& buffer) + { + delete[] data; + size = buffer.size; + data = new char[size]; + memcpy(data, buffer.data, size); + } + + void clear() + { + if (data == nullptr) + return; + free(data); + data = nullptr; + } + + void* data; + unsigned int size; + + }; + + } // namespace filesystem +} // namespace jin + +#endif
\ No newline at end of file |