| GLib Reference Manual | ||||
|---|---|---|---|---|
| Top | Description | ||||
#include <glib.h>
GScanner;
GScannerConfig;
GScanner* g_scanner_new (const GScannerConfig *config_templ);
void g_scanner_destroy (GScanner *scanner);
void g_scanner_input_file (GScanner *scanner,
gint input_fd);
void g_scanner_sync_file_offset (GScanner *scanner);
void g_scanner_input_text (GScanner *scanner,
const gchar *text,
guint text_len);
GTokenType g_scanner_peek_next_token (GScanner *scanner);
GTokenType g_scanner_get_next_token (GScanner *scanner);
gboolean g_scanner_eof (GScanner *scanner);
guint g_scanner_cur_line (GScanner *scanner);
guint g_scanner_cur_position (GScanner *scanner);
GTokenType g_scanner_cur_token (GScanner *scanner);
GTokenValue g_scanner_cur_value (GScanner *scanner);
guint g_scanner_set_scope (GScanner *scanner,
guint scope_id);
void g_scanner_scope_add_symbol (GScanner *scanner,
guint scope_id,
const gchar *symbol,
gpointer value);
void g_scanner_scope_foreach_symbol (GScanner *scanner,
guint scope_id,
GHFunc func,
gpointer user_data);
gpointer g_scanner_scope_lookup_symbol (GScanner *scanner,
guint scope_id,
const gchar *symbol);
void g_scanner_scope_remove_symbol (GScanner *scanner,
guint scope_id,
const gchar *symbol);
#define g_scanner_add_symbol (scanner,
symbol,
value)
#define g_scanner_remove_symbol (scanner,
symbol)
#define g_scanner_foreach_symbol (scanner,
func,
data)
#define g_scanner_freeze_symbol_table (scanner)
#define g_scanner_thaw_symbol_table (scanner)
gpointer g_scanner_lookup_symbol (GScanner *scanner,
const gchar *symbol);
void g_scanner_warn (GScanner *scanner,
const gchar *format,
...);
void g_scanner_error (GScanner *scanner,
const gchar *format,
...);
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);
void (*GScannerMsgFunc) (GScanner *scanner,
gchar *message,
gboolean error);
#define G_CSET_a_2_z
#define G_CSET_A_2_Z
#define G_CSET_DIGITS
#define G_CSET_LATINC
#define G_CSET_LATINS
enum GTokenType;
union GTokenValue;
enum GErrorType;
typedef struct {
/* 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;
} GScanner;
typedef struct {
/* 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;
} GScannerConfig;
GScanner* g_scanner_new (const GScannerConfig *config_templ);
|
|
Returns : |
void g_scanner_input_file (GScanner *scanner,gint input_fd);
|
|
|
void g_scanner_input_text (GScanner *scanner,const gchar *text,guint text_len);
|
|
|
|
|
GTokenType g_scanner_peek_next_token (GScanner *scanner);
|
|
Returns : |
GTokenType g_scanner_get_next_token (GScanner *scanner);
|
|
Returns : |
guint g_scanner_set_scope (GScanner *scanner,guint scope_id);
|
|
|
|
Returns : |
void g_scanner_scope_add_symbol (GScanner *scanner,guint scope_id,const gchar *symbol,gpointer value);
|
|
|
|
|
|
|
void g_scanner_scope_foreach_symbol (GScanner *scanner,guint scope_id,GHFunc func,gpointer user_data);
|
|
|
|
|
|
|
gpointer g_scanner_scope_lookup_symbol (GScanner *scanner,guint scope_id,const gchar *symbol);
|
|
|
|
|
|
Returns : |
void g_scanner_scope_remove_symbol (GScanner *scanner,guint scope_id,const gchar *symbol);
|
|
|
|
|
#define g_scanner_add_symbol( scanner, symbol, value )
g_scanner_add_symbol is deprecated and should not be used in newly-written code.
|
|
|
|
|
#define g_scanner_remove_symbol( scanner, symbol )
g_scanner_remove_symbol is deprecated and should not be used in newly-written code.
|
|
|
#define g_scanner_foreach_symbol( scanner, func, data )
g_scanner_foreach_symbol is deprecated and should not be used in newly-written code.
|
|
|
|
|
#define g_scanner_freeze_symbol_table(scanner)
g_scanner_freeze_symbol_table is deprecated and should not be used in newly-written code.
|
#define g_scanner_thaw_symbol_table(scanner)
g_scanner_thaw_symbol_table is deprecated and should not be used in newly-written code.
|
gpointer g_scanner_lookup_symbol (GScanner *scanner,const gchar *symbol);
|
|
|
|
Returns : |
void g_scanner_warn (GScanner *scanner,const gchar *format,...);
|
|
|
|
|
void g_scanner_error (GScanner *scanner,const gchar *format,...);
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
|
|
|
|
|
void (*GScannerMsgFunc) (GScanner *scanner,gchar *message,gboolean error);
|
|
|
|
|
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;