OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
Macros
lists.h File Reference

Go to the source code of this file.

Macros

#define MACRO_BEGIN   do {
 
#define MACRO_END   } while (0)
 
#define list_forall(elt, list)   for (elt=list; elt!=NULL; elt=elt->next)
 
#define list_find(elt, list, c)   MACRO_BEGIN list_forall(elt, list) if (c) break; MACRO_END
 
#define list_forall2(elt, list, hook)   for (elt=list, hook=&list; elt!=NULL; hook=&elt->next, elt=elt->next)
 
#define list_find2(elt, list, c, hook)   MACRO_BEGIN list_forall2(elt, list, hook) if (c) break; MACRO_END
 
#define _list_forall_hook(list, hook)   for (hook=&list; *hook!=NULL; hook=&(*hook)->next)
 
#define _list_find_hook(list, c, hook)   MACRO_BEGIN _list_forall_hook(list, hook) if (c) break; MACRO_END
 
#define list_insert_athook(elt, hook)   MACRO_BEGIN elt->next = *hook; *hook = elt; MACRO_END
 
#define list_insert_beforehook(elt, hook)   MACRO_BEGIN elt->next = *hook; *hook = elt; hook=&elt->next; MACRO_END
 
#define list_unlink_athook(list, elt, hook)
 
#define list_unlink(listtype, list, elt)
 
#define list_prepend(list, elt)   MACRO_BEGIN elt->next = list; list = elt; MACRO_END
 
#define list_append(listtype, list, elt)
 
#define list_unlink_cond(listtype, list, elt, c)
 
#define list_nth(elt, list, n)
 
#define list_nth_hook(elt, list, n, hook)
 
#define list_length(listtype, list, n)
 
#define list_index(list, n, elt, c)
 
#define list_count(list, n, elt, c)
 
#define list_forall_unlink(elt, list)   for (elt=list; elt ? (list=elt->next, elt->next=NULL), 1 : 0; elt=list)
 
#define list_reverse(listtype, list)
 
#define list_insert_ordered(listtype, list, elt, tmp, cond)
 
#define list_sort(listtype, list, a, b, cond)
 
#define list_mergesort(listtype, list, a, b, cond)
 
#define _list_merge_cond(listtype, a, b, cond, result)
 
#define dlist_append(head, end, elt)
 
#define dlist_forall_unlink(elt, head, end)   for (elt=head; elt ? (head=elt->next, elt->next=NULL, elt->prev=NULL), 1 : (end=NULL, 0); elt=head)
 
#define dlist_unlink_first(head, end, elt)
 

Macro Definition Documentation

◆ _list_find_hook

#define _list_find_hook (   list,
  c,
  hook 
)    MACRO_BEGIN _list_forall_hook(list, hook) if (c) break; MACRO_END

Definition at line 61 of file lists.h.

◆ _list_forall_hook

#define _list_forall_hook (   list,
  hook 
)    for (hook=&list; *hook!=NULL; hook=&(*hook)->next)

Definition at line 57 of file lists.h.

◆ _list_merge_cond

#define _list_merge_cond (   listtype,
  a,
  b,
  cond,
  result 
)
Value:
MACRO_BEGIN \
listtype **_hook; \
_hook = &(result); \
while (1) { \
if (a==NULL) { \
*_hook = b; \
break; \
} else if (b==NULL) { \
*_hook = a; \
break; \
} else if (cond) { \
*_hook = a; \
_hook = &(a->next); \
a = a->next; \
} else { \
*_hook = b; \
_hook = &(b->next); \
b = b->next; \
} \
} \
MACRO_END

Definition at line 226 of file lists.h.

◆ dlist_append

#define dlist_append (   head,
  end,
  elt 
)
Value:
MACRO_BEGIN \
elt->prev = end; \
elt->next = NULL; \
if (end) { \
end->next = elt; \
} else { \
head = elt; \
} \
end = elt; \
MACRO_END

Definition at line 252 of file lists.h.

◆ dlist_forall_unlink

#define dlist_forall_unlink (   elt,
  head,
  end 
)    for (elt=head; elt ? (head=elt->next, elt->next=NULL, elt->prev=NULL), 1 : (end=NULL, 0); elt=head)

Definition at line 265 of file lists.h.

◆ dlist_unlink_first

#define dlist_unlink_first (   head,
  end,
  elt 
)
Value:
MACRO_BEGIN \
elt = head; \
if (head) { \
head = head->next; \
if (head) { \
head->prev = NULL; \
} else { \
end = NULL; \
} \
elt->prev = NULL; \
elt->next = NULL; \
} \
MACRO_END

Definition at line 269 of file lists.h.

◆ list_append

#define list_append (   listtype,
  list,
  elt 
)
Value:
MACRO_BEGIN \
listtype **_hook; \
_list_forall_hook(list, _hook) {} \
list_insert_athook(elt, _hook); \
MACRO_END

Definition at line 93 of file lists.h.

◆ list_count

#define list_count (   list,
  n,
  elt,
 
)
Value:
MACRO_BEGIN \
n=0; \
list_forall(elt, list) { \
if (c) n++; \
} \
MACRO_END
os2<< "> n<< " > nendobj n

Definition at line 147 of file lists.h.

◆ list_find

#define list_find (   elt,
  list,
 
)    MACRO_BEGIN list_forall(elt, list) if (c) break; MACRO_END

Definition at line 45 of file lists.h.

◆ list_find2

#define list_find2 (   elt,
  list,
  c,
  hook 
)    MACRO_BEGIN list_forall2(elt, list, hook) if (c) break; MACRO_END

Definition at line 53 of file lists.h.

◆ list_forall

