1 #ifndef DYNAMITEsinglenumberspaceHEADERFILE
2 #define DYNAMITEsinglenumberspaceHEADERFILE
3 #ifdef _cplusplus
4 extern "C" {
5 #endif
6 #include "shadowseq.h"
7 
8 #define SingleNumberSpaceLISTLENGTH 1024
9 
10 struct Wise2_SingleNumberSequence {
11     int dynamite_hard_link;
12 #ifdef PTHREAD
13     pthread_mutex_t dynamite_mutex;
14 #endif
15     int start;
16     int end;
17     ShadowSequence * seq;
18     } ;
19 /* SingleNumberSequence defined */
20 #ifndef DYNAMITE_DEFINED_SingleNumberSequence
21 typedef struct Wise2_SingleNumberSequence Wise2_SingleNumberSequence;
22 #define SingleNumberSequence Wise2_SingleNumberSequence
23 #define DYNAMITE_DEFINED_SingleNumberSequence
24 #endif
25 
26 
27 struct Wise2_SingleNumberSpace {
28     int dynamite_hard_link;
29 #ifdef PTHREAD
30     pthread_mutex_t dynamite_mutex;
31 #endif
32     int current_end;
33     SingleNumberSequence ** sns;
34     int len;/* len for above sns  */
35     int maxlen; /* maxlen for above sns */
36     SingleNumberSequence * last_accessed;
37     int average_len;
38     int is_static;
39     int max_length;
40     } ;
41 /* SingleNumberSpace defined */
42 #ifndef DYNAMITE_DEFINED_SingleNumberSpace
43 typedef struct Wise2_SingleNumberSpace Wise2_SingleNumberSpace;
44 #define SingleNumberSpace Wise2_SingleNumberSpace
45 #define DYNAMITE_DEFINED_SingleNumberSpace
46 #endif
47 
48 
49 
50 
51     /***************************************************/
52     /* Callable functions                              */
53     /* These are the functions you are expected to use */
54     /***************************************************/
55 
56 
57 
58 /* Function:  lookup_ShadowSequence_SingleNumberSpace(space,pos)
59  *
60  * Descrip:    New return using binary choping
61  *
62  *
63  * Arg:        space [UNKN ] Undocumented argument [SingleNumberSpace *]
64  * Arg:          pos [UNKN ] Undocumented argument [int]
65  *
66  * Return [UNKN ]  Undocumented return value [SingleNumberSequence *]
67  *
68  */
69 SingleNumberSequence * Wise2_lookup_ShadowSequence_SingleNumberSpace(SingleNumberSpace * space,int pos);
70 #define lookup_ShadowSequence_SingleNumberSpace Wise2_lookup_ShadowSequence_SingleNumberSpace
71 
72 
73 /* Function:  find_position_SingleNumberSpace(space,lower,higher,position)
74  *
75  * Descrip:    Recursive function for finding position
76  *
77  *
78  * Arg:           space [UNKN ] Undocumented argument [SingleNumberSpace *]
79  * Arg:           lower [UNKN ] Undocumented argument [int]
80  * Arg:          higher [UNKN ] Undocumented argument [int]
81  * Arg:        position [UNKN ] Undocumented argument [int]
82  *
83  * Return [UNKN ]  Undocumented return value [int]
84  *
85  */
86 int Wise2_find_position_SingleNumberSpace(SingleNumberSpace * space,int lower,int higher,int position);
87 #define find_position_SingleNumberSpace Wise2_find_position_SingleNumberSpace
88 
89 
90 /* Function:  add_ShadowSequence_SingleNumberSpace(space,seq)
91  *
92  * Descrip:    Adds a sequence to a single number space, giving out the start
93  *             position for this sequence
94  *
95  *
96  * Arg:        space [UNKN ] Undocumented argument [SingleNumberSpace *]
97  * Arg:          seq [UNKN ] Undocumented argument [ShadowSequence *]
98  *
99  * Return [UNKN ]  Undocumented return value [int]
100  *
101  */
102 int Wise2_add_ShadowSequence_SingleNumberSpace(SingleNumberSpace * space,ShadowSequence * seq);
103 #define add_ShadowSequence_SingleNumberSpace Wise2_add_ShadowSequence_SingleNumberSpace
104 
105 
106 /* Function:  new_SingleNumberSpace(has_maxlen,max_length)
107  *
108  * Descrip:    Provides a new single number space
109  *
110  *
111  * Arg:        has_maxlen [UNKN ] Undocumented argument [int]
112  * Arg:        max_length [UNKN ] Undocumented argument [int]
113  *
114  * Return [UNKN ]  Undocumented return value [SingleNumberSpace *]
115  *
116  */
117 SingleNumberSpace * Wise2_new_SingleNumberSpace(int has_maxlen,int max_length);
118 #define new_SingleNumberSpace Wise2_new_SingleNumberSpace
119 
120 
121 /* Function:  hard_link_SingleNumberSequence(obj)
122  *
123  * Descrip:    Bumps up the reference count of the object
124  *             Meaning that multiple pointers can 'own' it
125  *
126  *
127  * Arg:        obj [UNKN ] Object to be hard linked [SingleNumberSequence *]
128  *
129  * Return [UNKN ]  Undocumented return value [SingleNumberSequence *]
130  *
131  */
132 SingleNumberSequence * Wise2_hard_link_SingleNumberSequence(SingleNumberSequence * obj);
133 #define hard_link_SingleNumberSequence Wise2_hard_link_SingleNumberSequence
134 
135 
136 /* Function:  SingleNumberSequence_alloc(void)
137  *
138  * Descrip:    Allocates structure: assigns defaults if given
139  *
140  *
141  *
142  * Return [UNKN ]  Undocumented return value [SingleNumberSequence *]
143  *
144  */
145 SingleNumberSequence * Wise2_SingleNumberSequence_alloc(void);
146 #define SingleNumberSequence_alloc Wise2_SingleNumberSequence_alloc
147 
148 
149 /* Function:  free_SingleNumberSequence(obj)
150  *
151  * Descrip:    Free Function: removes the memory held by obj
152  *             Will chain up to owned members and clear all lists
153  *
154  *
155  * Arg:        obj [UNKN ] Object that is free'd [SingleNumberSequence *]
156  *
157  * Return [UNKN ]  Undocumented return value [SingleNumberSequence *]
158  *
159  */
160 SingleNumberSequence * Wise2_free_SingleNumberSequence(SingleNumberSequence * obj);
161 #define free_SingleNumberSequence Wise2_free_SingleNumberSequence
162 
163 
164 /* Function:  add_SingleNumberSpace(obj,add)
165  *
166  * Descrip:    Adds another object to the list. It will expand the list if necessary
167  *
168  *
169  * Arg:        obj [UNKN ] Object which contains the list [SingleNumberSpace *]
170  * Arg:        add [OWNER] Object to add to the list [SingleNumberSequence *]
171  *
172  * Return [UNKN ]  Undocumented return value [boolean]
173  *
174  */
175 boolean Wise2_add_SingleNumberSpace(SingleNumberSpace * obj,SingleNumberSequence * add);
176 #define add_SingleNumberSpace Wise2_add_SingleNumberSpace
177 
178 
179 /* Function:  flush_SingleNumberSpace(obj)
180  *
181  * Descrip:    Frees the list elements, sets length to 0
182  *             If you want to save some elements, use hard_link_xxx
183  *             to protect them from being actually destroyed in the free
184  *
185  *
186  * Arg:        obj [UNKN ] Object which contains the list  [SingleNumberSpace *]
187  *
188  * Return [UNKN ]  Undocumented return value [int]
189  *
190  */
191 int Wise2_flush_SingleNumberSpace(SingleNumberSpace * obj);
192 #define flush_SingleNumberSpace Wise2_flush_SingleNumberSpace
193 
194 
195 /* Function:  SingleNumberSpace_alloc_std(void)
196  *
197  * Descrip:    Equivalent to SingleNumberSpace_alloc_len(SingleNumberSpaceLISTLENGTH)
198  *
199  *
200  *
201  * Return [UNKN ]  Undocumented return value [SingleNumberSpace *]
202  *
203  */
204 SingleNumberSpace * Wise2_SingleNumberSpace_alloc_std(void);
205 #define SingleNumberSpace_alloc_std Wise2_SingleNumberSpace_alloc_std
206 
207 
208 /* Function:  SingleNumberSpace_alloc_len(len)
209  *
210  * Descrip:    Allocates len length to all lists
211  *
212  *
213  * Arg:        len [UNKN ] Length of lists to allocate [int]
214  *
215  * Return [UNKN ]  Undocumented return value [SingleNumberSpace *]
216  *
217  */
218 SingleNumberSpace * Wise2_SingleNumberSpace_alloc_len(int len);
219 #define SingleNumberSpace_alloc_len Wise2_SingleNumberSpace_alloc_len
220 
221 
222 /* Function:  hard_link_SingleNumberSpace(obj)
223  *
224  * Descrip:    Bumps up the reference count of the object
225  *             Meaning that multiple pointers can 'own' it
226  *
227  *
228  * Arg:        obj [UNKN ] Object to be hard linked [SingleNumberSpace *]
229  *
230  * Return [UNKN ]  Undocumented return value [SingleNumberSpace *]
231  *
232  */
233 SingleNumberSpace * Wise2_hard_link_SingleNumberSpace(SingleNumberSpace * obj);
234 #define hard_link_SingleNumberSpace Wise2_hard_link_SingleNumberSpace
235 
236 
237 /* Function:  SingleNumberSpace_alloc(void)
238  *
239  * Descrip:    Allocates structure: assigns defaults if given
240  *
241  *
242  *
243  * Return [UNKN ]  Undocumented return value [SingleNumberSpace *]
244  *
245  */
246 SingleNumberSpace * Wise2_SingleNumberSpace_alloc(void);
247 #define SingleNumberSpace_alloc Wise2_SingleNumberSpace_alloc
248 
249 
250 /* Function:  free_SingleNumberSpace(obj)
251  *
252  * Descrip:    Free Function: removes the memory held by obj
253  *             Will chain up to owned members and clear all lists
254  *
255  *
256  * Arg:        obj [UNKN ] Object that is free'd [SingleNumberSpace *]
257  *
258  * Return [UNKN ]  Undocumented return value [SingleNumberSpace *]
259  *
260  */
261 SingleNumberSpace * Wise2_free_SingleNumberSpace(SingleNumberSpace * obj);
262 #define free_SingleNumberSpace Wise2_free_SingleNumberSpace
263 
264 
265   /* Unplaced functions */
266   /* There has been no indication of the use of these functions */
267 
268 
269     /***************************************************/
270     /* Internal functions                              */
271     /* you are not expected to have to call these      */
272     /***************************************************/
273 void Wise2_swap_SingleNumberSpace(SingleNumberSequence ** list,int i,int j) ;
274 #define swap_SingleNumberSpace Wise2_swap_SingleNumberSpace
275 void Wise2_qsort_SingleNumberSpace(SingleNumberSequence ** list,int left,int right,int (*comp)(SingleNumberSequence * ,SingleNumberSequence * ));
276 #define qsort_SingleNumberSpace Wise2_qsort_SingleNumberSpace
277 void Wise2_sort_SingleNumberSpace(SingleNumberSpace * obj,int (*comp)(SingleNumberSequence *, SingleNumberSequence *));
278 #define sort_SingleNumberSpace Wise2_sort_SingleNumberSpace
279 boolean Wise2_expand_SingleNumberSpace(SingleNumberSpace * obj,int len);
280 #define expand_SingleNumberSpace Wise2_expand_SingleNumberSpace
281 
282 #ifdef _cplusplus
283 }
284 #endif
285 
286 #endif
287