Charj: Modifications to Array functionality and test harness.
authorJonathan Lifflander <jliffl2@illinois.edu>
Sat, 3 Jul 2010 21:46:48 +0000 (16:46 -0500)
committerJonathan Lifflander <jliffl2@illinois.edu>
Sat, 3 Jul 2010 21:46:48 +0000 (16:46 -0500)
src/langs/charj/src/charj/libs/Array.cpp
src/langs/charj/src/charj/libs/Array.h

index 3ed7df718d557c09cf72e44eef7ecdaeb55b5b5d..01853f05eb946e55634888a921bff26e78a3d6c4 100644 (file)
@@ -41,15 +41,15 @@ int main(void) {
   arr.init(domain);
 
   //arr[0] = 10;
-  arr[Point<1>(0)] = 10000;
-  arr[Point<1>(1)] = 20;
-  arr[Point<1>(8)] = 200;
+  arr[0] = 10000;
+  arr[1] = 20;
+  arr[8] = 200;
 
   //Array<int> aaa;
   //aaa(Domain<1>(Range(3));
 
   for (int i = 0; i < arr.size(); i++) {
-    cout << i << " -> " << arr[i] << endl;
+    cout << i << ": " << arr[i] << endl;
   }
 
   cout << endl;
@@ -58,7 +58,7 @@ int main(void) {
   at.test1();
 
   for (int i = 0; i < at.test.size(); i++) {
-    cout << i << " -> " << at.test[i] << endl;
+    cout << i << ": " << at.test[i] << endl;
   }
 
   return 0;
index ed3cfc9194594b834e8392b7306fce1e6a6979c6..a52f96a420b7e8b7868f994b991a53f06c0d7bd6 100644 (file)
@@ -45,35 +45,38 @@ namespace CharjArray {
 
   enum ArrayType { RECT, JAGGED, ROW_MAJOR, COL_MAJOR };
  
-  template<class type, int dims = 1, int atype = RECT>
+  template<class type, int dims = 1, ArrayType atype = RECT>
   class Array {
   private:
     Domain<dims> domain;
     type *block;
-    bool initialized;
 
   public:
-    Array() : initialized(false) {}
+    Array(Domain<dims> domain_) {
+      init(domain_);
+    }
 
-    void init(Domain<dims> domain_) {
+    void init(Domain<dims> &domain_) {
       domain = domain_;
       if (atype == RECT)
        block = new type[domain.size()];
-      initialized = true;
     }
 
     ~Array() {
       delete block;
     }
     
+    type* operator[] (const Domain<dims> &domain) {
+      return block[domain.ranges[0].size];
+    }
+
     type& operator[] (const Point<dims> &point) {
       return block[point.ranges[0].size];
-      //return block[index];
     }
-    
-    /*Array<type, dims, atype>& operator[] (const Domain<dims> &domain) {
-      
-      }*/
+
+    type& operator[] (const int index) {
+      return block[index];
+    }
 
     int size() {
       return domain.size();