From 7c3609b04eabc79db0c0b245a155fc3c5e875053 Mon Sep 17 00:00:00 2001 From: chai Date: Sat, 8 Sep 2018 14:52:17 +0800 Subject: *update --- src/libjin/Common/Array.hpp | 72 +++++++++++++++++++++++++++++++++++++++++++++ src/libjin/Common/common.h | 6 ++++ 2 files changed, 78 insertions(+) create mode 100644 src/libjin/Common/Array.hpp create mode 100644 src/libjin/Common/common.h (limited to 'src/libjin/Common') diff --git a/src/libjin/Common/Array.hpp b/src/libjin/Common/Array.hpp new file mode 100644 index 0000000..de22961 --- /dev/null +++ b/src/libjin/Common/Array.hpp @@ -0,0 +1,72 @@ +#ifndef __LIBJIN_COMMON_ARRAY_H +#define __LIBJIN_COMMON_ARRAY_H + +namespace jin +{ + + /* 自动释放堆内存的动态数组 */ + template + class Array + { + public: + Array() : length(0), data(nullptr) {} + + Array(int l) + { + length = l; + data = new T[l]; + } + + ~Array() + { + delete[] data; + length = 0; + } + + T* operator &() + { + return data; + } + + T operator[](int index) + { + return data[index]; + } + + /* 绑定内存 */ + void bind(T* d, int len) + { + if (data != nullptr) + delete data; + data = d; + length = len; + } + + void add(T v) + { + int len = length + 1; + T* d = new T[len]; + memcpy(d, data, size()); + d[length] = v; + bind(d, len); + } + + int size() + { + return sizeof(T) * length; + } + + int count() + { + return length; + } + + private: + T * data; + unsigned int length; + + }; + +} + +#endif \ No newline at end of file diff --git a/src/libjin/Common/common.h b/src/libjin/Common/common.h new file mode 100644 index 0000000..9586c82 --- /dev/null +++ b/src/libjin/Common/common.h @@ -0,0 +1,6 @@ +#ifndef __LIBJIN_COMMON_H +#define __LIBJIN_COMMON_H + +#include "Array.hpp" + +#endif \ No newline at end of file -- cgit v1.1-26-g67d0