Go to the documentation of this file.
86#define su_va_copy(dst, src) va_copy((dst), (src))
87#elif defined(__va_copy)
88#define su_va_copy(dst, src) __va_copy((dst), (src))
90#define su_va_copy(dst, src) (memcpy(&(dst), &(src), sizeof (va_list)))
107#define ta_start(ta, t, v) \
109 tag_type_t ta_start__tag = (t); tag_value_t ta_start__value = (v); \
110 va_start((ta).ap, (v)); \
111 while ((ta_start__tag) == tag_next && (ta_start__value) != 0) { \
112 ta_start__tag = ((tagi_t *)ta_start__value)->t_tag; \
113 if (ta_start__tag == tag_null || ta_start__tag == NULL) \
115 if (ta_start__tag == tag_next) { \
116 ta_start__value = ((tagi_t *)ta_start__value)->t_value; } \
118 ta_start__tag = tag_next; \
122 (ta).tl->t_tag = ta_start__tag; (ta).tl->t_value = ta_start__value; \
123 if (ta_start__tag != NULL && \
124 ta_start__tag != tag_null && \
125 ta_start__tag != tag_next) { \
126 (ta).tl[1].t_tag = tag_next; \
127 (ta).tl[1].t_value = (tag_value_t)(&(v) + 1); \
129 (ta).tl[1].t_tag = 0; (ta).tl[1].t_value = (tag_value_t)0; \
134#define ta_start(ta, t, v) \
136 tag_type_t ta_start__tag = (t); tag_value_t ta_start__value = (v); \
137 va_start((ta).ap, (v)); \
138 while ((ta_start__tag) == tag_next && (ta_start__value) != 0) { \
139 ta_start__tag = ((tagi_t *)ta_start__value)->t_tag; \
140 if (ta_start__tag == tag_null || ta_start__tag == NULL) \
142 if (ta_start__tag == tag_next) { \
143 ta_start__value = ((tagi_t *)ta_start__value)->t_value; \
145 ta_start__tag = tag_next; \
149 (ta).tl->t_tag = ta_start__tag; (ta).tl->t_value = ta_start__value; \
150 if (ta_start__tag != NULL && \
151 ta_start__tag != tag_null && \
152 ta_start__tag != tag_next) { \
153 va_list ta_start__ap; \
154 su_va_copy(ta_start__ap, (ta).ap); \
155 (ta).tl[1].t_tag = tag_next; \
156 (ta).tl[1].t_value = (tag_value_t)tl_vlist(ta_start__ap); \
157 va_end(ta_start__ap); \
159 (ta).tl[1].t_value = 0; (ta).tl[1].t_value = (tag_value_t)0; \
170#define ta_args(ta) (ta).tl
180 (ta).tl[0].t_tag, (ta).tl[0].t_value, (ta).tl[1].t_tag, (ta).tl[1].t_value
192#define ta_end(ta) (va_end((ta).ap), (ta).tl->t_tag = NULL, 0)
195 ((((ta).tl[1].t_value) ? \
196 (tl_vfree((tagi_t *)((ta).tl[1].t_value))) : (void)0), \
197 (ta).tl[1].t_value = 0, va_end((ta).ap), 0)
Structure for accessing tagged argument lists.
Definition su_tagarg.h:80
Tag item.
Definition su_tag.h:63
\ Object-oriented tags and tag list interface.
Sofia-SIP 1.12.11devel -
Copyright (C) 2006 Nokia Corporation. All rights reserved.
Licensed under the terms of the GNU Lesser General Public License.