26#ifndef ARRAY_TEMPLATE_H
27#define ARRAY_TEMPLATE_H
33#define ARRAY_IMPL(word) ARRAY_COMB1(ARRAY_PREFIX,word)
34#define ARRAY_COMB1(pre, word) ARRAY_COMB2(pre, word)
35#define ARRAY_COMB2(pre, word) pre##word
40#error "ARRAY_T must be defined"
44#define ARRAY_KEY_T ARRAY_T
47#define ARRAY_NAME ARRAY_COMB1(ARRAY_COMB1(array,_), ARRAY_T)
48#define ARRAY_PREFIX ARRAY_COMB1(ARRAY_NAME, _)
50#define ARRAY_init ARRAY_IMPL(init)
51#define ARRAY_count ARRAY_IMPL(count)
52#define ARRAY_clear ARRAY_IMPL(clear)
53#define ARRAY_destroy ARRAY_IMPL(destroy)
54#define ARRAY_get ARRAY_IMPL(get)
55#define ARRAY_push ARRAY_IMPL(push)
56#define ARRAY_compar ARRAY_IMPL(compar)
57#define ARRAY_sort ARRAY_IMPL(sort)
87 ensure(index < array->count,
88 "Please report bug.");
89 return array->
items[index];
94 "ARRAY_push does not support dynamic size. Please report bug.");
98static inline int ARRAY_compar(
const void *p1,
const void* p2) {
101 return item1 - item2;
#define ARRAY_get
Definition: array_template.h:54
#define ARRAY_destroy
Definition: array_template.h:53
#define ARRAY_push
Definition: array_template.h:55
#define ARRAY_NAME
Definition: array_template.h:47
#define ARRAY_sort
Definition: array_template.h:57
#define ARRAY_init
Definition: array_template.h:50
#define ARRAY_KEY_T
Definition: array_template.h:44
#define ARRAY_clear
Definition: array_template.h:52
#define ARRAY_count
Definition: array_template.h:51
#define ARRAY_compar
Definition: array_template.h:56
#define ensure(cond,...)
Definition: debug.h:113
#define ARRAY_T
Definition: shmem_cpuinfo.c:48
Definition: array_template.h:59
ARRAY_T * items
Definition: array_template.h:60
size_t count
Definition: array_template.h:61
size_t capacity
Definition: array_template.h:62