/usr/include/sofia-sip-1.12/sofia-sip/sip_tag.h.in is in libsofia-sip-ua-dev 1.12.11+20110422-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 | /**@file sofia-sip/sip_tag.h.in
*
* Template for <sip_tag.h>.
*
* @date Created: Wed Feb 21 11:01:45 2001 ppessi
*/
/*
* This file is part of the Sofia-SIP package
*
* Copyright (C) 2005 Nokia Corporation.
*
* Contact: Pekka Pessi <pekka.pessi@nokia.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA
*
*/
#ifndef SIP_TAG_H
/** Defined when <sofia-sip/sip_tag.h> has been included. */
#define SIP_TAG_H
/**@file sofia-sip/sip_tag.h
* @brief Tag class for SIP headers
*
* #AUTO#
*
* @author Pekka Pessi <Pekka.Pessi@nokia.com>.
*
*/
#ifndef SU_TAG_H
#include <sofia-sip/su_tag.h>
#endif
#ifndef SU_TAG_CLASS_H
#include <sofia-sip/su_tag_class.h>
#endif
#ifndef SIP_H
#include <sofia-sip/sip.h>
#endif
SOFIA_BEGIN_DECLS
/** Test if tag type marks a sip_t structure. @HIDE */
#define SIPTAG_P(tt) ((tt)->tt_class == siphdrtag_class)
/** Test if tag type marks a SIP header string. @HIDE */
#define SIPTAG_STR_P(tt) ((tt)->tt_class == sipstrtag_class)
/** Test if tag type marks a SIP header structure. @HIDE */
#define SIPTAG_SIP_P(tt) ((tt)->tt_class == sipmsgtag_class)
/** Test if tag item contains sip_t structure. @HIDE */
#define SIPTAGI_P(t) (SIPTAG_P((t)->t_tag))
/** Test if tag item contains a SIP header string. @HIDE */
#define SIPTAGI_STR_P(t) (SIPTAG_STR_P((t)->t_tag))
/** Test if tag item contains a SIP header structure. @HIDE */
#define SIPTAGI_SIP_P(t) (SIPTAG_SIP_P((t)->t_tag))
/** Tag class for SIP headers */
SOFIAPUBVAR tag_class_t siphdrtag_class[1];
/** Tag class for string values of SIP headers */
SOFIAPUBVAR tag_class_t sipstrtag_class[1];
/** Tag class for SIP message */
SOFIAPUBVAR tag_class_t sipmsgtag_class[1];
/** Lists of SIP tags. */
SOFIAPUBVAR tag_type_t sip_tag_list[], sip_tag_str_list[];
/** Filter tag matching any sip tag. */
#define SIPTAG_ANY() siptag_any, ((tag_value_t)0)
SOFIAPUBVAR tag_typedef_t siptag_any;
/** End of SIP headers */
#define SIPTAG_END() siptag_end, (tag_value_t)0
SOFIAPUBVAR tag_typedef_t siptag_end;
/**Tag list item for #sip_t object.
*
* The SIPTAG_SIP() macro is used to include a tag item for a #sip_t struct
* in the tag list.
*
* @param x pointer to a #sip_t message structure, or NULL.
*
* @HIDE
*/
#define SIPTAG_SIP(x) siptag_sip, siptag_sip_v((x))
/** Tag for @c sip_t */
SOFIAPUBVAR tag_typedef_t siptag_sip;
#define SIPTAG_SIP_REF(x) siptag_sip_ref, siptag_sip_vr(&(x))
SOFIAPUBVAR tag_typedef_t siptag_sip_ref;
#if SU_INLINE_TAG_CAST
su_inline
tag_value_t siptag_sip_v(sip_t const *v) { return (tag_value_t)v; }
su_inline
tag_value_t siptag_sip_vr(sip_t const **vp) { return (tag_value_t)vp; }
#else
#define siptag_sip_v(v) (tag_value_t)(v)
#define siptag_sip_vr(vp) (tag_value_t)(vp)
#endif
/**Tag list item for header string.
*
* The SIPTAG_HEADER() macro is used to include a tag item containing an
* unknown SIP header in the tag list, e.g.,
* @code
* sip_header_t *hdr;
*
* SIPTAG_HEADER(hdr).
* @endcode
*
* @param x pointer to a header structure, or NULL.
*
* @HIDE
*/
#define SIPTAG_HEADER(x) siptag_header, siptag_header_v((x))
/** Tag for header string */
SOFIAPUBVAR tag_typedef_t siptag_header;
#define SIPTAG_HEADER_REF(x) siptag_header_ref, siptag_header_vr(&(x))
SOFIAPUBVAR tag_typedef_t siptag_header_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
siptag_header_v(sip_header_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
siptag_header_vr(sip_header_t const **vp)
{ return (tag_value_t)vp; }
#else
#define siptag_header_v(v) (tag_value_t)(v)
#define siptag_header_vr(vp) (tag_value_t)(vp)
#endif
/**Tag list item for header string.
*
* Macro is used to include a tag item containing an unknown extension
* header in the tag list, e.g.,
* @code
* SIPTAG_HEADER_STR("P-Alternative-URL: <+358718008000>")
* @endcode
*
* It is also possible to include multiple headers at once
* @code
* SIPTAG_HEADER_STR("P-Access-Network-Info: IEEE-802.11g;"
* " access-point-id=00:11:5C:34:E5:C0\r\n"
" "P-Visited-Network-ID: other.net\r\n")
* @endcode
*
* (See @RFC3455 for more information about these headers.)
*
* @param s pointer to a string, or NULL.
*
* The corresponding tag item taking reference parameter is
* SIPTAG_HEADER_STR_REF().
*
* @HIDE
*/
#define SIPTAG_HEADER_STR(s) siptag_header_str, tag_str_v((s))
/** Tag for header string */
SOFIAPUBVAR tag_typedef_t siptag_header_str;
#define SIPTAG_HEADER_STR_REF(s) siptag_header_str_ref, tag_str_vr(&(s))
SOFIAPUBVAR tag_typedef_t siptag_header_str_ref;
/**@ingroup sip_#xxxxxx#
*
* Tag list item for pointer to a @ref sip_#xxxxxx# "#xxxxxxx_xxxxxxx#"
* structure #sip_#xxxxxx#_t.
*
* The SIPTAG_#XXXXXX#() macro is used to include a tag item with a
* pointer to a #sip_#xxxxxx#_t structure in a tag list.
*
* @param x pointer to a #sip_#xxxxxx#_t structure, or NULL.
*
* The corresponding tag taking reference parameter is
* SIPTAG_#XXXXXX#_REF().
*
* @since New in #version#.
*
* @HIDE
*/
#define SIPTAG_#XXXXXX#(x) siptag_#xxxxxx#, siptag_#xxxxxx#_v(x)
SOFIAPUBVAR tag_typedef_t siptag_#xxxxxx#;
/**@ingroup sip_#xxxxxx#
* Tag list item for reference to a
* @ref sip_#xxxxxx# "#xxxxxxx_xxxxxxx#" pointer.
*/
#define SIPTAG_#XXXXXX#_REF(x) siptag_#xxxxxx#_ref, siptag_#xxxxxx#_vr(&(x))
SOFIAPUBVAR tag_typedef_t siptag_#xxxxxx#_ref;
/**@ingroup sip_#xxxxxx#
*
* Tag list item for string with @ref sip_#xxxxxx# "#xxxxxxx_xxxxxxx#" value.
*
* The SIPTAG_#XXXXXX#_STR() macro is used to include a tag item with a
* string containing value of a #sip_#xxxxxx#_t header in a tag list.
*
* @param s pointer to a string containing
* @ref sip_#xxxxxx# "#xxxxxxx_xxxxxxx#" value, or NULL.
*
* The string in SIPTAG_#XXXXXX#_STR() can be converted to a
* #sip_#xxxxxx#_t header structure by giving the string @a s has
* second argument to function sip_#xxxxxx#_make().
*
* The corresponding tag taking reference parameter is
* SIPTAG_#XXXXXX#_STR_REF().
*
* @since New in #version#.
*
* @HIDE
*/
#define SIPTAG_#XXXXXX#_STR(s) siptag_#xxxxxx#_str, tag_str_v(s)
SOFIAPUBVAR tag_typedef_t siptag_#xxxxxx#_str;
/**@ingroup sip_#xxxxxx#
* Tag list item for reference to a
* @ref sip_#xxxxxx# "#xxxxxxx_xxxxxxx#" string.
*/
#define SIPTAG_#XXXXXX#_STR_REF(x) siptag_#xxxxxx#_str_ref, tag_str_vr(&(x))
SOFIAPUBVAR tag_typedef_t siptag_#xxxxxx#_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
siptag_#xxxxxx#_v(sip_#xxxxxx#_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
siptag_#xxxxxx#_vr(sip_#xxxxxx#_t const **vp)
{ return (tag_value_t)vp; }
#else
#define siptag_#xxxxxx#_v(v) (tag_value_t)(v)
#define siptag_#xxxxxx#_vr(vp) (tag_value_t)(vp)
#endif
SOFIA_END_DECLS
#endif
|