su_taglist.c File Reference


Detailed Description

Implementation of tag items and lists.

Author:
Pekka Pessi <Pekka.Pessi@nokia-email.address.hidden>
Date:
Created: Tue Feb 20 20:03:38 2001 ppessi

#include "config.h"
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <stdio.h>
#include <assert.h>
#include <sofia-sip/su_config.h>
#include <sofia-sip/su_tag.h>
#include <sofia-sip/su_tag_class.h>
#include <sofia-sip/su_tag_inline.h>
#include <sofia-sip/su_tagarg.h>

Include dependency graph for su_taglist.c:


Functions

int t_snprintf (tagi_t const *t, char b[], size_t size)
 Convert tag item to a string.
tagi_ttl_next (tagi_t const *t)
 Get next tag item from list.
size_t tl_tmove (tagi_t *dst, size_t size, tag_type_t t_tag, tag_value_t t_value,...)
 Move a tag list.
tagi_ttl_move (tagi_t *dst, tagi_t const src[])
 Move a tag list.
size_t tl_len (tagi_t const lst[])
 Calculate effective length of a 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_ttl_dup (tagi_t dst[], tagi_t const src[], void **bb)
 Duplicate a tag list.
tagi_ttl_adup (su_home_t *home, tagi_t const lst[])
 Allocate and duplicate a tag list.
tagi_t const * tl_find (tagi_t const lst[], tag_type_t tt)
 Find a tag from given list.
int tl_gets (tagi_t const lst[], tag_type_t tag, tag_value_t value,...)
 Find tags from given list.
int tl_tgets (tagi_t lst[], tag_type_t tag, tag_value_t value,...)
 Find tags from given list.
tagi_tt_filter (tagi_t *dst, tagi_t const filter[], tagi_t const *src, void **bb)
 Filter an element in tag list.
tagi_ttl_afilter (su_home_t *home, tagi_t const filter[], tagi_t const src[])
 Filter a tag list.
tagi_ttl_filtered_tlist (su_home_t *home, tagi_t const filter[], tag_type_t tag, tag_value_t value,...)
 Create a filtered tag list.
int tl_tremove (tagi_t lst[], tag_type_t tag, tag_value_t value,...)
 Remove listed tags from the list lst.
size_t tl_vlen (va_list ap)
 Calculate length of a tag list with a va_list.
tagi_ttl_vlist (va_list ap)
 Convert va_list to tag list.
tagi_ttl_list (tag_type_t tag, tag_value_t value,...)
 Make a tag list until TAG_NEXT() or TAG_END().
size_t tl_vllen (tag_type_t tag, tag_value_t value, va_list ap)
 Calculate length of a linear tag list.
tagi_ttl_vllist (tag_type_t tag, tag_value_t value, va_list ap)
 Make a linear tag list.
tagi_ttl_llist (tag_type_t tag, tag_value_t value,...)
 Make a linear tag list until TAG_END().
void tl_vfree (tagi_t *t)
 Free a tag list allocated by tl_list(), tl_llist() or tl_vlist().
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.

Variables

tag_class_t cstr_tag_class [1]
 Tag class for constant strings.

Function Documentation

tagi_t* tl_afilter ( su_home_t home,
tagi_t const   filter[],
tagi_t const   src[] 
)

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.

tagi_t* tl_dup ( tagi_t  dst[],
tagi_t const   src[],
void **  bb 
)

Duplicate a tag list.

The function tl_dup() deep copies the tag list src to the buffer dst. Memory areas associated with src are copied to buffer at **bb.

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.

Parameters:
dst pointer to the destination buffer
src tag list to be duplicated
bb pointer to pointer to buffer
Returns:
The function tl_dup() returns a pointer to the dst list after last duplicated taglist element.
The function tl_dup updates the pointer at *bb to the byte after last duplicated memory area.

tagi_t* tl_move ( tagi_t dst,
tagi_t const   src[] 
)

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.

Parameters:
dst pointer to the destination buffer
src tag list to be moved
Returns:
The function tl_move() returns a pointer to the dst list after last moved element.

int tl_tgets ( tagi_t  lst[],
tag_type_t  tag,
tag_value_t  value,
  ... 
)

Find tags from given list.

The function tl_tgets() copies values of argument tag list into the tag list lst.

See also:
tl_gets()

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.

Parameters:
dst pointer to the destination buffer
size sizeof dst
t_tag,t_value,... tag list
Returns:
The function tl_tmove() returns number of tag list items initialized.


Sofia-SIP 1.12.1 - Copyright (C) 2006 Nokia Corporation. All rights reserved. Licensed under the terms of the GNU Lesser General Public License.