diff dmd/Array.d @ 77:ad4792a1cfd6

more D-ification container accessing
author Eldar Insafutdinov <e.insafutdinov@gmail.com>
date Sun, 29 Aug 2010 14:36:55 +0100
parents 7e0d548de9e6
children be2ab491772e
line wrap: on
line diff
--- a/dmd/Array.d	Sun Aug 29 09:43:40 2010 +0100
+++ b/dmd/Array.d	Sun Aug 29 14:36:55 2010 +0100
@@ -184,27 +184,38 @@
 class Vector(T)
 {
 public:
-    @property final uint dim()
+    @property final size_t dim()
     {
         return _dim;
     }
-    
+
+    @property final size_t length() const
+    {
+        return _dim;
+    }
+/* Doesn't work due to compiler BUG
+    @property final size_t opDollar() const
+    {
+        return _dim;
+    }    
+*/
+/*    
     @property T *data()
     {
         return _data;
     }
-    
-    @property final uint allocdim()
+*/    
+    @property final size_t allocdim()
     {
         return _allocdim;
     }
     
-    T opIndex(uint index)
+    T opIndex(size_t index)
     {
         return _data[index];
     }
     
-    void opIndexAssign(T value, uint index)
+    void opIndexAssign(T value, size_t index)
     {
         _data[index] = value;
     }
@@ -222,7 +233,7 @@
         _data[_dim++] = elem;
     }
     
-    final void reserve(uint nentries)
+    final void reserve(size_t nentries)
 	{
         //printf("Array::reserve: size = %d, offset = %d, nbytes = %d\n", size, offset, nbytes);
         if (allocdim - dim < nentries) {
@@ -252,7 +263,7 @@
 		return a;
 	}
     
-    final void setDim(uint newdim)
+    final void setDim(size_t newdim)
 	{
 		if (dim < newdim) {
 			reserve(newdim - dim);
@@ -265,7 +276,7 @@
     {
         int result = 0;
 
-	    for (int i = 0; i < _dim; i++)
+	    for (size_t i = 0; i < _dim; i++)
 	    {
     	    result = dg(_data[i]);
 	        if (result)
@@ -274,10 +285,10 @@
 	    return result;
     }
 
-    int opApply(scope int delegate(ref int key, ref T value) dg)
+    int opApply(scope int delegate(ref size_t key, ref T value) dg)
     {
         int result = 0;
-        for (int i = 0; i < _dim; i++)
+        for (size_t i = 0; i < _dim; i++)
         {
             result = dg(i, _data[i]);
             if(result)
@@ -291,7 +302,7 @@
 		insert(dim, a);
 	}
     
-    final void insert(uint index, Vector!T a)
+    final void insert(size_t index, Vector!T a)
 	{
 		if (a !is null) {
 			uint d = a.dim;
@@ -307,6 +318,6 @@
 	}
 private:
     T* _data = null;
-    uint _dim = 0;
-    uint _allocdim = 0;
+    size_t _dim = 0;
+    size_t _allocdim = 0;
 }
\ No newline at end of file