134 lines
5.5 KiB
C
134 lines
5.5 KiB
C
/****************************************************************************
|
|
_ _
|
|
| | | |
|
|
_ | | ___ _ _| | _ ____ ____ ____ ___
|
|
/ || |/ _ \| | | | || \ / _ | _ \ / _ |/ _ \
|
|
( (_| | |_| | |_| | |_) | ( | | | | ( ( | | |_| |
|
|
\____|\___/ \____|____/ \_||_|_| |_|\_|| |\___/
|
|
(_____|
|
|
|
|
Copyright (C) 2009 xxxyyyzzz <imsframework(at)gmail.com>
|
|
|
|
This file is part of Open Source Doubango IMS Client Framework project.
|
|
|
|
DOUBANGO is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
DOUBANGO 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 General Public License
|
|
along with DOUBANGO.
|
|
****************************************************************************/
|
|
#ifndef _TINYXCAP_XDM_RLIST_H_
|
|
#define _TINYXCAP_XDM_RLIST_H_
|
|
|
|
#include "tinyxcap_config.h"
|
|
#include "xdm_xml.h"
|
|
|
|
/* urn:ietf:params:xml:ns:resource-lists */
|
|
|
|
#define XDM_RLIST_ENTRY_CREATE(entry) XDM_XXX_CREATE(entry, rlist_entry)
|
|
#define XDM_RLIST_ENTRY_SAFE_FREE(entry) XDM_XXX_SAFE_FREE(entry, rlist_entry)
|
|
|
|
#define XDM_RLIST_LIST_CREATE(rlist_list) XDM_XXX_CREATE(rlist_list, rlist_list)
|
|
#define XDM_RLIST_LIST_SAFE_FREE(rlist_list) XDM_XXX_SAFE_FREE(rlist_list, rlist_list)
|
|
|
|
#define XDM_RLIST_LIST2_CREATE(list2) XDM_XXX_CREATE(list2, rlist_list2)
|
|
#define XDM_RLIST_LIST2_SAFE_FREE(list2) XDM_XXX_SAFE_FREE(list2, rlist_list2)
|
|
|
|
#define XDM_RLIST_EXTERNAL_CREATE(external) XDM_XXX_CREATE(external, rlist_external)
|
|
#define XDM_RLIST_EXTERNAL_SAFE_FREE(external) XDM_XXX_SAFE_FREE(external, rlist_external)
|
|
|
|
/* entry */
|
|
typedef struct xdm_rlist_entry_s
|
|
{
|
|
char* uri;
|
|
char* display_name;
|
|
char* last_modified;
|
|
char* etag;
|
|
char* list;
|
|
}
|
|
xdm_rlist_entry_t;
|
|
typedef xdm_list_t xdm_rlist_entry_L_t; /* contains xdm_rlist_entry_t elements */
|
|
|
|
/* list */
|
|
typedef struct xdm_rlist_list_s
|
|
{
|
|
char* display_name;
|
|
char* name;
|
|
}
|
|
xdm_rlist_list_t;
|
|
typedef xdm_list_t xdm_rlist_list_L_t; /* contains 'xdm_rlist_list_t' elements*/
|
|
typedef xdm_list_t xdm_rlist_listx_L_t; /* contains 'xdm_rlist_list_t' or 'xdm_rlist_list2_t' elements*/
|
|
|
|
/* external */
|
|
typedef struct xdm_rlist_external_s
|
|
{
|
|
char* anchor;
|
|
char* list;
|
|
}
|
|
xdm_rlist_external_t;
|
|
typedef xdm_list_t xdm_rlist_external_L_t; /* contains 'xdm_rlist_external_t' elements*/
|
|
|
|
/* list2 */
|
|
typedef struct xdm_rlist_list2_s
|
|
{
|
|
char* display_name;
|
|
char* name;
|
|
xdm_rlist_entry_L_t* entries;
|
|
xdm_rlist_external_L_t* externals;
|
|
}
|
|
xdm_rlist_list2_t;
|
|
typedef xdm_list_t xdm_rlist_list2_L_t; /* contains 'xdm_rlist_list2_t' elements*/
|
|
|
|
|
|
/* resource-lists */
|
|
typedef struct xdm_rlist_s
|
|
{
|
|
xmlDocPtr docPtr;
|
|
}
|
|
xdm_rlist_t;
|
|
|
|
void xdm_rlist_list_init(xdm_rlist_list_t *list);
|
|
void xdm_rlist_list_set(xdm_rlist_list_t *list, const char* name, const char* display_name);
|
|
void xdm_rlist_list_free(void **list);
|
|
|
|
void xdm_rlist_list2_init(xdm_rlist_list2_t *list2);
|
|
void xdm_rlist_list2_set(xdm_rlist_list2_t *list2, const char* name, const char* display_name);
|
|
void xdm_rlist_list2_add_external(xdm_rlist_list2_t *list2, const char* anchor);
|
|
void xdm_rlist_list2_add_entry(xdm_rlist_list2_t *list2, const char* uri, const char* display_name);
|
|
void xdm_rlist_list2_free(void **list2);
|
|
|
|
void xdm_rlist_entry_init(xdm_rlist_entry_t *entry);
|
|
void xdm_rlist_entry_set(xdm_rlist_entry_t *entry, const char* uri, const char* display_name);
|
|
void xdm_rlist_entry_free(void **entry);
|
|
|
|
void xdm_rlist_external_init(xdm_rlist_external_t *external);
|
|
void xdm_rlist_external_set(xdm_rlist_external_t *external, const char* anchor);
|
|
void xdm_rlist_external_free(void **external);
|
|
|
|
xdm_rlist_entry_t* xdm_rlist_entry_from_xml(const xmlNodePtr node, const char* lname);
|
|
xdm_rlist_external_t* xdm_rlist_external_from_xml(const xmlNodePtr node, const char* lname);
|
|
xdm_rlist_list_t* xdm_rlist_list_from_xml(const xmlNodePtr node);
|
|
xdm_rlist_list2_t* xdm_rlist_list2_from_xml(const xmlNodePtr node);
|
|
|
|
TINYXCAP_API xdm_rlist_t* xdm_rlist_create(const char* buffer, size_t size);
|
|
TINYXCAP_API xdm_rlist_listx_L_t* xdm_rlist_get_all_lists(const xdm_rlist_t* rlist, int type2);
|
|
TINYXCAP_API xdm_rlist_entry_L_t* xdm_rlist_get_entries_by_list(const xdm_rlist_t* rlist, const char* lname);
|
|
TINYXCAP_API xdm_rlist_external_L_t* xdm_rlist_get_externals_by_list(const xdm_rlist_t* rlist, const char* lname);
|
|
TINYXCAP_API char* xdm_rlist_entry_serialize(const xdm_rlist_entry_t *entry);
|
|
TINYXCAP_API char* xdm_rlist_entry_serialize2(const char* uri, const char* displayname);
|
|
TINYXCAP_API char* xdm_rlist_external_serialize(const xdm_rlist_external_t *external);
|
|
TINYXCAP_API char* xdm_rlist_list_serialize(const xdm_rlist_list_t *list);
|
|
TINYXCAP_API char* xdm_rlist_list_serialize2(const char* name, const char* displayname);
|
|
TINYXCAP_API char* xdm_rlist_list2_serialize(const xdm_rlist_list2_t *list2);
|
|
TINYXCAP_API char* xdm_rlist_rlist2_serialize(const xdm_list_t *rlist2);
|
|
TINYXCAP_API char* xdm_rlist_add_xml_header(const char* xml_content);
|
|
TINYXCAP_API void xdm_rlist_free(xdm_rlist_t **rlist);
|
|
|
|
#endif /* _TINYXCAP_XDM_RLIST_H_ */ |