diff options
Diffstat (limited to 'src/libjin/Common/Array.hpp')
-rw-r--r-- | src/libjin/Common/Array.hpp | 72 |
1 files changed, 72 insertions, 0 deletions
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<typename T> + 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 |