MISR Toolkit  1.5.1
glist.h
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2  * Copyright by The HDF Group. *
3  * Copyright by the Board of Trustees of the University of Illinois. *
4  * All rights reserved. *
5  * *
6  * This file is part of HDF. The full HDF copyright notice, including *
7  * terms governing use, modification, and redistribution, is contained in *
8  * the COPYING file, which can be found at the root of the source code *
9  * distribution tree, or in https://support.hdfgroup.org/ftp/HDF/releases/. *
10  * If you do not have access to either file, you may request a copy from *
11  * help@hdfgroup.org. *
12  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
13 
14 /************************************************************************
15  Credits:
16  Original code is part of the public domain 'Generic List Library'
17  by Keith Pomakis(kppomaki@jeeves.uwaterloo.ca)-Spring, 1994
18  It has been modifed to adhere to HDF coding standards.
19 
20  1996/05/29 - George V.
21  ************************************************************************/
22 
23 /* $Id$ */
24 
25 #ifndef GLIST_H
26 #define GLIST_H
27 
28 #include "hdf.h" /* needed for data types */
29 
30 /* Structure for each element in the list */
31 typedef struct GLE_struct {
32  VOIDP pointer; /* data element itself */
33  struct GLE_struct *previous; /* previous element */
34  struct GLE_struct *next; /* next element */
36 
37 /* List info structure */
38 typedef struct GLI_struct {
39  Generic_list_element *current; /* current element */
40  Generic_list_element pre_element; /* pre element */
41  Generic_list_element post_element; /* post element */
42  Generic_list_element deleted_element; /* deleted element */
43  intn (*lt)(VOIDP a, VOIDP b); /* sort fcn */
44  uint32 num_of_elements; /* number of elements */
46 
47 /* Top most List structure, handle to the list */
48 typedef struct GL_struct {
50 } Generic_list;
51 
52 /* Define a Stack and Queue */
53 #define Generic_stack Generic_list
54 #define Generic_queue Generic_list
55 
56 /* Function declarations
57  Descriptions for the General List routines can be found in 'glist.c'
58  while the stack and queue routines are found below
59  */
60 
61 /******************************************************************************
62  NAME
63  HDGLinitialize_list
64  DESCRIPTION
65  Every list must be initialized before it is used. The only time it is
66  valid to re-initialize a list is after it has been destroyed.
67  RETURNS
68  SUCCEED/FAIL
69 *******************************************************************************/
70 intn HDGLinitialize_list(Generic_list *list /* IN: list */);
71 
72 /******************************************************************************
73  NAME
74  HDGLinitialize_sorted_list
75  DESCRIPTION
76  This function initializes a sorted list. A less-than function must be
77  specified which accepts two pointers, a and b, and returns TRUE
78  (non-zero) if a is less than b, FALSE otherwise.
79 
80  Once a list is initialized in this way, all of the generic list
81  functions described above can be used, except for:
82 
83  void HDGLadd_to_beginning(Generic_list list, void *pointer);
84  void HDGLadd_to_end(Generic_list list, void *pointer);
85  void *HDGLremove_from_beginning(Generic_list list);
86  void *HDGLremove_from_end(Generic_list list);
87 
88  and the list will remain sorted by the criteria specified by the
89  less-than function. The only time it is valid to re-initialize a list
90  is after it has been destroyed.
91  RETURNS
92  SUCEED/FAIL
93 *******************************************************************************/
94 intn HDGLinitialize_sorted_list(Generic_list *list/*IN: list */,
95  intn (*lt)(VOIDP a, VOIDP b)/*IN:sort fcn */);
96 
97 /******************************************************************************
98  NAME
99  destory_list
100  DESCRIPTION
101  When a list is no longer needed, it should be destroyed. This process
102  will automatically remove all remaining objects from the list. However,
103  the memory for these objects will not be reclaimed, so if the objects
104  have no other references, care should be taken to purge the list and
105  free all objects before destroying the list.
106 
107  It is an error to destroy a list more than once (unless it has been
108  re-initialized in the meantime).
109  RETURNS
110  Nothing
111 *******************************************************************************/
112 void HDGLdestroy_list(Generic_list *list /*IN: list */);
113 
114 /******************************************************************************
115  NAME
116  HDGLadd_to_beginning
117  DESCRIPTION
118  This function will add the specified object to the beginning of the
119  list. The pointer must not be NULL.
120  RETURNS
121  SUCCEED/FAIL
122 *******************************************************************************/
123 intn HDGLadd_to_beginning(Generic_list list, /*IN: list */
124  VOIDP pointer /*IN: data element */ );
125 
126 /******************************************************************************
127  NAME
128  HDGLadd_to_end
129  DESCRIPTION
130  This function will add the specified object to the end of the
131  list. The pointer must not be NULL.
132  RETURNS
133  SUCCEED/FAIL
134 *******************************************************************************/
135 intn HDGLadd_to_end(Generic_list list, /*IN: list */
136  VOIDP pointer /*IN: data element */);
137 
138 /******************************************************************************
139  NAME
140  HDGLadd_to_list
141  DESCRIPTION
142  This function will add the specified object to the list. The pointer
143  must not be NULL.
144  RETURNS
145  SUCCEED/FAIL
146 *******************************************************************************/
147 intn HDGLadd_to_list(Generic_list list, /*IN: list */
148  VOIDP pointer /*IN: data element */);
149 
150 /******************************************************************************
151  NAME
152  HDGLremove_from_beginning
153  DESCRIPTION
154  This function will remove the first object from the beginning of the
155  list and return it. If the list is empty, NULL is returned.
156  RETURNS
157  First Element if successful and NULL otherwise.
158 *******************************************************************************/
159 VOIDP HDGLremove_from_beginning(Generic_list list /*IN: list */);
160 
161 /******************************************************************************
162  NAME
163  HDGLremove_from_end
164  DESCRIPTION
165  This function will remove the last object from the end of the list and
166  return it. If the list is empty, NULL is returned.
167  RETURNS
168  Last element if successfull and NULL otherwise
169 *******************************************************************************/
170 VOIDP HDGLremove_from_end(Generic_list list /*IN: list */);
171 
172 /******************************************************************************
173  NAME
174  HDGLremove_from_list
175  DESCRIPTION
176  This function will remove the specified object from the list and return
177  it. If the specified object does not exist in the list, NULL is
178  returned. If the specified object exists in the list more than once,
179  only the last reference to it is removed.
180 
181  RETURNS
182  Element removed if successful and NULL otherwise
183 *******************************************************************************/
184 VOIDP HDGLremove_from_list(Generic_list list, /*IN: list */
185  VOIDP pointer /*IN: data element */);
186 
187 /******************************************************************************
188  NAME
189  HDGLremove_current
190  DESCRIPTION
191  This function will remove the current object from the list and return
192  it. If the current object has already been removed, if current points
193  to the beginning or end of the list, or if the list is empty, NULL is
194  returned.
195  RETURNS
196  Current element if successful and NULL otherwise.
197 *******************************************************************************/
198 VOIDP HDGLremove_current(Generic_list list /*IN: list */);
199 
200 /******************************************************************************
201  NAME
202  HDGLremove_all
203  DESCRIPTION
204  This function will remove all objects from the list. Note that the
205  memory for these objects will not be reclaimed, so if the objects have
206  no other references, it is best to avoid this function and remove the
207  objects one by one, freeing them when necessary.
208  RETURNS
209  Nothing
210 *******************************************************************************/
211 void HDGLremove_all(Generic_list list /*IN: list */);
212 
213 /******************************************************************************
214  NAME
215  HDGLpeek_at_beginning
216  DESCRIPTION
217  This function will return the first object in the list. If the list is
218  empty, NULL is returned.
219  RETURNS
220  First element in list if non-empty, otherwise NULL.
221 *******************************************************************************/
222 VOIDP HDGLpeek_at_beginning(Generic_list list /*IN: list */);
223 
224 /******************************************************************************
225  NAME
226  HDGLpeek_at_end
227  DESCRIPTION
228  This function will return the last object in the list. If the list is
229  empty, NULL is returned.
230  RETURNS
231  Last element in list if non-empty, otherwise NULL.
232 *******************************************************************************/
233 VOIDP HDGLpeek_at_end(Generic_list list /*IN: list */);
234 
235 /******************************************************************************
236  NAME
237  HDGLfirst_in_list
238  DESCRIPTION
239  This function will return the first object in the list and mark it as
240  the current object. If the list is empty, NULL is returned.
241  RETURNS
242  First element in list if non-empty, otherwise NULL.
243 *******************************************************************************/
244 VOIDP HDGLfirst_in_list(Generic_list list /*IN: list */);
245 
246 /******************************************************************************
247  NAME
248  HDGLcurrent_in_list
249  DESCRIPTION
250  This function will return the object in the list that is considered
251  the current object (as defined by the surrounding functions). If the
252  current object has just been removed, if current points to the
253  beginning or end of the list, or if the list is empty, NULL is
254  returned.
255  RETURNS
256  Current element in list if non-empty, otherwise NULL.
257 *******************************************************************************/
258 VOIDP HDGLcurrent_in_list(Generic_list list /*IN: list */);
259 
260 /******************************************************************************
261  NAME
262  HDGLlast_in_list
263  DESCRIPTION
264  This function will return the last object in the list and mark it as
265  the current object. If the list is empty, NULL is returned.
266  RETURNS
267  Last element in list if non-empty, otherwise NULL.
268 *******************************************************************************/
269 VOIDP HDGLlast_in_list(Generic_list list /*IN: list */);
270 
271 /******************************************************************************
272  NAME
273  HDGLnext_in_list
274  DESCRIPTION
275  This function will return the next object in the list and mark it as
276  the current object. If the end of the list is reached, or if the list
277  is empty, NULL is returned.
278  RETURNS
279  Next element in list if non-empty, otherwise NULL.
280 *******************************************************************************/
281 VOIDP HDGLnext_in_list(Generic_list list /*IN: list */);
282 
283 /******************************************************************************
284  NAME
285  HDGLprevious_in_list
286  DESCRIPTION
287  This function will return the previous object in the list and mark it
288  as the current object. If the beginning of the list is reached, or if
289  the list is empty, NULL is returned.
290  RETURNS
291  Previous element in list if non-empty, otherwise NULL.
292 *******************************************************************************/
293 VOIDP HDGLprevious_in_list(Generic_list list /*IN: list */);
294 
295 /******************************************************************************
296  NAME
297  HDGLreset_to_beginning
298  DESCRIPTION
299  This function will reset the list to the beginning. Therefore, current
300  points to the beginning of the list, and the next object in the list is
301  the first object.
302  RETURNS
303  Nothing
304 *******************************************************************************/
305 void HDGLreset_to_beginning(Generic_list list /*IN: list */);
306 
307 /******************************************************************************
308  NAME
309  HDGLreset_to_end
310  DESCRIPTION
311  This function will reset the list to the end. Therefore, current
312  points to the end of the list, and the previous object in the list is
313  the last object.
314  RETURNS
315  Nothing
316 *******************************************************************************/
317 void HDGLreset_to_end(Generic_list list /*IN: list */);
318 
319 /******************************************************************************
320  NAME
321  HDGLnum_of_objects
322  DESCRIPTION
323  This function will determine the number of objects in the list.
324  RETURNS
325  Number of objects in list
326 *******************************************************************************/
327 intn HDGLnum_of_objects(Generic_list list /*IN: list */);
328 
329 /******************************************************************************
330  NAME
331  HDGLis_empty
332  DESCRIPTION
333  Finds if list is empty
334  RETURNS
335  This function will return TRUE (1) if the list is empty, and FALSE (0)
336  otherwise.
337 *******************************************************************************/
338 intn HDGLis_empty(Generic_list list /*IN: list */);
339 
340 /******************************************************************************
341  NAME
342  HDGLis_in_list
343  DESCRIPTION
344  Detemines if the object is in the list.
345  RETURNS
346  This function will return TRUE (1) if the specified object is a member
347  of the list, and FALSE (0) otherwise.
348 *******************************************************************************/
349 intn HDGLis_in_list(Generic_list list, /*IN: list */
350  VOIDP pointer /*IN: data element */);
351 
352 /******************************************************************************
353  NAME
354  HDGLcopy_list
355  DESCRIPTION
356  This function will make a copy of the list. The objects themselves
357  are not copied; only new references to them are made. The new list
358  loses its concept of the current object.
359  RETURNS
360  A copy of the orginal list.
361 *******************************************************************************/
362 Generic_list HDGLcopy_list(Generic_list list /*IN: list */);
363 
364 /******************************************************************************
365  NAME
366  HDGLperform_on_list
367  DESCRIPTION
368  This function will perform the specified function on each object in the
369  list. Any optional arguments required can be passed through args.
370  RETURNS
371  Nothing
372 *******************************************************************************/
373 void HDGLperform_on_list(Generic_list list, /*IN: list */
374  void (*fn)(VOIDP pointer, VOIDP args), /* IN: iterator fcn */
375  VOIDP args /*IN: args to iterator fcn */);
376 
377 /******************************************************************************
378  NAME
379  HDGLfirst_that
380  DESCRIPTION
381  This function will find and return the first object in the list which
382  causes the specified function to return a TRUE (non-zero) value. Any
383  optional arguments required can be passed through args. The found
384  object is then marked as the current object. If no objects in the list
385  meet the criteria of the specified function, NULL is returned.
386  RETURNS
387  Element if successful and NULL otherwise.
388 *******************************************************************************/
389 VOIDP HDGLfirst_that(Generic_list list, /*IN: list */
390  intn (*fn)(VOIDP pointer, VOIDP args), /* IN: iterator fcn */
391  VOIDP args /*IN: args to iterator fcn */);
392 
393 /******************************************************************************
394  NAME
395  HDGLnext_that
396  DESCRIPTION
397  This function will find and return the next object in the list which
398  causes the specified function to return a TRUE (non-zero) value. Any
399  optional arguments required can be passed through args. The found
400  object is then marked as the current object. If there are no objects
401  left in the list that meet the criteria of the specified function,
402  NULL is returned.
403  RETURNS
404  Element if successful and NULL otherwise.
405 *******************************************************************************/
406 VOIDP HDGLnext_that(Generic_list list, /*IN: list */
407  intn (*fn)(VOIDP pointer, VOIDP args), /* IN: iterator fcn */
408  VOIDP args /*IN: args to iterator fcn */);
409 
410 /******************************************************************************
411  NAME
412  HDGLprevious_that
413  DESCRIPTION
414  This function will find and return the previous object in the list
415  which causes the specified function to return a TRUE (non-zero) value.
416  Any optional arguments required can be passed through args. The found
417  object is then marked as the current object. If there are no objects
418  left in the list that meet the criteria of the specified function,
419  NULL is returned.
420  RETURNS
421  Element if successful and NULL otherwise.
422 *******************************************************************************/
423 VOIDP HDGLprevious_that(Generic_list list, /*IN: list */
424  intn (*fn)(VOIDP pointer, VOIDP args), /* IN: iterator fcn */
425  VOIDP args /*IN: args to iterator fcn */);
426 
427 /******************************************************************************
428  NAME
429  HDGLlast_that
430  DESCRIPTION
431  This function will find and return the last object in the list which
432  causes the specified function to return a TRUE (non-zero) value. Any
433  optional arguments required can be passed through args. The found
434  object is then marked as the current object. If no objects in the
435  list meet the criteria of the specified function, NULL is returned.
436  RETURNS
437  Element if successful and NULL otherwise.
438 *******************************************************************************/
439 VOIDP HDGLlast_that(Generic_list list, /*IN: list */
440  intn (*fn)(VOIDP pointer, VOIDP args), /* IN: iterator fcn */
441  VOIDP args /*IN: args to iterator fcn */);
442 
443 /******************************************************************************
444  NAME
445  HDGLall_such_that
446  DESCRIPTION
447  This function will return a new list containing all of the objects in
448  the specified list which cause the specified function to return a TRUE
449  (non-zero) value. Any optional arguments required can be passed
450  through args. The objects themselves are not copied; only new
451  references to them are made.
452  RETURNS
453  New list if successful and empty if not.
454 *******************************************************************************/
455 Generic_list HDGLall_such_that(Generic_list list, /*IN: list */
456  intn (*fn)(VOIDP pointer, VOIDP args), /* IN: iterator fcn */
457  VOIDP args /*IN: args to iterator fcn */);
458 
459 /******************************************************************************
460  NAME
461  HDGLremove_HDGLall_such_that
462  DESCRIPTION
463  This function will remove all objects in the list which cause the
464  specified function to return a TRUE (non-zero) value. Any optional
465  arguments required can be passed through args. Note that the memory
466  for these objects will not be reclaimed, so if the objects have
467  no other references, it is best to avoid this function and remove the
468  objects one by one, freeing them when necessary.
469  RETURNS
470  Nothing
471 *******************************************************************************/
472 void HDGLremove_all_such_that(Generic_list list, /*IN: list */
473  intn (*fn)(VOIDP pointer, VOIDP args), /* IN: iterator fcn */
474  VOIDP args /*IN: args to iterator fcn */);
475 
476 
477 /****************************************************************************/
478 /*
479  * Stack operations
480  */
481 
482 /******************************************************************************
483  NAME
484  HDGSinitialize_stack
485  DESCRIPTION
486  Every stack must be initialized before it is used. The only time it is
487  valid to re-initialize a stack is after it has been destroyed.
488  RETURNS
489  SUCCEED/FAIL
490 *******************************************************************************/
491 #define HDGSinitialize_stack HDGLinitialize_list
492 
493 /******************************************************************************
494  NAME
495  HDGSdestroy_stack
496  DESCRIPTION
497  When a stack is no longer needed, it should be destroyed. This process
498  will automatically remove all remaining objects from the stack.
499  However, the memory for these objects will not be reclaimed, so if the
500  objects have no other references, care should be taken to purge the
501  stack and free all objects before destroying the stack.
502 
503  It is an error to destroy a stack more than once (unless it has been
504  re-initialized in the meantime).
505  RETURNS
506  Nothing
507 *******************************************************************************/
508 #define HDGSdestroy_stack HDGLdestroy_list
509 
510 /******************************************************************************
511  NAME
512  HDGSpush
513  DESCRIPTION
514  This function will HDGSpush the specified object onto the stack. The
515  pointer must not be NULL.
516  RETURNS
517  SUCCEED/FAIL
518 *******************************************************************************/
519 #define HDGSpush HDGLadd_to_beginning
520 
521 /******************************************************************************
522  NAME
523  HDGSpop
524  DESCRIPTION
525  This function will HDGSpop the first object from the top of the stack and
526  return it. If the stack is empty, NULL is returned.
527  RETURNS
528  First element of the top of the stack
529 *******************************************************************************/
530 #define HDGSpop HDGLremove_from_beginning
531 
532 /******************************************************************************
533  NAME
534  HDGSpop_all
535  DESCRIPTION
536  This function will HDGSpop all objects from the stack. Note that the
537  memory for these objects will not be reclaimed, so if the objects have
538  no other references, it is best to avoid this function and HDGSpop the
539  objects one by one, freeing them when necessary.
540  RETURNS
541  Nothing
542 *******************************************************************************/
543 #define HDGSpop_all HDGLremove_all
544 
545 /******************************************************************************
546  NAME
547  HDGSpeek_at_top
548  DESCRIPTION
549  This function will return the object on the top of the stack. If the
550  stack is empty, NULL is returned.
551  RETURNS
552  Element at top of stack.
553 *******************************************************************************/
554 #define HDGSpeek_at_top HDGLpeek_at_beginning
555 
556 /******************************************************************************
557  NAME
558  HDGScopy_stack
559  DESCRIPTION
560  This function will return a copy of the stack. The objects themselves
561  are not copied; only new references to them are made.
562  RETURNS
563  SUCCEED/FAIL
564 *******************************************************************************/
565 #define HDGScopy_stack HDGLcopy_list
566 
567 
568 /****************************************************************************/
569 /*
570  * Queue operations
571  */
572 
573 /******************************************************************************
574  NAME
575  HDGQinitialize_queue
576  DESCRIPTION
577  Every queue must be initialized before it is used. The only time it is
578  valid to re-initialize a queue is after it has been destroyed.
579  RETURNS
580  SUCCEED/FAIL
581 *******************************************************************************/
582 #define HDGQinitialize_queue HDGLinitialize_list
583 
584 /******************************************************************************
585  NAME
586  HDGQdestroy_queue
587  DESCRIPTION
588  When a queue is no longer needed, it should be destroyed. This process
589  will automatically remove all remaining objects from the queue.
590  However, the memory for these objects will not be reclaimed, so if the
591  objects have no other references, care should be taken to purge the
592  queue and free all objects before destroying the queue.
593 
594  It is an error to destroy a queue more than once (unless it has been
595  re-initialized in the meantime).
596  RETURNS
597  SUCCEED/FAIL
598 *******************************************************************************/
599 #define HDGQdestroy_queue HDGLdestroy_list
600 
601 /******************************************************************************
602  NAME
603  HDGQenqueue
604  DESCRIPTION
605  This function will add the specified object to the tail of the queue.
606  The pointer must not be NULL.
607  RETURNS
608  SUCCEED/FAIL
609 *******************************************************************************/
610 #define HDGQenqueue HDGLadd_to_end
611 
612 /******************************************************************************
613  NAME
614  HDGQdequeue
615  DESCRIPTION
616  This function will remove the first object from the head of the queue
617  and return it. If the queue is empty, NULL is returned.
618  RETURNS
619  First element in the queue in non-empty, else NULL.
620 *******************************************************************************/
621 #define HDGQdequeue HDGLremove_from_beginning
622 
623 /******************************************************************************
624  NAME
625  HDGQdequeue_all
626  DESCRIPTION
627  This function will remove all objects from the queue. Note that the
628  memory for these objects will not be reclaimed, so if the objects have
629  no other references, it is best to avoid this function and HDGQdequeue the
630  objects one by one, freeing them when necessary.
631  RETURNS
632  Nothing
633 *******************************************************************************/
634 #define HDGQdequeue_all HDGLremove_all
635 
636 /******************************************************************************
637  NAME
638  HDGQpeek_at_head
639  DESCRIPTION
640  This function will return the object at the head of the queue. If the
641  queue is empty, NULL is returned.
642  RETURNS
643  First element in the queue in non-empty, else NULL.
644 *******************************************************************************/
645 #define HDGQpeek_at_head HDGLpeek_at_beginning
646 
647 /******************************************************************************
648  NAME
649  HDGQpeek_at_tail
650  DESCRIPTION
651  This function will return the object at the tail of the queue. If the
652  queue is empty, NULL is returned.
653  RETURNS
654  Last element in the queue in non-empty, else NULL.
655 *******************************************************************************/
656 #define HDGQpeek_at_tail HDGLpeek_at_end
657 
658 /******************************************************************************
659  NAME
660  HDGQcopy_queue
661  DESCRIPTION
662  This function will return a copy of the queue. The objects themselves
663  are not copied; only new references to them are made.
664  RETURNS
665  SUCCEED/FAIL
666 *******************************************************************************/
667 #define HDGQcopy_queue HDGLcopy_list
668 
669 #endif /* GLIST_H */
670 
VOIDP pointer
Definition: glist.h:32
struct GLE_struct * previous
Definition: glist.h:33
VOIDP HDGLlast_in_list(Generic_list list)
void HDGLreset_to_beginning(Generic_list list)
Generic_list HDGLcopy_list(Generic_list list)
intn HDGLinitialize_list(Generic_list *list)
void HDGLremove_all(Generic_list list)
Generic_list_element post_element
Definition: glist.h:41
intn HDGLnum_of_objects(Generic_list list)
Generic_list_element * current
Definition: glist.h:39
VOIDP HDGLcurrent_in_list(Generic_list list)
VOIDP HDGLremove_from_end(Generic_list list)
long b
Definition: jpegint.h:371
intn HDGLis_empty(Generic_list list)
Generic_list_element deleted_element
Definition: glist.h:42
Generic_list HDGLall_such_that(Generic_list list, intn(*fn)(VOIDP pointer, VOIDP args), VOIDP args)
void HDGLdestroy_list(Generic_list *list)
struct GLE_struct Generic_list_element
intn HDGLadd_to_list(Generic_list list, VOIDP pointer)
VOIDP HDGLpeek_at_end(Generic_list list)
VOIDP HDGLnext_that(Generic_list list, intn(*fn)(VOIDP pointer, VOIDP args), VOIDP args)
intn HDGLinitialize_sorted_list(Generic_list *list, intn(*lt)(VOIDP a, VOIDP b))
Generic_list_element pre_element
Definition: glist.h:40
struct GLE_struct * next
Definition: glist.h:34
VOIDP HDGLfirst_in_list(Generic_list list)
VOIDP HDGLprevious_that(Generic_list list, intn(*fn)(VOIDP pointer, VOIDP args), VOIDP args)
void HDGLreset_to_end(Generic_list list)
VOIDP HDGLremove_from_list(Generic_list list, VOIDP pointer)
void HDGLremove_all_such_that(Generic_list list, intn(*fn)(VOIDP pointer, VOIDP args), VOIDP args)
intn HDGLadd_to_end(Generic_list list, VOIDP pointer)
VOIDP HDGLprevious_in_list(Generic_list list)
VOIDP HDGLremove_current(Generic_list list)
uint32 num_of_elements
Definition: glist.h:44
struct GL_struct Generic_list
void HDGLperform_on_list(Generic_list list, void(*fn)(VOIDP pointer, VOIDP args), VOIDP args)
intn HDGLis_in_list(Generic_list list, VOIDP pointer)
VOIDP HDGLremove_from_beginning(Generic_list list)
VOIDP HDGLpeek_at_beginning(Generic_list list)
intn HDGLadd_to_beginning(Generic_list list, VOIDP pointer)
VOIDP HDGLfirst_that(Generic_list list, intn(*fn)(VOIDP pointer, VOIDP args), VOIDP args)
VOIDP HDGLlast_that(Generic_list list, intn(*fn)(VOIDP pointer, VOIDP args), VOIDP args)
Generic_list_info * info
Definition: glist.h:49
struct GLI_struct Generic_list_info
VOIDP HDGLnext_in_list(Generic_list list)

MISR Toolkit - Copyright © 2005 - 2020 Jet Propulsion Laboratory
Generated on Fri Jun 19 2020 22:49:53