Loading...
Searching...
No Matches
http_tag.h
Go to the documentation of this file.
/*
* This file is part of the Sofia-SIP package
*
* Copyright (C) 2005 Nokia Corporation.
*
* Contact: Pekka Pessi <pekka.pessi@nokia-email.address.hidden>
*
* 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 HTTP_TAG_H
#define HTTP_TAG_H
#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 SU_TAG_CLASS_H
#include <sofia-sip/su_tag_class.h>
#endif
#ifndef HTTP_H
#include <sofia-sip/http.h>
#endif
SOFIA_BEGIN_DECLS
#define HTTPTAG(c, x) httptag_##c, httptag_##c##_v(x)
#define HTTPTAG_REF(c, x) httptag_##c##_ref, httptag_##c##_vr(&(x))
#define HTTPTAG_STR(c, s) httptag_##c##_str, tag_str_v(s)
#define HTTPTAG_STR_REF(c, s) httptag_##c##_str_ref, tag_str_vr(&(s))
#define HTTPTAG_P(tt) ((tt)->tt_class == httphdrtag_class)
#define HTTPTAG_STR_P(tt) ((tt)->tt_class == httpstrtag_class)
#define HTTPTAG_HTTP_P(tt) ((tt)->tt_class == httpmsgtag_class)
#define HTTPTAGI_P(t) (HTTPTAG_P((t)->t_tag))
#define HTTPTAGI_STR_P(t) (HTTPTAG_STR_P((t)->t_tag))
#define HTTPTAGI_HTTP_P(t) (HTTPTAG_HTTP_P((t)->t_tag))
SOFIAPUBVAR tag_class_t httphdrtag_class[1];
SOFIAPUBVAR tag_class_t httpstrtag_class[1];
SOFIAPUBVAR tag_class_t httpmsgtag_class[1];
#define HTTPTAG_ANY() httptag_any, ((tag_value_t)0)
SOFIAPUBVAR tag_typedef_t httptag_any;
#define HTTPTAG_HTTP(x) httptag_http, httptag_http_v((x))
SOFIAPUBVAR tag_typedef_t httptag_http;
#define HTTPTAG_HTTP_REF(x) httptag_http_ref, httptag_http_vr(&(x))
SOFIAPUBVAR tag_typedef_t httptag_http_ref;
#if SU_INLINE_TAG_CAST
su_inline
tag_value_t httptag_http_v(http_t const *v) { return (tag_value_t)v; }
su_inline
tag_value_t httptag_http_vr(http_t const **vp) { return (tag_value_t)vp; }
#else
#define httptag_http_v(v) (tag_value_t)(v)
#define httptag_http_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_VERSION(x) httptag_http, (tag_value_t)x
extern tag_typedef_t httptag_version;
#define HTTPTAG_VERSION_REF(x) httptag_http_ref, (tag_value_t)&(x)
extern tag_typedef_t httptag_version_ref;
#define HTTPTAG_HEADER(x) httptag_header, httptag_header_v((x))
SOFIAPUBVAR tag_typedef_t httptag_header;
#define HTTPTAG_HEADER_REF(x) httptag_header_ref, httptag_header_vr(&(x))
SOFIAPUBVAR tag_typedef_t httptag_header_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_header_v(http_header_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_header_vr(http_header_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_header_v(v) (tag_value_t)(v)
#define httptag_header_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_HEADER_STR(x) httptag_header_str, tag_str_v((x))
SOFIAPUBVAR tag_typedef_t httptag_header_str;
#define HTTPTAG_HEADER_STR_REF(x) httptag_header_str_ref, tag_str_vr(&(x))
SOFIAPUBVAR tag_typedef_t httptag_header_str_ref;
#define HTTPTAG_REQUEST(x) HTTPTAG(request, x)
SOFIAPUBVAR tag_typedef_t httptag_request;
#define HTTPTAG_REQUEST_STR(s) HTTPTAG_STR(request, s)
SOFIAPUBVAR tag_typedef_t httptag_request_str;
#define HTTPTAG_REQUEST_REF(x) HTTPTAG_REF(request, x)
SOFIAPUBVAR tag_typedef_t httptag_request_ref;
#define HTTPTAG_REQUEST_STR_REF(x) HTTPTAG_STR_REF(request, x)
SOFIAPUBVAR tag_typedef_t httptag_request_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_request_v(http_request_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_request_vr(http_request_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_request_v(v) (tag_value_t)(v)
#define httptag_request_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_STATUS(x) HTTPTAG(status, x)
SOFIAPUBVAR tag_typedef_t httptag_status;
#define HTTPTAG_STATUS_STR(s) HTTPTAG_STR(status, s)
SOFIAPUBVAR tag_typedef_t httptag_status_str;
#define HTTPTAG_STATUS_REF(x) HTTPTAG_REF(status, x)
SOFIAPUBVAR tag_typedef_t httptag_status_ref;
#define HTTPTAG_STATUS_STR_REF(x) HTTPTAG_STR_REF(status, x)
SOFIAPUBVAR tag_typedef_t httptag_status_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_status_v(http_status_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_status_vr(http_status_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_status_v(v) (tag_value_t)(v)
#define httptag_status_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_ACCEPT(x) HTTPTAG(accept, x)
SOFIAPUBVAR tag_typedef_t httptag_accept;
#define HTTPTAG_ACCEPT_STR(s) HTTPTAG_STR(accept, s)
SOFIAPUBVAR tag_typedef_t httptag_accept_str;
#define HTTPTAG_ACCEPT_REF(x) HTTPTAG_REF(accept, x)
SOFIAPUBVAR tag_typedef_t httptag_accept_ref;
#define HTTPTAG_ACCEPT_STR_REF(x) HTTPTAG_STR_REF(accept, x)
SOFIAPUBVAR tag_typedef_t httptag_accept_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_accept_v(http_accept_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_accept_vr(http_accept_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_accept_v(v) (tag_value_t)(v)
#define httptag_accept_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_ACCEPT_CHARSET(x) HTTPTAG(accept_charset, x)
SOFIAPUBVAR tag_typedef_t httptag_accept_charset;
#define HTTPTAG_ACCEPT_CHARSET_STR(s) HTTPTAG_STR(accept_charset, s)
SOFIAPUBVAR tag_typedef_t httptag_accept_charset_str;
#define HTTPTAG_ACCEPT_CHARSET_REF(x) HTTPTAG_REF(accept_charset, x)
SOFIAPUBVAR tag_typedef_t httptag_accept_charset_ref;
#define HTTPTAG_ACCEPT_CHARSET_STR_REF(x) HTTPTAG_STR_REF(accept_charset, x)
SOFIAPUBVAR tag_typedef_t httptag_accept_charset_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_accept_charset_v(http_accept_charset_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_accept_charset_vr(http_accept_charset_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_accept_charset_v(v) (tag_value_t)(v)
#define httptag_accept_charset_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_ACCEPT_ENCODING(x) HTTPTAG(accept_encoding, x)
SOFIAPUBVAR tag_typedef_t httptag_accept_encoding;
#define HTTPTAG_ACCEPT_ENCODING_STR(s) HTTPTAG_STR(accept_encoding, s)
SOFIAPUBVAR tag_typedef_t httptag_accept_encoding_str;
#define HTTPTAG_ACCEPT_ENCODING_REF(x) HTTPTAG_REF(accept_encoding, x)
SOFIAPUBVAR tag_typedef_t httptag_accept_encoding_ref;
#define HTTPTAG_ACCEPT_ENCODING_STR_REF(x) HTTPTAG_STR_REF(accept_encoding, x)
SOFIAPUBVAR tag_typedef_t httptag_accept_encoding_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_accept_encoding_v(http_accept_encoding_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_accept_encoding_vr(http_accept_encoding_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_accept_encoding_v(v) (tag_value_t)(v)
#define httptag_accept_encoding_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_ACCEPT_LANGUAGE(x) HTTPTAG(accept_language, x)
SOFIAPUBVAR tag_typedef_t httptag_accept_language;
#define HTTPTAG_ACCEPT_LANGUAGE_STR(s) HTTPTAG_STR(accept_language, s)
SOFIAPUBVAR tag_typedef_t httptag_accept_language_str;
#define HTTPTAG_ACCEPT_LANGUAGE_REF(x) HTTPTAG_REF(accept_language, x)
SOFIAPUBVAR tag_typedef_t httptag_accept_language_ref;
#define HTTPTAG_ACCEPT_LANGUAGE_STR_REF(x) HTTPTAG_STR_REF(accept_language, x)
SOFIAPUBVAR tag_typedef_t httptag_accept_language_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_accept_language_v(http_accept_language_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_accept_language_vr(http_accept_language_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_accept_language_v(v) (tag_value_t)(v)
#define httptag_accept_language_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_ACCEPT_RANGES(x) HTTPTAG(accept_ranges, x)
SOFIAPUBVAR tag_typedef_t httptag_accept_ranges;
#define HTTPTAG_ACCEPT_RANGES_STR(s) HTTPTAG_STR(accept_ranges, s)
SOFIAPUBVAR tag_typedef_t httptag_accept_ranges_str;
#define HTTPTAG_ACCEPT_RANGES_REF(x) HTTPTAG_REF(accept_ranges, x)
SOFIAPUBVAR tag_typedef_t httptag_accept_ranges_ref;
#define HTTPTAG_ACCEPT_RANGES_STR_REF(x) HTTPTAG_STR_REF(accept_ranges, x)
SOFIAPUBVAR tag_typedef_t httptag_accept_ranges_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_accept_ranges_v(http_accept_ranges_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_accept_ranges_vr(http_accept_ranges_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_accept_ranges_v(v) (tag_value_t)(v)
#define httptag_accept_ranges_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_ALLOW(x) HTTPTAG(allow, x)
SOFIAPUBVAR tag_typedef_t httptag_allow;
#define HTTPTAG_ALLOW_STR(s) HTTPTAG_STR(allow, s)
SOFIAPUBVAR tag_typedef_t httptag_allow_str;
#define HTTPTAG_ALLOW_REF(x) HTTPTAG_REF(allow, x)
SOFIAPUBVAR tag_typedef_t httptag_allow_ref;
#define HTTPTAG_ALLOW_STR_REF(x) HTTPTAG_STR_REF(allow, x)
SOFIAPUBVAR tag_typedef_t httptag_allow_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_allow_v(http_allow_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_allow_vr(http_allow_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_allow_v(v) (tag_value_t)(v)
#define httptag_allow_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_AUTHENTICATION_INFO(x) HTTPTAG(authentication_info, x)
SOFIAPUBVAR tag_typedef_t httptag_authentication_info;
#define HTTPTAG_AUTHENTICATION_INFO_STR(s) HTTPTAG_STR(authentication_info, s)
SOFIAPUBVAR tag_typedef_t httptag_authentication_info_str;
#define HTTPTAG_AUTHENTICATION_INFO_REF(x) HTTPTAG_REF(authentication_info, x)
SOFIAPUBVAR tag_typedef_t httptag_authentication_info_ref;
#define HTTPTAG_AUTHENTICATION_INFO_STR_REF(x) HTTPTAG_STR_REF(authentication_info, x)
SOFIAPUBVAR tag_typedef_t httptag_authentication_info_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_authentication_info_v(http_authentication_info_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_authentication_info_vr(http_authentication_info_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_authentication_info_v(v) (tag_value_t)(v)
#define httptag_authentication_info_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_AUTHORIZATION(x) HTTPTAG(authorization, x)
SOFIAPUBVAR tag_typedef_t httptag_authorization;
#define HTTPTAG_AUTHORIZATION_STR(s) HTTPTAG_STR(authorization, s)
SOFIAPUBVAR tag_typedef_t httptag_authorization_str;
#define HTTPTAG_AUTHORIZATION_REF(x) HTTPTAG_REF(authorization, x)
SOFIAPUBVAR tag_typedef_t httptag_authorization_ref;
#define HTTPTAG_AUTHORIZATION_STR_REF(x) HTTPTAG_STR_REF(authorization, x)
SOFIAPUBVAR tag_typedef_t httptag_authorization_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_authorization_v(http_authorization_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_authorization_vr(http_authorization_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_authorization_v(v) (tag_value_t)(v)
#define httptag_authorization_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_AGE(x) HTTPTAG(age, x)
SOFIAPUBVAR tag_typedef_t httptag_age;
#define HTTPTAG_AGE_STR(s) HTTPTAG_STR(age, s)
SOFIAPUBVAR tag_typedef_t httptag_age_str;
#define HTTPTAG_AGE_REF(x) HTTPTAG_REF(age, x)
SOFIAPUBVAR tag_typedef_t httptag_age_ref;
#define HTTPTAG_AGE_STR_REF(x) HTTPTAG_STR_REF(age, x)
SOFIAPUBVAR tag_typedef_t httptag_age_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_age_v(http_age_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_age_vr(http_age_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_age_v(v) (tag_value_t)(v)
#define httptag_age_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_CACHE_CONTROL(x) HTTPTAG(cache_control, x)
SOFIAPUBVAR tag_typedef_t httptag_cache_control;
#define HTTPTAG_CACHE_CONTROL_STR(s) HTTPTAG_STR(cache_control, s)
SOFIAPUBVAR tag_typedef_t httptag_cache_control_str;
#define HTTPTAG_CACHE_CONTROL_REF(x) HTTPTAG_REF(cache_control, x)
SOFIAPUBVAR tag_typedef_t httptag_cache_control_ref;
#define HTTPTAG_CACHE_CONTROL_STR_REF(x) HTTPTAG_STR_REF(cache_control, x)
SOFIAPUBVAR tag_typedef_t httptag_cache_control_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_cache_control_v(http_cache_control_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_cache_control_vr(http_cache_control_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_cache_control_v(v) (tag_value_t)(v)
#define httptag_cache_control_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_CONNECTION(x) HTTPTAG(connection, x)
SOFIAPUBVAR tag_typedef_t httptag_connection;
#define HTTPTAG_CONNECTION_STR(s) HTTPTAG_STR(connection, s)
SOFIAPUBVAR tag_typedef_t httptag_connection_str;
#define HTTPTAG_CONNECTION_REF(x) HTTPTAG_REF(connection, x)
SOFIAPUBVAR tag_typedef_t httptag_connection_ref;
#define HTTPTAG_CONNECTION_STR_REF(x) HTTPTAG_STR_REF(connection, x)
SOFIAPUBVAR tag_typedef_t httptag_connection_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_connection_v(http_connection_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_connection_vr(http_connection_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_connection_v(v) (tag_value_t)(v)
#define httptag_connection_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_DATE(x) HTTPTAG(date, x)
SOFIAPUBVAR tag_typedef_t httptag_date;
#define HTTPTAG_DATE_STR(s) HTTPTAG_STR(date, s)
SOFIAPUBVAR tag_typedef_t httptag_date_str;
#define HTTPTAG_DATE_REF(x) HTTPTAG_REF(date, x)
SOFIAPUBVAR tag_typedef_t httptag_date_ref;
#define HTTPTAG_DATE_STR_REF(x) HTTPTAG_STR_REF(date, x)
SOFIAPUBVAR tag_typedef_t httptag_date_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_date_v(http_date_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_date_vr(http_date_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_date_v(v) (tag_value_t)(v)
#define httptag_date_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_ETAG(x) HTTPTAG(etag, x)
SOFIAPUBVAR tag_typedef_t httptag_etag;
#define HTTPTAG_ETAG_STR(s) HTTPTAG_STR(etag, s)
SOFIAPUBVAR tag_typedef_t httptag_etag_str;
#define HTTPTAG_ETAG_REF(x) HTTPTAG_REF(etag, x)
SOFIAPUBVAR tag_typedef_t httptag_etag_ref;
#define HTTPTAG_ETAG_STR_REF(x) HTTPTAG_STR_REF(etag, x)
SOFIAPUBVAR tag_typedef_t httptag_etag_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_etag_v(http_etag_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_etag_vr(http_etag_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_etag_v(v) (tag_value_t)(v)
#define httptag_etag_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_EXPECT(x) HTTPTAG(expect, x)
SOFIAPUBVAR tag_typedef_t httptag_expect;
#define HTTPTAG_EXPECT_STR(s) HTTPTAG_STR(expect, s)
SOFIAPUBVAR tag_typedef_t httptag_expect_str;
#define HTTPTAG_EXPECT_REF(x) HTTPTAG_REF(expect, x)
SOFIAPUBVAR tag_typedef_t httptag_expect_ref;
#define HTTPTAG_EXPECT_STR_REF(x) HTTPTAG_STR_REF(expect, x)
SOFIAPUBVAR tag_typedef_t httptag_expect_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_expect_v(http_expect_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_expect_vr(http_expect_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_expect_v(v) (tag_value_t)(v)
#define httptag_expect_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_EXPIRES(x) HTTPTAG(expires, x)
SOFIAPUBVAR tag_typedef_t httptag_expires;
#define HTTPTAG_EXPIRES_STR(s) HTTPTAG_STR(expires, s)
SOFIAPUBVAR tag_typedef_t httptag_expires_str;
#define HTTPTAG_EXPIRES_REF(x) HTTPTAG_REF(expires, x)
SOFIAPUBVAR tag_typedef_t httptag_expires_ref;
#define HTTPTAG_EXPIRES_STR_REF(x) HTTPTAG_STR_REF(expires, x)
SOFIAPUBVAR tag_typedef_t httptag_expires_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_expires_v(http_expires_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_expires_vr(http_expires_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_expires_v(v) (tag_value_t)(v)
#define httptag_expires_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_FROM(x) HTTPTAG(from, x)
SOFIAPUBVAR tag_typedef_t httptag_from;
#define HTTPTAG_FROM_STR(s) HTTPTAG_STR(from, s)
SOFIAPUBVAR tag_typedef_t httptag_from_str;
#define HTTPTAG_FROM_REF(x) HTTPTAG_REF(from, x)
SOFIAPUBVAR tag_typedef_t httptag_from_ref;
#define HTTPTAG_FROM_STR_REF(x) HTTPTAG_STR_REF(from, x)
SOFIAPUBVAR tag_typedef_t httptag_from_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_from_v(http_from_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_from_vr(http_from_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_from_v(v) (tag_value_t)(v)
#define httptag_from_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_HOST(x) HTTPTAG(host, x)
SOFIAPUBVAR tag_typedef_t httptag_host;
#define HTTPTAG_HOST_STR(s) HTTPTAG_STR(host, s)
SOFIAPUBVAR tag_typedef_t httptag_host_str;
#define HTTPTAG_HOST_REF(x) HTTPTAG_REF(host, x)
SOFIAPUBVAR tag_typedef_t httptag_host_ref;
#define HTTPTAG_HOST_STR_REF(x) HTTPTAG_STR_REF(host, x)
SOFIAPUBVAR tag_typedef_t httptag_host_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_host_v(http_host_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_host_vr(http_host_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_host_v(v) (tag_value_t)(v)
#define httptag_host_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_IF_MATCH(x) HTTPTAG(if_match, x)
SOFIAPUBVAR tag_typedef_t httptag_if_match;
#define HTTPTAG_IF_MATCH_STR(s) HTTPTAG_STR(if_match, s)
SOFIAPUBVAR tag_typedef_t httptag_if_match_str;
#define HTTPTAG_IF_MATCH_REF(x) HTTPTAG_REF(if_match, x)
SOFIAPUBVAR tag_typedef_t httptag_if_match_ref;
#define HTTPTAG_IF_MATCH_STR_REF(x) HTTPTAG_STR_REF(if_match, x)
SOFIAPUBVAR tag_typedef_t httptag_if_match_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_if_match_v(http_if_match_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_if_match_vr(http_if_match_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_if_match_v(v) (tag_value_t)(v)
#define httptag_if_match_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_IF_MODIFIED_SINCE(x) HTTPTAG(if_modified_since, x)
SOFIAPUBVAR tag_typedef_t httptag_if_modified_since;
#define HTTPTAG_IF_MODIFIED_SINCE_STR(s) HTTPTAG_STR(if_modified_since, s)
SOFIAPUBVAR tag_typedef_t httptag_if_modified_since_str;
#define HTTPTAG_IF_MODIFIED_SINCE_REF(x) HTTPTAG_REF(if_modified_since, x)
SOFIAPUBVAR tag_typedef_t httptag_if_modified_since_ref;
#define HTTPTAG_IF_MODIFIED_SINCE_STR_REF(x) HTTPTAG_STR_REF(if_modified_since, x)
SOFIAPUBVAR tag_typedef_t httptag_if_modified_since_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_if_modified_since_v(http_if_modified_since_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_if_modified_since_vr(http_if_modified_since_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_if_modified_since_v(v) (tag_value_t)(v)
#define httptag_if_modified_since_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_IF_NONE_MATCH(x) HTTPTAG(if_none_match, x)
SOFIAPUBVAR tag_typedef_t httptag_if_none_match;
#define HTTPTAG_IF_NONE_MATCH_STR(s) HTTPTAG_STR(if_none_match, s)
SOFIAPUBVAR tag_typedef_t httptag_if_none_match_str;
#define HTTPTAG_IF_NONE_MATCH_REF(x) HTTPTAG_REF(if_none_match, x)
SOFIAPUBVAR tag_typedef_t httptag_if_none_match_ref;
#define HTTPTAG_IF_NONE_MATCH_STR_REF(x) HTTPTAG_STR_REF(if_none_match, x)
SOFIAPUBVAR tag_typedef_t httptag_if_none_match_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_if_none_match_v(http_if_none_match_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_if_none_match_vr(http_if_none_match_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_if_none_match_v(v) (tag_value_t)(v)
#define httptag_if_none_match_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_IF_RANGE(x) HTTPTAG(if_range, x)
SOFIAPUBVAR tag_typedef_t httptag_if_range;
#define HTTPTAG_IF_RANGE_STR(s) HTTPTAG_STR(if_range, s)
SOFIAPUBVAR tag_typedef_t httptag_if_range_str;
#define HTTPTAG_IF_RANGE_REF(x) HTTPTAG_REF(if_range, x)
SOFIAPUBVAR tag_typedef_t httptag_if_range_ref;
#define HTTPTAG_IF_RANGE_STR_REF(x) HTTPTAG_STR_REF(if_range, x)
SOFIAPUBVAR tag_typedef_t httptag_if_range_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_if_range_v(http_if_range_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_if_range_vr(http_if_range_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_if_range_v(v) (tag_value_t)(v)
#define httptag_if_range_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_IF_UNMODIFIED_SINCE(x) HTTPTAG(if_unmodified_since, x)
SOFIAPUBVAR tag_typedef_t httptag_if_unmodified_since;
#define HTTPTAG_IF_UNMODIFIED_SINCE_STR(s) HTTPTAG_STR(if_unmodified_since, s)
SOFIAPUBVAR tag_typedef_t httptag_if_unmodified_since_str;
#define HTTPTAG_IF_UNMODIFIED_SINCE_REF(x) HTTPTAG_REF(if_unmodified_since, x)
SOFIAPUBVAR tag_typedef_t httptag_if_unmodified_since_ref;
#define HTTPTAG_IF_UNMODIFIED_SINCE_STR_REF(x) HTTPTAG_STR_REF(if_unmodified_since, x)
SOFIAPUBVAR tag_typedef_t httptag_if_unmodified_since_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_if_unmodified_since_v(http_if_unmodified_since_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_if_unmodified_since_vr(http_if_unmodified_since_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_if_unmodified_since_v(v) (tag_value_t)(v)
#define httptag_if_unmodified_since_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_LAST_MODIFIED(x) HTTPTAG(last_modified, x)
SOFIAPUBVAR tag_typedef_t httptag_last_modified;
#define HTTPTAG_LAST_MODIFIED_STR(s) HTTPTAG_STR(last_modified, s)
SOFIAPUBVAR tag_typedef_t httptag_last_modified_str;
#define HTTPTAG_LAST_MODIFIED_REF(x) HTTPTAG_REF(last_modified, x)
SOFIAPUBVAR tag_typedef_t httptag_last_modified_ref;
#define HTTPTAG_LAST_MODIFIED_STR_REF(x) HTTPTAG_STR_REF(last_modified, x)
SOFIAPUBVAR tag_typedef_t httptag_last_modified_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_last_modified_v(http_last_modified_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_last_modified_vr(http_last_modified_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_last_modified_v(v) (tag_value_t)(v)
#define httptag_last_modified_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_LOCATION(x) HTTPTAG(location, x)
SOFIAPUBVAR tag_typedef_t httptag_location;
#define HTTPTAG_LOCATION_STR(s) HTTPTAG_STR(location, s)
SOFIAPUBVAR tag_typedef_t httptag_location_str;
#define HTTPTAG_LOCATION_REF(x) HTTPTAG_REF(location, x)
SOFIAPUBVAR tag_typedef_t httptag_location_ref;
#define HTTPTAG_LOCATION_STR_REF(x) HTTPTAG_STR_REF(location, x)
SOFIAPUBVAR tag_typedef_t httptag_location_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_location_v(http_location_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_location_vr(http_location_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_location_v(v) (tag_value_t)(v)
#define httptag_location_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_MAX_FORWARDS(x) HTTPTAG(max_forwards, x)
SOFIAPUBVAR tag_typedef_t httptag_max_forwards;
#define HTTPTAG_MAX_FORWARDS_STR(s) HTTPTAG_STR(max_forwards, s)
SOFIAPUBVAR tag_typedef_t httptag_max_forwards_str;
#define HTTPTAG_MAX_FORWARDS_REF(x) HTTPTAG_REF(max_forwards, x)
SOFIAPUBVAR tag_typedef_t httptag_max_forwards_ref;
#define HTTPTAG_MAX_FORWARDS_STR_REF(x) HTTPTAG_STR_REF(max_forwards, x)
SOFIAPUBVAR tag_typedef_t httptag_max_forwards_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_max_forwards_v(http_max_forwards_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_max_forwards_vr(http_max_forwards_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_max_forwards_v(v) (tag_value_t)(v)
#define httptag_max_forwards_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_PRAGMA(x) HTTPTAG(pragma, x)
SOFIAPUBVAR tag_typedef_t httptag_pragma;
#define HTTPTAG_PRAGMA_STR(s) HTTPTAG_STR(pragma, s)
SOFIAPUBVAR tag_typedef_t httptag_pragma_str;
#define HTTPTAG_PRAGMA_REF(x) HTTPTAG_REF(pragma, x)
SOFIAPUBVAR tag_typedef_t httptag_pragma_ref;
#define HTTPTAG_PRAGMA_STR_REF(x) HTTPTAG_STR_REF(pragma, x)
SOFIAPUBVAR tag_typedef_t httptag_pragma_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_pragma_v(http_pragma_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_pragma_vr(http_pragma_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_pragma_v(v) (tag_value_t)(v)
#define httptag_pragma_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_PROXY_AUTHENTICATE(x) HTTPTAG(proxy_authenticate, x)
SOFIAPUBVAR tag_typedef_t httptag_proxy_authenticate;
#define HTTPTAG_PROXY_AUTHENTICATE_STR(s) HTTPTAG_STR(proxy_authenticate, s)
SOFIAPUBVAR tag_typedef_t httptag_proxy_authenticate_str;
#define HTTPTAG_PROXY_AUTHENTICATE_REF(x) HTTPTAG_REF(proxy_authenticate, x)
SOFIAPUBVAR tag_typedef_t httptag_proxy_authenticate_ref;
#define HTTPTAG_PROXY_AUTHENTICATE_STR_REF(x) HTTPTAG_STR_REF(proxy_authenticate, x)
SOFIAPUBVAR tag_typedef_t httptag_proxy_authenticate_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_proxy_authenticate_v(http_proxy_authenticate_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_proxy_authenticate_vr(http_proxy_authenticate_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_proxy_authenticate_v(v) (tag_value_t)(v)
#define httptag_proxy_authenticate_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_PROXY_AUTHORIZATION(x) HTTPTAG(proxy_authorization, x)
SOFIAPUBVAR tag_typedef_t httptag_proxy_authorization;
#define HTTPTAG_PROXY_AUTHORIZATION_STR(s) HTTPTAG_STR(proxy_authorization, s)
SOFIAPUBVAR tag_typedef_t httptag_proxy_authorization_str;
#define HTTPTAG_PROXY_AUTHORIZATION_REF(x) HTTPTAG_REF(proxy_authorization, x)
SOFIAPUBVAR tag_typedef_t httptag_proxy_authorization_ref;
#define HTTPTAG_PROXY_AUTHORIZATION_STR_REF(x) HTTPTAG_STR_REF(proxy_authorization, x)
SOFIAPUBVAR tag_typedef_t httptag_proxy_authorization_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_proxy_authorization_v(http_proxy_authorization_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_proxy_authorization_vr(http_proxy_authorization_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_proxy_authorization_v(v) (tag_value_t)(v)
#define httptag_proxy_authorization_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_RANGE(x) HTTPTAG(range, x)
SOFIAPUBVAR tag_typedef_t httptag_range;
#define HTTPTAG_RANGE_STR(s) HTTPTAG_STR(range, s)
SOFIAPUBVAR tag_typedef_t httptag_range_str;
#define HTTPTAG_RANGE_REF(x) HTTPTAG_REF(range, x)
SOFIAPUBVAR tag_typedef_t httptag_range_ref;
#define HTTPTAG_RANGE_STR_REF(x) HTTPTAG_STR_REF(range, x)
SOFIAPUBVAR tag_typedef_t httptag_range_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_range_v(http_range_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_range_vr(http_range_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_range_v(v) (tag_value_t)(v)
#define httptag_range_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_REFERER(x) HTTPTAG(referer, x)
SOFIAPUBVAR tag_typedef_t httptag_referer;
#define HTTPTAG_REFERER_STR(s) HTTPTAG_STR(referer, s)
SOFIAPUBVAR tag_typedef_t httptag_referer_str;
#define HTTPTAG_REFERER_REF(x) HTTPTAG_REF(referer, x)
SOFIAPUBVAR tag_typedef_t httptag_referer_ref;
#define HTTPTAG_REFERER_STR_REF(x) HTTPTAG_STR_REF(referer, x)
SOFIAPUBVAR tag_typedef_t httptag_referer_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_referer_v(http_referer_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_referer_vr(http_referer_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_referer_v(v) (tag_value_t)(v)
#define httptag_referer_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_RETRY_AFTER(x) HTTPTAG(retry_after, x)
SOFIAPUBVAR tag_typedef_t httptag_retry_after;
#define HTTPTAG_RETRY_AFTER_STR(s) HTTPTAG_STR(retry_after, s)
SOFIAPUBVAR tag_typedef_t httptag_retry_after_str;
#define HTTPTAG_RETRY_AFTER_REF(x) HTTPTAG_REF(retry_after, x)
SOFIAPUBVAR tag_typedef_t httptag_retry_after_ref;
#define HTTPTAG_RETRY_AFTER_STR_REF(x) HTTPTAG_STR_REF(retry_after, x)
SOFIAPUBVAR tag_typedef_t httptag_retry_after_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_retry_after_v(http_retry_after_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_retry_after_vr(http_retry_after_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_retry_after_v(v) (tag_value_t)(v)
#define httptag_retry_after_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_SERVER(x) HTTPTAG(server, x)
SOFIAPUBVAR tag_typedef_t httptag_server;
#define HTTPTAG_SERVER_STR(s) HTTPTAG_STR(server, s)
SOFIAPUBVAR tag_typedef_t httptag_server_str;
#define HTTPTAG_SERVER_REF(x) HTTPTAG_REF(server, x)
SOFIAPUBVAR tag_typedef_t httptag_server_ref;
#define HTTPTAG_SERVER_STR_REF(x) HTTPTAG_STR_REF(server, x)
SOFIAPUBVAR tag_typedef_t httptag_server_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_server_v(http_server_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_server_vr(http_server_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_server_v(v) (tag_value_t)(v)
#define httptag_server_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_TE(x) HTTPTAG(te, x)
SOFIAPUBVAR tag_typedef_t httptag_te;
#define HTTPTAG_TE_STR(s) HTTPTAG_STR(te, s)
SOFIAPUBVAR tag_typedef_t httptag_te_str;
#define HTTPTAG_TE_REF(x) HTTPTAG_REF(te, x)
SOFIAPUBVAR tag_typedef_t httptag_te_ref;
#define HTTPTAG_TE_STR_REF(x) HTTPTAG_STR_REF(te, x)
SOFIAPUBVAR tag_typedef_t httptag_te_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_te_v(http_te_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_te_vr(http_te_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_te_v(v) (tag_value_t)(v)
#define httptag_te_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_TRAILER(x) HTTPTAG(trailer, x)
SOFIAPUBVAR tag_typedef_t httptag_trailer;
#define HTTPTAG_TRAILER_STR(s) HTTPTAG_STR(trailer, s)
SOFIAPUBVAR tag_typedef_t httptag_trailer_str;
#define HTTPTAG_TRAILER_REF(x) HTTPTAG_REF(trailer, x)
SOFIAPUBVAR tag_typedef_t httptag_trailer_ref;
#define HTTPTAG_TRAILER_STR_REF(x) HTTPTAG_STR_REF(trailer, x)
SOFIAPUBVAR tag_typedef_t httptag_trailer_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_trailer_v(http_trailer_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_trailer_vr(http_trailer_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_trailer_v(v) (tag_value_t)(v)
#define httptag_trailer_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_TRANSFER_ENCODING(x) HTTPTAG(transfer_encoding, x)
SOFIAPUBVAR tag_typedef_t httptag_transfer_encoding;
#define HTTPTAG_TRANSFER_ENCODING_STR(s) HTTPTAG_STR(transfer_encoding, s)
SOFIAPUBVAR tag_typedef_t httptag_transfer_encoding_str;
#define HTTPTAG_TRANSFER_ENCODING_REF(x) HTTPTAG_REF(transfer_encoding, x)
SOFIAPUBVAR tag_typedef_t httptag_transfer_encoding_ref;
#define HTTPTAG_TRANSFER_ENCODING_STR_REF(x) HTTPTAG_STR_REF(transfer_encoding, x)
SOFIAPUBVAR tag_typedef_t httptag_transfer_encoding_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_transfer_encoding_v(http_transfer_encoding_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_transfer_encoding_vr(http_transfer_encoding_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_transfer_encoding_v(v) (tag_value_t)(v)
#define httptag_transfer_encoding_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_UPGRADE(x) HTTPTAG(upgrade, x)
SOFIAPUBVAR tag_typedef_t httptag_upgrade;
#define HTTPTAG_UPGRADE_STR(s) HTTPTAG_STR(upgrade, s)
SOFIAPUBVAR tag_typedef_t httptag_upgrade_str;
#define HTTPTAG_UPGRADE_REF(x) HTTPTAG_REF(upgrade, x)
SOFIAPUBVAR tag_typedef_t httptag_upgrade_ref;
#define HTTPTAG_UPGRADE_STR_REF(x) HTTPTAG_STR_REF(upgrade, x)
SOFIAPUBVAR tag_typedef_t httptag_upgrade_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_upgrade_v(http_upgrade_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_upgrade_vr(http_upgrade_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_upgrade_v(v) (tag_value_t)(v)
#define httptag_upgrade_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_USER_AGENT(x) HTTPTAG(user_agent, x)
SOFIAPUBVAR tag_typedef_t httptag_user_agent;
#define HTTPTAG_USER_AGENT_STR(s) HTTPTAG_STR(user_agent, s)
SOFIAPUBVAR tag_typedef_t httptag_user_agent_str;
#define HTTPTAG_USER_AGENT_REF(x) HTTPTAG_REF(user_agent, x)
SOFIAPUBVAR tag_typedef_t httptag_user_agent_ref;
#define HTTPTAG_USER_AGENT_STR_REF(x) HTTPTAG_STR_REF(user_agent, x)
SOFIAPUBVAR tag_typedef_t httptag_user_agent_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_user_agent_v(http_user_agent_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_user_agent_vr(http_user_agent_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_user_agent_v(v) (tag_value_t)(v)
#define httptag_user_agent_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_VARY(x) HTTPTAG(vary, x)
SOFIAPUBVAR tag_typedef_t httptag_vary;
#define HTTPTAG_VARY_STR(s) HTTPTAG_STR(vary, s)
SOFIAPUBVAR tag_typedef_t httptag_vary_str;
#define HTTPTAG_VARY_REF(x) HTTPTAG_REF(vary, x)
SOFIAPUBVAR tag_typedef_t httptag_vary_ref;
#define HTTPTAG_VARY_STR_REF(x) HTTPTAG_STR_REF(vary, x)
SOFIAPUBVAR tag_typedef_t httptag_vary_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_vary_v(http_vary_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_vary_vr(http_vary_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_vary_v(v) (tag_value_t)(v)
#define httptag_vary_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_VIA(x) HTTPTAG(via, x)
SOFIAPUBVAR tag_typedef_t httptag_via;
#define HTTPTAG_VIA_STR(s) HTTPTAG_STR(via, s)
SOFIAPUBVAR tag_typedef_t httptag_via_str;
#define HTTPTAG_VIA_REF(x) HTTPTAG_REF(via, x)
SOFIAPUBVAR tag_typedef_t httptag_via_ref;
#define HTTPTAG_VIA_STR_REF(x) HTTPTAG_STR_REF(via, x)
SOFIAPUBVAR tag_typedef_t httptag_via_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_via_v(http_via_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_via_vr(http_via_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_via_v(v) (tag_value_t)(v)
#define httptag_via_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_WARNING(x) HTTPTAG(warning, x)
SOFIAPUBVAR tag_typedef_t httptag_warning;
#define HTTPTAG_WARNING_STR(s) HTTPTAG_STR(warning, s)
SOFIAPUBVAR tag_typedef_t httptag_warning_str;
#define HTTPTAG_WARNING_REF(x) HTTPTAG_REF(warning, x)
SOFIAPUBVAR tag_typedef_t httptag_warning_ref;
#define HTTPTAG_WARNING_STR_REF(x) HTTPTAG_STR_REF(warning, x)
SOFIAPUBVAR tag_typedef_t httptag_warning_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_warning_v(http_warning_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_warning_vr(http_warning_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_warning_v(v) (tag_value_t)(v)
#define httptag_warning_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_WWW_AUTHENTICATE(x) HTTPTAG(www_authenticate, x)
SOFIAPUBVAR tag_typedef_t httptag_www_authenticate;
#define HTTPTAG_WWW_AUTHENTICATE_STR(s) HTTPTAG_STR(www_authenticate, s)
SOFIAPUBVAR tag_typedef_t httptag_www_authenticate_str;
#define HTTPTAG_WWW_AUTHENTICATE_REF(x) HTTPTAG_REF(www_authenticate, x)
SOFIAPUBVAR tag_typedef_t httptag_www_authenticate_ref;
#define HTTPTAG_WWW_AUTHENTICATE_STR_REF(x) HTTPTAG_STR_REF(www_authenticate, x)
SOFIAPUBVAR tag_typedef_t httptag_www_authenticate_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_www_authenticate_v(http_www_authenticate_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_www_authenticate_vr(http_www_authenticate_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_www_authenticate_v(v) (tag_value_t)(v)
#define httptag_www_authenticate_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_PROXY_CONNECTION(x) HTTPTAG(proxy_connection, x)
SOFIAPUBVAR tag_typedef_t httptag_proxy_connection;
#define HTTPTAG_PROXY_CONNECTION_STR(s) HTTPTAG_STR(proxy_connection, s)
SOFIAPUBVAR tag_typedef_t httptag_proxy_connection_str;
#define HTTPTAG_PROXY_CONNECTION_REF(x) HTTPTAG_REF(proxy_connection, x)
SOFIAPUBVAR tag_typedef_t httptag_proxy_connection_ref;
#define HTTPTAG_PROXY_CONNECTION_STR_REF(x) HTTPTAG_STR_REF(proxy_connection, x)
SOFIAPUBVAR tag_typedef_t httptag_proxy_connection_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_proxy_connection_v(http_proxy_connection_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_proxy_connection_vr(http_proxy_connection_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_proxy_connection_v(v) (tag_value_t)(v)
#define httptag_proxy_connection_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_SET_COOKIE(x) HTTPTAG(set_cookie, x)
SOFIAPUBVAR tag_typedef_t httptag_set_cookie;
#define HTTPTAG_SET_COOKIE_STR(s) HTTPTAG_STR(set_cookie, s)
SOFIAPUBVAR tag_typedef_t httptag_set_cookie_str;
#define HTTPTAG_SET_COOKIE_REF(x) HTTPTAG_REF(set_cookie, x)
SOFIAPUBVAR tag_typedef_t httptag_set_cookie_ref;
#define HTTPTAG_SET_COOKIE_STR_REF(x) HTTPTAG_STR_REF(set_cookie, x)
SOFIAPUBVAR tag_typedef_t httptag_set_cookie_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_set_cookie_v(http_set_cookie_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_set_cookie_vr(http_set_cookie_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_set_cookie_v(v) (tag_value_t)(v)
#define httptag_set_cookie_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_COOKIE(x) HTTPTAG(cookie, x)
SOFIAPUBVAR tag_typedef_t httptag_cookie;
#define HTTPTAG_COOKIE_STR(s) HTTPTAG_STR(cookie, s)
SOFIAPUBVAR tag_typedef_t httptag_cookie_str;
#define HTTPTAG_COOKIE_REF(x) HTTPTAG_REF(cookie, x)
SOFIAPUBVAR tag_typedef_t httptag_cookie_ref;
#define HTTPTAG_COOKIE_STR_REF(x) HTTPTAG_STR_REF(cookie, x)
SOFIAPUBVAR tag_typedef_t httptag_cookie_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_cookie_v(http_cookie_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_cookie_vr(http_cookie_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_cookie_v(v) (tag_value_t)(v)
#define httptag_cookie_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_MIME_VERSION(x) HTTPTAG(mime_version, x)
SOFIAPUBVAR tag_typedef_t httptag_mime_version;
#define HTTPTAG_MIME_VERSION_STR(s) HTTPTAG_STR(mime_version, s)
SOFIAPUBVAR tag_typedef_t httptag_mime_version_str;
#define HTTPTAG_MIME_VERSION_REF(x) HTTPTAG_REF(mime_version, x)
SOFIAPUBVAR tag_typedef_t httptag_mime_version_ref;
#define HTTPTAG_MIME_VERSION_STR_REF(x) HTTPTAG_STR_REF(mime_version, x)
SOFIAPUBVAR tag_typedef_t httptag_mime_version_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_mime_version_v(http_mime_version_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_mime_version_vr(http_mime_version_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_mime_version_v(v) (tag_value_t)(v)
#define httptag_mime_version_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_CONTENT_ENCODING(x) HTTPTAG(content_encoding, x)
SOFIAPUBVAR tag_typedef_t httptag_content_encoding;
#define HTTPTAG_CONTENT_ENCODING_STR(s) HTTPTAG_STR(content_encoding, s)
SOFIAPUBVAR tag_typedef_t httptag_content_encoding_str;
#define HTTPTAG_CONTENT_ENCODING_REF(x) HTTPTAG_REF(content_encoding, x)
SOFIAPUBVAR tag_typedef_t httptag_content_encoding_ref;
#define HTTPTAG_CONTENT_ENCODING_STR_REF(x) HTTPTAG_STR_REF(content_encoding, x)
SOFIAPUBVAR tag_typedef_t httptag_content_encoding_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_content_encoding_v(http_content_encoding_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_content_encoding_vr(http_content_encoding_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_content_encoding_v(v) (tag_value_t)(v)
#define httptag_content_encoding_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_CONTENT_LANGUAGE(x) HTTPTAG(content_language, x)
SOFIAPUBVAR tag_typedef_t httptag_content_language;
#define HTTPTAG_CONTENT_LANGUAGE_STR(s) HTTPTAG_STR(content_language, s)
SOFIAPUBVAR tag_typedef_t httptag_content_language_str;
#define HTTPTAG_CONTENT_LANGUAGE_REF(x) HTTPTAG_REF(content_language, x)
SOFIAPUBVAR tag_typedef_t httptag_content_language_ref;
#define HTTPTAG_CONTENT_LANGUAGE_STR_REF(x) HTTPTAG_STR_REF(content_language, x)
SOFIAPUBVAR tag_typedef_t httptag_content_language_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_content_language_v(http_content_language_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_content_language_vr(http_content_language_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_content_language_v(v) (tag_value_t)(v)
#define httptag_content_language_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_CONTENT_LENGTH(x) HTTPTAG(content_length, x)
SOFIAPUBVAR tag_typedef_t httptag_content_length;
#define HTTPTAG_CONTENT_LENGTH_STR(s) HTTPTAG_STR(content_length, s)
SOFIAPUBVAR tag_typedef_t httptag_content_length_str;
#define HTTPTAG_CONTENT_LENGTH_REF(x) HTTPTAG_REF(content_length, x)
SOFIAPUBVAR tag_typedef_t httptag_content_length_ref;
#define HTTPTAG_CONTENT_LENGTH_STR_REF(x) HTTPTAG_STR_REF(content_length, x)
SOFIAPUBVAR tag_typedef_t httptag_content_length_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_content_length_v(http_content_length_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_content_length_vr(http_content_length_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_content_length_v(v) (tag_value_t)(v)
#define httptag_content_length_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_CONTENT_LOCATION(x) HTTPTAG(content_location, x)
SOFIAPUBVAR tag_typedef_t httptag_content_location;
#define HTTPTAG_CONTENT_LOCATION_STR(s) HTTPTAG_STR(content_location, s)
SOFIAPUBVAR tag_typedef_t httptag_content_location_str;
#define HTTPTAG_CONTENT_LOCATION_REF(x) HTTPTAG_REF(content_location, x)
SOFIAPUBVAR tag_typedef_t httptag_content_location_ref;
#define HTTPTAG_CONTENT_LOCATION_STR_REF(x) HTTPTAG_STR_REF(content_location, x)
SOFIAPUBVAR tag_typedef_t httptag_content_location_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_content_location_v(http_content_location_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_content_location_vr(http_content_location_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_content_location_v(v) (tag_value_t)(v)
#define httptag_content_location_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_CONTENT_MD5(x) HTTPTAG(content_md5, x)
SOFIAPUBVAR tag_typedef_t httptag_content_md5;
#define HTTPTAG_CONTENT_MD5_STR(s) HTTPTAG_STR(content_md5, s)
SOFIAPUBVAR tag_typedef_t httptag_content_md5_str;
#define HTTPTAG_CONTENT_MD5_REF(x) HTTPTAG_REF(content_md5, x)
SOFIAPUBVAR tag_typedef_t httptag_content_md5_ref;
#define HTTPTAG_CONTENT_MD5_STR_REF(x) HTTPTAG_STR_REF(content_md5, x)
SOFIAPUBVAR tag_typedef_t httptag_content_md5_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_content_md5_v(http_content_md5_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_content_md5_vr(http_content_md5_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_content_md5_v(v) (tag_value_t)(v)
#define httptag_content_md5_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_CONTENT_RANGE(x) HTTPTAG(content_range, x)
SOFIAPUBVAR tag_typedef_t httptag_content_range;
#define HTTPTAG_CONTENT_RANGE_STR(s) HTTPTAG_STR(content_range, s)
SOFIAPUBVAR tag_typedef_t httptag_content_range_str;
#define HTTPTAG_CONTENT_RANGE_REF(x) HTTPTAG_REF(content_range, x)
SOFIAPUBVAR tag_typedef_t httptag_content_range_ref;
#define HTTPTAG_CONTENT_RANGE_STR_REF(x) HTTPTAG_STR_REF(content_range, x)
SOFIAPUBVAR tag_typedef_t httptag_content_range_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_content_range_v(http_content_range_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_content_range_vr(http_content_range_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_content_range_v(v) (tag_value_t)(v)
#define httptag_content_range_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_CONTENT_TYPE(x) HTTPTAG(content_type, x)
SOFIAPUBVAR tag_typedef_t httptag_content_type;
#define HTTPTAG_CONTENT_TYPE_STR(s) HTTPTAG_STR(content_type, s)
SOFIAPUBVAR tag_typedef_t httptag_content_type_str;
#define HTTPTAG_CONTENT_TYPE_REF(x) HTTPTAG_REF(content_type, x)
SOFIAPUBVAR tag_typedef_t httptag_content_type_ref;
#define HTTPTAG_CONTENT_TYPE_STR_REF(x) HTTPTAG_STR_REF(content_type, x)
SOFIAPUBVAR tag_typedef_t httptag_content_type_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_content_type_v(http_content_type_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_content_type_vr(http_content_type_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_content_type_v(v) (tag_value_t)(v)
#define httptag_content_type_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_UNKNOWN(x) HTTPTAG(unknown, x)
SOFIAPUBVAR tag_typedef_t httptag_unknown;
#define HTTPTAG_UNKNOWN_STR(s) HTTPTAG_STR(unknown, s)
SOFIAPUBVAR tag_typedef_t httptag_unknown_str;
#define HTTPTAG_UNKNOWN_REF(x) HTTPTAG_REF(unknown, x)
SOFIAPUBVAR tag_typedef_t httptag_unknown_ref;
#define HTTPTAG_UNKNOWN_STR_REF(x) HTTPTAG_STR_REF(unknown, x)
SOFIAPUBVAR tag_typedef_t httptag_unknown_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_unknown_v(http_unknown_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_unknown_vr(http_unknown_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_unknown_v(v) (tag_value_t)(v)
#define httptag_unknown_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_ERROR(x) HTTPTAG(error, x)
SOFIAPUBVAR tag_typedef_t httptag_error;
#define HTTPTAG_ERROR_STR(s) HTTPTAG_STR(error, s)
SOFIAPUBVAR tag_typedef_t httptag_error_str;
#define HTTPTAG_ERROR_REF(x) HTTPTAG_REF(error, x)
SOFIAPUBVAR tag_typedef_t httptag_error_ref;
#define HTTPTAG_ERROR_STR_REF(x) HTTPTAG_STR_REF(error, x)
SOFIAPUBVAR tag_typedef_t httptag_error_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_error_v(http_error_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_error_vr(http_error_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_error_v(v) (tag_value_t)(v)
#define httptag_error_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_SEPARATOR(x) HTTPTAG(separator, x)
SOFIAPUBVAR tag_typedef_t httptag_separator;
#define HTTPTAG_SEPARATOR_STR(s) HTTPTAG_STR(separator, s)
SOFIAPUBVAR tag_typedef_t httptag_separator_str;
#define HTTPTAG_SEPARATOR_REF(x) HTTPTAG_REF(separator, x)
SOFIAPUBVAR tag_typedef_t httptag_separator_ref;
#define HTTPTAG_SEPARATOR_STR_REF(x) HTTPTAG_STR_REF(separator, x)
SOFIAPUBVAR tag_typedef_t httptag_separator_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_separator_v(http_separator_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_separator_vr(http_separator_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_separator_v(v) (tag_value_t)(v)
#define httptag_separator_vr(vp) (tag_value_t)(vp)
#endif
#define HTTPTAG_PAYLOAD(x) HTTPTAG(payload, x)
SOFIAPUBVAR tag_typedef_t httptag_payload;
#define HTTPTAG_PAYLOAD_STR(s) HTTPTAG_STR(payload, s)
SOFIAPUBVAR tag_typedef_t httptag_payload_str;
#define HTTPTAG_PAYLOAD_REF(x) HTTPTAG_REF(payload, x)
SOFIAPUBVAR tag_typedef_t httptag_payload_ref;
#define HTTPTAG_PAYLOAD_STR_REF(x) HTTPTAG_STR_REF(payload, x)
SOFIAPUBVAR tag_typedef_t httptag_payload_str_ref;
#if SU_INLINE_TAG_CAST
su_inline tag_value_t
httptag_payload_v(http_payload_t const *v)
{ return (tag_value_t)v; }
su_inline tag_value_t
httptag_payload_vr(http_payload_t const **vp)
{ return (tag_value_t)vp; }
#else
#define httptag_payload_v(v) (tag_value_t)(v)
#define httptag_payload_vr(vp) (tag_value_t)(vp)
#endif
SOFIA_END_DECLS
#endif /* !defined(HTTP_TAG_H) */
http_content_range_t
struct http_content_range_s http_content_range_t
@HTTP_HEADER http_content_encoding Content-Encoding header.
Definition http.h:121
http_cookie_t
struct http_cookie_s http_cookie_t
@HTTP_HEADER http_cookie Cookie extension header.
Definition http.h:158
http_date_t
struct http_date_s http_date_t
@HTTP_HEADER http_content_type Content-Type header.
Definition http.h:123
http_expires_t
http_date_t http_expires_t
@HTTP_HEADER http_expires Expires header.
Definition http.h:126
http_if_modified_since_t
http_date_t http_if_modified_since_t
@HTTP_HEADER http_if_modified_since If-Modified-Since header.
Definition http.h:130
http_if_unmodified_since_t
http_date_t http_if_unmodified_since_t
@HTTP_HEADER http_if_unmodified_since If-Unmodified-Since header.
Definition http.h:133
http_last_modified_t
http_date_t http_last_modified_t
@HTTP_HEADER http_last_modified Last-Modified header.
Definition http.h:134
http_location_t
struct http_location_s http_location_t
@HTTP_HEADER http_location Location Header
Definition http.h:135
http_range_t
struct http_range_s http_range_t
@HTTP_HEADER http_range Range header.
Definition http.h:141
http_referer_t
struct http_location_s http_referer_t
@HTTP_HEADER http_referer Referer header.
Definition http.h:142
http_retry_after_t
struct http_retry_after_s http_retry_after_t
@HTTP_HEADER http_mime_version MIME-Version header.
Definition http.h:143
http_set_cookie_t
struct http_set_cookie_s http_set_cookie_t
@HTTP_HEADER http_set_cookie Set-Cookie extension header.
Definition http.h:157
http_te_t
struct http_te_s http_te_t
@HTTP_HEADER http_te TE header.
Definition http.h:145
http.h
HTTP message, methods, headers.
http_error_t
msg_error_t http_error_t
Erroneous header.
Definition http.h:161
http_unknown_t
msg_generic_t http_unknown_t
Unknown header.
Definition http.h:163
http_payload_t
msg_payload_t http_payload_t
Entity-body.
Definition http.h:167
http_separator_t
msg_separator_t http_separator_t
Separator line between headers and message contents.
Definition http.h:165
http_t
struct http_s http_t
HTTP message object.
Definition http.h:98
http_header_t
union http_header_u http_header_t
Any HTTP header - union of all possible HTTP headers.
Definition http.h:101
httptag_http
tag_typedef_t httptag_http
Tag for http_t.
Definition http_tag.c:51
httptag_header
tag_typedef_t httptag_header
Tag for header string.
Definition http_tag.c:53
httptag_header_str
tag_typedef_t httptag_header_str
Tag for header string.
Definition http_tag.c:55
SOFIAPUBVAR
#define SOFIAPUBVAR
su_inline
#define su_inline
su_tag.h
tag_typedef_t
struct tag_type_s const tag_typedef_t[1]
tag_value_t
intptr_t tag_value_t
tag_class_t
struct tag_class_s const tag_class_t
su_tag_class.h

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