| 
									
										
										
										
											2000-10-27 02:46:04 +00:00
										 |  |  | /* gmarkup.h - Simple XML-like string parser/writer
 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *  Copyright 2000 Red Hat, Inc. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * GLib 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 of the | 
					
						
							|  |  |  |  * License, or (at your option) any later version. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * GLib 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 GLib; see the file COPYING.LIB.  If not, | 
					
						
							|  |  |  |  * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 
					
						
							|  |  |  |  *   Boston, MA 02111-1307, USA. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef __G_MARKUP_H__
 | 
					
						
							|  |  |  | #define __G_MARKUP_H__
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-09-12 00:17:02 +00:00
										 |  |  | #include <stdarg.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-06-26 16:01:21 +00:00
										 |  |  | #include <glib/gerror.h>
 | 
					
						
							| 
									
										
										
										
											2007-11-08 12:23:55 +00:00
										 |  |  | #include <glib/gslist.h>
 | 
					
						
							| 
									
										
										
										
											2000-10-27 02:46:04 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-03-09 21:23:33 +00:00
										 |  |  | G_BEGIN_DECLS | 
					
						
							| 
									
										
										
										
											2000-10-27 02:46:04 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | typedef enum | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   G_MARKUP_ERROR_BAD_UTF8, | 
					
						
							|  |  |  |   G_MARKUP_ERROR_EMPTY, | 
					
						
							|  |  |  |   G_MARKUP_ERROR_PARSE, | 
					
						
							| 
									
										
										
										
											2007-11-29 02:58:24 +00:00
										 |  |  |   /* The following are primarily intended for specific GMarkupParser
 | 
					
						
							| 
									
										
										
										
											2000-10-27 02:46:04 +00:00
										 |  |  |    * implementations to set. | 
					
						
							|  |  |  |    */ | 
					
						
							|  |  |  |   G_MARKUP_ERROR_UNKNOWN_ELEMENT, | 
					
						
							|  |  |  |   G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE, | 
					
						
							| 
									
										
										
										
											2007-11-27 01:37:33 +00:00
										 |  |  |   G_MARKUP_ERROR_INVALID_CONTENT, | 
					
						
							|  |  |  |   G_MARKUP_ERROR_MISSING_ATTRIBUTE | 
					
						
							| 
									
										
										
										
											2000-11-05 16:38:16 +00:00
										 |  |  | } GMarkupError; | 
					
						
							| 
									
										
										
										
											2000-10-27 02:46:04 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | #define G_MARKUP_ERROR g_markup_error_quark ()
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-02-11 16:28:59 +00:00
										 |  |  | GQuark g_markup_error_quark (void); | 
					
						
							| 
									
										
										
										
											2000-10-27 02:46:04 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | typedef enum | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2006-05-29 00:08:30 +00:00
										 |  |  |   G_MARKUP_DO_NOT_USE_THIS_UNSUPPORTED_FLAG = 1 << 0, | 
					
						
							| 
									
										
										
										
											2007-11-16 03:36:51 +00:00
										 |  |  |   G_MARKUP_TREAT_CDATA_AS_TEXT              = 1 << 1, | 
					
						
							|  |  |  |   G_MARKUP_PREFIX_ERROR_POSITION            = 1 << 2 | 
					
						
							| 
									
										
										
										
											2000-10-27 02:46:04 +00:00
										 |  |  | } GMarkupParseFlags; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | typedef struct _GMarkupParseContext GMarkupParseContext; | 
					
						
							|  |  |  | typedef struct _GMarkupParser GMarkupParser; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct _GMarkupParser | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   /* Called for open tags <foo bar="baz"> */ | 
					
						
							|  |  |  |   void (*start_element)  (GMarkupParseContext *context, | 
					
						
							|  |  |  |                           const gchar         *element_name, | 
					
						
							|  |  |  |                           const gchar        **attribute_names, | 
					
						
							|  |  |  |                           const gchar        **attribute_values, | 
					
						
							|  |  |  |                           gpointer             user_data, | 
					
						
							|  |  |  |                           GError             **error); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* Called for close tags </foo> */ | 
					
						
							|  |  |  |   void (*end_element)    (GMarkupParseContext *context, | 
					
						
							|  |  |  |                           const gchar         *element_name, | 
					
						
							|  |  |  |                           gpointer             user_data, | 
					
						
							|  |  |  |                           GError             **error); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* Called for character data */ | 
					
						
							|  |  |  |   /* text is not nul-terminated */ | 
					
						
							|  |  |  |   void (*text)           (GMarkupParseContext *context, | 
					
						
							|  |  |  |                           const gchar         *text, | 
					
						
							| 
									
										
											  
											
												Changes for 64-bit cleanliness, loosely based on patch from Mark Murnane.
Wed Jun 20 12:00:54 2001  Owen Taylor  <otaylor@redhat.com>
        Changes for 64-bit cleanliness, loosely based on patch
	from Mark Murnane.
	* gconvert.c (g_convert/g_convert_with_fallback): Remove
	workarounds for since-fixed GNU libc bugs. Minor
	doc fix.
	* gconvert.[ch]: Change gint to gsize/gssize as
	appropriate.
	* gconvert.c (g_locale/filename_to/from_utf8): Fix incorrect
	computation of bytes_read / bytes_written.
	* gfileutils.[ch] (g_file_get_contents): Make length
	out parameter 'gsize *len'.
	* ghook.c (g_hook_compare_ids): Don't compare a
	and b as 'a - b'.
	* gmacros.h (GSIZE_TO_POINTER): Add GPOINTER_TO_SIZE,
	GSIZE_TO_POINTER.
	* gmain.c (g_timeout_prepare): Rewrite to avoid
	overflows. (Fixes bug when system clock skews
	backwards more than 24 days.)
	* gmarkup.[ch]: Make lengths passed to callbacks
	gsize, length for g_markup_parse-context_parse(),
	g_markup_escape_text() gssize.
	* gmessages.[ch] (g_printf_string_upper_bound): Change
	return value to gsize.
	* gmessages.c (printf_string_upper_bound): Remove
	a ridiculous use of 'inline' on a 300 line function.
	* gstring.[ch]: Represent size of string as a gsize,
	not gint. Make parameters to functions take gsize,
	or gssize where -1 is allowed.
	* gstring.c (g_string_erase): Make
	g_string_erase (string, pos, -1) a synonym for
	g_string_truncate for consistency with other G*
	APIs.
	* gstrfuncs.[ch]: Make all functions taking a string
	length, take a gsize, or gssize if -1 is allowed.
	(g_strstr_len, g_strrstr_len). Also fix some boundary
	conditions in g_str[r]str[_len].
	* gutf8.c tests/unicode-encoding.c: Make parameters that
	are byte lengths gsize, gssize as appropriate. Make
	character offsets, other counts, glong.
	* gasyncqueue.c gcompletion.c
          timeloop.c timeloop-basic.c gutils.c gspawn.c.
	Small 64 bit cleanliness fixups.
	* glist.c (g_list_sort2, g_list_sort_real): Fix functions
	that should have been static.
	* gdate.c (g_date_fill_parse_tokens): Fix extra
	declaration that was shadowing another.
	* tests/module-test.c: Include string.h
Mon Jun 18 15:43:29 2001  Owen Taylor  <otaylor@redhat.com>
	* gutf8.c (g_get_charset): Make argument
	G_CONST_RETURN char **.
											
										 
											2001-06-23 13:55:09 +00:00
										 |  |  |                           gsize                text_len,   | 
					
						
							| 
									
										
										
										
											2000-10-27 02:46:04 +00:00
										 |  |  |                           gpointer             user_data, | 
					
						
							|  |  |  |                           GError             **error); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* Called for strings that should be re-saved verbatim in this same
 | 
					
						
							|  |  |  |    * position, but are not otherwise interpretable.  At the moment | 
					
						
							|  |  |  |    * this includes comments and processing instructions. | 
					
						
							|  |  |  |    */ | 
					
						
							|  |  |  |   /* text is not nul-terminated. */ | 
					
						
							|  |  |  |   void (*passthrough)    (GMarkupParseContext *context, | 
					
						
							|  |  |  |                           const gchar         *passthrough_text, | 
					
						
							| 
									
										
											  
											
												Changes for 64-bit cleanliness, loosely based on patch from Mark Murnane.
Wed Jun 20 12:00:54 2001  Owen Taylor  <otaylor@redhat.com>
        Changes for 64-bit cleanliness, loosely based on patch
	from Mark Murnane.
	* gconvert.c (g_convert/g_convert_with_fallback): Remove
	workarounds for since-fixed GNU libc bugs. Minor
	doc fix.
	* gconvert.[ch]: Change gint to gsize/gssize as
	appropriate.
	* gconvert.c (g_locale/filename_to/from_utf8): Fix incorrect
	computation of bytes_read / bytes_written.
	* gfileutils.[ch] (g_file_get_contents): Make length
	out parameter 'gsize *len'.
	* ghook.c (g_hook_compare_ids): Don't compare a
	and b as 'a - b'.
	* gmacros.h (GSIZE_TO_POINTER): Add GPOINTER_TO_SIZE,
	GSIZE_TO_POINTER.
	* gmain.c (g_timeout_prepare): Rewrite to avoid
	overflows. (Fixes bug when system clock skews
	backwards more than 24 days.)
	* gmarkup.[ch]: Make lengths passed to callbacks
	gsize, length for g_markup_parse-context_parse(),
	g_markup_escape_text() gssize.
	* gmessages.[ch] (g_printf_string_upper_bound): Change
	return value to gsize.
	* gmessages.c (printf_string_upper_bound): Remove
	a ridiculous use of 'inline' on a 300 line function.
	* gstring.[ch]: Represent size of string as a gsize,
	not gint. Make parameters to functions take gsize,
	or gssize where -1 is allowed.
	* gstring.c (g_string_erase): Make
	g_string_erase (string, pos, -1) a synonym for
	g_string_truncate for consistency with other G*
	APIs.
	* gstrfuncs.[ch]: Make all functions taking a string
	length, take a gsize, or gssize if -1 is allowed.
	(g_strstr_len, g_strrstr_len). Also fix some boundary
	conditions in g_str[r]str[_len].
	* gutf8.c tests/unicode-encoding.c: Make parameters that
	are byte lengths gsize, gssize as appropriate. Make
	character offsets, other counts, glong.
	* gasyncqueue.c gcompletion.c
          timeloop.c timeloop-basic.c gutils.c gspawn.c.
	Small 64 bit cleanliness fixups.
	* glist.c (g_list_sort2, g_list_sort_real): Fix functions
	that should have been static.
	* gdate.c (g_date_fill_parse_tokens): Fix extra
	declaration that was shadowing another.
	* tests/module-test.c: Include string.h
Mon Jun 18 15:43:29 2001  Owen Taylor  <otaylor@redhat.com>
	* gutf8.c (g_get_charset): Make argument
	G_CONST_RETURN char **.
											
										 
											2001-06-23 13:55:09 +00:00
										 |  |  |                           gsize                text_len,   | 
					
						
							| 
									
										
										
										
											2000-10-27 02:46:04 +00:00
										 |  |  |                           gpointer             user_data, | 
					
						
							|  |  |  |                           GError             **error); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* Called on error, including one set by other
 | 
					
						
							|  |  |  |    * methods in the vtable. The GError should not be freed. | 
					
						
							|  |  |  |    */ | 
					
						
							|  |  |  |   void (*error)          (GMarkupParseContext *context, | 
					
						
							|  |  |  |                           GError              *error, | 
					
						
							|  |  |  |                           gpointer             user_data); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | GMarkupParseContext *g_markup_parse_context_new   (const GMarkupParser *parser, | 
					
						
							|  |  |  |                                                    GMarkupParseFlags    flags, | 
					
						
							|  |  |  |                                                    gpointer             user_data, | 
					
						
							|  |  |  |                                                    GDestroyNotify       user_data_dnotify); | 
					
						
							|  |  |  | void                 g_markup_parse_context_free  (GMarkupParseContext *context); | 
					
						
							|  |  |  | gboolean             g_markup_parse_context_parse (GMarkupParseContext *context, | 
					
						
							|  |  |  |                                                    const gchar         *text, | 
					
						
							| 
									
										
											  
											
												Changes for 64-bit cleanliness, loosely based on patch from Mark Murnane.
Wed Jun 20 12:00:54 2001  Owen Taylor  <otaylor@redhat.com>
        Changes for 64-bit cleanliness, loosely based on patch
	from Mark Murnane.
	* gconvert.c (g_convert/g_convert_with_fallback): Remove
	workarounds for since-fixed GNU libc bugs. Minor
	doc fix.
	* gconvert.[ch]: Change gint to gsize/gssize as
	appropriate.
	* gconvert.c (g_locale/filename_to/from_utf8): Fix incorrect
	computation of bytes_read / bytes_written.
	* gfileutils.[ch] (g_file_get_contents): Make length
	out parameter 'gsize *len'.
	* ghook.c (g_hook_compare_ids): Don't compare a
	and b as 'a - b'.
	* gmacros.h (GSIZE_TO_POINTER): Add GPOINTER_TO_SIZE,
	GSIZE_TO_POINTER.
	* gmain.c (g_timeout_prepare): Rewrite to avoid
	overflows. (Fixes bug when system clock skews
	backwards more than 24 days.)
	* gmarkup.[ch]: Make lengths passed to callbacks
	gsize, length for g_markup_parse-context_parse(),
	g_markup_escape_text() gssize.
	* gmessages.[ch] (g_printf_string_upper_bound): Change
	return value to gsize.
	* gmessages.c (printf_string_upper_bound): Remove
	a ridiculous use of 'inline' on a 300 line function.
	* gstring.[ch]: Represent size of string as a gsize,
	not gint. Make parameters to functions take gsize,
	or gssize where -1 is allowed.
	* gstring.c (g_string_erase): Make
	g_string_erase (string, pos, -1) a synonym for
	g_string_truncate for consistency with other G*
	APIs.
	* gstrfuncs.[ch]: Make all functions taking a string
	length, take a gsize, or gssize if -1 is allowed.
	(g_strstr_len, g_strrstr_len). Also fix some boundary
	conditions in g_str[r]str[_len].
	* gutf8.c tests/unicode-encoding.c: Make parameters that
	are byte lengths gsize, gssize as appropriate. Make
	character offsets, other counts, glong.
	* gasyncqueue.c gcompletion.c
          timeloop.c timeloop-basic.c gutils.c gspawn.c.
	Small 64 bit cleanliness fixups.
	* glist.c (g_list_sort2, g_list_sort_real): Fix functions
	that should have been static.
	* gdate.c (g_date_fill_parse_tokens): Fix extra
	declaration that was shadowing another.
	* tests/module-test.c: Include string.h
Mon Jun 18 15:43:29 2001  Owen Taylor  <otaylor@redhat.com>
	* gutf8.c (g_get_charset): Make argument
	G_CONST_RETURN char **.
											
										 
											2001-06-23 13:55:09 +00:00
										 |  |  |                                                    gssize               text_len,   | 
					
						
							| 
									
										
										
										
											2000-10-27 02:46:04 +00:00
										 |  |  |                                                    GError             **error); | 
					
						
							|  |  |  |                                                     | 
					
						
							|  |  |  | gboolean             g_markup_parse_context_end_parse (GMarkupParseContext *context, | 
					
						
							|  |  |  |                                                        GError             **error); | 
					
						
							| 
									
										
										
										
											2002-07-15 21:33:18 +00:00
										 |  |  | G_CONST_RETURN gchar *g_markup_parse_context_get_element (GMarkupParseContext *context); | 
					
						
							| 
									
										
										
										
											2007-11-08 03:28:09 +00:00
										 |  |  | G_CONST_RETURN GSList *g_markup_parse_context_get_element_stack (GMarkupParseContext *context); | 
					
						
							| 
									
										
										
										
											2000-10-27 02:46:04 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* For user-constructed error messages, has no precise semantics */ | 
					
						
							|  |  |  | void                 g_markup_parse_context_get_position (GMarkupParseContext *context, | 
					
						
							|  |  |  |                                                           gint                *line_number, | 
					
						
							|  |  |  |                                                           gint                *char_number); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* useful when saving */ | 
					
						
							|  |  |  | gchar* g_markup_escape_text (const gchar *text, | 
					
						
							| 
									
										
											  
											
												Changes for 64-bit cleanliness, loosely based on patch from Mark Murnane.
Wed Jun 20 12:00:54 2001  Owen Taylor  <otaylor@redhat.com>
        Changes for 64-bit cleanliness, loosely based on patch
	from Mark Murnane.
	* gconvert.c (g_convert/g_convert_with_fallback): Remove
	workarounds for since-fixed GNU libc bugs. Minor
	doc fix.
	* gconvert.[ch]: Change gint to gsize/gssize as
	appropriate.
	* gconvert.c (g_locale/filename_to/from_utf8): Fix incorrect
	computation of bytes_read / bytes_written.
	* gfileutils.[ch] (g_file_get_contents): Make length
	out parameter 'gsize *len'.
	* ghook.c (g_hook_compare_ids): Don't compare a
	and b as 'a - b'.
	* gmacros.h (GSIZE_TO_POINTER): Add GPOINTER_TO_SIZE,
	GSIZE_TO_POINTER.
	* gmain.c (g_timeout_prepare): Rewrite to avoid
	overflows. (Fixes bug when system clock skews
	backwards more than 24 days.)
	* gmarkup.[ch]: Make lengths passed to callbacks
	gsize, length for g_markup_parse-context_parse(),
	g_markup_escape_text() gssize.
	* gmessages.[ch] (g_printf_string_upper_bound): Change
	return value to gsize.
	* gmessages.c (printf_string_upper_bound): Remove
	a ridiculous use of 'inline' on a 300 line function.
	* gstring.[ch]: Represent size of string as a gsize,
	not gint. Make parameters to functions take gsize,
	or gssize where -1 is allowed.
	* gstring.c (g_string_erase): Make
	g_string_erase (string, pos, -1) a synonym for
	g_string_truncate for consistency with other G*
	APIs.
	* gstrfuncs.[ch]: Make all functions taking a string
	length, take a gsize, or gssize if -1 is allowed.
	(g_strstr_len, g_strrstr_len). Also fix some boundary
	conditions in g_str[r]str[_len].
	* gutf8.c tests/unicode-encoding.c: Make parameters that
	are byte lengths gsize, gssize as appropriate. Make
	character offsets, other counts, glong.
	* gasyncqueue.c gcompletion.c
          timeloop.c timeloop-basic.c gutils.c gspawn.c.
	Small 64 bit cleanliness fixups.
	* glist.c (g_list_sort2, g_list_sort_real): Fix functions
	that should have been static.
	* gdate.c (g_date_fill_parse_tokens): Fix extra
	declaration that was shadowing another.
	* tests/module-test.c: Include string.h
Mon Jun 18 15:43:29 2001  Owen Taylor  <otaylor@redhat.com>
	* gutf8.c (g_get_charset): Make argument
	G_CONST_RETURN char **.
											
										 
											2001-06-23 13:55:09 +00:00
										 |  |  |                              gssize       length);   | 
					
						
							| 
									
										
										
										
											2000-10-27 02:46:04 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-09-12 00:17:02 +00:00
										 |  |  | gchar *g_markup_printf_escaped (const char *format, | 
					
						
							|  |  |  | 				...) G_GNUC_PRINTF (1, 2); | 
					
						
							|  |  |  | gchar *g_markup_vprintf_escaped (const char *format, | 
					
						
							|  |  |  | 				 va_list     args); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-11-27 01:37:33 +00:00
										 |  |  | typedef enum | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   G_MARKUP_COLLECT_INVALID, | 
					
						
							|  |  |  |   G_MARKUP_COLLECT_STRING, | 
					
						
							|  |  |  |   G_MARKUP_COLLECT_STRDUP, | 
					
						
							|  |  |  |   G_MARKUP_COLLECT_BOOLEAN, | 
					
						
							|  |  |  |   G_MARKUP_COLLECT_TRISTATE, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   G_MARKUP_COLLECT_OPTIONAL = (1 << 16) | 
					
						
							|  |  |  | } GMarkupCollectType; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* useful from start_element */ | 
					
						
							|  |  |  | gboolean   g_markup_collect_attributes (const gchar         *element_name, | 
					
						
							|  |  |  |                                         const gchar        **attribute_names, | 
					
						
							|  |  |  |                                         const gchar        **attribute_values, | 
					
						
							|  |  |  |                                         GError             **error, | 
					
						
							|  |  |  |                                         GMarkupCollectType   first_type, | 
					
						
							|  |  |  |                                         const gchar         *first_attr, | 
					
						
							|  |  |  |                                         ...); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-03-09 21:23:33 +00:00
										 |  |  | G_END_DECLS | 
					
						
							| 
									
										
										
										
											2000-10-27 02:46:04 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | #endif /* __G_MARKUP_H__ */
 | 
					
						
							|  |  |  | 
 |