epoc32/include/stdapis/glib-2.0/glib/gscanner.h
branchSymbian2
changeset 2 2fe1408b6811
parent 0 061f57f2323e
--- a/epoc32/include/stdapis/glib-2.0/glib/gscanner.h	Tue Nov 24 13:55:44 2009 +0000
+++ b/epoc32/include/stdapis/glib-2.0/glib/gscanner.h	Tue Mar 16 16:12:26 2010 +0000
@@ -1,1 +1,277 @@
-gscanner.h
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ * Portions copyright (c) 2006 Nokia Corporation.  All rights reserved.
+ *
+ * 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 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., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+/*
+ * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
+ * file for a list of people on the GLib Team.  See the ChangeLog
+ * files for a list of changes.  These files are distributed with
+ * GLib at ftp://ftp.gtk.org/pub/gtk/. 
+ */
+
+#ifndef __G_SCANNER_H__
+#define __G_SCANNER_H__
+
+#include <_ansi.h>
+#include <glib/gdataset.h>
+#include <glib/ghash.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GScanner	GScanner;
+typedef struct _GScannerConfig	GScannerConfig;
+typedef union  _GTokenValue     GTokenValue;
+
+typedef void		(*GScannerMsgFunc)	(GScanner      *scanner,
+						 gchar	       *message,
+						 gboolean	error);
+
+/* GScanner: Flexible lexical scanner for general purpose.
+ */
+
+/* Character sets */
+#define G_CSET_A_2_Z	"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+#define G_CSET_a_2_z	"abcdefghijklmnopqrstuvwxyz"
+#define G_CSET_DIGITS	"0123456789"
+#define G_CSET_LATINC	"\300\301\302\303\304\305\306"\
+			"\307\310\311\312\313\314\315\316\317\320"\
+			"\321\322\323\324\325\326"\
+			"\330\331\332\333\334\335\336"
+#define G_CSET_LATINS	"\337\340\341\342\343\344\345\346"\
+			"\347\350\351\352\353\354\355\356\357\360"\
+			"\361\362\363\364\365\366"\
+			"\370\371\372\373\374\375\376\377"
+
+/* Error types */
+typedef enum
+{
+  G_ERR_UNKNOWN,
+  G_ERR_UNEXP_EOF,
+  G_ERR_UNEXP_EOF_IN_STRING,
+  G_ERR_UNEXP_EOF_IN_COMMENT,
+  G_ERR_NON_DIGIT_IN_CONST,
+  G_ERR_DIGIT_RADIX,
+  G_ERR_FLOAT_RADIX,
+  G_ERR_FLOAT_MALFORMED
+} GErrorType;
+
+/* Token types */
+typedef enum
+{
+  G_TOKEN_EOF			=   0,
+  
+  G_TOKEN_LEFT_PAREN		= '(',
+  G_TOKEN_RIGHT_PAREN		= ')',
+  G_TOKEN_LEFT_CURLY		= '{',
+  G_TOKEN_RIGHT_CURLY		= '}',
+  G_TOKEN_LEFT_BRACE		= '[',
+  G_TOKEN_RIGHT_BRACE		= ']',
+  G_TOKEN_EQUAL_SIGN		= '=',
+  G_TOKEN_COMMA			= ',',
+  
+  G_TOKEN_NONE			= 256,
+  
+  G_TOKEN_ERROR,
+  
+  G_TOKEN_CHAR,
+  G_TOKEN_BINARY,
+  G_TOKEN_OCTAL,
+  G_TOKEN_INT,
+  G_TOKEN_HEX,
+  G_TOKEN_FLOAT,
+  G_TOKEN_STRING,
+  
+  G_TOKEN_SYMBOL,
+  G_TOKEN_IDENTIFIER,
+  G_TOKEN_IDENTIFIER_NULL,
+  
+  G_TOKEN_COMMENT_SINGLE,
+  G_TOKEN_COMMENT_MULTI,
+  G_TOKEN_LAST
+} GTokenType;
+
+union	_GTokenValue
+{
+  gpointer	v_symbol;
+  gchar		*v_identifier;
+  gulong	v_binary;
+  gulong	v_octal;
+  gulong	v_int;
+  guint64       v_int64;
+  gdouble	v_float;
+  gulong	v_hex;
+  gchar		*v_string;
+  gchar		*v_comment;
+  guchar	v_char;
+  guint		v_error;
+};
+
+struct	_GScannerConfig
+{
+  /* Character sets
+   */
+  gchar		*cset_skip_characters;		/* default: " \t\n" */
+  gchar		*cset_identifier_first;
+  gchar		*cset_identifier_nth;
+  gchar		*cpair_comment_single;		/* default: "#\n" */
+  
+  /* Should symbol lookup work case sensitive?
+   */
+  guint		case_sensitive : 1;
+  
+  /* Boolean values to be adjusted "on the fly"
+   * to configure scanning behaviour.
+   */
+  guint		skip_comment_multi : 1;		/* C like comment */
+  guint		skip_comment_single : 1;	/* single line comment */
+  guint		scan_comment_multi : 1;		/* scan multi line comments? */
+  guint		scan_identifier : 1;
+  guint		scan_identifier_1char : 1;
+  guint		scan_identifier_NULL : 1;
+  guint		scan_symbols : 1;
+  guint		scan_binary : 1;
+  guint		scan_octal : 1;
+  guint		scan_float : 1;
+  guint		scan_hex : 1;			/* `0x0ff0' */
+  guint		scan_hex_dollar : 1;		/* `$0ff0' */
+  guint		scan_string_sq : 1;		/* string: 'anything' */
+  guint		scan_string_dq : 1;		/* string: "\\-escapes!\n" */
+  guint		numbers_2_int : 1;		/* bin, octal, hex => int */
+  guint		int_2_float : 1;		/* int => G_TOKEN_FLOAT? */
+  guint		identifier_2_string : 1;
+  guint		char_2_token : 1;		/* return G_TOKEN_CHAR? */
+  guint		symbol_2_token : 1;
+  guint		scope_0_fallback : 1;		/* try scope 0 on lookups? */
+  guint		store_int64 : 1; 		/* use value.v_int64 rather than v_int */
+  guint		padding_dummy;
+};
+
+struct	_GScanner
+{
+  /* unused fields */
+  gpointer		user_data;
+  guint			max_parse_errors;
+  
+  /* g_scanner_error() increments this field */
+  guint			parse_errors;
+  
+  /* name of input stream, featured by the default message handler */
+  const gchar		*input_name;
+  
+  /* quarked data */
+  GData			*qdata;
+  
+  /* link into the scanner configuration */
+  GScannerConfig	*config;
+  
+  /* fields filled in after g_scanner_get_next_token() */
+  GTokenType		token;
+  GTokenValue		value;
+  guint			line;
+  guint			position;
+  
+  /* fields filled in after g_scanner_peek_next_token() */
+  GTokenType		next_token;
+  GTokenValue		next_value;
+  guint			next_line;
+  guint			next_position;
+  
+  /* to be considered private */
+  GHashTable		*symbol_table;
+  gint			input_fd;
+  const gchar		*text;
+  const gchar		*text_end;
+  gchar			*buffer;
+  guint			scope_id;
+  
+  /* handler function for _warn and _error */
+  GScannerMsgFunc	msg_handler;
+};
+
+IMPORT_C GScanner*	g_scanner_new			(const GScannerConfig *config_templ);
+IMPORT_C void		g_scanner_destroy		(GScanner	*scanner);
+IMPORT_C void		g_scanner_input_file		(GScanner	*scanner,
+						 gint		input_fd);
+IMPORT_C void		g_scanner_sync_file_offset	(GScanner	*scanner);
+IMPORT_C void		g_scanner_input_text		(GScanner	*scanner,
+						 const	gchar	*text,
+						 guint		text_len);
+IMPORT_C GTokenType	g_scanner_get_next_token	(GScanner	*scanner);
+IMPORT_C GTokenType	g_scanner_peek_next_token	(GScanner	*scanner);
+IMPORT_C GTokenType	g_scanner_cur_token		(GScanner	*scanner);
+IMPORT_C GTokenValue	g_scanner_cur_value		(GScanner	*scanner);
+IMPORT_C guint		g_scanner_cur_line		(GScanner	*scanner);
+IMPORT_C guint		g_scanner_cur_position		(GScanner	*scanner);
+IMPORT_C gboolean	g_scanner_eof			(GScanner	*scanner);
+IMPORT_C guint		g_scanner_set_scope		(GScanner	*scanner,
+						 guint		 scope_id);
+IMPORT_C void		g_scanner_scope_add_symbol	(GScanner	*scanner,
+						 guint		 scope_id,
+						 const gchar	*symbol,
+						 gpointer	value);
+IMPORT_C void		g_scanner_scope_remove_symbol	(GScanner	*scanner,
+						 guint		 scope_id,
+						 const gchar	*symbol);
+IMPORT_C gpointer	g_scanner_scope_lookup_symbol	(GScanner	*scanner,
+						 guint		 scope_id,
+						 const gchar	*symbol);
+IMPORT_C void		g_scanner_scope_foreach_symbol	(GScanner	*scanner,
+						 guint		 scope_id,
+						 GHFunc		 func,
+						 gpointer	 user_data);
+IMPORT_C gpointer	g_scanner_lookup_symbol		(GScanner	*scanner,
+						 const gchar	*symbol);
+IMPORT_C void		g_scanner_unexp_token		(GScanner	*scanner,
+						 GTokenType	expected_token,
+						 const gchar	*identifier_spec,
+						 const gchar	*symbol_spec,
+						 const gchar	*symbol_name,
+						 const gchar	*message,
+						 gint		 is_error);
+IMPORT_C void		g_scanner_error			(GScanner	*scanner,
+						 const gchar	*format,
+						 ...) G_GNUC_PRINTF (2,3);
+IMPORT_C void		g_scanner_warn			(GScanner	*scanner,
+						 const gchar	*format,
+						 ...) G_GNUC_PRINTF (2,3);
+
+#ifndef G_DISABLE_DEPRECATED
+
+/* keep downward source compatibility */
+#define		g_scanner_add_symbol( scanner, symbol, value )	G_STMT_START { \
+  g_scanner_scope_add_symbol ((scanner), 0, (symbol), (value)); \
+} G_STMT_END
+#define		g_scanner_remove_symbol( scanner, symbol )	G_STMT_START { \
+  g_scanner_scope_remove_symbol ((scanner), 0, (symbol)); \
+} G_STMT_END
+#define		g_scanner_foreach_symbol( scanner, func, data )	G_STMT_START { \
+  g_scanner_scope_foreach_symbol ((scanner), 0, (func), (data)); \
+} G_STMT_END
+
+/* The following two functions are deprecated and will be removed in
+ * the next major release. They do no good. */
+#define g_scanner_freeze_symbol_table(scanner) ((void)0)
+#define g_scanner_thaw_symbol_table(scanner) ((void)0)
+
+#endif /* G_DISABLE_DEPRECATED */
+
+G_END_DECLS
+
+#endif /* __G_SCANNER_H__ */
+