commore  1.0.6-SNAPSHOT
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
BaseArray.h
Go to the documentation of this file.
1 //
2 // Copyright (c) 2006-2007 Raphael David / CANTOR
3 //
4 
5 
6 #ifndef CMR_BASE_ARRAY_INCLUDED
7 #define CMR_BASE_ARRAY_INCLUDED
8 
9 #include "Allocator.h"
10 
11 namespace commore
12 {
13 
14  const size_t ARRAY_INITIAL_SIZE = 2;
15 
23  {
24  protected:
26  size_t size_;
27  size_t reserved_;
28  BaseArray();
38  Byte* add_(size_t nb, size_t item_size, Byte* data, FunctionConstructor c, FunctionDestructor d);
39 
46  void clear_(size_t item_size, FunctionDestructor d, bool all);
47 
57  void resize_(int new_size, size_t item_size, FunctionConstructor c, FunctionDestructor d);
58 
65  Byte* at_(size_t i, size_t item_size);
66  const Byte* at_(size_t i, size_t item_size) const;
67 
77  size_t reserve_(size_t nb, size_t item_size, FunctionConstructor c, FunctionDestructor d);
78 
79 
84  {
85  return data_;
86  }
87  const Byte* data() const
88  {
89  return data_;
90  }
91  public:
92 
94  {
95  friend class BaseArray;
96  protected:
97  iterator();
99  size_t size_;
101  public:
102  Dummy& get_dummy() const;
103  Byte* get_data();
104  bool more() const;
105  size_t index() const
106  {
107  return current_index_;
108  }
109  operator bool () const
110  {
111  return more();
112  }
113  };
115  {
116  friend class BaseArray;
117  protected:
118  const_iterator();
120  size_t size_;
122  public:
123  const Dummy& get_dummy() const;
124  const Byte* get_data() const;
125  bool more() const;
126  size_t index() const
127  {
128  return current_index_;
129  }
130  operator bool () const
131  {
132  return more();
133  }
134  };
135 
136  static bool next_(iterator& i, size_t item_size);
137  static bool next_(const_iterator& i, size_t item_size);
138  public:
139 
143  void splice(BaseArray& array);
144 
148  size_t size() const;
149 
153  size_t reserved() const;
154 
155  protected:
156 
160  void begin_(iterator&);
161  //iterator end();
162  void begin_(const_iterator&) const;
163  //const_iterator end() const;
164 
165  };
166 
167 }
168 
169 #endif
size_t current_index_
Definition: BaseArray.h:121
size_t index() const
Definition: BaseArray.h:126
Definition: BaseArray.h:93
size_t size_
Definition: BaseArray.h:99
size_t index() const
Definition: BaseArray.h:105
size_t size_
Definition: BaseArray.h:26
Byte * data_
Definition: BaseArray.h:25
Byte * current_data_
Definition: BaseArray.h:98
Byte * data()
Definition: BaseArray.h:83
#define CMREXD
Definition: Compiler.h:22
Definition: BaseArray.h:114
size_t current_index_
Definition: BaseArray.h:100
size_t size_
Definition: BaseArray.h:120
const size_t ARRAY_INITIAL_SIZE
Definition: BaseArray.h:14
size_t reserved_
Definition: BaseArray.h:27
const Byte * data() const
Definition: BaseArray.h:87
unsigned char Byte
Definition: Type.h:64
void(* FunctionDestructor)(Byte *)
Definition: Allocator.h:90
void(* FunctionConstructor)(Byte *, const Byte *)
Definition: Allocator.h:88
Byte * current_data_
Definition: BaseArray.h:119
Definition: BaseArray.h:22