diff options
Diffstat (limited to 'src/libjin/Common/je_array.hpp')
-rw-r--r-- | src/libjin/Common/je_array.hpp | 77 |
1 files changed, 57 insertions, 20 deletions
diff --git a/src/libjin/Common/je_array.hpp b/src/libjin/Common/je_array.hpp index 473bae8..361f1f0 100644 --- a/src/libjin/Common/je_array.hpp +++ b/src/libjin/Common/je_array.hpp @@ -3,77 +3,114 @@ namespace JinEngine { - /* ԶͷŶڴջϴĶ̬ */ + + /// + /// A array created on heap. + /// template<typename T> class Array { public: - Array() : length(0), data(nullptr) {} + /// + /// Array constructor. + /// + Array() + : length(0) + , data(nullptr) + { + } + /// + /// Array constructor. + /// + /// @param l Length of array. + /// Array(int l) { length = l; data = new T[l]; } + /// + /// Array destructor. + /// ~Array() { delete[] data; length = 0; } + /// + /// Get address of data. + /// + /// @return Address of data. + /// T* operator &() { return data; } + /// + /// Get specific element of array. + /// + /// @return Element of array. + /// T& operator[](int index) { return data[index]; } - /* ڴ */ - void bind(T* d, int len) + /// + /// Bind data with given data. + /// + /// @param data Data pointer. + /// @param length Length of data. + /// + void bind(T* data, int length) { if (data != nullptr) delete data; - data = d; - length = len; + this->data = data; + this->length = length; } - void add(T v) + /// + /// Add an element. + /// + /// @param v Value of element. + /// + void add(T value) { int len = length + 1; T* d = new T[len]; memcpy(d, data, size()); - d[length] = v; + d[length] = value; bind(d, len); } + /// + /// Get size of data in byte. + /// + /// @return Size of data in byte. + /// int size() { return sizeof(T) * length; } + /// + /// Get length of data. + /// + /// @return Count of data. + /// int count() { return length; } private: - /// - /// http://blog.jobbole.com/106923/ - /// new ڴ洴 - /// 1. new ڴ - /// 2. ù캯 - /// - /// new, deleteڷͷڴ棬 - /// + // Disable new and delete. void* operator new(size_t t); - - /// - /// Disable delete. - /// void operator delete(void* ptr); T * data; |