libmoldeo (Moldeo 1.0 Core)
1.0
libmoldeo is the group of objects and functions that executes the basic operations of Moldeo 1.0 Platform.
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
moArray.h
Go to the documentation of this file.
1
/*******************************************************************************
2
3
moArray.h
4
5
****************************************************************************
6
* *
7
* This source is free software; you can redistribute it and/or modify *
8
* it under the terms of the GNU General Public License as published by *
9
* the Free Software Foundation; either version 2 of the License, or *
10
* (at your option) any later version. *
11
* *
12
* This code is distributed in the hope that it will be useful, but *
13
* WITHOUT ANY WARRANTY; without even the implied warranty of *
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
15
* General Public License for more details. *
16
* *
17
* A copy of the GNU General Public License is available on the World *
18
* Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also *
19
* obtain it by writing to the Free Software Foundation, *
20
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
21
* *
22
****************************************************************************
23
24
Copyright(C) 2006 Fabricio Costa
25
26
Authors:
27
Fabricio Costa
28
29
*******************************************************************************/
30
31
// *****************************************************************************
32
// * Purpose: implements methods of "template" class declared in *
33
// * DECLARE_OBJARRAY macro and which couldn't be implemented inline *
34
// * (because they need the full definition of type T in scope) *
35
// * *
36
// * Usage: 1) #include dynarray.h *
37
// * 2) WX_DECLARE_OBJARRAY *
38
// * 3) #include arrimpl.cpp *
39
// * 4) WX_DEFINE_OBJARRAY *
40
// *****************************************************************************
41
42
#ifndef __MO_ARRAY_H__
43
44
#include "
moArrayH.h
"
45
#include <stdarg.h>
46
47
// macro implements remaining (not inline) methods of template list
48
// (it's private to this file)
49
#undef _moDefineDynamicArray
50
#define _moDefineDynamicArray(T, name) \
51
\
52
name::name() {\
53
array = NULL;\
54
n = 0;\
55
}\
56
\
57
name::name(int N) {\
58
\
59
if (N>0) {\
60
array = new T [N];\
61
n = N;\
62
} else {\
63
n=0;\
64
array = NULL;\
65
}\
66
\
67
}\
68
\
69
name::name(const name& src) {\
70
\
71
Copy( src);\
72
\
73
}\
74
\
75
name& name::operator=(const name& src) {\
76
\
77
\
78
Copy( src);\
79
return (*this);\
80
}\
81
\
82
name::~name() {\
83
if ( array != NULL ) {\
84
delete[] array;\
85
array = NULL;\
86
n = 0;\
87
}\
88
}\
89
\
90
\
91
MOboolean name::Init( int N, T initvalue ) {\
92
m_NULL = initvalue;\
93
\
94
if (n>0) Empty();\
95
\
96
if (N>0) {\
97
array = new T [N];\
98
n = N;\
99
for( MOuint i=0; i<n; i++) array[i] = initvalue;\
100
} else {\
101
n=0;\
102
array = NULL;\
103
}\
104
return (array!=NULL);\
105
}\
106
\
107
MOboolean name::Finish() {\
108
Empty();\
109
return true;\
110
}\
111
\
112
void name::Empty() {\
113
\
114
n = 0;\
115
if (array!=NULL) {\
116
delete[] array;\
117
array = NULL;\
118
}\
119
\
120
}\
121
\
122
void name::Set(int x, const T &value) {\
123
\
124
if ( 0<=x && x<(MOint)n && array!=NULL) array[x]=value;\
125
\
126
}\
127
\
128
void name::Insert(int x, const T &value) {\
129
\
130
if ( 0<=x && x<(MOint)n && array!=NULL) {\
131
\
132
MOuint i,j;\
133
T* arrayaux;\
134
\
135
arrayaux = new T [n+1];\
136
\
137
for( i=0,j=0 ; i < (n+1) ; i++,j++ ) { \
138
((int)i==x) ? arrayaux[j--] = value : arrayaux[i] = array[j];\
139
}\
140
arrayaux[n] = value;\
141
n++;\
142
\
143
if (array!=NULL) delete[] array;\
144
array = arrayaux;\
145
}\
146
\
147
}\
148
\
149
const T& name::Get(int x) const {\
150
\
151
if ( 0<=x && x<(MOint)n && array!=NULL) {\
152
\
153
return array[x];\
154
\
155
} else return m_NULL;\
156
}\
157
\
158
T& name::GetRef(int x) {\
159
\
160
if ( 0<=x && x<(MOint)n && array!=NULL) {\
161
\
162
return array[x];\
163
\
164
} else return m_NULL;\
165
}\
166
\
167
T& name::Item(int x) {\
168
\
169
if ( 0<=x && x<(MOint)n && array!=NULL) {\
170
\
171
return array[x];\
172
\
173
} else return m_NULL;\
174
}\
175
\
176
T& name::operator [] (int x) {\
177
if ( 0<=x && x<(MOint)n && array!=NULL) {\
178
\
179
return array[x];\
180
\
181
} else return m_NULL;\
182
}\
183
\
184
MOuint name::Count() const {\
185
return n;\
186
}\
187
\
188
void name::Add( const T& value ) {\
189
\
190
MOuint i;\
191
T* arrayaux;\
192
\
193
arrayaux = new T [n+1];\
194
\
195
if (array!=NULL)\
196
for( i=0 ; i < n ; i++ ) { \
197
arrayaux[i] = array[i];\
198
}\
199
arrayaux[n] = value;\
200
n++;\
201
\
202
if (array!=NULL) delete[] array;\
203
array = arrayaux;\
204
}\
205
\
206
void name::Remove(int x) {\
207
\
208
MOuint i,j;\
209
T* arrayaux;\
210
\
211
if ( (MOint)0<=x && x<(MOint)n && array!=NULL) {\
212
\
213
if ( n > 1 ) {\
214
arrayaux = new T [n-1];\
215
for( i=0, j=0; j < (n-1); i++, j++) {\
216
if ( x == (MOint)i ) {\
217
i++;\
218
}\
219
arrayaux[j] = array[i];\
220
}\
221
n--;\
222
} else {\
223
arrayaux = NULL;\
224
n = 0;\
225
}\
226
\
227
delete[] array;\
228
array = arrayaux;\
229
}\
230
}\
231
\
232
\
233
void name::Copy( const name &A) {\
234
Empty();\
235
for(MOuint i=0; i< A.n; i++) {\
236
Add( A.array[i] );\
237
}\
238
}\
239
\
240
void name::Copy( const name &A, int x0, int x1) {\
241
Empty();\
242
for(int i=x0; i<= x1; i++) {\
243
Add( A.array[i] );\
244
}\
245
}
246
247
// redefine the macro so that now it will generate the class implementation
248
// old value would provoke a compile-time error if this file is not included
249
#undef moDefineDynamicArray
250
#define moDefineDynamicArray(name) _moDefineDynamicArray( _moObjArray##name, name)
251
252
253
254
#endif
/* __MO_ARRAY_H__ */
255
moArrayH.h
libmoldeo
moArray.h
Generated on Wed May 17 2017 14:09:17 for libmoldeo (Moldeo 1.0 Core) by
1.8.8