15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Summary: library of generic URI related routines
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Description: library of generic URI related routines
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *              Implements RFC 2396
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copy: See Copyright for the status of this software.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Author: Daniel Veillard
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef __XML_URI_H__
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define __XML_URI_H__
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/xmlversion.h>
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/tree.h>
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xmlURI:
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * A parsed URI reference. This is a struct containing the various fields
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * as described in RFC 2396 but separated for further processing.
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Note: query is a deprecated field which is incorrectly unescaped.
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * query_raw takes precedence over query if the former is set.
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * See: http://mail.gnome.org/archives/xml/2007-April/thread.html#00127
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xmlURI xmlURI;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xmlURI *xmlURIPtr;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xmlURI {
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    char *scheme;	/* the URI scheme */
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    char *opaque;	/* opaque part */
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    char *authority;	/* the authority part */
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    char *server;	/* the server part */
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    char *user;		/* the user part */
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int port;		/* the port number */
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    char *path;		/* the path string */
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    char *query;	/* the query string (deprecated - use with caution) */
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    char *fragment;	/* the fragment identifier */
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int  cleanup;	/* parsing potentially unclean URI */
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    char *query_raw;	/* the query string (as it appears in the URI) */
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This function is in tree.h:
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xmlChar *	xmlNodeGetBase	(xmlDocPtr doc,
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *                               xmlNodePtr cur);
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlURIPtr XMLCALL
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlCreateURI		(void);
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlChar * XMLCALL
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlBuildURI		(const xmlChar *URI,
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const xmlChar *base);
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlChar * XMLCALL
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlBuildRelativeURI	(const xmlChar *URI,
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const xmlChar *base);
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlURIPtr XMLCALL
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlParseURI		(const char *str);
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlURIPtr XMLCALL
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlParseURIRaw		(const char *str,
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int raw);
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN int XMLCALL
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlParseURIReference	(xmlURIPtr uri,
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *str);
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlChar * XMLCALL
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlSaveUri		(xmlURIPtr uri);
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN void XMLCALL
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlPrintURI		(FILE *stream,
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 xmlURIPtr uri);
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlChar * XMLCALL
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlURIEscapeStr         (const xmlChar *str,
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const xmlChar *list);
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN char * XMLCALL
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlURIUnescapeString	(const char *str,
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int len,
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 char *target);
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN int XMLCALL
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlNormalizeURIPath	(char *path);
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlChar * XMLCALL
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlURIEscape		(const xmlChar *str);
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN void XMLCALL
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlFreeURI		(xmlURIPtr uri);
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlChar* XMLCALL
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlCanonicPath		(const xmlChar *path);
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlChar* XMLCALL
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlPathToURI		(const xmlChar *path);
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* __XML_URI_H__ */
95