Freeciv21
Develop your civilization from humble roots to a global empire
iterator.h File Reference
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  iterator
 

Macros

#define ITERATOR(p)   ((struct iterator *) (p))
 
#define generic_iterate(TYPE_it, TYPE_a, NAME_a, FUNC_size, FUNC_init, ...)
 
#define generic_iterate_end
 

Functions

static void iterator_next (struct iterator *it)
 
static void * iterator_get (const struct iterator *it)
 
static bool iterator_valid (const struct iterator *it)
 
struct iteratorinvalid_iter_init (struct iterator *it)
 Initializes the iterator vtable so that generic_iterate assumes that the iterator is invalid. More...
 

Macro Definition Documentation

◆ generic_iterate

#define generic_iterate (   TYPE_it,
  TYPE_a,
  NAME_a,
  FUNC_size,
  FUNC_init,
  ... 
)
Value:
do { \
char MY_mem_##NAME_a[FUNC_size()]; \
struct iterator *MY_it_##NAME_a; \
TYPE_a NAME_a; \
MY_it_##NAME_a = \
FUNC_init((TYPE_it *) (void *) MY_mem_##NAME_a, ##__VA_ARGS__); \
for (; iterator_valid(MY_it_##NAME_a); iterator_next(MY_it_##NAME_a)) { \
NAME_a = (TYPE_a) iterator_get(MY_it_##NAME_a);
static bool iterator_valid(const struct iterator *it)
Definition: iterator.h:47
static void * iterator_get(const struct iterator *it)
Definition: iterator.h:39
static void iterator_next(struct iterator *it)
Definition: iterator.h:31

Definition at line 73 of file iterator.h.

◆ generic_iterate_end

#define generic_iterate_end
Value:
} \
} \
while (false)

Definition at line 83 of file iterator.h.

◆ ITERATOR

#define ITERATOR (   p)    ((struct iterator *) (p))

Definition at line 26 of file iterator.h.

Function Documentation

◆ invalid_iter_init()

struct iterator* invalid_iter_init ( struct iterator it)

Initializes the iterator vtable so that generic_iterate assumes that the iterator is invalid.

Definition at line 37 of file iterator.cpp.

Referenced by genhash_iter_init_common().

◆ iterator_get()

static void* iterator_get ( const struct iterator it)
inlinestatic

Definition at line 39 of file iterator.h.

Referenced by research_player_iter_valid_state().

◆ iterator_next()

static void iterator_next ( struct iterator it)
inlinestatic

Definition at line 31 of file iterator.h.

Referenced by unit_cargo_depth().

◆ iterator_valid()

static bool iterator_valid ( const struct iterator it)
inlinestatic

Definition at line 47 of file iterator.h.

Referenced by unit_cargo_depth().