autoc 1.1 → 1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.yardopts +3 -1
- data/CHANGES +15 -0
- data/README +2 -0
- data/doc/AutoC.html +84 -14
- data/doc/AutoC/Code.html +31 -31
- data/doc/AutoC/Collection.html +250 -182
- data/doc/AutoC/HashMap.html +565 -245
- data/doc/AutoC/HashSet.html +266 -264
- data/doc/AutoC/List.html +317 -249
- data/doc/AutoC/Module.html +66 -72
- data/doc/AutoC/Module/File.html +25 -25
- data/doc/AutoC/Module/Header.html +25 -25
- data/doc/AutoC/Module/Source.html +43 -43
- data/doc/AutoC/Priority.html +3 -3
- data/doc/AutoC/Queue.html +352 -286
- data/doc/AutoC/Reference.html +578 -0
- data/doc/AutoC/Type.html +941 -131
- data/doc/AutoC/UserDefinedType.html +64 -313
- data/doc/AutoC/Vector.html +336 -306
- data/doc/_index.html +22 -4
- data/doc/class_list.html +6 -2
- data/doc/file.CHANGES.html +102 -0
- data/doc/file.README.html +7 -4
- data/doc/file_list.html +8 -1
- data/doc/frames.html +1 -1
- data/doc/index.html +7 -4
- data/doc/js/full_list.js +4 -1
- data/doc/method_list.html +236 -118
- data/doc/top-level-namespace.html +3 -3
- data/lib/autoc.rb +3 -3
- data/lib/autoc/code.rb +11 -5
- data/lib/autoc/collection.rb +62 -56
- data/lib/autoc/collection/hash_map.rb +83 -63
- data/lib/autoc/collection/hash_set.rb +74 -64
- data/lib/autoc/collection/list.rb +48 -41
- data/lib/autoc/collection/queue.rb +53 -47
- data/lib/autoc/collection/vector.rb +63 -42
- data/lib/autoc/type.rb +326 -61
- data/test/test.c +120 -0
- data/test/test.rb +16 -2
- data/test/test_auto.c +1683 -987
- data/test/test_auto.h +491 -176
- metadata +22 -19
data/test/test_auto.h
CHANGED
@@ -35,13 +35,20 @@
|
|
35
35
|
#include "test.h"
|
36
36
|
|
37
37
|
/***
|
38
|
-
****
|
38
|
+
**** <int*> (AutoC::Reference)
|
39
|
+
***/
|
40
|
+
AUTOC_EXTERN int* IntNew();
|
41
|
+
AUTOC_EXTERN int* IntRef(int*);
|
42
|
+
AUTOC_EXTERN void IntFree(int*);
|
43
|
+
|
44
|
+
/***
|
45
|
+
**** IntStrMap<int,const char *> (AutoC::HashMap)
|
39
46
|
***/
|
40
47
|
|
41
48
|
typedef struct IntStrMapEntry IntStrMapEntry;
|
42
49
|
struct IntStrMapEntry {
|
43
50
|
int key;
|
44
|
-
const char* value;
|
51
|
+
const char * value;
|
45
52
|
unsigned flags;
|
46
53
|
};
|
47
54
|
|
@@ -85,23 +92,30 @@ struct IntStrMapIt {
|
|
85
92
|
IntStrMapSetIt it;
|
86
93
|
};
|
87
94
|
|
95
|
+
#define _IntStrMapCtor(self) IntStrMapCtor(&self)
|
96
|
+
#define _IntStrMapDtor(self) IntStrMapDtor(&self)
|
97
|
+
#define _IntStrMapIdentify(self) IntStrMapIdentify(&self)
|
98
|
+
#define _IntStrMapCopy(dst,src) IntStrMapCopy(&dst,&src)
|
99
|
+
#define _IntStrMapEqual(lt,rt) IntStrMapEqual(<,&rt)
|
100
|
+
#define _IntStrMapLess(lt,rt) IntStrMapLess(<,&rt)
|
101
|
+
|
88
102
|
AUTOC_EXTERN void IntStrMapCtor(IntStrMap*);
|
89
103
|
AUTOC_EXTERN void IntStrMapDtor(IntStrMap*);
|
90
|
-
AUTOC_EXTERN void IntStrMapCopy(IntStrMap*,
|
91
|
-
AUTOC_EXTERN int IntStrMapEqual(IntStrMap*,
|
104
|
+
AUTOC_EXTERN void IntStrMapCopy(IntStrMap*,IntStrMap*);
|
105
|
+
AUTOC_EXTERN int IntStrMapEqual(IntStrMap*,IntStrMap*);
|
92
106
|
AUTOC_EXTERN size_t IntStrMapIdentify(IntStrMap*);
|
93
107
|
AUTOC_EXTERN void IntStrMapPurge(IntStrMap*);
|
94
108
|
AUTOC_EXTERN size_t IntStrMapSize(IntStrMap*);
|
95
109
|
#define IntStrMapEmpty(self) (IntStrMapSize(self) == 0)
|
96
110
|
AUTOC_EXTERN int IntStrMapContainsKey(IntStrMap*, int);
|
97
|
-
AUTOC_EXTERN const char* IntStrMapGet(IntStrMap*, int);
|
98
|
-
AUTOC_EXTERN int IntStrMapPut(IntStrMap*, int, const char*);
|
99
|
-
AUTOC_EXTERN int IntStrMapReplace(IntStrMap*, int, const char*);
|
111
|
+
AUTOC_EXTERN const char * IntStrMapGet(IntStrMap*, int);
|
112
|
+
AUTOC_EXTERN int IntStrMapPut(IntStrMap*, int, const char *);
|
113
|
+
AUTOC_EXTERN int IntStrMapReplace(IntStrMap*, int, const char *);
|
100
114
|
AUTOC_EXTERN int IntStrMapRemove(IntStrMap*, int);
|
101
115
|
AUTOC_EXTERN void IntStrMapItCtor(IntStrMapIt*, IntStrMap*);
|
102
116
|
AUTOC_EXTERN int IntStrMapItMove(IntStrMapIt*);
|
103
117
|
AUTOC_EXTERN int IntStrMapItGetKey(IntStrMapIt*);
|
104
|
-
AUTOC_EXTERN const char* IntStrMapItGetElement(IntStrMapIt*);
|
118
|
+
AUTOC_EXTERN const char * IntStrMapItGetElement(IntStrMapIt*);
|
105
119
|
#define IntStrMapItGet(it) IntStrMapItGetElement(it)
|
106
120
|
|
107
121
|
/***
|
@@ -139,10 +153,17 @@ struct IntSetIt {
|
|
139
153
|
IntSetListIt it;
|
140
154
|
};
|
141
155
|
|
156
|
+
#define _IntSetCtor(self) IntSetCtor(&self)
|
157
|
+
#define _IntSetDtor(self) IntSetDtor(&self)
|
158
|
+
#define _IntSetIdentify(self) IntSetIdentify(&self)
|
159
|
+
#define _IntSetCopy(dst,src) IntSetCopy(&dst,&src)
|
160
|
+
#define _IntSetEqual(lt,rt) IntSetEqual(<,&rt)
|
161
|
+
#define _IntSetLess(lt,rt) IntSetLess(<,&rt)
|
162
|
+
|
142
163
|
AUTOC_EXTERN void IntSetCtor(IntSet*);
|
143
164
|
AUTOC_EXTERN void IntSetDtor(IntSet*);
|
144
|
-
AUTOC_EXTERN void IntSetCopy(IntSet*,
|
145
|
-
AUTOC_EXTERN int IntSetEqual(IntSet*,
|
165
|
+
AUTOC_EXTERN void IntSetCopy(IntSet*,IntSet*);
|
166
|
+
AUTOC_EXTERN int IntSetEqual(IntSet*,IntSet*);
|
146
167
|
AUTOC_EXTERN size_t IntSetIdentify(IntSet*);
|
147
168
|
AUTOC_EXTERN void IntSetPurge(IntSet*);
|
148
169
|
AUTOC_EXTERN int IntSetContains(IntSet*, int);
|
@@ -161,158 +182,197 @@ AUTOC_EXTERN int IntSetItMove(IntSetIt*);
|
|
161
182
|
AUTOC_EXTERN int IntSetItGet(IntSetIt*);
|
162
183
|
|
163
184
|
/***
|
164
|
-
****
|
185
|
+
**** ValueTypeVector<ValueType> (AutoC::Vector)
|
165
186
|
***/
|
166
187
|
|
167
|
-
typedef struct
|
168
|
-
typedef struct
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
ValueTypeQueueNode* tail_node;
|
173
|
-
size_t node_count;
|
174
|
-
};
|
175
|
-
struct ValueTypeQueueIt {
|
176
|
-
int start, forward;
|
177
|
-
ValueTypeQueue* queue;
|
178
|
-
ValueTypeQueueNode* this_node;
|
188
|
+
typedef struct ValueTypeVector ValueTypeVector;
|
189
|
+
typedef struct ValueTypeVectorIt ValueTypeVectorIt;
|
190
|
+
struct ValueTypeVector {
|
191
|
+
ValueType* values;
|
192
|
+
size_t element_count;
|
179
193
|
};
|
180
|
-
struct
|
181
|
-
|
182
|
-
|
183
|
-
|
194
|
+
struct ValueTypeVectorIt {
|
195
|
+
ValueTypeVector* vector;
|
196
|
+
int index;
|
197
|
+
int forward;
|
184
198
|
};
|
185
199
|
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
AUTOC_EXTERN
|
194
|
-
AUTOC_EXTERN
|
195
|
-
|
196
|
-
AUTOC_EXTERN
|
197
|
-
AUTOC_EXTERN
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
200
|
+
#define _ValueTypeVectorCtor(self,element_count) ValueTypeVectorCtor(&self,element_count)
|
201
|
+
#define _ValueTypeVectorDtor(self) ValueTypeVectorDtor(&self)
|
202
|
+
#define _ValueTypeVectorIdentify(self) ValueTypeVectorIdentify(&self)
|
203
|
+
#define _ValueTypeVectorCopy(dst,src) ValueTypeVectorCopy(&dst,&src)
|
204
|
+
#define _ValueTypeVectorEqual(lt,rt) ValueTypeVectorEqual(<,&rt)
|
205
|
+
#define _ValueTypeVectorLess(lt,rt) ValueTypeVectorLess(<,&rt)
|
206
|
+
|
207
|
+
AUTOC_EXTERN void ValueTypeVectorCtor(ValueTypeVector*,size_t);
|
208
|
+
AUTOC_EXTERN void ValueTypeVectorDtor(ValueTypeVector*);
|
209
|
+
AUTOC_EXTERN void ValueTypeVectorCopy(ValueTypeVector*,ValueTypeVector*);
|
210
|
+
AUTOC_EXTERN int ValueTypeVectorEqual(ValueTypeVector*,ValueTypeVector*);
|
211
|
+
AUTOC_EXTERN size_t ValueTypeVectorIdentify(ValueTypeVector*);
|
212
|
+
AUTOC_EXTERN void ValueTypeVectorResize(ValueTypeVector*, size_t);
|
213
|
+
AUTOC_INLINE size_t ValueTypeVectorSize(ValueTypeVector* self) {
|
214
|
+
assert(self);
|
215
|
+
return self->element_count;
|
216
|
+
}
|
217
|
+
AUTOC_INLINE int ValueTypeVectorWithin(ValueTypeVector* self, size_t index) {
|
218
|
+
assert(self);
|
219
|
+
return index < ValueTypeVectorSize(self);
|
220
|
+
}
|
221
|
+
AUTOC_INLINE ValueType ValueTypeVectorGet(ValueTypeVector* self, size_t index) {
|
222
|
+
ValueType result;
|
223
|
+
assert(self);
|
224
|
+
assert(ValueTypeVectorWithin(self, index));
|
225
|
+
ValueTypeCopy(result,self->values[index]);
|
226
|
+
return result;
|
227
|
+
}
|
228
|
+
AUTOC_INLINE void ValueTypeVectorSet(ValueTypeVector* self, size_t index, ValueType value) {
|
229
|
+
assert(self);
|
230
|
+
assert(ValueTypeVectorWithin(self, index));
|
231
|
+
ValueTypeDtor(self->values[index]);
|
232
|
+
ValueTypeCopy(self->values[index],value);
|
233
|
+
}
|
234
|
+
#define ValueTypeVectorItCtor(self, type) ValueTypeVectorItCtorEx(self, type, 1)
|
235
|
+
AUTOC_INLINE void ValueTypeVectorItCtorEx(ValueTypeVectorIt* self, ValueTypeVector* vector, int forward) {
|
236
|
+
assert(self);
|
237
|
+
assert(vector);
|
238
|
+
self->vector = vector;
|
239
|
+
self->forward = forward;
|
240
|
+
self->index = forward ? -1 : ValueTypeVectorSize(vector);
|
241
|
+
}
|
242
|
+
AUTOC_INLINE int ValueTypeVectorItMove(ValueTypeVectorIt* self) {
|
243
|
+
assert(self);
|
244
|
+
if(self->forward) ++self->index;
|
245
|
+
else --self->index;
|
246
|
+
return ValueTypeVectorWithin(self->vector, self->index);
|
247
|
+
}
|
248
|
+
AUTOC_INLINE ValueType ValueTypeVectorItGet(ValueTypeVectorIt* self) {
|
249
|
+
assert(self);
|
250
|
+
return ValueTypeVectorGet(self->vector, self->index);
|
251
|
+
}
|
252
|
+
|
253
|
+
AUTOC_EXTERN void ValueTypeVectorSort(ValueTypeVector*);
|
216
254
|
|
217
255
|
/***
|
218
|
-
****
|
256
|
+
**** ListIntSet<IntSet> (AutoC::List)
|
219
257
|
***/
|
220
258
|
|
221
|
-
typedef struct
|
222
|
-
typedef struct
|
223
|
-
typedef struct
|
224
|
-
struct
|
225
|
-
|
259
|
+
typedef struct ListIntSetNode ListIntSetNode;
|
260
|
+
typedef struct ListIntSet ListIntSet;
|
261
|
+
typedef struct ListIntSetIt ListIntSetIt;
|
262
|
+
struct ListIntSet {
|
263
|
+
ListIntSetNode* head_node;
|
226
264
|
size_t node_count;
|
227
265
|
};
|
228
|
-
struct
|
266
|
+
struct ListIntSetIt {
|
229
267
|
int start;
|
230
|
-
|
231
|
-
|
232
|
-
};
|
233
|
-
struct
|
234
|
-
|
235
|
-
|
236
|
-
};
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
AUTOC_EXTERN
|
246
|
-
AUTOC_EXTERN void
|
247
|
-
AUTOC_EXTERN
|
248
|
-
AUTOC_EXTERN
|
249
|
-
|
250
|
-
|
251
|
-
AUTOC_EXTERN
|
252
|
-
|
253
|
-
|
254
|
-
AUTOC_EXTERN int
|
255
|
-
AUTOC_EXTERN
|
256
|
-
#define
|
257
|
-
|
258
|
-
AUTOC_EXTERN int
|
259
|
-
|
268
|
+
ListIntSet* list;
|
269
|
+
ListIntSetNode* this_node;
|
270
|
+
};
|
271
|
+
struct ListIntSetNode {
|
272
|
+
IntSet element;
|
273
|
+
ListIntSetNode* next_node;
|
274
|
+
};
|
275
|
+
|
276
|
+
#define _ListIntSetCtor(self) ListIntSetCtor(&self)
|
277
|
+
#define _ListIntSetDtor(self) ListIntSetDtor(&self)
|
278
|
+
#define _ListIntSetIdentify(self) ListIntSetIdentify(&self)
|
279
|
+
#define _ListIntSetCopy(dst,src) ListIntSetCopy(&dst,&src)
|
280
|
+
#define _ListIntSetEqual(lt,rt) ListIntSetEqual(<,&rt)
|
281
|
+
#define _ListIntSetLess(lt,rt) ListIntSetLess(<,&rt)
|
282
|
+
|
283
|
+
AUTOC_EXTERN void ListIntSetCtor(ListIntSet*);
|
284
|
+
AUTOC_EXTERN void ListIntSetDtor(ListIntSet*);
|
285
|
+
AUTOC_EXTERN void ListIntSetCopy(ListIntSet*,ListIntSet*);
|
286
|
+
AUTOC_EXTERN int ListIntSetEqual(ListIntSet*,ListIntSet*);
|
287
|
+
AUTOC_EXTERN size_t ListIntSetIdentify(ListIntSet*);
|
288
|
+
AUTOC_EXTERN void ListIntSetPurge(ListIntSet*);
|
289
|
+
AUTOC_EXTERN IntSet ListIntSetPeek(ListIntSet*);
|
290
|
+
AUTOC_EXTERN IntSet ListIntSetPop(ListIntSet*);
|
291
|
+
AUTOC_EXTERN void ListIntSetPush(ListIntSet*, IntSet);
|
292
|
+
AUTOC_EXTERN int ListIntSetContains(ListIntSet*, IntSet);
|
293
|
+
AUTOC_EXTERN IntSet ListIntSetFind(ListIntSet*, IntSet);
|
294
|
+
#define ListIntSetReplace(self, with) ListIntSetReplaceEx(self, with, 1)
|
295
|
+
#define ListIntSetReplaceAll(self, with) ListIntSetReplaceEx(self, with, -1)
|
296
|
+
AUTOC_EXTERN int ListIntSetReplaceEx(ListIntSet*, IntSet, int);
|
297
|
+
#define ListIntSetRemove(self, what) ListIntSetRemoveEx(self, what, 1)
|
298
|
+
#define ListIntSetRemoveAll(self, what) ListIntSetRemoveEx(self, what, -1)
|
299
|
+
AUTOC_EXTERN int ListIntSetRemoveEx(ListIntSet*, IntSet, int);
|
300
|
+
AUTOC_EXTERN size_t ListIntSetSize(ListIntSet*);
|
301
|
+
#define ListIntSetEmpty(self) (ListIntSetSize(self) == 0)
|
302
|
+
AUTOC_EXTERN void ListIntSetItCtor(ListIntSetIt*, ListIntSet*);
|
303
|
+
AUTOC_EXTERN int ListIntSetItMove(ListIntSetIt*);
|
304
|
+
AUTOC_EXTERN IntSet ListIntSetItGet(ListIntSetIt*);
|
260
305
|
|
261
306
|
/***
|
262
|
-
****
|
307
|
+
**** PIntVector<int*> (AutoC::Vector)
|
263
308
|
***/
|
264
309
|
|
265
|
-
typedef struct
|
266
|
-
typedef struct
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
size_t node_count;
|
271
|
-
};
|
272
|
-
struct ValueTypeSetListIt {
|
273
|
-
int start;
|
274
|
-
ValueTypeSetList* list;
|
275
|
-
ValueTypeSetListNode* this_node;
|
310
|
+
typedef struct PIntVector PIntVector;
|
311
|
+
typedef struct PIntVectorIt PIntVectorIt;
|
312
|
+
struct PIntVector {
|
313
|
+
int** values;
|
314
|
+
size_t element_count;
|
276
315
|
};
|
277
|
-
struct
|
278
|
-
|
279
|
-
|
316
|
+
struct PIntVectorIt {
|
317
|
+
PIntVector* vector;
|
318
|
+
int index;
|
319
|
+
int forward;
|
280
320
|
};
|
281
321
|
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
322
|
+
#define _PIntVectorCtor(self,element_count) PIntVectorCtor(&self,element_count)
|
323
|
+
#define _PIntVectorDtor(self) PIntVectorDtor(&self)
|
324
|
+
#define _PIntVectorIdentify(self) PIntVectorIdentify(&self)
|
325
|
+
#define _PIntVectorCopy(dst,src) PIntVectorCopy(&dst,&src)
|
326
|
+
#define _PIntVectorEqual(lt,rt) PIntVectorEqual(<,&rt)
|
327
|
+
#define _PIntVectorLess(lt,rt) PIntVectorLess(<,&rt)
|
328
|
+
|
329
|
+
AUTOC_EXTERN void PIntVectorCtor(PIntVector*,size_t);
|
330
|
+
AUTOC_EXTERN void PIntVectorDtor(PIntVector*);
|
331
|
+
AUTOC_EXTERN void PIntVectorCopy(PIntVector*,PIntVector*);
|
332
|
+
AUTOC_EXTERN int PIntVectorEqual(PIntVector*,PIntVector*);
|
333
|
+
AUTOC_EXTERN size_t PIntVectorIdentify(PIntVector*);
|
334
|
+
AUTOC_EXTERN void PIntVectorResize(PIntVector*, size_t);
|
335
|
+
AUTOC_INLINE size_t PIntVectorSize(PIntVector* self) {
|
336
|
+
assert(self);
|
337
|
+
return self->element_count;
|
338
|
+
}
|
339
|
+
AUTOC_INLINE int PIntVectorWithin(PIntVector* self, size_t index) {
|
340
|
+
assert(self);
|
341
|
+
return index < PIntVectorSize(self);
|
342
|
+
}
|
343
|
+
AUTOC_INLINE int* PIntVectorGet(PIntVector* self, size_t index) {
|
344
|
+
int* result;
|
345
|
+
assert(self);
|
346
|
+
assert(PIntVectorWithin(self, index));
|
347
|
+
((result) = IntRef(self->values[index]));
|
348
|
+
return result;
|
349
|
+
}
|
350
|
+
AUTOC_INLINE void PIntVectorSet(PIntVector* self, size_t index, int* value) {
|
351
|
+
assert(self);
|
352
|
+
assert(PIntVectorWithin(self, index));
|
353
|
+
IntFree(self->values[index]);
|
354
|
+
((self->values[index]) = IntRef(value));
|
355
|
+
}
|
356
|
+
#define PIntVectorItCtor(self, type) PIntVectorItCtorEx(self, type, 1)
|
357
|
+
AUTOC_INLINE void PIntVectorItCtorEx(PIntVectorIt* self, PIntVector* vector, int forward) {
|
358
|
+
assert(self);
|
359
|
+
assert(vector);
|
360
|
+
self->vector = vector;
|
361
|
+
self->forward = forward;
|
362
|
+
self->index = forward ? -1 : PIntVectorSize(vector);
|
363
|
+
}
|
364
|
+
AUTOC_INLINE int PIntVectorItMove(PIntVectorIt* self) {
|
365
|
+
assert(self);
|
366
|
+
if(self->forward) ++self->index;
|
367
|
+
else --self->index;
|
368
|
+
return PIntVectorWithin(self->vector, self->index);
|
369
|
+
}
|
370
|
+
AUTOC_INLINE int* PIntVectorItGet(PIntVectorIt* self) {
|
371
|
+
assert(self);
|
372
|
+
return PIntVectorGet(self->vector, self->index);
|
373
|
+
}
|
295
374
|
|
296
|
-
AUTOC_EXTERN void
|
297
|
-
AUTOC_EXTERN void ValueTypeSetDtor(ValueTypeSet*);
|
298
|
-
AUTOC_EXTERN void ValueTypeSetCopy(ValueTypeSet*, ValueTypeSet*);
|
299
|
-
AUTOC_EXTERN int ValueTypeSetEqual(ValueTypeSet*, ValueTypeSet*);
|
300
|
-
AUTOC_EXTERN size_t ValueTypeSetIdentify(ValueTypeSet*);
|
301
|
-
AUTOC_EXTERN void ValueTypeSetPurge(ValueTypeSet*);
|
302
|
-
AUTOC_EXTERN int ValueTypeSetContains(ValueTypeSet*, ValueType);
|
303
|
-
AUTOC_EXTERN ValueType ValueTypeSetGet(ValueTypeSet*, ValueType);
|
304
|
-
AUTOC_EXTERN size_t ValueTypeSetSize(ValueTypeSet*);
|
305
|
-
#define ValueTypeSetEmpty(self) (ValueTypeSetSize(self) == 0)
|
306
|
-
AUTOC_EXTERN int ValueTypeSetPut(ValueTypeSet*, ValueType);
|
307
|
-
AUTOC_EXTERN int ValueTypeSetReplace(ValueTypeSet*, ValueType);
|
308
|
-
AUTOC_EXTERN int ValueTypeSetRemove(ValueTypeSet*, ValueType);
|
309
|
-
AUTOC_EXTERN void ValueTypeSetExclude(ValueTypeSet*, ValueTypeSet*);
|
310
|
-
AUTOC_EXTERN void ValueTypeSetRetain(ValueTypeSet*, ValueTypeSet*);
|
311
|
-
AUTOC_EXTERN void ValueTypeSetInclude(ValueTypeSet*, ValueTypeSet*);
|
312
|
-
AUTOC_EXTERN void ValueTypeSetInvert(ValueTypeSet*, ValueTypeSet*);
|
313
|
-
AUTOC_EXTERN void ValueTypeSetItCtor(ValueTypeSetIt*, ValueTypeSet*);
|
314
|
-
AUTOC_EXTERN int ValueTypeSetItMove(ValueTypeSetIt*);
|
315
|
-
AUTOC_EXTERN ValueType ValueTypeSetItGet(ValueTypeSetIt*);
|
375
|
+
AUTOC_EXTERN void PIntVectorSort(PIntVector*);
|
316
376
|
|
317
377
|
/***
|
318
378
|
**** ValueTypeMap<ValueType,ValueType> (AutoC::HashMap)
|
@@ -365,10 +425,17 @@ struct ValueTypeMapIt {
|
|
365
425
|
ValueTypeMapSetIt it;
|
366
426
|
};
|
367
427
|
|
428
|
+
#define _ValueTypeMapCtor(self) ValueTypeMapCtor(&self)
|
429
|
+
#define _ValueTypeMapDtor(self) ValueTypeMapDtor(&self)
|
430
|
+
#define _ValueTypeMapIdentify(self) ValueTypeMapIdentify(&self)
|
431
|
+
#define _ValueTypeMapCopy(dst,src) ValueTypeMapCopy(&dst,&src)
|
432
|
+
#define _ValueTypeMapEqual(lt,rt) ValueTypeMapEqual(<,&rt)
|
433
|
+
#define _ValueTypeMapLess(lt,rt) ValueTypeMapLess(<,&rt)
|
434
|
+
|
368
435
|
AUTOC_EXTERN void ValueTypeMapCtor(ValueTypeMap*);
|
369
436
|
AUTOC_EXTERN void ValueTypeMapDtor(ValueTypeMap*);
|
370
|
-
AUTOC_EXTERN void ValueTypeMapCopy(ValueTypeMap*,
|
371
|
-
AUTOC_EXTERN int ValueTypeMapEqual(ValueTypeMap*,
|
437
|
+
AUTOC_EXTERN void ValueTypeMapCopy(ValueTypeMap*,ValueTypeMap*);
|
438
|
+
AUTOC_EXTERN int ValueTypeMapEqual(ValueTypeMap*,ValueTypeMap*);
|
372
439
|
AUTOC_EXTERN size_t ValueTypeMapIdentify(ValueTypeMap*);
|
373
440
|
AUTOC_EXTERN void ValueTypeMapPurge(ValueTypeMap*);
|
374
441
|
AUTOC_EXTERN size_t ValueTypeMapSize(ValueTypeMap*);
|
@@ -385,66 +452,314 @@ AUTOC_EXTERN ValueType ValueTypeMapItGetElement(ValueTypeMapIt*);
|
|
385
452
|
#define ValueTypeMapItGet(it) ValueTypeMapItGetElement(it)
|
386
453
|
|
387
454
|
/***
|
388
|
-
****
|
455
|
+
**** ValueTypeSet<ValueType> (AutoC::HashSet)
|
389
456
|
***/
|
390
457
|
|
391
|
-
typedef struct
|
392
|
-
typedef struct
|
393
|
-
struct
|
394
|
-
|
458
|
+
typedef struct ValueTypeSetListNode ValueTypeSetListNode;
|
459
|
+
typedef struct ValueTypeSetList ValueTypeSetList;
|
460
|
+
typedef struct ValueTypeSetListIt ValueTypeSetListIt;
|
461
|
+
struct ValueTypeSetList {
|
462
|
+
ValueTypeSetListNode* head_node;
|
463
|
+
size_t node_count;
|
464
|
+
};
|
465
|
+
struct ValueTypeSetListIt {
|
466
|
+
int start;
|
467
|
+
ValueTypeSetList* list;
|
468
|
+
ValueTypeSetListNode* this_node;
|
469
|
+
};
|
470
|
+
struct ValueTypeSetListNode {
|
471
|
+
ValueType element;
|
472
|
+
ValueTypeSetListNode* next_node;
|
473
|
+
};
|
474
|
+
|
475
|
+
typedef struct ValueTypeSet ValueTypeSet;
|
476
|
+
typedef struct ValueTypeSetIt ValueTypeSetIt;
|
477
|
+
struct ValueTypeSet {
|
478
|
+
ValueTypeSetList* buckets;
|
479
|
+
size_t bucket_count, min_bucket_count;
|
480
|
+
size_t size, min_size, max_size;
|
481
|
+
unsigned min_fill, max_fill, capacity_multiplier; /* ?*1e-2 */
|
482
|
+
};
|
483
|
+
struct ValueTypeSetIt {
|
484
|
+
ValueTypeSet* set;
|
485
|
+
int bucket_index;
|
486
|
+
ValueTypeSetListIt it;
|
487
|
+
};
|
488
|
+
|
489
|
+
#define _ValueTypeSetCtor(self) ValueTypeSetCtor(&self)
|
490
|
+
#define _ValueTypeSetDtor(self) ValueTypeSetDtor(&self)
|
491
|
+
#define _ValueTypeSetIdentify(self) ValueTypeSetIdentify(&self)
|
492
|
+
#define _ValueTypeSetCopy(dst,src) ValueTypeSetCopy(&dst,&src)
|
493
|
+
#define _ValueTypeSetEqual(lt,rt) ValueTypeSetEqual(<,&rt)
|
494
|
+
#define _ValueTypeSetLess(lt,rt) ValueTypeSetLess(<,&rt)
|
495
|
+
|
496
|
+
AUTOC_EXTERN void ValueTypeSetCtor(ValueTypeSet*);
|
497
|
+
AUTOC_EXTERN void ValueTypeSetDtor(ValueTypeSet*);
|
498
|
+
AUTOC_EXTERN void ValueTypeSetCopy(ValueTypeSet*,ValueTypeSet*);
|
499
|
+
AUTOC_EXTERN int ValueTypeSetEqual(ValueTypeSet*,ValueTypeSet*);
|
500
|
+
AUTOC_EXTERN size_t ValueTypeSetIdentify(ValueTypeSet*);
|
501
|
+
AUTOC_EXTERN void ValueTypeSetPurge(ValueTypeSet*);
|
502
|
+
AUTOC_EXTERN int ValueTypeSetContains(ValueTypeSet*, ValueType);
|
503
|
+
AUTOC_EXTERN ValueType ValueTypeSetGet(ValueTypeSet*, ValueType);
|
504
|
+
AUTOC_EXTERN size_t ValueTypeSetSize(ValueTypeSet*);
|
505
|
+
#define ValueTypeSetEmpty(self) (ValueTypeSetSize(self) == 0)
|
506
|
+
AUTOC_EXTERN int ValueTypeSetPut(ValueTypeSet*, ValueType);
|
507
|
+
AUTOC_EXTERN int ValueTypeSetReplace(ValueTypeSet*, ValueType);
|
508
|
+
AUTOC_EXTERN int ValueTypeSetRemove(ValueTypeSet*, ValueType);
|
509
|
+
AUTOC_EXTERN void ValueTypeSetExclude(ValueTypeSet*, ValueTypeSet*);
|
510
|
+
AUTOC_EXTERN void ValueTypeSetRetain(ValueTypeSet*, ValueTypeSet*);
|
511
|
+
AUTOC_EXTERN void ValueTypeSetInclude(ValueTypeSet*, ValueTypeSet*);
|
512
|
+
AUTOC_EXTERN void ValueTypeSetInvert(ValueTypeSet*, ValueTypeSet*);
|
513
|
+
AUTOC_EXTERN void ValueTypeSetItCtor(ValueTypeSetIt*, ValueTypeSet*);
|
514
|
+
AUTOC_EXTERN int ValueTypeSetItMove(ValueTypeSetIt*);
|
515
|
+
AUTOC_EXTERN ValueType ValueTypeSetItGet(ValueTypeSetIt*);
|
516
|
+
|
517
|
+
/***
|
518
|
+
**** <ValueType*> (AutoC::Reference)
|
519
|
+
***/
|
520
|
+
AUTOC_EXTERN ValueType* ValueTypeNew();
|
521
|
+
AUTOC_EXTERN ValueType* ValueTypeRef(ValueType*);
|
522
|
+
AUTOC_EXTERN void ValueTypeFree(ValueType*);
|
523
|
+
|
524
|
+
/***
|
525
|
+
**** ValueTypeList<ValueType> (AutoC::List)
|
526
|
+
***/
|
527
|
+
|
528
|
+
typedef struct ValueTypeListNode ValueTypeListNode;
|
529
|
+
typedef struct ValueTypeList ValueTypeList;
|
530
|
+
typedef struct ValueTypeListIt ValueTypeListIt;
|
531
|
+
struct ValueTypeList {
|
532
|
+
ValueTypeListNode* head_node;
|
533
|
+
size_t node_count;
|
534
|
+
};
|
535
|
+
struct ValueTypeListIt {
|
536
|
+
int start;
|
537
|
+
ValueTypeList* list;
|
538
|
+
ValueTypeListNode* this_node;
|
539
|
+
};
|
540
|
+
struct ValueTypeListNode {
|
541
|
+
ValueType element;
|
542
|
+
ValueTypeListNode* next_node;
|
543
|
+
};
|
544
|
+
|
545
|
+
#define _ValueTypeListCtor(self) ValueTypeListCtor(&self)
|
546
|
+
#define _ValueTypeListDtor(self) ValueTypeListDtor(&self)
|
547
|
+
#define _ValueTypeListIdentify(self) ValueTypeListIdentify(&self)
|
548
|
+
#define _ValueTypeListCopy(dst,src) ValueTypeListCopy(&dst,&src)
|
549
|
+
#define _ValueTypeListEqual(lt,rt) ValueTypeListEqual(<,&rt)
|
550
|
+
#define _ValueTypeListLess(lt,rt) ValueTypeListLess(<,&rt)
|
551
|
+
|
552
|
+
AUTOC_EXTERN void ValueTypeListCtor(ValueTypeList*);
|
553
|
+
AUTOC_EXTERN void ValueTypeListDtor(ValueTypeList*);
|
554
|
+
AUTOC_EXTERN void ValueTypeListCopy(ValueTypeList*,ValueTypeList*);
|
555
|
+
AUTOC_EXTERN int ValueTypeListEqual(ValueTypeList*,ValueTypeList*);
|
556
|
+
AUTOC_EXTERN size_t ValueTypeListIdentify(ValueTypeList*);
|
557
|
+
AUTOC_EXTERN void ValueTypeListPurge(ValueTypeList*);
|
558
|
+
AUTOC_EXTERN ValueType ValueTypeListPeek(ValueTypeList*);
|
559
|
+
AUTOC_EXTERN ValueType ValueTypeListPop(ValueTypeList*);
|
560
|
+
AUTOC_EXTERN void ValueTypeListPush(ValueTypeList*, ValueType);
|
561
|
+
AUTOC_EXTERN int ValueTypeListContains(ValueTypeList*, ValueType);
|
562
|
+
AUTOC_EXTERN ValueType ValueTypeListFind(ValueTypeList*, ValueType);
|
563
|
+
#define ValueTypeListReplace(self, with) ValueTypeListReplaceEx(self, with, 1)
|
564
|
+
#define ValueTypeListReplaceAll(self, with) ValueTypeListReplaceEx(self, with, -1)
|
565
|
+
AUTOC_EXTERN int ValueTypeListReplaceEx(ValueTypeList*, ValueType, int);
|
566
|
+
#define ValueTypeListRemove(self, what) ValueTypeListRemoveEx(self, what, 1)
|
567
|
+
#define ValueTypeListRemoveAll(self, what) ValueTypeListRemoveEx(self, what, -1)
|
568
|
+
AUTOC_EXTERN int ValueTypeListRemoveEx(ValueTypeList*, ValueType, int);
|
569
|
+
AUTOC_EXTERN size_t ValueTypeListSize(ValueTypeList*);
|
570
|
+
#define ValueTypeListEmpty(self) (ValueTypeListSize(self) == 0)
|
571
|
+
AUTOC_EXTERN void ValueTypeListItCtor(ValueTypeListIt*, ValueTypeList*);
|
572
|
+
AUTOC_EXTERN int ValueTypeListItMove(ValueTypeListIt*);
|
573
|
+
AUTOC_EXTERN ValueType ValueTypeListItGet(ValueTypeListIt*);
|
574
|
+
|
575
|
+
/***
|
576
|
+
**** ValueTypeQueue<ValueType> (AutoC::Queue)
|
577
|
+
***/
|
578
|
+
|
579
|
+
typedef struct ValueTypeQueueNode ValueTypeQueueNode;
|
580
|
+
typedef struct ValueTypeQueue ValueTypeQueue;
|
581
|
+
typedef struct ValueTypeQueueIt ValueTypeQueueIt;
|
582
|
+
struct ValueTypeQueue {
|
583
|
+
ValueTypeQueueNode* head_node;
|
584
|
+
ValueTypeQueueNode* tail_node;
|
585
|
+
size_t node_count;
|
586
|
+
};
|
587
|
+
struct ValueTypeQueueIt {
|
588
|
+
int start, forward;
|
589
|
+
ValueTypeQueue* queue;
|
590
|
+
ValueTypeQueueNode* this_node;
|
591
|
+
};
|
592
|
+
struct ValueTypeQueueNode {
|
593
|
+
ValueType element;
|
594
|
+
ValueTypeQueueNode* prev_node;
|
595
|
+
ValueTypeQueueNode* next_node;
|
596
|
+
};
|
597
|
+
|
598
|
+
#define _ValueTypeQueueCtor(self) ValueTypeQueueCtor(&self)
|
599
|
+
#define _ValueTypeQueueDtor(self) ValueTypeQueueDtor(&self)
|
600
|
+
#define _ValueTypeQueueIdentify(self) ValueTypeQueueIdentify(&self)
|
601
|
+
#define _ValueTypeQueueCopy(dst,src) ValueTypeQueueCopy(&dst,&src)
|
602
|
+
#define _ValueTypeQueueEqual(lt,rt) ValueTypeQueueEqual(<,&rt)
|
603
|
+
#define _ValueTypeQueueLess(lt,rt) ValueTypeQueueLess(<,&rt)
|
604
|
+
|
605
|
+
AUTOC_EXTERN void ValueTypeQueueCtor(ValueTypeQueue*);
|
606
|
+
AUTOC_EXTERN void ValueTypeQueueDtor(ValueTypeQueue*);
|
607
|
+
AUTOC_EXTERN void ValueTypeQueueCopy(ValueTypeQueue*,ValueTypeQueue*);
|
608
|
+
AUTOC_EXTERN int ValueTypeQueueEqual(ValueTypeQueue*,ValueTypeQueue*);
|
609
|
+
AUTOC_EXTERN size_t ValueTypeQueueIdentify(ValueTypeQueue*);
|
610
|
+
AUTOC_EXTERN void ValueTypeQueuePurge(ValueTypeQueue*);
|
611
|
+
#define ValueTypeQueuePeek(self) ValueTypeQueuePeekHead(self)
|
612
|
+
AUTOC_EXTERN ValueType ValueTypeQueuePeekHead(ValueTypeQueue*);
|
613
|
+
AUTOC_EXTERN ValueType ValueTypeQueuePeekTail(ValueTypeQueue*);
|
614
|
+
#define ValueTypeQueuePush(self, element) ValueTypeQueuePushTail(self, element)
|
615
|
+
AUTOC_EXTERN void ValueTypeQueuePushTail(ValueTypeQueue*, ValueType);
|
616
|
+
AUTOC_EXTERN void ValueTypeQueuePushHead(ValueTypeQueue*, ValueType);
|
617
|
+
#define ValueTypeQueuePop(self) ValueTypeQueuePopHead(self)
|
618
|
+
AUTOC_EXTERN ValueType ValueTypeQueuePopHead(ValueTypeQueue*);
|
619
|
+
AUTOC_EXTERN ValueType ValueTypeQueuePopTail(ValueTypeQueue*);
|
620
|
+
AUTOC_EXTERN int ValueTypeQueueContains(ValueTypeQueue*, ValueType);
|
621
|
+
AUTOC_EXTERN ValueType ValueTypeQueueFind(ValueTypeQueue*, ValueType);
|
622
|
+
#define ValueTypeQueueReplace(self, with) ValueTypeQueueReplaceEx(self, with, 1)
|
623
|
+
#define ValueTypeQueueReplaceAll(self, with) ValueTypeQueueReplaceEx(self, with, -1)
|
624
|
+
AUTOC_EXTERN int ValueTypeQueueReplaceEx(ValueTypeQueue*, ValueType, int);
|
625
|
+
#define ValueTypeQueueRemove(self, what) ValueTypeQueueRemoveEx(self, what, 1)
|
626
|
+
#define ValueTypeQueueRemoveAll(self, what) ValueTypeQueueRemoveEx(self, what, -1)
|
627
|
+
AUTOC_EXTERN int ValueTypeQueueRemoveEx(ValueTypeQueue*, ValueType, int);
|
628
|
+
AUTOC_EXTERN size_t ValueTypeQueueSize(ValueTypeQueue*);
|
629
|
+
#define ValueTypeQueueEmpty(self) (ValueTypeQueueSize(self) == 0)
|
630
|
+
AUTOC_EXTERN void ValueTypeQueueItCtor(ValueTypeQueueIt*, ValueTypeQueue*);
|
631
|
+
#define ValueTypeQueueItCtor(self, type) ValueTypeQueueItCtorEx(self, type, 1)
|
632
|
+
AUTOC_EXTERN void ValueTypeQueueItCtorEx(ValueTypeQueueIt*, ValueTypeQueue*, int);
|
633
|
+
AUTOC_EXTERN int ValueTypeQueueItMove(ValueTypeQueueIt*);
|
634
|
+
AUTOC_EXTERN ValueType ValueTypeQueueItGet(ValueTypeQueueIt*);
|
635
|
+
|
636
|
+
/***
|
637
|
+
**** PVectorValue<ValueType*> (AutoC::Vector)
|
638
|
+
***/
|
639
|
+
|
640
|
+
typedef struct PVectorValue PVectorValue;
|
641
|
+
typedef struct PVectorValueIt PVectorValueIt;
|
642
|
+
struct PVectorValue {
|
643
|
+
ValueType** values;
|
395
644
|
size_t element_count;
|
396
645
|
};
|
397
|
-
struct
|
398
|
-
|
646
|
+
struct PVectorValueIt {
|
647
|
+
PVectorValue* vector;
|
399
648
|
int index;
|
400
649
|
int forward;
|
401
650
|
};
|
402
651
|
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
652
|
+
#define _PVectorValueCtor(self,element_count) PVectorValueCtor(&self,element_count)
|
653
|
+
#define _PVectorValueDtor(self) PVectorValueDtor(&self)
|
654
|
+
#define _PVectorValueIdentify(self) PVectorValueIdentify(&self)
|
655
|
+
#define _PVectorValueCopy(dst,src) PVectorValueCopy(&dst,&src)
|
656
|
+
#define _PVectorValueEqual(lt,rt) PVectorValueEqual(<,&rt)
|
657
|
+
#define _PVectorValueLess(lt,rt) PVectorValueLess(<,&rt)
|
658
|
+
|
659
|
+
AUTOC_EXTERN void PVectorValueCtor(PVectorValue*,size_t);
|
660
|
+
AUTOC_EXTERN void PVectorValueDtor(PVectorValue*);
|
661
|
+
AUTOC_EXTERN void PVectorValueCopy(PVectorValue*,PVectorValue*);
|
662
|
+
AUTOC_EXTERN int PVectorValueEqual(PVectorValue*,PVectorValue*);
|
663
|
+
AUTOC_EXTERN size_t PVectorValueIdentify(PVectorValue*);
|
664
|
+
AUTOC_EXTERN void PVectorValueResize(PVectorValue*, size_t);
|
665
|
+
AUTOC_INLINE size_t PVectorValueSize(PVectorValue* self) {
|
410
666
|
assert(self);
|
411
667
|
return self->element_count;
|
412
668
|
}
|
413
|
-
AUTOC_INLINE int
|
669
|
+
AUTOC_INLINE int PVectorValueWithin(PVectorValue* self, size_t index) {
|
414
670
|
assert(self);
|
415
|
-
return index <
|
671
|
+
return index < PVectorValueSize(self);
|
416
672
|
}
|
417
|
-
AUTOC_INLINE ValueType
|
418
|
-
ValueType result;
|
673
|
+
AUTOC_INLINE ValueType* PVectorValueGet(PVectorValue* self, size_t index) {
|
674
|
+
ValueType* result;
|
419
675
|
assert(self);
|
420
|
-
assert(
|
421
|
-
|
676
|
+
assert(PVectorValueWithin(self, index));
|
677
|
+
((result) = ValueTypeRef(self->values[index]));
|
422
678
|
return result;
|
423
679
|
}
|
424
|
-
AUTOC_INLINE void
|
680
|
+
AUTOC_INLINE void PVectorValueSet(PVectorValue* self, size_t index, ValueType* value) {
|
425
681
|
assert(self);
|
426
|
-
assert(
|
427
|
-
|
428
|
-
|
682
|
+
assert(PVectorValueWithin(self, index));
|
683
|
+
ValueTypeFree(self->values[index]);
|
684
|
+
((self->values[index]) = ValueTypeRef(value));
|
429
685
|
}
|
430
|
-
|
431
|
-
|
432
|
-
AUTOC_INLINE void ValueTypeVectorItCtorEx(ValueTypeVectorIt* self, ValueTypeVector* vector, int forward) {
|
686
|
+
#define PVectorValueItCtor(self, type) PVectorValueItCtorEx(self, type, 1)
|
687
|
+
AUTOC_INLINE void PVectorValueItCtorEx(PVectorValueIt* self, PVectorValue* vector, int forward) {
|
433
688
|
assert(self);
|
434
689
|
assert(vector);
|
435
690
|
self->vector = vector;
|
436
691
|
self->forward = forward;
|
437
|
-
self->index = forward ? -1 :
|
692
|
+
self->index = forward ? -1 : PVectorValueSize(vector);
|
438
693
|
}
|
439
|
-
AUTOC_INLINE int
|
694
|
+
AUTOC_INLINE int PVectorValueItMove(PVectorValueIt* self) {
|
440
695
|
assert(self);
|
441
696
|
if(self->forward) ++self->index;
|
442
697
|
else --self->index;
|
443
|
-
return
|
698
|
+
return PVectorValueWithin(self->vector, self->index);
|
444
699
|
}
|
445
|
-
AUTOC_INLINE ValueType
|
700
|
+
AUTOC_INLINE ValueType* PVectorValueItGet(PVectorValueIt* self) {
|
446
701
|
assert(self);
|
447
|
-
return
|
702
|
+
return PVectorValueGet(self->vector, self->index);
|
448
703
|
}
|
449
704
|
|
705
|
+
AUTOC_EXTERN void PVectorValueSort(PVectorValue*);
|
706
|
+
|
707
|
+
/***
|
708
|
+
**** <PVectorValue*> (AutoC::Reference)
|
709
|
+
***/
|
710
|
+
AUTOC_EXTERN PVectorValue* PVectorValueNew(size_t);
|
711
|
+
AUTOC_EXTERN PVectorValue* PVectorValueRef(PVectorValue*);
|
712
|
+
AUTOC_EXTERN void PVectorValueFree(PVectorValue*);
|
713
|
+
|
714
|
+
/***
|
715
|
+
**** ListPVectorValue<PVectorValue*> (AutoC::List)
|
716
|
+
***/
|
717
|
+
|
718
|
+
typedef struct ListPVectorValueNode ListPVectorValueNode;
|
719
|
+
typedef struct ListPVectorValue ListPVectorValue;
|
720
|
+
typedef struct ListPVectorValueIt ListPVectorValueIt;
|
721
|
+
struct ListPVectorValue {
|
722
|
+
ListPVectorValueNode* head_node;
|
723
|
+
size_t node_count;
|
724
|
+
};
|
725
|
+
struct ListPVectorValueIt {
|
726
|
+
int start;
|
727
|
+
ListPVectorValue* list;
|
728
|
+
ListPVectorValueNode* this_node;
|
729
|
+
};
|
730
|
+
struct ListPVectorValueNode {
|
731
|
+
PVectorValue* element;
|
732
|
+
ListPVectorValueNode* next_node;
|
733
|
+
};
|
734
|
+
|
735
|
+
#define _ListPVectorValueCtor(self) ListPVectorValueCtor(&self)
|
736
|
+
#define _ListPVectorValueDtor(self) ListPVectorValueDtor(&self)
|
737
|
+
#define _ListPVectorValueIdentify(self) ListPVectorValueIdentify(&self)
|
738
|
+
#define _ListPVectorValueCopy(dst,src) ListPVectorValueCopy(&dst,&src)
|
739
|
+
#define _ListPVectorValueEqual(lt,rt) ListPVectorValueEqual(<,&rt)
|
740
|
+
#define _ListPVectorValueLess(lt,rt) ListPVectorValueLess(<,&rt)
|
741
|
+
|
742
|
+
AUTOC_EXTERN void ListPVectorValueCtor(ListPVectorValue*);
|
743
|
+
AUTOC_EXTERN void ListPVectorValueDtor(ListPVectorValue*);
|
744
|
+
AUTOC_EXTERN void ListPVectorValueCopy(ListPVectorValue*,ListPVectorValue*);
|
745
|
+
AUTOC_EXTERN int ListPVectorValueEqual(ListPVectorValue*,ListPVectorValue*);
|
746
|
+
AUTOC_EXTERN size_t ListPVectorValueIdentify(ListPVectorValue*);
|
747
|
+
AUTOC_EXTERN void ListPVectorValuePurge(ListPVectorValue*);
|
748
|
+
AUTOC_EXTERN PVectorValue* ListPVectorValuePeek(ListPVectorValue*);
|
749
|
+
AUTOC_EXTERN PVectorValue* ListPVectorValuePop(ListPVectorValue*);
|
750
|
+
AUTOC_EXTERN void ListPVectorValuePush(ListPVectorValue*, PVectorValue*);
|
751
|
+
AUTOC_EXTERN int ListPVectorValueContains(ListPVectorValue*, PVectorValue*);
|
752
|
+
AUTOC_EXTERN PVectorValue* ListPVectorValueFind(ListPVectorValue*, PVectorValue*);
|
753
|
+
#define ListPVectorValueReplace(self, with) ListPVectorValueReplaceEx(self, with, 1)
|
754
|
+
#define ListPVectorValueReplaceAll(self, with) ListPVectorValueReplaceEx(self, with, -1)
|
755
|
+
AUTOC_EXTERN int ListPVectorValueReplaceEx(ListPVectorValue*, PVectorValue*, int);
|
756
|
+
#define ListPVectorValueRemove(self, what) ListPVectorValueRemoveEx(self, what, 1)
|
757
|
+
#define ListPVectorValueRemoveAll(self, what) ListPVectorValueRemoveEx(self, what, -1)
|
758
|
+
AUTOC_EXTERN int ListPVectorValueRemoveEx(ListPVectorValue*, PVectorValue*, int);
|
759
|
+
AUTOC_EXTERN size_t ListPVectorValueSize(ListPVectorValue*);
|
760
|
+
#define ListPVectorValueEmpty(self) (ListPVectorValueSize(self) == 0)
|
761
|
+
AUTOC_EXTERN void ListPVectorValueItCtor(ListPVectorValueIt*, ListPVectorValue*);
|
762
|
+
AUTOC_EXTERN int ListPVectorValueItMove(ListPVectorValueIt*);
|
763
|
+
AUTOC_EXTERN PVectorValue* ListPVectorValueItGet(ListPVectorValueIt*);
|
764
|
+
|
450
765
|
#endif
|