Object-oriented tags and tag list interface. More...
#include <sofia-sip/su_config.h>#include <sofia-sip/su_types.h>#include <sofia-sip/su_alloc.h>#include <stdarg.h>#include <stddef.h>
Go to the source code of this file.
Data Structures | |
| struct | tagi_t |
| Tag item. More... | |
| struct | tag_type_s |
| Tag structure. More... | |
Defines | |
| #define | SU_TAG_H |
| Defined when <sofia-sip/su_tag.h> has been included. | |
| #define | TAG_LIST |
| Tag list signature. | |
| #define | TAG_NULL() |
| Initialize a tag item marking the end of list. | |
| #define | TAG_END() |
| Initialize a tag item marking the end of list. | |
| #define | TAG_SKIP(x) |
| Initialize an empty tag item. | |
| #define | TAG_NEXT(next) |
| Initialize a tag item pointing to another tag list at next. | |
| #define | TAG_ANY() |
| Initialize a filter tag item accepting any item. | |
| #define | TAG_IF(condition, item) |
| Initialize a item if condition is true; otherwise, initialize an empty tag item. | |
| #define | TAG_FILTER(function) |
| Initialize a filter tag item accepting any item. | |
| #define | SU_ALIGN(x) |
| Align to pointer size. | |
Typedefs | |
| typedef struct tag_type_s const * | tag_type_t |
| Tag item type. | |
| typedef intptr_t | tag_value_t |
| Tag item value. | |
| typedef struct tag_class_s const | tag_class_t |
| Tag type class. | |
| typedef struct tag_type_s const | tag_typedef_t [1] |
| Definition of tag type. | |
| typedef int | tag_filter_f (tagi_t const *filter, tagi_t const *dest) |
| Prototype for filtering function used with TAG_FILTER(). | |
Functions | |
| int | t_snprintf (tagi_t const *t, char b[], size_t size) |
| Convert tag item to a string. | |
| 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. | |
| 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. | |
| size_t | tl_tmove (tagi_t *dst, size_t, tag_type_t, tag_value_t,...) |
| Move a tag list. | |
| int | tl_gets (tagi_t const lst[], tag_type_t, tag_value_t,...) |
| Find tags from given list. | |
| int | tl_tgets (tagi_t lst[], tag_type_t, tag_value_t,...) |
| Find tags from given list. | |
| tagi_t * | tl_tfilter (su_home_t *, tagi_t const lst[], tag_type_t, tag_value_t,...) |
| Filter tag list src with given tags. | |
| int | tl_tremove (tagi_t lst[], tag_type_t, tag_value_t,...) |
| Remove listed tags from the list lst. | |
| size_t | tl_len (tagi_t const lst[]) |
| Calculate effective length of a tag list as bytes. | |
| size_t | tl_vllen (tag_type_t tag, tag_value_t value, va_list ap) |
| Calculate length of a linear tag list. | |
| size_t | tl_xtra (tagi_t const lst[], size_t offset) |
| Calculate the size of extra memory areas associated with tag list. | |
| tagi_t * | tl_next (tagi_t const *lst) |
| Get next tag item from list. | |
| tagi_t * | tl_move (tagi_t *dst, tagi_t const src[]) |
| Move a tag list. | |
| tagi_t * | tl_dup (tagi_t dst[], tagi_t const lst[], void **bb) |
| Duplicate a tag list. | |
| tagi_t * | tl_adup (su_home_t *, tagi_t const lst[]) |
| Allocate and duplicate a tag list using memory home. | |
| void | tl_free (tagi_t list[]) |
| Free a tag list. | |
| tagi_t * | tl_find (tagi_t const lst[], tag_type_t tt) |
| Find first tag item with type tt from list. | |
| tagi_t * | tl_find_last (tagi_t const lst[], tag_type_t tt) |
| Find last tag item with type tt from list. | |
| tagi_t * | tl_afilter (su_home_t *, tagi_t const filter[], tagi_t const lst[]) |
| Filter a tag list. | |
| tagi_t * | tl_filtered_tlist (su_home_t *home, tagi_t const filter[], tag_type_t, tag_value_t,...) |
| Create a filtered tag list. | |
| size_t | tl_vlen (va_list ap) |
Calculate length of a tag list with a va_list. | |
| tagi_t * | tl_list (tag_type_t tag, tag_value_t value,...) |
| Make a tag list until TAG_NEXT() or TAG_END(). | |
| tagi_t * | tl_vlist (va_list ap) |
| Convert va_list to tag list. | |
| tagi_t * | tl_llist (tag_type_t tag, tag_value_t value,...) |
| Make a linear tag list until TAG_END(). | |
| tagi_t * | tl_vllist (tag_type_t tag, tag_value_t value, va_list ap) |
| Make a linear tag list. | |
| void | tl_vfree (tagi_t *t) |
| Free a tag list allocated by tl_list(), tl_llist() or tl_vlist(). | |
Variables | |
| tag_typedef_t | tag_null |
| End of tag list. | |
| tag_typedef_t | tag_skip |
| Ignore tag item. | |
| tag_typedef_t | tag_next |
| Jump to another tag list. | |
| tag_typedef_t | tag_any |
| Any tag accepted when filtering. | |
| tag_typedef_t | tag_filter |
| Filter tag using function as argument. | |
Object-oriented tags and tag list interface.
| #define SU_TAG_H |
Defined when <sofia-sip/su_tag.h> has been included.
| #define TAG_ANY | ( | ) |
Initialize a filter tag item accepting any item.
| #define TAG_END | ( | ) |
Initialize a tag item marking the end of list.
Equivalent to TAG_NULL().
| #define TAG_FILTER | ( | function | ) |
Initialize a filter tag item accepting any item.
| #define TAG_IF | ( | condition, | ||
| item | ||||
| ) |
Initialize a item if condition is true; otherwise, initialize an empty tag item.
| #define TAG_NEXT | ( | next | ) |
Initialize a tag item pointing to another tag list at next.
| #define TAG_NULL | ( | ) |
Initialize a tag item marking the end of list.
Equivalent to TAG_END().
| #define TAG_SKIP | ( | x | ) |
Initialize an empty tag item.
| typedef int tag_filter_f(tagi_t const *filter, tagi_t const *dest) |
Prototype for filtering function used with TAG_FILTER().
| typedef struct tag_type_s const tag_typedef_t[1] |
Definition of tag type.
Allocate and duplicate a tag list using memory home.
Filter a tag list.
The function tl_afilter() will build a tag list containing tags specified in filter and extracted from src. It will allocate the memory used by tag list via the specified memory home, which may be also NULL.
Duplicate a tag list.
Deep copy the tag list src to the buffer dst. Memory areas associated with src are copied to buffer at **bb.
This is a rather low-level function. See tl_adup() for a more convenient functionality.
The size of the dst buffer must be at least tl_len(src) bytes. The size of buffer **bb must be at least tl_dup_xtra(src) bytes.
| [out] | dst | pointer to the destination buffer |
| [in] | src | tag list to be duplicated |
| [in,out] | bb | pointer to pointer to buffer |
The pointer at *bb is updated to the byte after last duplicated memory area.
| tagi_t* tl_filtered_tlist | ( | su_home_t * | home, | |
| tagi_t const | filter[], | |||
| tag_type_t | tag, | |||
| tag_value_t | value, | |||
| ... | ||||
| ) |
Create a filtered tag list.
| tagi_t* tl_find | ( | tagi_t const | lst[], | |
| tag_type_t | tt | |||
| ) |
Find first tag item with type tt from list.
| tagi_t* tl_find_last | ( | tagi_t const | lst[], | |
| tag_type_t | tt | |||
| ) |
Find last tag item with type tt from list.
| void tl_free | ( | tagi_t | list[] | ) |
Free a tag list.
The function tl_free() frees resources associated with a tag list. In other words, it calls t_free on each tag item on the list.
| int tl_gets | ( | tagi_t const | lst[], | |
| tag_type_t | tag, | |||
| tag_value_t | value, | |||
| ... | ||||
| ) |
Find tags from given list.
| size_t tl_len | ( | tagi_t const | lst[] | ) |
Calculate effective length of a tag list as bytes.
Move a tag list.
The function tl_move() copies the tag list src to the buffer dst. The size of the dst list must be at least tl_len(src) bytes.
| dst | pointer to the destination buffer | |
| src | tag list to be moved |
| tagi_t* tl_tfilter | ( | su_home_t * | home, | |
| tagi_t const | src[], | |||
| tag_type_t | tag, | |||
| tag_value_t | value, | |||
| ... | ||||
| ) |
Filter tag list src with given tags.
| int tl_tgets | ( | tagi_t | lst[], | |
| tag_type_t | tag, | |||
| tag_value_t | value, | |||
| ... | ||||
| ) |
Find tags from given list.
Copies values of argument tag list into the reference tags in the tag list lst.
| tagi_t* tl_tlist | ( | su_home_t * | home, | |
| tag_type_t | tag, | |||
| tag_value_t | value, | |||
| ... | ||||
| ) |
Allocate and duplicate tagged arguments as a tag list using memory home.
| size_t tl_tmove | ( | tagi_t * | dst, | |
| size_t | size, | |||
| tag_type_t | t_tag, | |||
| tag_value_t | t_value, | |||
| ... | ||||
| ) |
Move a tag list.
The function tl_tmove() moves the tag list arguments to dst. The dst must have big enough for all arguments.
| dst | pointer to the destination buffer | |
| size | sizeof dst | |
| t_tag,t_value,... | tag list |
| int tl_tremove | ( | tagi_t | lst[], | |
| tag_type_t | tag, | |||
| tag_value_t | value, | |||
| ... | ||||
| ) |
Remove listed tags from the list lst.
| void tl_vfree | ( | tagi_t * | t | ) |
Free a tag list allocated by tl_list(), tl_llist() or tl_vlist().
| size_t tl_vlen | ( | va_list | ap | ) |
Calculate length of a tag list with a va_list.
| size_t tl_vllen | ( | tag_type_t | tag, | |
| tag_value_t | value, | |||
| va_list | ap | |||
| ) |
Calculate length of a linear tag list.
| tagi_t* tl_vllist | ( | tag_type_t | tag, | |
| tag_value_t | value, | |||
| va_list | ap | |||
| ) |
Make a linear tag list.
| size_t tl_xtra | ( | tagi_t const | lst[], | |
| size_t | offset | |||
| ) |
Calculate the size of extra memory areas associated with tag list.
Any tag accepted when filtering.
Filter tag using function as argument.
Ignore tag item.