GCpp general purpose C++ library  version 1.0
GVectT.hh
Go to the documentation of this file.
1 //======================================================================
2 /*! \file GVectT.hh
3  *
4  * Include file for GVectT template class.
5  */
6 //======================================================================
7 
8 #ifndef G_VECT_T_HH
9 #define G_VECT_T_HH
10 
11 #include "GCollectionT.hh"
12 #include "GVectIterT.hh"
13 
14 //======================================================================
15 /*! \class GVectT
16  *
17  * Template class to define vector (array) of objects.
18  *
19  * See \ref gcpp_templates for more information about the template classes.
20  *
21  *
22  * \image html GVectT.png
23  */
24 template <class T> class GVectT : public GCollectionT<T>
25 {
26  //------------------------------------------------------------
27  /*! \object_doc */
29  //------------------------------------------------------------
30 
31  protected:
32  GIterT<T> * iter_array; ///< Array of iterators
33 
34  u_int * current_index; ///< Index of current object in the vector
35  u_int capacity; ///< Current size of the pointers array
36 
37  public:
38  //------------------------------------------------------------
39  // Constructor / Destructor / Affectation
40  GVectT ( u_int size = 0, u_int opts = 0 );
41  GVectT ( u_int size, T & data, u_int opts = 0 );
42  GVectT ( u_int size, T * data, u_int opts = 0 );
43  GVectT ( const GVectT<T> & vector );
44  GVectT ( const GVectT<T> & vector, u_int opts );
45 
46  GVectT<T> & operator = ( const GVectT<T> & vector );
47 
48  virtual ~GVectT ( );
49 
50  //------------------------------------------------------------
51  public:
52  virtual u_int GetSize ( ) const;
53  virtual u_int GetCapacity ( ) const;
54  virtual u_int Resize ( u_int new_size );
55 
56  virtual const GIterT<T> * GetIterPtr ( u_int i ) const;
57  virtual GIterT<T> * GetIterPtr ( u_int i );
58 
59  //------------------------------------------------------------
60  virtual GVectIterT<T> Begin ( ) const;
61  virtual GVectIterT<T> End ( ) const;
62  static GVectIterT<T> Null ( );
63 
64  virtual bool Exist ( const T * ptr ) const;
65  virtual int Find ( const T * ptr ) const;
66 
67  GVectIterT<T> Previous ( ) const;
68  GVectIterT<T> Next ( ) const;
69  GVectIterT<T> First ( ) const;
70  GVectIterT<T> Last ( ) const;
71 
72  GVectIterT<T> Goto ( u_int n = 0 ) const;
73  T & At ( u_int n ) const;
74  virtual T & operator[] ( u_int n ) const;
75 
76  int Index ( ) const;
77 
78  //------------------------------------------------------------
79  virtual GVectIterT<T> Assign ( T * obj_ptr );
80  virtual GVectIterT<T> Assign ( T * obj_ptr, u_int index );
81 
82  virtual GVectIterT<T> Assign ( T & obj_ptr );
83  virtual GVectIterT<T> Assign ( T & obj_ptr, u_int index );
84 
85 
86  virtual T * Take ( );
87  virtual T * Take ( const T * ptr );
88  virtual bool Remove ( );
89  virtual bool Remove ( u_int index );
90  virtual bool Remove ( const T * ptr, bool all = true );
91  virtual void Empty ( );
92 
93  //------------------------------------------------------------
94  // internal functions
95  protected:
96  virtual int __Exist ( const T * ptr, int except = -1 ) const;
97  virtual int __Find ( const T * ptr, int except = -1 ) const;
98  virtual void __AutoResize ( u_int size );
99  virtual void __Shift ( u_int ind1, u_int ind2, int n = 1 );
100 
101  virtual GVectIterT<T> __Assign ( T * item, u_int index );
102  virtual T * __Take ( );
103 
104  //------------------------------------------------------------
105 
106 };
107 
108 //----------------------------------------------------------------------
109 // Inline functions
110 #include "icc/GVectT.icc"
111 
112 //======================================================================
113 #endif
Definition: GIterT.hh:21
GVectIterT< T > Goto(u_int n=0) const
Definition: GVectT.icc:350
virtual int __Find(const T *ptr, int except=-1) const
Definition: GVectT.icc:606
u_int capacity
Current size of the pointers array.
Definition: GVectT.hh:35
virtual u_int Resize(u_int new_size)
Definition: GVectT.icc:212
virtual int Find(const T *ptr) const
Definition: GVectT.icc:283
virtual bool Exist(const T *ptr) const
Definition: GVectT.icc:275
GVectIterT< T > Next() const
Definition: GVectT.icc:309
virtual u_int GetSize() const
Definition: GVectT.icc:203
virtual T * Take()
Definition: GVectT.icc:482
virtual GVectIterT< T > End() const
Definition: GVectT.icc:259
Definition: GCollectionT.hh:115
Definition: GVectIterT.hh:13
virtual bool Remove()
Definition: GVectT.icc:502
#define GObject(T)
Definition: GClassDefine.hh:65
virtual GVectIterT< T > Begin() const
Definition: GVectT.icc:249
virtual const GIterT< T > * GetIterPtr(u_int i) const
Definition: GVectT.icc:237
virtual void __Shift(u_int ind1, u_int ind2, int n=1)
Definition: GVectT.icc:640
u_int * current_index
Index of current object in the vector.
Definition: GVectT.hh:34
virtual int __Exist(const T *ptr, int except=-1) const
Definition: GVectT.icc:587
virtual void Empty()
Definition: GVectT.icc:563
GIterT< T > * iter_array
Array of iterators.
Definition: GVectT.hh:32
virtual void __AutoResize(u_int size)
Definition: GVectT.icc:616
virtual u_int GetCapacity() const
Definition: GVectT.icc:198
static GVectIterT< T > Null()
Definition: GVectT.icc:268
GVectIterT< T > Last() const
Definition: GVectT.icc:334
GVectIterT< T > Previous() const
Definition: GVectT.icc:293
int Index() const
Definition: GVectT.icc:395
virtual GVectIterT< T > __Assign(T *item, u_int index)
Definition: GVectT.icc:709
virtual GVectIterT< T > Assign(T *obj_ptr)
Definition: GVectT.icc:408
unsigned int u_int
Definition: GTypes.hh:38
virtual T * __Take()
Definition: GVectT.icc:757
GVectIterT< T > First() const
Definition: GVectT.icc:324
Definition: GVectIterT.hh:21
T & At(u_int n) const
Definition: GVectT.icc:368