array.h

Go to the documentation of this file.
00001 
00034 #ifndef ABA_ARRAY_H
00035 #define ABA_ARRAY_H
00036 #include <iostream>
00037 using namespace std;
00038 
00039 #include "abacus/global.h"
00040 #include "abacus/buffer.h"
00041 
00042 #ifdef ABACUS_PARALLEL
00043 class MESSAGE;
00044 #endif
00045 
00046 #ifdef ABACUS_NEW_TEMPLATE_SYNTAX
00047 template<class Type> 
00048 class  ABA_ARRAY;
00049 template<class Type> 
00050 ostream& operator<< (ostream& out, const ABA_ARRAY<Type> &array);
00051 #endif
00052 
00053   template <class Type> class  ABA_ARRAY : public ABA_ABACUSROOT  {
00054     public:
00055 
00061       ABA_ARRAY(ABA_GLOBAL *glob, int size);
00062 
00069       ABA_ARRAY(ABA_GLOBAL *glob, int size, Type init);
00070 
00077       ABA_ARRAY(ABA_GLOBAL *glob, const ABA_BUFFER<Type> &buf);
00078 
00083       ABA_ARRAY(const ABA_ARRAY<Type> &rhs);
00084 
00086       ~ABA_ARRAY();
00087 #ifdef ABACUS_PARALLEL
00088 
00094       ABA_ARRAY(const ABA_GLOBAL *glob, ABA_MESSAGE &msg);
00095 
00100       void pack(ABA_MESSAGE &msg) const;
00101 
00109       void pack(ABA_MESSAGE &msg, int nPacked) const;
00110 #endif
00111 
00118       const ABA_ARRAY<Type>& operator=(const ABA_ARRAY<Type>& rhs);
00119 
00128       const ABA_ARRAY<Type>& operator=(const ABA_BUFFER<Type>& rhs);
00129 #ifdef ABACUS_NEW_TEMPLATE_SYNTAX
00130 
00140       friend ostream& operator<< <> (ostream&, const ABA_ARRAY<Type> &);
00141 #else
00142 
00152       friend ostream& operator<< (ostream& out, const ABA_ARRAY<Type> &array);
00153 #endif
00154 
00161       Type& operator[](int i);
00162 
00166       const Type& operator[](int i) const;
00167 
00177       void copy(const ABA_ARRAY<Type>& rhs);
00178 
00189       void copy(const ABA_ARRAY<Type>& rhs, int l, int r);
00190 
00201       void leftShift(ABA_BUFFER<int> &ind);
00202 
00210       void leftShift(ABA_ARRAY<bool> &remove);
00211 
00218       void set(int l, int r, Type val);
00219 
00225       void set(Type val);
00226 
00229       int  size() const;
00230 
00238       void realloc(int newSize);
00239 
00247       void realloc(int newSize, Type init);
00248 
00249     private:
00250 
00254       void rangeCheck(int i) const;
00257       ABA_GLOBAL *glob_;
00258 
00261       int         n_;
00262 
00265       Type       *a_;
00266   };
00267 
00268 #include "abacus/array.inc"
00269 
00270 #endif  // !ABA_ARRAY_H
00271 

Generated on Tue Aug 14 18:09:53 2007 for ABACUS by  doxygen 1.5.1