00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef SELDON_FILE_VECTOR_VECTOR2_HXX
00023
00024
00025 #ifndef SELDON_VECTOR2_DEFAULT_ALLOCATOR_0
00026
00029 #define SELDON_VECTOR2_DEFAULT_ALLOCATOR_0 SELDON_DEFAULT_ALLOCATOR
00030 #endif
00031
00032 #ifndef SELDON_VECTOR2_DEFAULT_ALLOCATOR_1
00033
00036 #define SELDON_VECTOR2_DEFAULT_ALLOCATOR_1 MallocObject
00037 #endif
00038
00039
00040 namespace Seldon
00041 {
00042
00043
00045
00056 template <class T,
00057 class Allocator0 = SELDON_VECTOR2_DEFAULT_ALLOCATOR_0<T>,
00058 class Allocator1 = SELDON_VECTOR2_DEFAULT_ALLOCATOR_1<
00059 Vector<T, VectFull, Allocator0> > >
00060 class Vector2
00061 {
00062 public:
00063 typedef T value_type;
00064 typedef T* pointer;
00065 typedef const T* const_pointer;
00066 typedef T& reference;
00067 typedef const T& const_reference;
00068
00069 protected:
00070 Vector<Vector<T, VectFull, Allocator0>, VectFull, Allocator1> data_;
00071
00072 public:
00073
00074
00075
00076 Vector2();
00077 Vector2(int length);
00078 Vector2(const Vector<int>& length);
00079 ~Vector2();
00080
00081
00082
00083 bool IsEmpty() const;
00084 int GetLength() const;
00085 int GetSize() const;
00086 int GetLength(int i) const;
00087 int GetSize(int i) const;
00088 int GetNelement() const;
00089 int GetNelement(int beg, int end) const;
00090 Vector<int> GetShape() const;
00091 void GetShape(Vector<int>& shape) const;
00092 void Reallocate(int M);
00093 void Reallocate(int i, int N);
00094 void Reallocate(const Vector<int>& length);
00095 void Select(int beg, int end);
00096 Vector<T, VectFull, Allocator0> Flatten() const;
00097 template <class Td, class Allocatord>
00098 void Flatten(Vector<Td, VectFull, Allocatord>& data) const;
00099 template <class Td, class Allocatord>
00100 void Flatten(int beg, int end, Vector<Td, VectFull, Allocatord>& data)
00101 const;
00102
00103 void PushBack(int i, const T& x);
00104 void PushBack(const Vector<T, VectFull, Allocator0>& X);
00105 #ifndef SWIG
00106 void PushBack(const Vector<Vector<T, VectFull, Allocator0>,
00107 VectFull, Allocator1>& V);
00108 #endif
00109 void PushBack(const Vector2<T, Allocator0, Allocator1>& V);
00110
00111 void Clear();
00112 void Clear(int i);
00113
00114 void Fill(const T& x);
00115
00116 Vector<Vector<T, VectFull, Allocator0>, VectFull, Allocator1>&
00117 GetVector();
00118 #ifndef SWIG
00119 const Vector<Vector<T, VectFull, Allocator0>, VectFull,
00120 Allocator1> GetVector() const;
00121 #endif
00122
00123 Vector<T, VectFull, Allocator0>& GetVector(int i);
00124 #ifndef SWIG
00125 const Vector<T, VectFull, Allocator0>& GetVector(int i) const;
00126 #endif
00127
00128 void Copy(const Vector2<T, Allocator0, Allocator1>& V);
00129 Vector2<T, Allocator0, Allocator1> Copy() const;
00130
00131
00132
00133 #ifndef SWIG
00134 const Vector<T, VectFull, Allocator0>& operator() (int i) const;
00135 #endif
00136 Vector<T, VectFull, Allocator0>& operator() (int i);
00137 #ifndef SWIG
00138 const_reference operator() (int i, int j) const;
00139 #endif
00140 reference operator() (int i, int j);
00141
00142
00143
00144 template <class V2>
00145 bool HasSameShape(const V2& V) const;
00146 void Print() const;
00147
00148
00149
00150 void Write(string file_name, bool with_size = true) const;
00151 void Write(ostream& file_stream, bool with_size = true) const;
00152 void Read(string file_name, bool with_size = true);
00153 void Read(istream& file_stream, bool with_size = true);
00154 };
00155
00156
00157 }
00158
00159
00160 #define SELDON_FILE_VECTOR_VECTOR2_HXX
00161 #endif