60 #define TAG_LIST tag_type_t tag, tag_value_t value, ...
110 #define TAG_NULL() (tag_type_t)0, (tag_value_t)0
113 #define TAG_END() (tag_type_t)0, (tag_value_t)0
116 #define TAG_SKIP(x) tag_skip, (tag_value_t)(x)
119 #define TAG_NEXT(next) tag_next, (tag_value_t)(next)
122 #define TAG_ANY() tag_any, (tag_value_t)0
126 #define TAG_IF(condition, item) !(condition) ? tag_skip : item
131 #define TAG_FILTER(function) tag_filter, tag_filter_v(function)
162 tagi_t const lst[],
void **b);
178 #define SU_ALIGN(x) \
179 ((sizeof(void *) - ((intptr_t)(x) & (sizeof(void *) - 1))) & (sizeof(void *) - 1))
181 #if SU_INLINE_TAG_CAST
214 #define tag_int_v(v) (tag_value_t)(v)
215 #define tag_int_vr(v) (tag_value_t)(v)
216 #define tag_uint_v(v) (tag_value_t)(v)
217 #define tag_uint_vr(v) (tag_value_t)(v)
218 #define tag_usize_v(v) (tag_value_t)(v)
219 #define tag_usize_vr(v) (tag_value_t)(v)
220 #define tag_size_v(v) (tag_value_t)(v)
221 #define tag_size_vr(v) (tag_value_t)(v)
222 #define tag_bool_v(v) (tag_value_t)(v != 0)
223 #define tag_bool_vr(v) (tag_value_t)(v)
224 #define tag_ptr_v(v) (tag_value_t)(v)
225 #define tag_ptr_vr(v,x) (tag_value_t)(v)
226 #define tag_cptr_v(v) (tag_value_t)(v)
227 #define tag_cptr_vr(v,x) (tag_value_t)(v)
228 #define tag_cstr_v(v) (tag_value_t)(v)
229 #define tag_cstr_vr(v) (tag_value_t)(v)
230 #define tag_str_v(v) (tag_value_t)(v)
231 #define tag_str_vr(v) (tag_value_t)(v)
232 #define tag_filter_v(v) (tag_value_t)(v)
Virtual function table for tags.
Definition: su_tag_class.h:65
Tag structure.
Definition: su_tag.h:76
char const * tt_ns
Tag namespace (e.g., "sip" or "nua")
Definition: su_tag.h:77
tag_class_t * tt_class
Tag class defines the type of the value.
Definition: su_tag.h:79
tag_value_t tt_magic
Class-specific data (e.g., pointer to header class structure)
Definition: su_tag.h:80
char const * tt_name
Tag name (e.g, "min_se")
Definition: su_tag.h:78
Tag item.
Definition: su_tag.h:63
tag_value_t t_value
Value.
Definition: su_tag.h:65
tag_type_t t_tag
Tag.
Definition: su_tag.h:64
Home-based memory management interface.
SU_HOME_T su_home_t
Memory home type.
Definition: su_alloc.h:50
#define SOFIAPUBFUN
SOFIAPUBFUN declares an exported function.
Definition: su_config.h:66
#define SOFIAPUBVAR
SOFIAPUBVAR declares an exported variable.
Definition: su_config.h:68
tagi_t * tl_llist(tag_type_t tag, tag_value_t value,...)
Make a linear tag list until TAG_END().
Definition: su_taglist.c:796
tagi_t * tl_afilter(su_home_t *, tagi_t const filter[], tagi_t const lst[])
Filter a tag list.
Definition: su_taglist.c:552
size_t tl_vlen(va_list ap)
Calculate length of a tag list with a va_list.
Definition: su_taglist.c:637
size_t tl_vllen(tag_type_t tag, tag_value_t value, va_list ap)
Calculate length of a linear tag list.
Definition: su_taglist.c:720
struct tag_type_s const tag_typedef_t[1]
Definition of tag type.
Definition: su_tag.h:85
tagi_t * tl_adup(su_home_t *, tagi_t const lst[])
Allocate and duplicate a tag list using memory home.
Definition: su_taglist.c:313
void tl_vfree(tagi_t *t)
Free a tag list allocated by tl_list(), tl_llist() or tl_vlist().
Definition: su_taglist.c:809
int tl_tgets(tagi_t lst[], tag_type_t, tag_value_t,...)
Find tags from given list.
Definition: su_taglist.c:434
tagi_t * tl_tlist(su_home_t *, tag_type_t, tag_value_t,...)
Allocate and duplicate tagged arguments as a tag list using memory home.
Definition: su_taglist.c:333
tagi_t * tl_filtered_tlist(su_home_t *home, tagi_t const filter[], tag_type_t, tag_value_t,...)
Create a filtered tag list.
Definition: su_taglist.c:599
tagi_t * tl_find_last(tagi_t const lst[], tag_type_t tt)
Find last tag item with type tt from list.
Definition: su_taglist.c:352
intptr_t tag_value_t
Tag item value.
Definition: su_tag.h:57
tagi_t * tl_dup(tagi_t dst[], tagi_t const lst[], void **bb)
Duplicate a tag list.
Definition: su_taglist.c:290
struct tag_class_s const tag_class_t
Tag type class.
Definition: su_tag.h:69
int tl_gets(tagi_t const lst[], tag_type_t, tag_value_t,...)
Find tags from given list.
Definition: su_taglist.c:395
tag_typedef_t tag_skip
Ignore tag item.
Definition: su_taglist.c:973
tagi_t * tl_find(tagi_t const lst[], tag_type_t tt)
Find first tag item with type tt from list.
Definition: su_taglist.c:346
int tl_tremove(tagi_t lst[], tag_type_t, tag_value_t,...)
Remove listed tags from the list lst.
Definition: su_taglist.c:614
size_t tl_len(tagi_t const lst[])
Calculate effective length of a tag list as bytes.
Definition: su_taglist.c:245
struct tag_type_s const * tag_type_t
Tag item type.
Definition: su_tag.h:55
tagi_t * tl_next(tagi_t const *lst)
Get next tag item from list.
Definition: su_taglist.c:169
tag_typedef_t tag_filter
Filter tag using function as argument.
Definition: su_taglist.c:1081
size_t tl_tmove(tagi_t *dst, size_t, tag_type_t, tag_value_t,...)
Move a tag list.
Definition: su_taglist.c:194
int tag_filter_f(tagi_t const *filter, tagi_t const *dest)
Prototype for filtering function used with TAG_FILTER().
Definition: su_tag.h:107
tagi_t * tl_list(tag_type_t tag, tag_value_t value,...)
Make a tag list until TAG_NEXT() or TAG_END()
Definition: su_taglist.c:707
int t_snprintf(tagi_t const *t, char b[], size_t size)
Convert tag item to a string
Definition: su_taglist.c:139
tag_typedef_t tag_any
Any tag accepted when filtering.
Definition: su_taglist.c:1121
tagi_t * tl_move(tagi_t *dst, tagi_t const src[])
Move a tag list.
Definition: su_taglist.c:234
tagi_t * tl_vllist(tag_type_t tag, tag_value_t value, va_list ap)
Make a linear tag list.
Definition: su_taglist.c:749
size_t tl_xtra(tagi_t const lst[], size_t offset)
Calculate the size of extra memory areas associated with tag list.
Definition: su_taglist.c:258
void tl_free(tagi_t list[])
Free a tag list.
Definition: su_taglist.c:306
tag_typedef_t tag_next
Jump to another tag list.
Definition: su_taglist.c:1033
tagi_t * tl_vlist(va_list ap)
Convert va_list to tag list.
Definition: su_taglist.c:652
tagi_t * tl_tfilter(su_home_t *, tagi_t const lst[], tag_type_t, tag_value_t,...)
Filter tag list src with given tags.
Definition: su_taglist.c:584
int t_scan(tag_type_t tt, su_home_t *home, char const *s, tag_value_t *return_value)
Convert string to a tag value.
Definition: su_taglist.c:816
tag_typedef_t tag_null
End of tag list.
Definition: su_taglist.c:892
Basic integer types for su library.
SU_INTPTR_T intptr_t
Integer type large enough to store pointers.
Definition: su_types.h:75