aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/Common/je_array.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/Common/je_array.hpp')
-rw-r--r--src/libjin/Common/je_array.hpp77
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;