9 #ifndef __AFW_ARRAY_TEMPLATE_H__
10 #define __AFW_ARRAY_TEMPLATE_H__
99 #define AFW_ARRAY_TEMPLATE(_NAME, _ELEMENT_TYPE)\
106 _ELEMENT_TYPE *elts;\
110 const _NAME##_t *list;\
112 } _NAME##_iterator_t;\
114 AFW_STATIC_INLINE _NAME##_t * make_##_NAME(apr_pool_t *p, int nelts)\
116 return (_NAME##_t(*))apr_array_make(p, nelts, sizeof(_ELEMENT_TYPE)); \
119 AFW_STATIC_INLINE _ELEMENT_TYPE * push_##_NAME(_NAME##_t *array)\
121 return (_ELEMENT_TYPE *)apr_array_push((apr_array_header_t *)array);\
124 AFW_STATIC_INLINE _ELEMENT_TYPE * pop_##_NAME(_NAME##_t *array)\
126 return (_ELEMENT_TYPE *)apr_array_pop((apr_array_header_t *)array);\
129 AFW_STATIC_INLINE void clear_##_NAME(_NAME##_t *array)\
131 apr_array_clear((apr_array_header_t *)array);\
136 AFW_STATIC_INLINE _NAME##_iterator_t * make##_NAME##_iterator(apr_pool_t *p, const _NAME##_t *list)\
138 _NAME##_iterator_t *iterator = (_NAME##_iterator_t (*))apr_pcalloc(p, sizeof(_NAME##_iterator_t));\
139 iterator->list = list;\
140 iterator->next_index = 0;\
144 AFW_STATIC_INLINE void initialize##_NAME##_iterator(_NAME##_iterator_t *iterator, const _NAME##_t *list)\
146 iterator->list = list;\
147 iterator->next_index = 0;\
150 AFW_STATIC_INLINE _ELEMENT_TYPE * first##_NAME##_iterator(_NAME##_iterator_t *iterator)\
152 iterator->next_index = 1;\
153 return (iterator->list->elts);\
156 AFW_STATIC_INLINE _ELEMENT_TYPE * next##_NAME##_iterator(_NAME##_iterator_t *iterator)\
159 (iterator->next_index < iterator->list->nelts)\
160 ?iterator->list->elts+((iterator->next_index)++)\
165 AFW_STATIC_INLINE int isDone##_NAME##_iterator(_NAME##_iterator_t *iterator)\
167 return (iterator->next_index >= iterator->list->nelts);\
170 AFW_STATIC_INLINE _ELEMENT_TYPE * current##_NAME##_iterator(_NAME##_iterator_t *iterator)\
173 (iterator->next_index < iterator->list->nelts)\
174 ?iterator->list->elts+(iterator->next_index)\
Adaptive Framework Common Header.
#define AFW_BEGIN_DECLARES
#define AFW_ARRAY_TEMPLATE(_NAME, _ELEMENT_TYPE)
Array template.
afw_utf8_octet_t afw_utf8_z_t
NFC normalized UTF-8 null terminated string.