#define list_forall (   elt,
  list 
)    for (elt=list; elt!=NULL; elt=elt->next)

Definition at line 41 of file lists.h.

◆ list_forall2

#define list_forall2 (   elt,
  list,
  hook 
)    for (elt=list, hook=&list; elt!=NULL; hook=&elt->next, elt=elt->next)

Definition at line 49 of file lists.h.

◆ list_forall_unlink

#define list_forall_unlink (   elt,
  list 
)    for (elt=list; elt ? (list=elt->next, elt->next=NULL), 1 : 0; elt=list)

Definition at line 156 of file lists.h.

◆ list_index

#define list_index (   list,
  n,
  elt,
 
)
Value:
MACRO_BEGIN \
n=0; \
list_forall(elt, list) { \
if (c) break; \
n++; \
} \
if (!elt) \
n=-1; \
MACRO_END

Definition at line 135 of file lists.h.

◆ list_insert_athook

#define list_insert_athook (   elt,
  hook 
)    MACRO_BEGIN elt->next = *hook; *hook = elt; MACRO_END

Definition at line 65 of file lists.h.

◆ list_insert_beforehook

#define list_insert_beforehook (   elt,
  hook 
)    MACRO_BEGIN elt->next = *hook; *hook = elt; hook=&elt->next; MACRO_END

Definition at line 69 of file lists.h.

◆ list_insert_ordered

#define list_insert_ordered (   listtype,
  list,
  elt,
  tmp,
  cond 
)
Value:
MACRO_BEGIN \
listtype **_hook; \
_list_find_hook(list, (tmp=*_hook, (cond)), _hook); \
list_insert_athook(elt, _hook); \
MACRO_END

Definition at line 179 of file lists.h.

◆ list_length

#define list_length (   listtype,
  list,
  n 
)
Value:
MACRO_BEGIN \
listtype *_elt; \
n=0; \
list_forall(_elt, list) \
n++; \
MACRO_END

Definition at line 125 of file lists.h.

◆ list_mergesort

#define list_mergesort (   listtype,
  list,
  a,
  b,
  cond 
)
Value:
MACRO_BEGIN \
listtype *_elt, **_hook1; \
for (_elt=list; _elt; _elt=_elt->next1) { \
_elt->next1 = _elt->next; \
_elt->next = NULL; \
} \
do { \
_hook1 = &(list); \
while ((a = *_hook1) != NULL && (b = a->next1) != NULL ) { \
_elt = b->next1; \
_list_merge_cond(listtype, a, b, cond, *_hook1); \
_hook1 = &((*_hook1)->next1); \
*_hook1 = _elt; \
} \
} while (_hook1 != &(list)); \
MACRO_END
RTTI_DEF1_INST(ossimGeneralRasterTileSource, "ossimGeneralRasterTileSource", ossimImageHandler) static ossimTrace traceDebug("ossimGeneralRasterTileSource for(ossim_uint32 i=0;i< aList.size();++i)

Definition at line 206 of file lists.h.

◆ list_nth

#define list_nth (   elt,
  list,
  n 
)
Value:
MACRO_BEGIN \
int _x; /* only evaluate n once */ \
for (_x=(n), elt=list; _x && elt; _x--, elt=elt->next) {} \
MACRO_END
os2<< "> n<< " > nendobj n

Definition at line 110 of file lists.h.

◆ list_nth_hook

#define list_nth_hook (   elt,
  list,
  n,
  hook 
)
Value:
MACRO_BEGIN \
int _x; /* only evaluate n once */ \
for (_x=(n), elt=list, hook=&list; _x && elt; _x--, hook=&elt->next, elt=elt->next) {} \
MACRO_END
os2<< "> n<< " > nendobj n

Definition at line 118 of file lists.h.

◆ list_prepend

#define list_prepend (   list,
  elt 
)    MACRO_BEGIN elt->next = list; list = elt; MACRO_END

Definition at line 89 of file lists.h.

◆ list_reverse

#define list_reverse (   listtype,
  list 
)
Value:
MACRO_BEGIN \
listtype *_list1=NULL, *elt; \
list_forall_unlink(elt, list) \
list_prepend(_list1, elt); \
list = _list1; \
MACRO_END

Definition at line 160 of file lists.h.

◆ list_sort

#define list_sort (   listtype,
  list,
  a,
  b,
  cond 
)
Value:
MACRO_BEGIN \
listtype *_newlist=NULL; \
list_forall_unlink(a, list) \
list_insert_ordered(listtype, _newlist, a, b, cond); \
list = _newlist; \
MACRO_END

Definition at line 193 of file lists.h.

◆ list_unlink

#define list_unlink (   listtype,
  list,
  elt 
)
Value:
MACRO_BEGIN \
listtype **_hook; \
_list_find_hook(list, *_hook==elt, _hook); \
list_unlink_athook(list, elt, _hook); \
MACRO_END

Definition at line 81 of file lists.h.

◆ list_unlink_athook

#define list_unlink_athook (   list,
  elt,
  hook 
)
Value:
MACRO_BEGIN \
elt = hook ? *hook : NULL; if (elt) { *hook = elt->next; elt->next = NULL; }\
MACRO_END

Definition at line 74 of file lists.h.

◆ list_unlink_cond

#define list_unlink_cond (   listtype,
  list,
  elt,
 
)
Value:
MACRO_BEGIN \
listtype **_hook; \
list_find2(elt, list, c, _hook); \
list_unlink_athook(list, elt, _hook); \
MACRO_END

Definition at line 101 of file lists.h.

◆ MACRO_BEGIN

#define MACRO_BEGIN   do {

Definition at line 34 of file lists.h.

◆ MACRO_END

#define MACRO_END   } while (0)

Definition at line 35 of file lists.h.