autoc 1.4 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/CHANGES.md +3 -0
- data/README.md +149 -0
- data/cmake/AutoC.cmake +39 -0
- data/lib/autoc/allocators.rb +51 -0
- data/lib/autoc/association.rb +126 -0
- data/lib/autoc/box.rb +311 -0
- data/lib/autoc/cmake.rb +54 -0
- data/lib/autoc/collection.rb +83 -110
- data/lib/autoc/composite.rb +333 -0
- data/lib/autoc/cstring.rb +263 -0
- data/lib/autoc/function.rb +247 -0
- data/lib/autoc/hash_map.rb +328 -0
- data/lib/autoc/hash_set.rb +339 -0
- data/lib/autoc/hashers.rb +102 -0
- data/lib/autoc/list.rb +444 -0
- data/lib/autoc/module.rb +434 -0
- data/lib/autoc/openmp.rb +15 -0
- data/lib/autoc/primitive.rb +27 -0
- data/lib/autoc/ranges.rb +707 -0
- data/lib/autoc/record.rb +247 -0
- data/lib/autoc/scaffold/docs.rb +117 -0
- data/lib/autoc/scaffold/generic_value.rb +86 -0
- data/lib/autoc/scaffold/project.rb +75 -0
- data/lib/autoc/scaffold/test_cstring.rb +113 -0
- data/lib/autoc/scaffold/test_cstring_hash_set.rb +35 -0
- data/lib/autoc/scaffold/test_int_box.rb +22 -0
- data/lib/autoc/scaffold/test_int_hash_set.rb +448 -0
- data/lib/autoc/scaffold/test_int_list.rb +106 -0
- data/lib/autoc/scaffold/test_int_vector.rb +83 -0
- data/lib/autoc/scaffold/test_v2v_hash_map.rb +83 -0
- data/lib/autoc/scaffold/test_value_hash_set.rb +60 -0
- data/lib/autoc/scaffold/test_value_vector.rb +146 -0
- data/{test/test.rb → lib/autoc/scaffold/tests.rb} +179 -158
- data/lib/autoc/scaffold.rb +12 -0
- data/lib/autoc/sequential.rb +99 -0
- data/lib/autoc/set.rb +331 -0
- data/lib/autoc/std.rb +149 -0
- data/lib/autoc/type.rb +93 -531
- data/lib/autoc/vector.rb +290 -0
- data/lib/autoc.rb +4 -35
- metadata +55 -85
- data/.yardopts +0 -4
- data/CHANGES +0 -23
- data/README +0 -28
- data/doc/AutoC/Code.html +0 -523
- data/doc/AutoC/Collection.html +0 -1214
- data/doc/AutoC/HashMap.html +0 -1441
- data/doc/AutoC/HashSet.html +0 -916
- data/doc/AutoC/Iterators/Bidirectional.html +0 -204
- data/doc/AutoC/Iterators/Unidirectional.html +0 -200
- data/doc/AutoC/Iterators.html +0 -126
- data/doc/AutoC/List.html +0 -1039
- data/doc/AutoC/Maps.html +0 -290
- data/doc/AutoC/Module/File.html +0 -415
- data/doc/AutoC/Module/Header.html +0 -437
- data/doc/AutoC/Module/Source.html +0 -707
- data/doc/AutoC/Module.html +0 -948
- data/doc/AutoC/Priority.html +0 -138
- data/doc/AutoC/Queue.html +0 -1172
- data/doc/AutoC/Reference.html +0 -735
- data/doc/AutoC/Sets.html +0 -520
- data/doc/AutoC/String.html +0 -1394
- data/doc/AutoC/TreeMap.html +0 -1565
- data/doc/AutoC/TreeSet.html +0 -1447
- data/doc/AutoC/Type.html +0 -2148
- data/doc/AutoC/UserDefinedType.html +0 -1047
- data/doc/AutoC/Vector.html +0 -987
- data/doc/AutoC.html +0 -331
- data/doc/_index.html +0 -388
- data/doc/class_list.html +0 -51
- data/doc/css/common.css +0 -1
- data/doc/css/full_list.css +0 -58
- data/doc/css/style.css +0 -481
- data/doc/file.CHANGES.html +0 -117
- data/doc/file.README.html +0 -116
- data/doc/file_list.html +0 -61
- data/doc/frames.html +0 -17
- data/doc/index.html +0 -116
- data/doc/js/app.js +0 -243
- data/doc/js/full_list.js +0 -216
- data/doc/js/jquery.js +0 -4
- data/doc/method_list.html +0 -1307
- data/doc/top-level-namespace.html +0 -112
- data/lib/autoc/code.rb +0 -237
- data/lib/autoc/collection/hash_map.rb +0 -385
- data/lib/autoc/collection/hash_set.rb +0 -337
- data/lib/autoc/collection/iterator.rb +0 -39
- data/lib/autoc/collection/list.rb +0 -429
- data/lib/autoc/collection/map.rb +0 -41
- data/lib/autoc/collection/queue.rb +0 -517
- data/lib/autoc/collection/set.rb +0 -134
- data/lib/autoc/collection/tree_map.rb +0 -464
- data/lib/autoc/collection/tree_set.rb +0 -611
- data/lib/autoc/collection/vector.rb +0 -336
- data/lib/autoc/string.rb +0 -492
- data/test/test_auto.c +0 -7141
- data/test/test_auto.h +0 -753
- data/test/test_char_string.rb +0 -270
- data/test/test_int_list.rb +0 -35
- data/test/test_int_tree_set.rb +0 -111
- data/test/test_int_vector.rb +0 -34
- data/test/test_value_hash_map.rb +0 -162
- data/test/test_value_hash_set.rb +0 -173
- data/test/test_value_list.rb +0 -193
- data/test/test_value_queue.rb +0 -275
- data/test/test_value_tree_map.rb +0 -176
- data/test/test_value_tree_set.rb +0 -173
- data/test/test_value_vector.rb +0 -155
- data/test/value.rb +0 -80
data/test/test_auto.h
DELETED
@@ -1,753 +0,0 @@
|
|
1
|
-
/* AUTOMATICALLY GENERATED HEADER FILE. DO NOT MODIFY. */
|
2
|
-
#ifndef TEST_AUTO_H
|
3
|
-
#define TEST_AUTO_H
|
4
|
-
#ifndef AUTOC_INLINE
|
5
|
-
#if defined(_MSC_VER) || defined(__DMC__)
|
6
|
-
#define AUTOC_INLINE AUTOC_STATIC __inline
|
7
|
-
#elif defined(__LCC__)
|
8
|
-
#define AUTOC_INLINE AUTOC_STATIC /* LCC rejects static __inline */
|
9
|
-
#elif __STDC_VERSION__ >= 199901L
|
10
|
-
#define AUTOC_INLINE AUTOC_STATIC inline
|
11
|
-
#else
|
12
|
-
#define AUTOC_INLINE AUTOC_STATIC
|
13
|
-
#endif
|
14
|
-
#endif
|
15
|
-
#ifndef AUTOC_EXTERN
|
16
|
-
#ifdef __cplusplus
|
17
|
-
#define AUTOC_EXTERN extern "C"
|
18
|
-
#else
|
19
|
-
#define AUTOC_EXTERN extern
|
20
|
-
#endif
|
21
|
-
#endif
|
22
|
-
#ifndef AUTOC_STATIC
|
23
|
-
#if defined(_MSC_VER)
|
24
|
-
#define AUTOC_STATIC __pragma(warning(suppress:4100)) static
|
25
|
-
#elif defined(__GNUC__)
|
26
|
-
#define AUTOC_STATIC __attribute__((__used__)) static
|
27
|
-
#else
|
28
|
-
#define AUTOC_STATIC static
|
29
|
-
#endif
|
30
|
-
#endif
|
31
|
-
#include <stddef.h>
|
32
|
-
#include <stdlib.h>
|
33
|
-
#include <assert.h>
|
34
|
-
/***
|
35
|
-
**** CharString<char>
|
36
|
-
***/
|
37
|
-
typedef struct CharStringListNode CharStringListNode;
|
38
|
-
typedef struct CharStringList CharStringList;
|
39
|
-
typedef struct CharStringListIt CharStringListIt;
|
40
|
-
struct CharStringList {
|
41
|
-
CharStringListNode* head_node;
|
42
|
-
size_t node_count;
|
43
|
-
};
|
44
|
-
struct CharStringListIt {
|
45
|
-
int start;
|
46
|
-
CharStringList* list;
|
47
|
-
CharStringListNode* this_node;
|
48
|
-
};
|
49
|
-
struct CharStringListNode {
|
50
|
-
char* element;
|
51
|
-
CharStringListNode* next_node;
|
52
|
-
};
|
53
|
-
typedef struct CharString CharString;
|
54
|
-
typedef struct CharStringIt CharStringIt;
|
55
|
-
struct CharString {
|
56
|
-
size_t size;
|
57
|
-
union data {
|
58
|
-
char* string;
|
59
|
-
CharStringList list;
|
60
|
-
} data;
|
61
|
-
int is_list;
|
62
|
-
};
|
63
|
-
struct CharStringIt {
|
64
|
-
CharString* string;
|
65
|
-
int index, forward;
|
66
|
-
};
|
67
|
-
#define _CharStringCtor(self,chars) CharStringCtor(&self,chars)
|
68
|
-
#define _CharStringDtor(self) CharStringDtor(&self)
|
69
|
-
#define _CharStringIdentify(self) CharStringIdentify(&self)
|
70
|
-
#define _CharStringCopy(dst,src) CharStringCopy(&dst,&src)
|
71
|
-
#define _CharStringEqual(lt,rt) CharStringEqual(<,&rt)
|
72
|
-
#define _CharStringLess(lt,rt) CharStringLess(<,&rt)
|
73
|
-
#include <string.h>
|
74
|
-
#ifdef AUTOC_BUFFER_SIZE
|
75
|
-
#define _CharStringBufferSize AUTOC_BUFFER_SIZE
|
76
|
-
#else
|
77
|
-
#define _CharStringBufferSize 4096 /* Stay in sync with the documentation! */
|
78
|
-
#endif
|
79
|
-
#define CharStringJoin(self) if(self->is_list) _CharStringJoin(self);
|
80
|
-
#define CharStringSplit(self) if(!self->is_list) _CharStringSplit(self);
|
81
|
-
AUTOC_EXTERN void _CharStringJoin(CharString*);
|
82
|
-
AUTOC_EXTERN void _CharStringSplit(CharString*);
|
83
|
-
AUTOC_EXTERN void CharStringCtor(CharString*,const char*);
|
84
|
-
AUTOC_EXTERN void CharStringDtor(CharString*);
|
85
|
-
AUTOC_EXTERN void CharStringCopy(CharString*,CharString*);
|
86
|
-
AUTOC_EXTERN void CharStringCopyRange(CharString*, CharString*, size_t, size_t);
|
87
|
-
AUTOC_EXTERN int CharStringEqual(CharString*,CharString*);
|
88
|
-
AUTOC_EXTERN size_t CharStringIdentify(CharString*);
|
89
|
-
#define CharStringEmpty(self) (CharStringSize(self) == 0)
|
90
|
-
AUTOC_INLINE size_t CharStringSize(CharString* self) {
|
91
|
-
assert(self);
|
92
|
-
/* CharStringJoin(self); assuming the changes to the contents are reflected in the size */
|
93
|
-
#ifndef NDEBUG
|
94
|
-
/* Type invariants which must hold true */
|
95
|
-
if(!self->is_list) assert(self->size == strlen(self->data.string));
|
96
|
-
/* TODO self->is_list case */
|
97
|
-
#endif
|
98
|
-
return self->size;
|
99
|
-
}
|
100
|
-
AUTOC_INLINE int CharStringWithin(CharString* self, size_t index) {
|
101
|
-
assert(self);
|
102
|
-
/* Omitting excessive call to CharStringJoin() */
|
103
|
-
return index < CharStringSize(self);
|
104
|
-
}
|
105
|
-
AUTOC_INLINE char CharStringGet(CharString* self, size_t index) {
|
106
|
-
assert(self);
|
107
|
-
assert(CharStringWithin(self, index));
|
108
|
-
CharStringJoin(self);
|
109
|
-
return self->data.string[index];
|
110
|
-
}
|
111
|
-
AUTOC_INLINE void CharStringSet(CharString* self, size_t index, char value) {
|
112
|
-
assert(self);
|
113
|
-
assert(CharStringWithin(self, index));
|
114
|
-
CharStringJoin(self);
|
115
|
-
self->data.string[index] = value;
|
116
|
-
}
|
117
|
-
AUTOC_INLINE const char* CharStringChars(CharString* self) {
|
118
|
-
assert(self);
|
119
|
-
CharStringJoin(self);
|
120
|
-
return self->data.string;
|
121
|
-
}
|
122
|
-
AUTOC_EXTERN int CharStringPushFormat(CharString*, const char*, ...);
|
123
|
-
AUTOC_EXTERN void CharStringPushChars(CharString*, const char*);
|
124
|
-
AUTOC_EXTERN void CharStringPushString(CharString*, CharString*);
|
125
|
-
#define CharStringPushChar(self, c) CharStringPushFormat(self, "%c", (char)(c))
|
126
|
-
#define CharStringPushInt(self, i) CharStringPushFormat(self, "%d", (int)(i))
|
127
|
-
#define CharStringPushFloat(self, f) CharStringPushFormat(self, "%e", (double)(f))
|
128
|
-
#define CharStringPushPtr(self, p) CharStringPushFormat(self, "%p", (void*)(p))
|
129
|
-
#define CharStringItCtor(self, type) CharStringItCtorEx(self, type, 1)
|
130
|
-
AUTOC_INLINE void CharStringItCtorEx(CharStringIt* self, CharString* string, int forward) {
|
131
|
-
assert(self);
|
132
|
-
assert(string);
|
133
|
-
self->string = string;
|
134
|
-
self->forward = forward;
|
135
|
-
self->index = forward ? -1 : CharStringSize(string);
|
136
|
-
}
|
137
|
-
AUTOC_INLINE int CharStringItMove(CharStringIt* self) {
|
138
|
-
assert(self);
|
139
|
-
if(self->forward) ++self->index;
|
140
|
-
else --self->index;
|
141
|
-
return CharStringWithin(self->string, self->index);
|
142
|
-
}
|
143
|
-
AUTOC_INLINE char CharStringItGet(CharStringIt* self) {
|
144
|
-
assert(self);
|
145
|
-
return CharStringGet(self->string, self->index);
|
146
|
-
}
|
147
|
-
typedef struct {
|
148
|
-
int* value;
|
149
|
-
} Value;
|
150
|
-
#define ValueCtor(self) _ValueCtor(&self)
|
151
|
-
#define ValueCtorEx(self, v) _ValueCtorEx(&self, v)
|
152
|
-
#define ValueDtor(self) _ValueDtor(&self)
|
153
|
-
#define ValueCopy(dst, src) _ValueCopy(&dst, &src)
|
154
|
-
#define ValueEqual(lt, rt) _ValueEqual(<, &rt)
|
155
|
-
#define ValueLess(lt, rt) _ValueLess(<, &rt)
|
156
|
-
#define ValueIdentify(self) _ValueIdentify(&self)
|
157
|
-
#define ValueGet(self) *(self).value
|
158
|
-
#define ValueSet(self, x) *(self).value = (x)
|
159
|
-
void _ValueCtor(Value*);
|
160
|
-
void _ValueCtorEx(Value*, int);
|
161
|
-
void _ValueDtor(Value*);
|
162
|
-
void _ValueCopy(Value*, Value*);
|
163
|
-
int _ValueEqual(Value*, Value*);
|
164
|
-
int _ValueLess(Value*, Value*);
|
165
|
-
size_t _ValueIdentify(Value*);
|
166
|
-
/***
|
167
|
-
**** IntList<int>
|
168
|
-
***/
|
169
|
-
typedef struct IntListNode IntListNode;
|
170
|
-
typedef struct IntList IntList;
|
171
|
-
typedef struct IntListIt IntListIt;
|
172
|
-
struct IntList {
|
173
|
-
IntListNode* head_node;
|
174
|
-
size_t node_count;
|
175
|
-
};
|
176
|
-
struct IntListIt {
|
177
|
-
int start;
|
178
|
-
IntList* list;
|
179
|
-
IntListNode* this_node;
|
180
|
-
};
|
181
|
-
struct IntListNode {
|
182
|
-
int element;
|
183
|
-
IntListNode* next_node;
|
184
|
-
};
|
185
|
-
#define _IntListCtor(self) IntListCtor(&self)
|
186
|
-
#define _IntListDtor(self) IntListDtor(&self)
|
187
|
-
#define _IntListIdentify(self) IntListIdentify(&self)
|
188
|
-
#define _IntListCopy(dst,src) IntListCopy(&dst,&src)
|
189
|
-
#define _IntListEqual(lt,rt) IntListEqual(<,&rt)
|
190
|
-
#define _IntListLess(lt,rt) IntListLess(<,&rt)
|
191
|
-
AUTOC_EXTERN void IntListItCtor(IntListIt*, IntList*);
|
192
|
-
AUTOC_EXTERN int IntListItMove(IntListIt*);
|
193
|
-
AUTOC_EXTERN int IntListItGet(IntListIt*);
|
194
|
-
AUTOC_EXTERN void IntListCtor(IntList*);
|
195
|
-
AUTOC_EXTERN void IntListDtor(IntList*);
|
196
|
-
AUTOC_EXTERN void IntListCopy(IntList*,IntList*);
|
197
|
-
AUTOC_EXTERN int IntListEqual(IntList*,IntList*);
|
198
|
-
AUTOC_EXTERN size_t IntListIdentify(IntList*);
|
199
|
-
AUTOC_EXTERN void IntListPurge(IntList*);
|
200
|
-
AUTOC_EXTERN int IntListPeek(IntList*);
|
201
|
-
AUTOC_EXTERN int IntListPop(IntList*);
|
202
|
-
AUTOC_EXTERN void IntListPush(IntList*, int);
|
203
|
-
AUTOC_EXTERN int IntListContains(IntList*, int);
|
204
|
-
AUTOC_EXTERN int IntListFind(IntList*, int);
|
205
|
-
#define IntListReplace(self, with) IntListReplaceEx(self, with, 1)
|
206
|
-
#define IntListReplaceAll(self, with) IntListReplaceEx(self, with, -1)
|
207
|
-
AUTOC_EXTERN int IntListReplaceEx(IntList*, int, int);
|
208
|
-
#define IntListRemove(self, what) IntListRemoveEx(self, what, 1)
|
209
|
-
#define IntListRemoveAll(self, what) IntListRemoveEx(self, what, -1)
|
210
|
-
AUTOC_EXTERN int IntListRemoveEx(IntList*, int, int);
|
211
|
-
AUTOC_EXTERN size_t IntListSize(IntList*);
|
212
|
-
#define IntListEmpty(self) (IntListSize(self) == 0)
|
213
|
-
/***
|
214
|
-
**** IntTreeSet<int>
|
215
|
-
***/
|
216
|
-
typedef struct IntTreeSet IntTreeSet;
|
217
|
-
typedef struct IntTreeSetNode IntTreeSetNode;
|
218
|
-
typedef struct IntTreeSetIt IntTreeSetIt;
|
219
|
-
struct IntTreeSet {
|
220
|
-
IntTreeSetNode* root;
|
221
|
-
size_t size;
|
222
|
-
};
|
223
|
-
struct IntTreeSetIt {
|
224
|
-
int start, ascending;
|
225
|
-
IntTreeSetNode* node;
|
226
|
-
};
|
227
|
-
struct IntTreeSetNode {
|
228
|
-
int color;
|
229
|
-
IntTreeSetNode* left;
|
230
|
-
IntTreeSetNode* right;
|
231
|
-
IntTreeSetNode* parent;
|
232
|
-
int element;
|
233
|
-
};
|
234
|
-
#define _IntTreeSetCtor(self) IntTreeSetCtor(&self)
|
235
|
-
#define _IntTreeSetDtor(self) IntTreeSetDtor(&self)
|
236
|
-
#define _IntTreeSetIdentify(self) IntTreeSetIdentify(&self)
|
237
|
-
#define _IntTreeSetCopy(dst,src) IntTreeSetCopy(&dst,&src)
|
238
|
-
#define _IntTreeSetEqual(lt,rt) IntTreeSetEqual(<,&rt)
|
239
|
-
#define _IntTreeSetLess(lt,rt) IntTreeSetLess(<,&rt)
|
240
|
-
AUTOC_EXTERN void IntTreeSetCtor(IntTreeSet*);
|
241
|
-
AUTOC_EXTERN void IntTreeSetDtor(IntTreeSet*);
|
242
|
-
AUTOC_EXTERN void IntTreeSetCopy(IntTreeSet*,IntTreeSet*);
|
243
|
-
AUTOC_EXTERN int IntTreeSetEqual(IntTreeSet*,IntTreeSet*);
|
244
|
-
AUTOC_EXTERN size_t IntTreeSetIdentify(IntTreeSet*);
|
245
|
-
AUTOC_EXTERN void IntTreeSetPurge(IntTreeSet*);
|
246
|
-
AUTOC_EXTERN int IntTreeSetContains(IntTreeSet*, int);
|
247
|
-
AUTOC_EXTERN int IntTreeSetGet(IntTreeSet*, int);
|
248
|
-
AUTOC_EXTERN size_t IntTreeSetSize(IntTreeSet*);
|
249
|
-
#define IntTreeSetEmpty(self) (IntTreeSetSize(self) == 0)
|
250
|
-
AUTOC_EXTERN int IntTreeSetPut(IntTreeSet*, int);
|
251
|
-
AUTOC_EXTERN int IntTreeSetReplace(IntTreeSet*, int);
|
252
|
-
AUTOC_EXTERN int IntTreeSetRemove(IntTreeSet*, int);
|
253
|
-
AUTOC_EXTERN void IntTreeSetExclude(IntTreeSet*, IntTreeSet*);
|
254
|
-
AUTOC_EXTERN void IntTreeSetRetain(IntTreeSet*, IntTreeSet*);
|
255
|
-
AUTOC_EXTERN void IntTreeSetInclude(IntTreeSet*, IntTreeSet*);
|
256
|
-
AUTOC_EXTERN void IntTreeSetInvert(IntTreeSet*, IntTreeSet*);
|
257
|
-
AUTOC_EXTERN void IntTreeSetItCtor(IntTreeSetIt*, IntTreeSet*);
|
258
|
-
#define IntTreeSetItCtor(self, type) IntTreeSetItCtorEx(self, type, 1)
|
259
|
-
AUTOC_EXTERN void IntTreeSetItCtorEx(IntTreeSetIt*, IntTreeSet*, int);
|
260
|
-
AUTOC_EXTERN int IntTreeSetItMove(IntTreeSetIt*);
|
261
|
-
AUTOC_EXTERN int IntTreeSetItGet(IntTreeSetIt*);
|
262
|
-
AUTOC_EXTERN int IntTreeSetPeekLowest(IntTreeSet*);
|
263
|
-
AUTOC_EXTERN int IntTreeSetPeekHighest(IntTreeSet*);
|
264
|
-
/***
|
265
|
-
**** ValueHashSet<Value>
|
266
|
-
***/
|
267
|
-
typedef struct ValueHashSetListNode ValueHashSetListNode;
|
268
|
-
typedef struct ValueHashSetList ValueHashSetList;
|
269
|
-
typedef struct ValueHashSetListIt ValueHashSetListIt;
|
270
|
-
struct ValueHashSetList {
|
271
|
-
ValueHashSetListNode* head_node;
|
272
|
-
size_t node_count;
|
273
|
-
};
|
274
|
-
struct ValueHashSetListIt {
|
275
|
-
int start;
|
276
|
-
ValueHashSetList* list;
|
277
|
-
ValueHashSetListNode* this_node;
|
278
|
-
};
|
279
|
-
struct ValueHashSetListNode {
|
280
|
-
Value element;
|
281
|
-
ValueHashSetListNode* next_node;
|
282
|
-
};
|
283
|
-
typedef struct ValueHashSet ValueHashSet;
|
284
|
-
typedef struct ValueHashSetIt ValueHashSetIt;
|
285
|
-
struct ValueHashSet {
|
286
|
-
ValueHashSetList* buckets;
|
287
|
-
size_t bucket_count, min_bucket_count;
|
288
|
-
size_t size, min_size, max_size;
|
289
|
-
unsigned min_fill, max_fill, capacity_multiplier; /* ?*1e-2 */
|
290
|
-
};
|
291
|
-
struct ValueHashSetIt {
|
292
|
-
ValueHashSet* set;
|
293
|
-
size_t bucket_index;
|
294
|
-
ValueHashSetListIt it;
|
295
|
-
};
|
296
|
-
#define _ValueHashSetCtor(self) ValueHashSetCtor(&self)
|
297
|
-
#define _ValueHashSetDtor(self) ValueHashSetDtor(&self)
|
298
|
-
#define _ValueHashSetIdentify(self) ValueHashSetIdentify(&self)
|
299
|
-
#define _ValueHashSetCopy(dst,src) ValueHashSetCopy(&dst,&src)
|
300
|
-
#define _ValueHashSetEqual(lt,rt) ValueHashSetEqual(<,&rt)
|
301
|
-
#define _ValueHashSetLess(lt,rt) ValueHashSetLess(<,&rt)
|
302
|
-
AUTOC_EXTERN void ValueHashSetCtor(ValueHashSet*);
|
303
|
-
AUTOC_EXTERN void ValueHashSetDtor(ValueHashSet*);
|
304
|
-
AUTOC_EXTERN void ValueHashSetCopy(ValueHashSet*,ValueHashSet*);
|
305
|
-
AUTOC_EXTERN int ValueHashSetEqual(ValueHashSet*,ValueHashSet*);
|
306
|
-
AUTOC_EXTERN size_t ValueHashSetIdentify(ValueHashSet*);
|
307
|
-
AUTOC_EXTERN void ValueHashSetPurge(ValueHashSet*);
|
308
|
-
AUTOC_EXTERN int ValueHashSetContains(ValueHashSet*, Value);
|
309
|
-
AUTOC_EXTERN Value ValueHashSetGet(ValueHashSet*, Value);
|
310
|
-
AUTOC_EXTERN size_t ValueHashSetSize(ValueHashSet*);
|
311
|
-
#define ValueHashSetEmpty(self) (ValueHashSetSize(self) == 0)
|
312
|
-
AUTOC_EXTERN int ValueHashSetPut(ValueHashSet*, Value);
|
313
|
-
AUTOC_EXTERN int ValueHashSetReplace(ValueHashSet*, Value);
|
314
|
-
AUTOC_EXTERN int ValueHashSetRemove(ValueHashSet*, Value);
|
315
|
-
AUTOC_EXTERN void ValueHashSetExclude(ValueHashSet*, ValueHashSet*);
|
316
|
-
AUTOC_EXTERN void ValueHashSetRetain(ValueHashSet*, ValueHashSet*);
|
317
|
-
AUTOC_EXTERN void ValueHashSetInclude(ValueHashSet*, ValueHashSet*);
|
318
|
-
AUTOC_EXTERN void ValueHashSetInvert(ValueHashSet*, ValueHashSet*);
|
319
|
-
AUTOC_EXTERN void ValueHashSetItCtor(ValueHashSetIt*, ValueHashSet*);
|
320
|
-
AUTOC_EXTERN int ValueHashSetItMove(ValueHashSetIt*);
|
321
|
-
AUTOC_EXTERN Value ValueHashSetItGet(ValueHashSetIt*);
|
322
|
-
/***
|
323
|
-
**** ValueVector<Value>
|
324
|
-
***/
|
325
|
-
typedef struct ValueVector ValueVector;
|
326
|
-
typedef struct ValueVectorIt ValueVectorIt;
|
327
|
-
struct ValueVector {
|
328
|
-
Value* values;
|
329
|
-
size_t element_count;
|
330
|
-
};
|
331
|
-
struct ValueVectorIt {
|
332
|
-
ValueVector* vector;
|
333
|
-
int index, forward;
|
334
|
-
};
|
335
|
-
#define _ValueVectorCtor(self,element_count) ValueVectorCtor(&self,element_count)
|
336
|
-
#define _ValueVectorDtor(self) ValueVectorDtor(&self)
|
337
|
-
#define _ValueVectorIdentify(self) ValueVectorIdentify(&self)
|
338
|
-
#define _ValueVectorCopy(dst,src) ValueVectorCopy(&dst,&src)
|
339
|
-
#define _ValueVectorEqual(lt,rt) ValueVectorEqual(<,&rt)
|
340
|
-
#define _ValueVectorLess(lt,rt) ValueVectorLess(<,&rt)
|
341
|
-
AUTOC_INLINE void ValueVectorItCtor(ValueVectorIt*, ValueVector*);
|
342
|
-
#define ValueVectorItCtor(self, type) ValueVectorItCtorEx(self, type, 1)
|
343
|
-
AUTOC_INLINE void ValueVectorItCtorEx(ValueVectorIt*, ValueVector*, int);
|
344
|
-
AUTOC_INLINE int ValueVectorItMove(ValueVectorIt*);
|
345
|
-
AUTOC_INLINE Value ValueVectorItGet(ValueVectorIt*);
|
346
|
-
AUTOC_EXTERN void ValueVectorCtor(ValueVector*,size_t);
|
347
|
-
AUTOC_EXTERN void ValueVectorDtor(ValueVector*);
|
348
|
-
AUTOC_EXTERN void ValueVectorCopy(ValueVector*,ValueVector*);
|
349
|
-
/* TODO ValueVectorCopyRange() */
|
350
|
-
AUTOC_EXTERN int ValueVectorEqual(ValueVector*,ValueVector*);
|
351
|
-
AUTOC_EXTERN size_t ValueVectorIdentify(ValueVector*);
|
352
|
-
AUTOC_EXTERN void ValueVectorResize(ValueVector*, size_t);
|
353
|
-
AUTOC_INLINE size_t ValueVectorSize(ValueVector* self) {
|
354
|
-
assert(self);
|
355
|
-
return self->element_count;
|
356
|
-
}
|
357
|
-
AUTOC_INLINE int ValueVectorWithin(ValueVector* self, size_t index) {
|
358
|
-
assert(self);
|
359
|
-
return index < ValueVectorSize(self);
|
360
|
-
}
|
361
|
-
AUTOC_INLINE Value ValueVectorGet(ValueVector* self, size_t index) {
|
362
|
-
Value result;
|
363
|
-
assert(self);
|
364
|
-
assert(ValueVectorWithin(self, index));
|
365
|
-
ValueCopy(result,self->values[index]);
|
366
|
-
return result;
|
367
|
-
}
|
368
|
-
AUTOC_INLINE void ValueVectorSet(ValueVector* self, size_t index, Value value) {
|
369
|
-
assert(self);
|
370
|
-
assert(ValueVectorWithin(self, index));
|
371
|
-
ValueDtor(self->values[index]);
|
372
|
-
ValueCopy(self->values[index],value);
|
373
|
-
}
|
374
|
-
AUTOC_INLINE void ValueVectorItCtorEx(ValueVectorIt* self, ValueVector* vector, int forward) {
|
375
|
-
assert(self);
|
376
|
-
assert(vector);
|
377
|
-
self->vector = vector;
|
378
|
-
self->forward = forward;
|
379
|
-
self->index = forward ? -1 : ValueVectorSize(vector);
|
380
|
-
}
|
381
|
-
AUTOC_INLINE int ValueVectorItMove(ValueVectorIt* self) {
|
382
|
-
assert(self);
|
383
|
-
if(self->forward) ++self->index;
|
384
|
-
else --self->index;
|
385
|
-
return ValueVectorWithin(self->vector, self->index);
|
386
|
-
}
|
387
|
-
AUTOC_INLINE Value ValueVectorItGet(ValueVectorIt* self) {
|
388
|
-
assert(self);
|
389
|
-
return ValueVectorGet(self->vector, self->index);
|
390
|
-
}
|
391
|
-
#define ValueVectorSort(self) ValueVectorSortEx(self, 1)
|
392
|
-
AUTOC_EXTERN void ValueVectorSortEx(ValueVector*, int);
|
393
|
-
/***
|
394
|
-
**** ValueList<Value>
|
395
|
-
***/
|
396
|
-
typedef struct ValueListNode ValueListNode;
|
397
|
-
typedef struct ValueList ValueList;
|
398
|
-
typedef struct ValueListIt ValueListIt;
|
399
|
-
struct ValueList {
|
400
|
-
ValueListNode* head_node;
|
401
|
-
size_t node_count;
|
402
|
-
};
|
403
|
-
struct ValueListIt {
|
404
|
-
int start;
|
405
|
-
ValueList* list;
|
406
|
-
ValueListNode* this_node;
|
407
|
-
};
|
408
|
-
struct ValueListNode {
|
409
|
-
Value element;
|
410
|
-
ValueListNode* next_node;
|
411
|
-
};
|
412
|
-
#define _ValueListCtor(self) ValueListCtor(&self)
|
413
|
-
#define _ValueListDtor(self) ValueListDtor(&self)
|
414
|
-
#define _ValueListIdentify(self) ValueListIdentify(&self)
|
415
|
-
#define _ValueListCopy(dst,src) ValueListCopy(&dst,&src)
|
416
|
-
#define _ValueListEqual(lt,rt) ValueListEqual(<,&rt)
|
417
|
-
#define _ValueListLess(lt,rt) ValueListLess(<,&rt)
|
418
|
-
AUTOC_EXTERN void ValueListItCtor(ValueListIt*, ValueList*);
|
419
|
-
AUTOC_EXTERN int ValueListItMove(ValueListIt*);
|
420
|
-
AUTOC_EXTERN Value ValueListItGet(ValueListIt*);
|
421
|
-
AUTOC_EXTERN void ValueListCtor(ValueList*);
|
422
|
-
AUTOC_EXTERN void ValueListDtor(ValueList*);
|
423
|
-
AUTOC_EXTERN void ValueListCopy(ValueList*,ValueList*);
|
424
|
-
AUTOC_EXTERN int ValueListEqual(ValueList*,ValueList*);
|
425
|
-
AUTOC_EXTERN size_t ValueListIdentify(ValueList*);
|
426
|
-
AUTOC_EXTERN void ValueListPurge(ValueList*);
|
427
|
-
AUTOC_EXTERN Value ValueListPeek(ValueList*);
|
428
|
-
AUTOC_EXTERN Value ValueListPop(ValueList*);
|
429
|
-
AUTOC_EXTERN void ValueListPush(ValueList*, Value);
|
430
|
-
AUTOC_EXTERN int ValueListContains(ValueList*, Value);
|
431
|
-
AUTOC_EXTERN Value ValueListFind(ValueList*, Value);
|
432
|
-
#define ValueListReplace(self, with) ValueListReplaceEx(self, with, 1)
|
433
|
-
#define ValueListReplaceAll(self, with) ValueListReplaceEx(self, with, -1)
|
434
|
-
AUTOC_EXTERN int ValueListReplaceEx(ValueList*, Value, int);
|
435
|
-
#define ValueListRemove(self, what) ValueListRemoveEx(self, what, 1)
|
436
|
-
#define ValueListRemoveAll(self, what) ValueListRemoveEx(self, what, -1)
|
437
|
-
AUTOC_EXTERN int ValueListRemoveEx(ValueList*, Value, int);
|
438
|
-
AUTOC_EXTERN size_t ValueListSize(ValueList*);
|
439
|
-
#define ValueListEmpty(self) (ValueListSize(self) == 0)
|
440
|
-
/***
|
441
|
-
**** IntVector<int>
|
442
|
-
***/
|
443
|
-
typedef struct IntVector IntVector;
|
444
|
-
typedef struct IntVectorIt IntVectorIt;
|
445
|
-
struct IntVector {
|
446
|
-
int* values;
|
447
|
-
size_t element_count;
|
448
|
-
};
|
449
|
-
struct IntVectorIt {
|
450
|
-
IntVector* vector;
|
451
|
-
int index, forward;
|
452
|
-
};
|
453
|
-
#define _IntVectorCtor(self,element_count) IntVectorCtor(&self,element_count)
|
454
|
-
#define _IntVectorDtor(self) IntVectorDtor(&self)
|
455
|
-
#define _IntVectorIdentify(self) IntVectorIdentify(&self)
|
456
|
-
#define _IntVectorCopy(dst,src) IntVectorCopy(&dst,&src)
|
457
|
-
#define _IntVectorEqual(lt,rt) IntVectorEqual(<,&rt)
|
458
|
-
#define _IntVectorLess(lt,rt) IntVectorLess(<,&rt)
|
459
|
-
AUTOC_INLINE void IntVectorItCtor(IntVectorIt*, IntVector*);
|
460
|
-
#define IntVectorItCtor(self, type) IntVectorItCtorEx(self, type, 1)
|
461
|
-
AUTOC_INLINE void IntVectorItCtorEx(IntVectorIt*, IntVector*, int);
|
462
|
-
AUTOC_INLINE int IntVectorItMove(IntVectorIt*);
|
463
|
-
AUTOC_INLINE int IntVectorItGet(IntVectorIt*);
|
464
|
-
AUTOC_EXTERN void IntVectorCtor(IntVector*,size_t);
|
465
|
-
AUTOC_EXTERN void IntVectorDtor(IntVector*);
|
466
|
-
AUTOC_EXTERN void IntVectorCopy(IntVector*,IntVector*);
|
467
|
-
/* TODO IntVectorCopyRange() */
|
468
|
-
AUTOC_EXTERN int IntVectorEqual(IntVector*,IntVector*);
|
469
|
-
AUTOC_EXTERN size_t IntVectorIdentify(IntVector*);
|
470
|
-
AUTOC_EXTERN void IntVectorResize(IntVector*, size_t);
|
471
|
-
AUTOC_INLINE size_t IntVectorSize(IntVector* self) {
|
472
|
-
assert(self);
|
473
|
-
return self->element_count;
|
474
|
-
}
|
475
|
-
AUTOC_INLINE int IntVectorWithin(IntVector* self, size_t index) {
|
476
|
-
assert(self);
|
477
|
-
return index < IntVectorSize(self);
|
478
|
-
}
|
479
|
-
AUTOC_INLINE int IntVectorGet(IntVector* self, size_t index) {
|
480
|
-
int result;
|
481
|
-
assert(self);
|
482
|
-
assert(IntVectorWithin(self, index));
|
483
|
-
((result) = (self->values[index]));
|
484
|
-
return result;
|
485
|
-
}
|
486
|
-
AUTOC_INLINE void IntVectorSet(IntVector* self, size_t index, int value) {
|
487
|
-
assert(self);
|
488
|
-
assert(IntVectorWithin(self, index));
|
489
|
-
;
|
490
|
-
((self->values[index]) = (value));
|
491
|
-
}
|
492
|
-
AUTOC_INLINE void IntVectorItCtorEx(IntVectorIt* self, IntVector* vector, int forward) {
|
493
|
-
assert(self);
|
494
|
-
assert(vector);
|
495
|
-
self->vector = vector;
|
496
|
-
self->forward = forward;
|
497
|
-
self->index = forward ? -1 : IntVectorSize(vector);
|
498
|
-
}
|
499
|
-
AUTOC_INLINE int IntVectorItMove(IntVectorIt* self) {
|
500
|
-
assert(self);
|
501
|
-
if(self->forward) ++self->index;
|
502
|
-
else --self->index;
|
503
|
-
return IntVectorWithin(self->vector, self->index);
|
504
|
-
}
|
505
|
-
AUTOC_INLINE int IntVectorItGet(IntVectorIt* self) {
|
506
|
-
assert(self);
|
507
|
-
return IntVectorGet(self->vector, self->index);
|
508
|
-
}
|
509
|
-
#define IntVectorSort(self) IntVectorSortEx(self, 1)
|
510
|
-
AUTOC_EXTERN void IntVectorSortEx(IntVector*, int);
|
511
|
-
/***
|
512
|
-
**** ValueQueue<Value>
|
513
|
-
***/
|
514
|
-
typedef struct ValueQueueNode ValueQueueNode;
|
515
|
-
typedef struct ValueQueue ValueQueue;
|
516
|
-
typedef struct ValueQueueIt ValueQueueIt;
|
517
|
-
struct ValueQueue {
|
518
|
-
ValueQueueNode* head_node;
|
519
|
-
ValueQueueNode* tail_node;
|
520
|
-
size_t node_count;
|
521
|
-
};
|
522
|
-
struct ValueQueueIt {
|
523
|
-
int start, forward;
|
524
|
-
ValueQueue* queue;
|
525
|
-
ValueQueueNode* this_node;
|
526
|
-
};
|
527
|
-
struct ValueQueueNode {
|
528
|
-
Value element;
|
529
|
-
ValueQueueNode* prev_node;
|
530
|
-
ValueQueueNode* next_node;
|
531
|
-
};
|
532
|
-
#define _ValueQueueCtor(self) ValueQueueCtor(&self)
|
533
|
-
#define _ValueQueueDtor(self) ValueQueueDtor(&self)
|
534
|
-
#define _ValueQueueIdentify(self) ValueQueueIdentify(&self)
|
535
|
-
#define _ValueQueueCopy(dst,src) ValueQueueCopy(&dst,&src)
|
536
|
-
#define _ValueQueueEqual(lt,rt) ValueQueueEqual(<,&rt)
|
537
|
-
#define _ValueQueueLess(lt,rt) ValueQueueLess(<,&rt)
|
538
|
-
AUTOC_EXTERN void ValueQueueItCtor(ValueQueueIt*, ValueQueue*);
|
539
|
-
#define ValueQueueItCtor(self, type) ValueQueueItCtorEx(self, type, 1)
|
540
|
-
AUTOC_EXTERN void ValueQueueItCtorEx(ValueQueueIt*, ValueQueue*, int);
|
541
|
-
AUTOC_EXTERN int ValueQueueItMove(ValueQueueIt*);
|
542
|
-
AUTOC_EXTERN Value ValueQueueItGet(ValueQueueIt*);
|
543
|
-
AUTOC_EXTERN void ValueQueueCtor(ValueQueue*);
|
544
|
-
AUTOC_EXTERN void ValueQueueDtor(ValueQueue*);
|
545
|
-
AUTOC_EXTERN void ValueQueueCopy(ValueQueue*,ValueQueue*);
|
546
|
-
AUTOC_EXTERN int ValueQueueEqual(ValueQueue*,ValueQueue*);
|
547
|
-
AUTOC_EXTERN size_t ValueQueueIdentify(ValueQueue*);
|
548
|
-
AUTOC_EXTERN void ValueQueuePurge(ValueQueue*);
|
549
|
-
#define ValueQueuePeek(self) ValueQueuePeekHead(self)
|
550
|
-
AUTOC_EXTERN Value ValueQueuePeekHead(ValueQueue*);
|
551
|
-
AUTOC_EXTERN Value ValueQueuePeekTail(ValueQueue*);
|
552
|
-
#define ValueQueuePush(self, element) ValueQueuePushTail(self, element)
|
553
|
-
AUTOC_EXTERN void ValueQueuePushTail(ValueQueue*, Value);
|
554
|
-
AUTOC_EXTERN void ValueQueuePushHead(ValueQueue*, Value);
|
555
|
-
#define ValueQueuePop(self) ValueQueuePopHead(self)
|
556
|
-
AUTOC_EXTERN Value ValueQueuePopHead(ValueQueue*);
|
557
|
-
AUTOC_EXTERN Value ValueQueuePopTail(ValueQueue*);
|
558
|
-
AUTOC_EXTERN int ValueQueueContains(ValueQueue*, Value);
|
559
|
-
AUTOC_EXTERN Value ValueQueueFind(ValueQueue*, Value);
|
560
|
-
#define ValueQueueReplace(self, with) ValueQueueReplaceEx(self, with, 1)
|
561
|
-
#define ValueQueueReplaceAll(self, with) ValueQueueReplaceEx(self, with, -1)
|
562
|
-
AUTOC_EXTERN int ValueQueueReplaceEx(ValueQueue*, Value, int);
|
563
|
-
#define ValueQueueRemove(self, what) ValueQueueRemoveEx(self, what, 1)
|
564
|
-
#define ValueQueueRemoveAll(self, what) ValueQueueRemoveEx(self, what, -1)
|
565
|
-
AUTOC_EXTERN int ValueQueueRemoveEx(ValueQueue*, Value, int);
|
566
|
-
AUTOC_EXTERN size_t ValueQueueSize(ValueQueue*);
|
567
|
-
#define ValueQueueEmpty(self) (ValueQueueSize(self) == 0)
|
568
|
-
/***
|
569
|
-
**** ValueTreeMap<Value -> Value>
|
570
|
-
***/
|
571
|
-
typedef struct ValueTreeMapEntry ValueTreeMapEntry;
|
572
|
-
struct ValueTreeMapEntry {
|
573
|
-
Value key;
|
574
|
-
Value value;
|
575
|
-
unsigned flags;
|
576
|
-
};
|
577
|
-
typedef struct ValueTreeMapSet ValueTreeMapSet;
|
578
|
-
typedef struct ValueTreeMapSetNode ValueTreeMapSetNode;
|
579
|
-
typedef struct ValueTreeMapSetIt ValueTreeMapSetIt;
|
580
|
-
struct ValueTreeMapSet {
|
581
|
-
ValueTreeMapSetNode* root;
|
582
|
-
size_t size;
|
583
|
-
};
|
584
|
-
struct ValueTreeMapSetIt {
|
585
|
-
int start, ascending;
|
586
|
-
ValueTreeMapSetNode* node;
|
587
|
-
};
|
588
|
-
struct ValueTreeMapSetNode {
|
589
|
-
int color;
|
590
|
-
ValueTreeMapSetNode* left;
|
591
|
-
ValueTreeMapSetNode* right;
|
592
|
-
ValueTreeMapSetNode* parent;
|
593
|
-
ValueTreeMapEntry element;
|
594
|
-
};
|
595
|
-
typedef struct ValueTreeMap ValueTreeMap;
|
596
|
-
typedef struct ValueTreeMapIt ValueTreeMapIt;
|
597
|
-
struct ValueTreeMap {
|
598
|
-
ValueTreeMapSet entries;
|
599
|
-
};
|
600
|
-
struct ValueTreeMapIt {
|
601
|
-
ValueTreeMapSetIt it;
|
602
|
-
};
|
603
|
-
#define _ValueTreeMapCtor(self) ValueTreeMapCtor(&self)
|
604
|
-
#define _ValueTreeMapDtor(self) ValueTreeMapDtor(&self)
|
605
|
-
#define _ValueTreeMapIdentify(self) ValueTreeMapIdentify(&self)
|
606
|
-
#define _ValueTreeMapCopy(dst,src) ValueTreeMapCopy(&dst,&src)
|
607
|
-
#define _ValueTreeMapEqual(lt,rt) ValueTreeMapEqual(<,&rt)
|
608
|
-
#define _ValueTreeMapLess(lt,rt) ValueTreeMapLess(<,&rt)
|
609
|
-
AUTOC_EXTERN void ValueTreeMapCtor(ValueTreeMap*);
|
610
|
-
AUTOC_EXTERN void ValueTreeMapDtor(ValueTreeMap*);
|
611
|
-
AUTOC_EXTERN void ValueTreeMapCopy(ValueTreeMap*,ValueTreeMap*);
|
612
|
-
AUTOC_EXTERN int ValueTreeMapEqual(ValueTreeMap*,ValueTreeMap*);
|
613
|
-
AUTOC_EXTERN size_t ValueTreeMapIdentify(ValueTreeMap*);
|
614
|
-
AUTOC_EXTERN void ValueTreeMapPurge(ValueTreeMap*);
|
615
|
-
AUTOC_EXTERN size_t ValueTreeMapSize(ValueTreeMap*);
|
616
|
-
#define ValueTreeMapEmpty(self) (ValueTreeMapSize(self) == 0)
|
617
|
-
AUTOC_EXTERN int ValueTreeMapContainsKey(ValueTreeMap*, Value);
|
618
|
-
AUTOC_EXTERN Value ValueTreeMapGet(ValueTreeMap*, Value);
|
619
|
-
AUTOC_EXTERN int ValueTreeMapPut(ValueTreeMap*, Value, Value);
|
620
|
-
AUTOC_EXTERN int ValueTreeMapReplace(ValueTreeMap*, Value, Value);
|
621
|
-
AUTOC_EXTERN int ValueTreeMapRemove(ValueTreeMap*, Value);
|
622
|
-
AUTOC_EXTERN int ValueTreeMapItMove(ValueTreeMapIt*);
|
623
|
-
AUTOC_EXTERN Value ValueTreeMapItGetKey(ValueTreeMapIt*);
|
624
|
-
AUTOC_EXTERN Value ValueTreeMapItGetElement(ValueTreeMapIt*);
|
625
|
-
#define ValueTreeMapItGet(it) ValueTreeMapItGetElement(it)
|
626
|
-
AUTOC_EXTERN Value ValueTreeMapPeekLowestKey(ValueTreeMap*);
|
627
|
-
AUTOC_EXTERN Value ValueTreeMapPeekLowestElement(ValueTreeMap*);
|
628
|
-
AUTOC_EXTERN Value ValueTreeMapPeekHighestKey(ValueTreeMap*);
|
629
|
-
AUTOC_EXTERN Value ValueTreeMapPeekHighestElement(ValueTreeMap*);
|
630
|
-
#define ValueTreeMapItCtor(self, type) ValueTreeMapItCtorEx(self, type, 1)
|
631
|
-
AUTOC_EXTERN void ValueTreeMapItCtorEx(ValueTreeMapIt*, ValueTreeMap*, int);
|
632
|
-
/***
|
633
|
-
**** ValueHashMap<Value -> Value>
|
634
|
-
***/
|
635
|
-
typedef struct ValueHashMapEntry ValueHashMapEntry;
|
636
|
-
struct ValueHashMapEntry {
|
637
|
-
Value key;
|
638
|
-
Value value;
|
639
|
-
unsigned flags;
|
640
|
-
};
|
641
|
-
typedef struct ValueHashMapSetListNode ValueHashMapSetListNode;
|
642
|
-
typedef struct ValueHashMapSetList ValueHashMapSetList;
|
643
|
-
typedef struct ValueHashMapSetListIt ValueHashMapSetListIt;
|
644
|
-
struct ValueHashMapSetList {
|
645
|
-
ValueHashMapSetListNode* head_node;
|
646
|
-
size_t node_count;
|
647
|
-
};
|
648
|
-
struct ValueHashMapSetListIt {
|
649
|
-
int start;
|
650
|
-
ValueHashMapSetList* list;
|
651
|
-
ValueHashMapSetListNode* this_node;
|
652
|
-
};
|
653
|
-
struct ValueHashMapSetListNode {
|
654
|
-
ValueHashMapEntry element;
|
655
|
-
ValueHashMapSetListNode* next_node;
|
656
|
-
};
|
657
|
-
typedef struct ValueHashMapSet ValueHashMapSet;
|
658
|
-
typedef struct ValueHashMapSetIt ValueHashMapSetIt;
|
659
|
-
struct ValueHashMapSet {
|
660
|
-
ValueHashMapSetList* buckets;
|
661
|
-
size_t bucket_count, min_bucket_count;
|
662
|
-
size_t size, min_size, max_size;
|
663
|
-
unsigned min_fill, max_fill, capacity_multiplier; /* ?*1e-2 */
|
664
|
-
};
|
665
|
-
struct ValueHashMapSetIt {
|
666
|
-
ValueHashMapSet* set;
|
667
|
-
size_t bucket_index;
|
668
|
-
ValueHashMapSetListIt it;
|
669
|
-
};
|
670
|
-
typedef struct ValueHashMap ValueHashMap;
|
671
|
-
typedef struct ValueHashMapIt ValueHashMapIt;
|
672
|
-
struct ValueHashMap {
|
673
|
-
ValueHashMapSet entries;
|
674
|
-
};
|
675
|
-
struct ValueHashMapIt {
|
676
|
-
ValueHashMapSetIt it;
|
677
|
-
};
|
678
|
-
#define _ValueHashMapCtor(self) ValueHashMapCtor(&self)
|
679
|
-
#define _ValueHashMapDtor(self) ValueHashMapDtor(&self)
|
680
|
-
#define _ValueHashMapIdentify(self) ValueHashMapIdentify(&self)
|
681
|
-
#define _ValueHashMapCopy(dst,src) ValueHashMapCopy(&dst,&src)
|
682
|
-
#define _ValueHashMapEqual(lt,rt) ValueHashMapEqual(<,&rt)
|
683
|
-
#define _ValueHashMapLess(lt,rt) ValueHashMapLess(<,&rt)
|
684
|
-
AUTOC_EXTERN void ValueHashMapCtor(ValueHashMap*);
|
685
|
-
AUTOC_EXTERN void ValueHashMapDtor(ValueHashMap*);
|
686
|
-
AUTOC_EXTERN void ValueHashMapCopy(ValueHashMap*,ValueHashMap*);
|
687
|
-
AUTOC_EXTERN int ValueHashMapEqual(ValueHashMap*,ValueHashMap*);
|
688
|
-
AUTOC_EXTERN size_t ValueHashMapIdentify(ValueHashMap*);
|
689
|
-
AUTOC_EXTERN void ValueHashMapPurge(ValueHashMap*);
|
690
|
-
AUTOC_EXTERN size_t ValueHashMapSize(ValueHashMap*);
|
691
|
-
#define ValueHashMapEmpty(self) (ValueHashMapSize(self) == 0)
|
692
|
-
AUTOC_EXTERN int ValueHashMapContainsKey(ValueHashMap*, Value);
|
693
|
-
AUTOC_EXTERN Value ValueHashMapGet(ValueHashMap*, Value);
|
694
|
-
AUTOC_EXTERN int ValueHashMapPut(ValueHashMap*, Value, Value);
|
695
|
-
AUTOC_EXTERN int ValueHashMapReplace(ValueHashMap*, Value, Value);
|
696
|
-
AUTOC_EXTERN int ValueHashMapRemove(ValueHashMap*, Value);
|
697
|
-
AUTOC_EXTERN int ValueHashMapItMove(ValueHashMapIt*);
|
698
|
-
AUTOC_EXTERN Value ValueHashMapItGetKey(ValueHashMapIt*);
|
699
|
-
AUTOC_EXTERN Value ValueHashMapItGetElement(ValueHashMapIt*);
|
700
|
-
#define ValueHashMapItGet(it) ValueHashMapItGetElement(it)
|
701
|
-
AUTOC_EXTERN void ValueHashMapItCtor(ValueHashMapIt*, ValueHashMap*);
|
702
|
-
/***
|
703
|
-
**** ValueTreeSet<Value>
|
704
|
-
***/
|
705
|
-
typedef struct ValueTreeSet ValueTreeSet;
|
706
|
-
typedef struct ValueTreeSetNode ValueTreeSetNode;
|
707
|
-
typedef struct ValueTreeSetIt ValueTreeSetIt;
|
708
|
-
struct ValueTreeSet {
|
709
|
-
ValueTreeSetNode* root;
|
710
|
-
size_t size;
|
711
|
-
};
|
712
|
-
struct ValueTreeSetIt {
|
713
|
-
int start, ascending;
|
714
|
-
ValueTreeSetNode* node;
|
715
|
-
};
|
716
|
-
struct ValueTreeSetNode {
|
717
|
-
int color;
|
718
|
-
ValueTreeSetNode* left;
|
719
|
-
ValueTreeSetNode* right;
|
720
|
-
ValueTreeSetNode* parent;
|
721
|
-
Value element;
|
722
|
-
};
|
723
|
-
#define _ValueTreeSetCtor(self) ValueTreeSetCtor(&self)
|
724
|
-
#define _ValueTreeSetDtor(self) ValueTreeSetDtor(&self)
|
725
|
-
#define _ValueTreeSetIdentify(self) ValueTreeSetIdentify(&self)
|
726
|
-
#define _ValueTreeSetCopy(dst,src) ValueTreeSetCopy(&dst,&src)
|
727
|
-
#define _ValueTreeSetEqual(lt,rt) ValueTreeSetEqual(<,&rt)
|
728
|
-
#define _ValueTreeSetLess(lt,rt) ValueTreeSetLess(<,&rt)
|
729
|
-
AUTOC_EXTERN void ValueTreeSetCtor(ValueTreeSet*);
|
730
|
-
AUTOC_EXTERN void ValueTreeSetDtor(ValueTreeSet*);
|
731
|
-
AUTOC_EXTERN void ValueTreeSetCopy(ValueTreeSet*,ValueTreeSet*);
|
732
|
-
AUTOC_EXTERN int ValueTreeSetEqual(ValueTreeSet*,ValueTreeSet*);
|
733
|
-
AUTOC_EXTERN size_t ValueTreeSetIdentify(ValueTreeSet*);
|
734
|
-
AUTOC_EXTERN void ValueTreeSetPurge(ValueTreeSet*);
|
735
|
-
AUTOC_EXTERN int ValueTreeSetContains(ValueTreeSet*, Value);
|
736
|
-
AUTOC_EXTERN Value ValueTreeSetGet(ValueTreeSet*, Value);
|
737
|
-
AUTOC_EXTERN size_t ValueTreeSetSize(ValueTreeSet*);
|
738
|
-
#define ValueTreeSetEmpty(self) (ValueTreeSetSize(self) == 0)
|
739
|
-
AUTOC_EXTERN int ValueTreeSetPut(ValueTreeSet*, Value);
|
740
|
-
AUTOC_EXTERN int ValueTreeSetReplace(ValueTreeSet*, Value);
|
741
|
-
AUTOC_EXTERN int ValueTreeSetRemove(ValueTreeSet*, Value);
|
742
|
-
AUTOC_EXTERN void ValueTreeSetExclude(ValueTreeSet*, ValueTreeSet*);
|
743
|
-
AUTOC_EXTERN void ValueTreeSetRetain(ValueTreeSet*, ValueTreeSet*);
|
744
|
-
AUTOC_EXTERN void ValueTreeSetInclude(ValueTreeSet*, ValueTreeSet*);
|
745
|
-
AUTOC_EXTERN void ValueTreeSetInvert(ValueTreeSet*, ValueTreeSet*);
|
746
|
-
AUTOC_EXTERN void ValueTreeSetItCtor(ValueTreeSetIt*, ValueTreeSet*);
|
747
|
-
#define ValueTreeSetItCtor(self, type) ValueTreeSetItCtorEx(self, type, 1)
|
748
|
-
AUTOC_EXTERN void ValueTreeSetItCtorEx(ValueTreeSetIt*, ValueTreeSet*, int);
|
749
|
-
AUTOC_EXTERN int ValueTreeSetItMove(ValueTreeSetIt*);
|
750
|
-
AUTOC_EXTERN Value ValueTreeSetItGet(ValueTreeSetIt*);
|
751
|
-
AUTOC_EXTERN Value ValueTreeSetPeekLowest(ValueTreeSet*);
|
752
|
-
AUTOC_EXTERN Value ValueTreeSetPeekHighest(ValueTreeSet*);
|
753
|
-
#endif
|