Initial commit
[platform/upstream/glib2.0.git] / docs / reference / glib / html / glib-Lexical-Scanner.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <title>Lexical Scanner</title>
6 <meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
7 <link rel="home" href="index.html" title="GLib Reference Manual">
8 <link rel="up" href="glib-utilities.html" title="GLib Utilities">
9 <link rel="prev" href="glib-Miscellaneous-Utility-Functions.html" title="Miscellaneous Utility Functions">
10 <link rel="next" href="glib-Automatic-String-Completion.html" title="Automatic String Completion">
11 <meta name="generator" content="GTK-Doc V1.13 (XML mode)">
12 <link rel="stylesheet" href="style.css" type="text/css">
13 <link rel="chapter" href="glib.html" title="GLib Overview">
14 <link rel="chapter" href="glib-fundamentals.html" title="GLib Fundamentals">
15 <link rel="chapter" href="glib-core.html" title="GLib Core Application Support">
16 <link rel="chapter" href="glib-utilities.html" title="GLib Utilities">
17 <link rel="chapter" href="glib-data-types.html" title="GLib Data Types">
18 <link rel="chapter" href="tools.html" title="GLib Tools">
19 <link rel="index" href="api-index-full.html" title="Index">
20 <link rel="index" href="api-index-deprecated.html" title="Index of deprecated symbols">
21 <link rel="index" href="api-index-2-2.html" title="Index of new symbols in 2.2">
22 <link rel="index" href="api-index-2-4.html" title="Index of new symbols in 2.4">
23 <link rel="index" href="api-index-2-6.html" title="Index of new symbols in 2.6">
24 <link rel="index" href="api-index-2-8.html" title="Index of new symbols in 2.8">
25 <link rel="index" href="api-index-2-10.html" title="Index of new symbols in 2.10">
26 <link rel="index" href="api-index-2-12.html" title="Index of new symbols in 2.12">
27 <link rel="index" href="api-index-2-14.html" title="Index of new symbols in 2.14">
28 <link rel="index" href="api-index-2-16.html" title="Index of new symbols in 2.16">
29 <link rel="index" href="api-index-2-18.html" title="Index of new symbols in 2.18">
30 <link rel="index" href="api-index-2-20.html" title="Index of new symbols in 2.20">
31 <link rel="index" href="api-index-2-22.html" title="Index of new symbols in 2.22">
32 <link rel="index" href="api-index-2-24.html" title="Index of new symbols in 2.24">
33 </head>
34 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
35 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
36 <tr valign="middle">
37 <td><a accesskey="p" href="glib-Miscellaneous-Utility-Functions.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
38 <td><a accesskey="u" href="glib-utilities.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
39 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
40 <th width="100%" align="center">GLib Reference Manual</th>
41 <td><a accesskey="n" href="glib-Automatic-String-Completion.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
42 </tr>
43 <tr><td colspan="5" class="shortcuts">
44 <a href="#glib-Lexical-Scanner.synopsis" class="shortcut">Top</a>
45                    | 
46                   <a href="#glib-Lexical-Scanner.description" class="shortcut">Description</a>
47 </td></tr>
48 </table>
49 <div class="refentry" title="Lexical Scanner">
50 <a name="glib-Lexical-Scanner"></a><div class="titlepage"></div>
51 <div class="refnamediv"><table width="100%"><tr>
52 <td valign="top">
53 <h2><span class="refentrytitle"><a name="glib-Lexical-Scanner.top_of_page"></a>Lexical Scanner</span></h2>
54 <p>Lexical Scanner — a general purpose lexical scanner</p>
55 </td>
56 <td valign="top" align="right"></td>
57 </tr></table></div>
58 <div class="refsynopsisdiv" title="Synopsis">
59 <a name="glib-Lexical-Scanner.synopsis"></a><h2>Synopsis</h2>
60 <pre class="synopsis">
61 #include &lt;glib.h&gt;
62
63                     <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner">GScanner</a>;
64                     <a class="link" href="glib-Lexical-Scanner.html#GScannerConfig" title="GScannerConfig">GScannerConfig</a>;
65 <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a>*           <a class="link" href="glib-Lexical-Scanner.html#g-scanner-new" title="g_scanner_new ()">g_scanner_new</a>                       (const <a class="link" href="glib-Lexical-Scanner.html#GScannerConfig" title="GScannerConfig"><span class="returnvalue">GScannerConfig</span></a> *config_templ);
66 <span class="returnvalue">void</span>                <a class="link" href="glib-Lexical-Scanner.html#g-scanner-destroy" title="g_scanner_destroy ()">g_scanner_destroy</a>                   (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner);
67
68 <span class="returnvalue">void</span>                <a class="link" href="glib-Lexical-Scanner.html#g-scanner-input-file" title="g_scanner_input_file ()">g_scanner_input_file</a>                (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner,
69                                                          <a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="returnvalue">gint</span></a> input_fd);
70 <span class="returnvalue">void</span>                <a class="link" href="glib-Lexical-Scanner.html#g-scanner-sync-file-offset" title="g_scanner_sync_file_offset ()">g_scanner_sync_file_offset</a>          (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner);
71 <span class="returnvalue">void</span>                <a class="link" href="glib-Lexical-Scanner.html#g-scanner-input-text" title="g_scanner_input_text ()">g_scanner_input_text</a>                (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner,
72                                                          const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *text,
73                                                          <a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="returnvalue">guint</span></a> text_len);
74 <a class="link" href="glib-Lexical-Scanner.html#GTokenType" title="enum GTokenType"><span class="returnvalue">GTokenType</span></a>          <a class="link" href="glib-Lexical-Scanner.html#g-scanner-peek-next-token" title="g_scanner_peek_next_token ()">g_scanner_peek_next_token</a>           (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner);
75 <a class="link" href="glib-Lexical-Scanner.html#GTokenType" title="enum GTokenType"><span class="returnvalue">GTokenType</span></a>          <a class="link" href="glib-Lexical-Scanner.html#g-scanner-get-next-token" title="g_scanner_get_next_token ()">g_scanner_get_next_token</a>            (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner);
76 <a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="glib-Lexical-Scanner.html#g-scanner-eof" title="g_scanner_eof ()">g_scanner_eof</a>                       (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner);
77
78 <a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="returnvalue">guint</span></a>               <a class="link" href="glib-Lexical-Scanner.html#g-scanner-cur-line" title="g_scanner_cur_line ()">g_scanner_cur_line</a>                  (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner);
79 <a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="returnvalue">guint</span></a>               <a class="link" href="glib-Lexical-Scanner.html#g-scanner-cur-position" title="g_scanner_cur_position ()">g_scanner_cur_position</a>              (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner);
80 <a class="link" href="glib-Lexical-Scanner.html#GTokenType" title="enum GTokenType"><span class="returnvalue">GTokenType</span></a>          <a class="link" href="glib-Lexical-Scanner.html#g-scanner-cur-token" title="g_scanner_cur_token ()">g_scanner_cur_token</a>                 (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner);
81 <a class="link" href="glib-Lexical-Scanner.html#GTokenValue" title="union GTokenValue"><span class="returnvalue">GTokenValue</span></a>         <a class="link" href="glib-Lexical-Scanner.html#g-scanner-cur-value" title="g_scanner_cur_value ()">g_scanner_cur_value</a>                 (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner);
82
83 <a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="returnvalue">guint</span></a>               <a class="link" href="glib-Lexical-Scanner.html#g-scanner-set-scope" title="g_scanner_set_scope ()">g_scanner_set_scope</a>                 (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner,
84                                                          <a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="returnvalue">guint</span></a> scope_id);
85 <span class="returnvalue">void</span>                <a class="link" href="glib-Lexical-Scanner.html#g-scanner-scope-add-symbol" title="g_scanner_scope_add_symbol ()">g_scanner_scope_add_symbol</a>          (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner,
86                                                          <a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="returnvalue">guint</span></a> scope_id,
87                                                          const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *symbol,
88                                                          <a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="returnvalue">gpointer</span></a> value);
89 <span class="returnvalue">void</span>                <a class="link" href="glib-Lexical-Scanner.html#g-scanner-scope-foreach-symbol" title="g_scanner_scope_foreach_symbol ()">g_scanner_scope_foreach_symbol</a>      (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner,
90                                                          <a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="returnvalue">guint</span></a> scope_id,
91                                                          <a class="link" href="glib-Hash-Tables.html#GHFunc" title="GHFunc ()"><span class="returnvalue">GHFunc</span></a> func,
92                                                          <a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="returnvalue">gpointer</span></a> user_data);
93 <a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="returnvalue">gpointer</span></a>            <a class="link" href="glib-Lexical-Scanner.html#g-scanner-scope-lookup-symbol" title="g_scanner_scope_lookup_symbol ()">g_scanner_scope_lookup_symbol</a>       (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner,
94                                                          <a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="returnvalue">guint</span></a> scope_id,
95                                                          const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *symbol);
96 <span class="returnvalue">void</span>                <a class="link" href="glib-Lexical-Scanner.html#g-scanner-scope-remove-symbol" title="g_scanner_scope_remove_symbol ()">g_scanner_scope_remove_symbol</a>       (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner,
97                                                          <a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="returnvalue">guint</span></a> scope_id,
98                                                          const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *symbol);
99 #define             <a class="link" href="glib-Lexical-Scanner.html#g-scanner-add-symbol" title="g_scanner_add_symbol()">g_scanner_add_symbol</a>                ( scanner, symbol, value )
100 #define             <a class="link" href="glib-Lexical-Scanner.html#g-scanner-remove-symbol" title="g_scanner_remove_symbol()">g_scanner_remove_symbol</a>             ( scanner, symbol )
101 #define             <a class="link" href="glib-Lexical-Scanner.html#g-scanner-foreach-symbol" title="g_scanner_foreach_symbol()">g_scanner_foreach_symbol</a>            ( scanner, func, data )
102
103 #define             <a class="link" href="glib-Lexical-Scanner.html#g-scanner-freeze-symbol-table" title="g_scanner_freeze_symbol_table()">g_scanner_freeze_symbol_table</a>       (scanner)
104 #define             <a class="link" href="glib-Lexical-Scanner.html#g-scanner-thaw-symbol-table" title="g_scanner_thaw_symbol_table()">g_scanner_thaw_symbol_table</a>         (scanner)
105 <a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="returnvalue">gpointer</span></a>            <a class="link" href="glib-Lexical-Scanner.html#g-scanner-lookup-symbol" title="g_scanner_lookup_symbol ()">g_scanner_lookup_symbol</a>             (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner,
106                                                          const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *symbol);
107
108 <span class="returnvalue">void</span>                <a class="link" href="glib-Lexical-Scanner.html#g-scanner-warn" title="g_scanner_warn ()">g_scanner_warn</a>                      (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner,
109                                                          const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *format,
110                                                          ...);
111 <span class="returnvalue">void</span>                <a class="link" href="glib-Lexical-Scanner.html#g-scanner-error" title="g_scanner_error ()">g_scanner_error</a>                     (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner,
112                                                          const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *format,
113                                                          ...);
114 <span class="returnvalue">void</span>                <a class="link" href="glib-Lexical-Scanner.html#g-scanner-unexp-token" title="g_scanner_unexp_token ()">g_scanner_unexp_token</a>               (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner,
115                                                          <a class="link" href="glib-Lexical-Scanner.html#GTokenType" title="enum GTokenType"><span class="returnvalue">GTokenType</span></a> expected_token,
116                                                          const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *identifier_spec,
117                                                          const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *symbol_spec,
118                                                          const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *symbol_name,
119                                                          const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *message,
120                                                          <a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="returnvalue">gint</span></a> is_error);
121 <span class="returnvalue">void</span>                (<a class="link" href="glib-Lexical-Scanner.html#GScannerMsgFunc" title="GScannerMsgFunc ()">*GScannerMsgFunc</a>)                  (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner,
122                                                          <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *message,
123                                                          <a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> error);
124
125 #define             <a class="link" href="glib-Lexical-Scanner.html#G-CSET-a-2-z" title="G_CSET_a_2_z">G_CSET_a_2_z</a>
126 #define             <a class="link" href="glib-Lexical-Scanner.html#G-CSET-A-2-Z:CAPS" title="G_CSET_A_2_Z">G_CSET_A_2_Z</a>
127 #define             <a class="link" href="glib-Lexical-Scanner.html#G-CSET-DIGITS:CAPS" title="G_CSET_DIGITS">G_CSET_DIGITS</a>
128 #define             <a class="link" href="glib-Lexical-Scanner.html#G-CSET-LATINC:CAPS" title="G_CSET_LATINC">G_CSET_LATINC</a>
129 #define             <a class="link" href="glib-Lexical-Scanner.html#G-CSET-LATINS:CAPS" title="G_CSET_LATINS">G_CSET_LATINS</a>
130 enum                <a class="link" href="glib-Lexical-Scanner.html#GTokenType" title="enum GTokenType">GTokenType</a>;
131 union               <a class="link" href="glib-Lexical-Scanner.html#GTokenValue" title="union GTokenValue">GTokenValue</a>;
132 enum                <a class="link" href="glib-Lexical-Scanner.html#GErrorType" title="enum GErrorType">GErrorType</a>;
133 </pre>
134 </div>
135 <div class="refsect1" title="Description">
136 <a name="glib-Lexical-Scanner.description"></a><h2>Description</h2>
137 <p>
138 The <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a> and its associated functions provide a general purpose
139 lexical scanner.
140 </p>
141 </div>
142 <div class="refsect1" title="Details">
143 <a name="glib-Lexical-Scanner.details"></a><h2>Details</h2>
144 <div class="refsect2" title="GScanner">
145 <a name="GScanner"></a><h3>GScanner</h3>
146 <pre class="programlisting">typedef struct {
147   /* unused fields */
148   gpointer              user_data;
149   guint                 max_parse_errors;
150   
151   /* g_scanner_error() increments this field */
152   guint                 parse_errors;
153   
154   /* name of input stream, featured by the default message handler */
155   const gchar           *input_name;
156   
157   /* quarked data */
158   GData                 *qdata;
159   
160   /* link into the scanner configuration */
161   GScannerConfig *config;
162   
163   /* fields filled in after g_scanner_get_next_token() */
164   GTokenType            token;
165   GTokenValue           value;
166   guint                 line;
167   guint                 position;
168   
169   /* fields filled in after g_scanner_peek_next_token() */
170   GTokenType            next_token;
171   GTokenValue           next_value;
172   guint                 next_line;
173   guint                 next_position;
174   
175   /* to be considered private */
176   GHashTable            *symbol_table;
177   gint                  input_fd;
178   const gchar           *text;
179   const gchar           *text_end;
180   gchar                 *buffer;
181   guint                 scope_id;
182   
183   /* handler function for _warn and _error */
184   GScannerMsgFunc msg_handler;
185 } GScanner;
186 </pre>
187 <p>
188 The data structure representing a lexical scanner.
189 </p>
190 <p>
191 You should set <em class="structfield"><code>input_name</code></em> after creating
192 the scanner, since it is used by the default message handler when
193 displaying warnings and errors. If you are scanning a file, the file
194 name would be a good choice.
195 </p>
196 <p>
197 The <em class="structfield"><code>user_data</code></em> and
198 <em class="structfield"><code>max_parse_errors</code></em> fields are not used.
199 If you need to associate extra data with the scanner you can place them here.
200 </p>
201 <p>
202 If you want to use your own message handler you can set the
203 <em class="structfield"><code>msg_handler</code></em> field. The type of the message
204 handler function is declared by <a class="link" href="glib-Lexical-Scanner.html#GScannerMsgFunc" title="GScannerMsgFunc ()"><span class="type">GScannerMsgFunc</span></a>.
205 </p>
206 <div class="variablelist"><table border="0">
207 <col align="left" valign="top">
208 <tbody>
209 <tr>
210 <td><p><span class="term"><a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="type">gpointer</span></a> <em class="structfield"><code><a name="GScanner.user-data"></a>user_data</code></em>;</span></p></td>
211 <td>
212 </td>
213 </tr>
214 <tr>
215 <td><p><span class="term"><a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GScanner.max-parse-errors"></a>max_parse_errors</code></em>;</span></p></td>
216 <td>
217 </td>
218 </tr>
219 <tr>
220 <td><p><span class="term"><a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GScanner.parse-errors"></a>parse_errors</code></em>;</span></p></td>
221 <td>
222 </td>
223 </tr>
224 <tr>
225 <td><p><span class="term">const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *<em class="structfield"><code><a name="GScanner.input-name"></a>input_name</code></em>;</span></p></td>
226 <td>
227 </td>
228 </tr>
229 <tr>
230 <td><p><span class="term"><a class="link" href="glib-Keyed-Data-Lists.html#GData" title="GData"><span class="type">GData</span></a> *<em class="structfield"><code><a name="GScanner.qdata"></a>qdata</code></em>;</span></p></td>
231 <td>
232 </td>
233 </tr>
234 <tr>
235 <td><p><span class="term"><a class="link" href="glib-Lexical-Scanner.html#GScannerConfig" title="GScannerConfig"><span class="type">GScannerConfig</span></a> *<em class="structfield"><code><a name="GScanner.config"></a>config</code></em>;</span></p></td>
236 <td>
237 </td>
238 </tr>
239 <tr>
240 <td><p><span class="term"><a class="link" href="glib-Lexical-Scanner.html#GTokenType" title="enum GTokenType"><span class="type">GTokenType</span></a> <em class="structfield"><code><a name="GScanner.token"></a>token</code></em>;</span></p></td>
241 <td>      token parsed by the last <a class="link" href="glib-Lexical-Scanner.html#g-scanner-get-next-token" title="g_scanner_get_next_token ()"><code class="function">g_scanner_get_next_token()</code></a>
242 </td>
243 </tr>
244 <tr>
245 <td><p><span class="term"><a class="link" href="glib-Lexical-Scanner.html#GTokenValue" title="union GTokenValue"><span class="type">GTokenValue</span></a> <em class="structfield"><code><a name="GScanner.value"></a>value</code></em>;</span></p></td>
246 <td>      value of the last token from <a class="link" href="glib-Lexical-Scanner.html#g-scanner-get-next-token" title="g_scanner_get_next_token ()"><code class="function">g_scanner_get_next_token()</code></a>
247 </td>
248 </tr>
249 <tr>
250 <td><p><span class="term"><a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GScanner.line"></a>line</code></em>;</span></p></td>
251 <td>       line number of the last token from <a class="link" href="glib-Lexical-Scanner.html#g-scanner-get-next-token" title="g_scanner_get_next_token ()"><code class="function">g_scanner_get_next_token()</code></a>
252 </td>
253 </tr>
254 <tr>
255 <td><p><span class="term"><a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GScanner.position"></a>position</code></em>;</span></p></td>
256 <td>   char number of the last token from <a class="link" href="glib-Lexical-Scanner.html#g-scanner-get-next-token" title="g_scanner_get_next_token ()"><code class="function">g_scanner_get_next_token()</code></a>
257 </td>
258 </tr>
259 <tr>
260 <td><p><span class="term"><a class="link" href="glib-Lexical-Scanner.html#GTokenType" title="enum GTokenType"><span class="type">GTokenType</span></a> <em class="structfield"><code><a name="GScanner.next-token"></a>next_token</code></em>;</span></p></td>
261 <td>   token parsed by the last <a class="link" href="glib-Lexical-Scanner.html#g-scanner-peek-next-token" title="g_scanner_peek_next_token ()"><code class="function">g_scanner_peek_next_token()</code></a>
262 </td>
263 </tr>
264 <tr>
265 <td><p><span class="term"><a class="link" href="glib-Lexical-Scanner.html#GTokenValue" title="union GTokenValue"><span class="type">GTokenValue</span></a> <em class="structfield"><code><a name="GScanner.next-value"></a>next_value</code></em>;</span></p></td>
266 <td>   value of the last token from <a class="link" href="glib-Lexical-Scanner.html#g-scanner-peek-next-token" title="g_scanner_peek_next_token ()"><code class="function">g_scanner_peek_next_token()</code></a>
267 </td>
268 </tr>
269 <tr>
270 <td><p><span class="term"><a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GScanner.next-line"></a>next_line</code></em>;</span></p></td>
271 <td>    line number of the last token from <a class="link" href="glib-Lexical-Scanner.html#g-scanner-peek-next-token" title="g_scanner_peek_next_token ()"><code class="function">g_scanner_peek_next_token()</code></a>
272 </td>
273 </tr>
274 <tr>
275 <td><p><span class="term"><a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GScanner.next-position"></a>next_position</code></em>;</span></p></td>
276 <td>char number of the last token from <a class="link" href="glib-Lexical-Scanner.html#g-scanner-peek-next-token" title="g_scanner_peek_next_token ()"><code class="function">g_scanner_peek_next_token()</code></a>
277 </td>
278 </tr>
279 <tr>
280 <td><p><span class="term"><a class="link" href="glib-Hash-Tables.html#GHashTable" title="GHashTable"><span class="type">GHashTable</span></a> *<em class="structfield"><code><a name="GScanner.symbol-table"></a>symbol_table</code></em>;</span></p></td>
281 <td>
282 </td>
283 </tr>
284 <tr>
285 <td><p><span class="term"><a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GScanner.input-fd"></a>input_fd</code></em>;</span></p></td>
286 <td>
287 </td>
288 </tr>
289 <tr>
290 <td><p><span class="term">const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *<em class="structfield"><code><a name="GScanner.text"></a>text</code></em>;</span></p></td>
291 <td>
292 </td>
293 </tr>
294 <tr>
295 <td><p><span class="term">const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *<em class="structfield"><code><a name="GScanner.text-end"></a>text_end</code></em>;</span></p></td>
296 <td>
297 </td>
298 </tr>
299 <tr>
300 <td><p><span class="term"><a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *<em class="structfield"><code><a name="GScanner.buffer"></a>buffer</code></em>;</span></p></td>
301 <td>
302 </td>
303 </tr>
304 <tr>
305 <td><p><span class="term"><a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GScanner.scope-id"></a>scope_id</code></em>;</span></p></td>
306 <td>
307 </td>
308 </tr>
309 <tr>
310 <td><p><span class="term"><a class="link" href="glib-Lexical-Scanner.html#GScannerMsgFunc" title="GScannerMsgFunc ()"><span class="type">GScannerMsgFunc</span></a> <em class="structfield"><code><a name="GScanner.msg-handler"></a>msg_handler</code></em>;</span></p></td>
311 <td>function to handle GScanner message output
312 </td>
313 </tr>
314 </tbody>
315 </table></div>
316 </div>
317 <hr>
318 <div class="refsect2" title="GScannerConfig">
319 <a name="GScannerConfig"></a><h3>GScannerConfig</h3>
320 <pre class="programlisting">typedef struct {
321   /* Character sets
322    */
323   gchar         *cset_skip_characters;          /* default: " \t\n" */
324   gchar         *cset_identifier_first;
325   gchar         *cset_identifier_nth;
326   gchar         *cpair_comment_single;          /* default: "#\n" */
327   
328   /* Should symbol lookup work case sensitive?
329    */
330   guint         case_sensitive : 1;
331   
332   /* Boolean values to be adjusted "on the fly"
333    * to configure scanning behaviour.
334    */
335   guint         skip_comment_multi : 1;         /* C like comment */
336   guint         skip_comment_single : 1; /* single line comment */
337   guint         scan_comment_multi : 1;         /* scan multi line comments? */
338   guint         scan_identifier : 1;
339   guint         scan_identifier_1char : 1;
340   guint         scan_identifier_NULL : 1;
341   guint         scan_symbols : 1;
342   guint         scan_binary : 1;
343   guint         scan_octal : 1;
344   guint         scan_float : 1;
345   guint         scan_hex : 1;                   /* `0x0ff0' */
346   guint         scan_hex_dollar : 1;            /* `$0ff0' */
347   guint         scan_string_sq : 1;             /* string: 'anything' */
348   guint         scan_string_dq : 1;             /* string: "\\-escapes!\n" */
349   guint         numbers_2_int : 1;              /* bin, octal, hex =&gt; int */
350   guint         int_2_float : 1;                /* int =&gt; G_TOKEN_FLOAT? */
351   guint         identifier_2_string : 1;
352   guint         char_2_token : 1;               /* return G_TOKEN_CHAR? */
353   guint         symbol_2_token : 1;
354   guint         scope_0_fallback : 1;           /* try scope 0 on lookups? */
355   guint         store_int64 : 1;                /* use value.v_int64 rather than v_int */
356   guint         padding_dummy;
357 } GScannerConfig;
358 </pre>
359 <p>
360 Specifies the <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a> parser configuration. Most settings can be changed during
361 the parsing phase and will affect the lexical parsing of the next unpeeked token.
362 </p>
363 <p>
364 <em class="structfield"><code>cset_skip_characters</code></em> specifies which characters
365 should be skipped by the scanner (the default is the whitespace characters:
366 space, tab, carriage-return and line-feed).
367 </p>
368 <p>
369 <em class="structfield"><code>cset_identifier_first</code></em> specifies the characters
370 which can start identifiers (the default is <a class="link" href="glib-Lexical-Scanner.html#G-CSET-a-2-z" title="G_CSET_a_2_z"><span class="type">G_CSET_a_2_z</span></a>, "_", and
371 <a class="link" href="glib-Lexical-Scanner.html#G-CSET-A-2-Z:CAPS" title="G_CSET_A_2_Z"><span class="type">G_CSET_A_2_Z</span></a>).
372 </p>
373 <p>
374 <em class="structfield"><code>cset_identifier_nth</code></em> specifies the characters
375 which can be used in identifiers, after the first character (the default
376 is <a class="link" href="glib-Lexical-Scanner.html#G-CSET-a-2-z" title="G_CSET_a_2_z"><span class="type">G_CSET_a_2_z</span></a>, "_0123456789", <a class="link" href="glib-Lexical-Scanner.html#G-CSET-A-2-Z:CAPS" title="G_CSET_A_2_Z"><span class="type">G_CSET_A_2_Z</span></a>, <a class="link" href="glib-Lexical-Scanner.html#G-CSET-LATINS:CAPS" title="G_CSET_LATINS"><span class="type">G_CSET_LATINS</span></a>,
377 <a class="link" href="glib-Lexical-Scanner.html#G-CSET-LATINC:CAPS" title="G_CSET_LATINC"><span class="type">G_CSET_LATINC</span></a>).
378 </p>
379 <p>
380 <em class="structfield"><code>cpair_comment_single</code></em> specifies the characters
381 at the start and end of single-line comments. The default is "#\n" which
382 means that single-line comments start with a '#' and continue until a '\n'
383 (end of line).
384 </p>
385 <p>
386 <em class="structfield"><code>case_sensitive</code></em> specifies if symbols are
387 case sensitive (the default is <a class="link" href="glib-Standard-Macros.html#FALSE:CAPS" title="FALSE"><code class="literal">FALSE</code></a>).
388 </p>
389 <p>
390 <em class="structfield"><code>skip_comment_multi</code></em> specifies if multi-line
391 comments are skipped and not returned as tokens (the default is <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a>).
392 </p>
393 <p>
394 <em class="structfield"><code>skip_comment_single</code></em> specifies if single-line
395 comments are skipped and not returned as tokens (the default is <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a>).
396 </p>
397 <p>
398 <em class="structfield"><code>scan_comment_multi</code></em> specifies if multi-line
399 comments are recognized (the default is <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a>).
400 </p>
401 <p>
402 <em class="structfield"><code>scan_identifier</code></em> specifies if identifiers
403 are recognized (the default is <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a>).
404 </p>
405 <p>
406 <em class="structfield"><code>scan_identifier_1char</code></em> specifies if single-character
407 identifiers are recognized (the default is <a class="link" href="glib-Standard-Macros.html#FALSE:CAPS" title="FALSE"><code class="literal">FALSE</code></a>).
408 </p>
409 <p>
410 <em class="structfield"><code>scan_identifier_NULL</code></em> specifies if
411 <code class="literal">NULL</code> is reported as <span class="type">G_TOKEN_IDENTIFIER_NULL</span>.
412 (the default is <a class="link" href="glib-Standard-Macros.html#FALSE:CAPS" title="FALSE"><code class="literal">FALSE</code></a>).
413 </p>
414 <p>
415 <em class="structfield"><code>scan_symbols</code></em> specifies if symbols are
416 recognized (the default is <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a>).
417 </p>
418 <p>
419 <em class="structfield"><code>scan_binary</code></em> specifies if binary numbers
420 are recognized (the default is <a class="link" href="glib-Standard-Macros.html#FALSE:CAPS" title="FALSE"><code class="literal">FALSE</code></a>).
421 </p>
422 <p>
423 <em class="structfield"><code>scan_octal</code></em> specifies if octal numbers
424 are recognized (the default is <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a>).
425 </p>
426 <p>
427 <em class="structfield"><code>scan_float</code></em> specifies if floating point numbers
428 are recognized (the default is <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a>).
429 </p>
430 <p>
431 <em class="structfield"><code>scan_hex</code></em> specifies if hexadecimal numbers
432 are recognized (the default is <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a>).
433 </p>
434 <p>
435 <em class="structfield"><code>scan_hex_dollar</code></em> specifies if '$' is recognized
436 as a prefix for hexadecimal numbers (the default is <a class="link" href="glib-Standard-Macros.html#FALSE:CAPS" title="FALSE"><code class="literal">FALSE</code></a>).
437 </p>
438 <p>
439 <em class="structfield"><code>scan_string_sq</code></em> specifies if strings can be
440 enclosed in single quotes (the default is <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a>).
441 </p>
442 <p>
443 <em class="structfield"><code>scan_string_dq</code></em> specifies if strings can be
444 enclosed in double quotes (the default is <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a>).
445 </p>
446 <p>
447 <em class="structfield"><code>numbers_2_int</code></em> specifies if binary, octal and
448 hexadecimal numbers are reported as <span class="type">G_TOKEN_INT</span> (the default is <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a>).
449 </p>
450 <p>
451 <em class="structfield"><code>int_2_float</code></em> specifies if all numbers are
452 reported as <span class="type">G_TOKEN_FLOAT</span> (the default is <a class="link" href="glib-Standard-Macros.html#FALSE:CAPS" title="FALSE"><code class="literal">FALSE</code></a>).
453 </p>
454 <p>
455 <em class="structfield"><code>identifier_2_string</code></em> specifies if identifiers
456 are reported as strings (the default is <a class="link" href="glib-Standard-Macros.html#FALSE:CAPS" title="FALSE"><code class="literal">FALSE</code></a>).
457 </p>
458 <p>
459 <em class="structfield"><code>char_2_token</code></em> specifies if characters
460 are reported by setting <code class="literal">token = ch</code> or as <span class="type">G_TOKEN_CHAR</span>
461 (the default is <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a>).
462 </p>
463 <p>
464 <em class="structfield"><code>symbol_2_token</code></em> specifies if symbols
465 are reported by setting <code class="literal">token = v_symbol</code> or as
466 <span class="type">G_TOKEN_SYMBOL</span> (the default is <a class="link" href="glib-Standard-Macros.html#FALSE:CAPS" title="FALSE"><code class="literal">FALSE</code></a>).
467 </p>
468 <p>
469 <em class="structfield"><code>scope_0_fallback</code></em> specifies if a symbol
470 is searched for in the default scope in addition to the current scope
471 (the default is <a class="link" href="glib-Standard-Macros.html#FALSE:CAPS" title="FALSE"><code class="literal">FALSE</code></a>).
472 </p>
473 </div>
474 <hr>
475 <div class="refsect2" title="g_scanner_new ()">
476 <a name="g-scanner-new"></a><h3>g_scanner_new ()</h3>
477 <pre class="programlisting"><a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a>*           g_scanner_new                       (const <a class="link" href="glib-Lexical-Scanner.html#GScannerConfig" title="GScannerConfig"><span class="returnvalue">GScannerConfig</span></a> *config_templ);</pre>
478 <p>
479 Creates a new <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
480 The <em class="parameter"><code>config_templ</code></em> structure specifies the initial settings of the scanner,
481 which are copied into the <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a> <em class="structfield"><code>config</code></em> field.
482 If you pass <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a> then the default settings are used.
483 </p>
484 <div class="variablelist"><table border="0">
485 <col align="left" valign="top">
486 <tbody>
487 <tr>
488 <td><p><span class="term"><em class="parameter"><code>config_templ</code></em> :</span></p></td>
489 <td>the initial scanner settings.
490 </td>
491 </tr>
492 <tr>
493 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
494 <td>the new <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
495 </td>
496 </tr>
497 </tbody>
498 </table></div>
499 </div>
500 <hr>
501 <div class="refsect2" title="g_scanner_destroy ()">
502 <a name="g-scanner-destroy"></a><h3>g_scanner_destroy ()</h3>
503 <pre class="programlisting"><span class="returnvalue">void</span>                g_scanner_destroy                   (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner);</pre>
504 <p>
505 Frees all memory used by the <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
506 </p>
507 <div class="variablelist"><table border="0">
508 <col align="left" valign="top">
509 <tbody><tr>
510 <td><p><span class="term"><em class="parameter"><code>scanner</code></em> :</span></p></td>
511 <td>a <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
512 </td>
513 </tr></tbody>
514 </table></div>
515 </div>
516 <hr>
517 <div class="refsect2" title="g_scanner_input_file ()">
518 <a name="g-scanner-input-file"></a><h3>g_scanner_input_file ()</h3>
519 <pre class="programlisting"><span class="returnvalue">void</span>                g_scanner_input_file                (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner,
520                                                          <a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="returnvalue">gint</span></a> input_fd);</pre>
521 <p>
522 Prepares to scan a file.
523 </p>
524 <div class="variablelist"><table border="0">
525 <col align="left" valign="top">
526 <tbody>
527 <tr>
528 <td><p><span class="term"><em class="parameter"><code>scanner</code></em> :</span></p></td>
529 <td>a <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
530 </td>
531 </tr>
532 <tr>
533 <td><p><span class="term"><em class="parameter"><code>input_fd</code></em> :</span></p></td>
534 <td>a file descriptor.
535 </td>
536 </tr>
537 </tbody>
538 </table></div>
539 </div>
540 <hr>
541 <div class="refsect2" title="g_scanner_sync_file_offset ()">
542 <a name="g-scanner-sync-file-offset"></a><h3>g_scanner_sync_file_offset ()</h3>
543 <pre class="programlisting"><span class="returnvalue">void</span>                g_scanner_sync_file_offset          (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner);</pre>
544 <p>
545 Rewinds the filedescriptor to the current buffer position and blows
546 the file read ahead buffer. This is useful for third party uses of
547 the scanners filedescriptor, which hooks onto the current scanning
548 position.
549 </p>
550 <div class="variablelist"><table border="0">
551 <col align="left" valign="top">
552 <tbody><tr>
553 <td><p><span class="term"><em class="parameter"><code>scanner</code></em> :</span></p></td>
554 <td>a <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
555 </td>
556 </tr></tbody>
557 </table></div>
558 </div>
559 <hr>
560 <div class="refsect2" title="g_scanner_input_text ()">
561 <a name="g-scanner-input-text"></a><h3>g_scanner_input_text ()</h3>
562 <pre class="programlisting"><span class="returnvalue">void</span>                g_scanner_input_text                (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner,
563                                                          const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *text,
564                                                          <a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="returnvalue">guint</span></a> text_len);</pre>
565 <p>
566 Prepares to scan a text buffer.
567 </p>
568 <div class="variablelist"><table border="0">
569 <col align="left" valign="top">
570 <tbody>
571 <tr>
572 <td><p><span class="term"><em class="parameter"><code>scanner</code></em> :</span></p></td>
573 <td>a <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
574 </td>
575 </tr>
576 <tr>
577 <td><p><span class="term"><em class="parameter"><code>text</code></em> :</span></p></td>
578 <td>the text buffer to scan.
579 </td>
580 </tr>
581 <tr>
582 <td><p><span class="term"><em class="parameter"><code>text_len</code></em> :</span></p></td>
583 <td>the length of the text buffer.
584 </td>
585 </tr>
586 </tbody>
587 </table></div>
588 </div>
589 <hr>
590 <div class="refsect2" title="g_scanner_peek_next_token ()">
591 <a name="g-scanner-peek-next-token"></a><h3>g_scanner_peek_next_token ()</h3>
592 <pre class="programlisting"><a class="link" href="glib-Lexical-Scanner.html#GTokenType" title="enum GTokenType"><span class="returnvalue">GTokenType</span></a>          g_scanner_peek_next_token           (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner);</pre>
593 <p>
594 Parses the next token, without removing it from the input stream.
595 The token data is placed in the
596 <em class="structfield"><code>next_token</code></em>,
597 <em class="structfield"><code>next_value</code></em>,
598 <em class="structfield"><code>next_line</code></em>, and
599 <em class="structfield"><code>next_position</code></em> fields of the <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a> structure.
600 </p>
601 <p>
602 Note that, while the token is not removed from the input stream (i.e.
603 the next call to <a class="link" href="glib-Lexical-Scanner.html#g-scanner-get-next-token" title="g_scanner_get_next_token ()"><code class="function">g_scanner_get_next_token()</code></a> will return the same token),
604 it will not be reevaluated. This can lead to surprising results when
605 changing scope or the scanner configuration after peeking the next token.
606 Getting the next token after switching the scope or configuration will
607 return whatever was peeked before, regardless of any symbols that may
608 have been added or removed in the new scope.
609 </p>
610 <div class="variablelist"><table border="0">
611 <col align="left" valign="top">
612 <tbody>
613 <tr>
614 <td><p><span class="term"><em class="parameter"><code>scanner</code></em> :</span></p></td>
615 <td>a <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
616 </td>
617 </tr>
618 <tr>
619 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
620 <td>the type of the token.
621 </td>
622 </tr>
623 </tbody>
624 </table></div>
625 </div>
626 <hr>
627 <div class="refsect2" title="g_scanner_get_next_token ()">
628 <a name="g-scanner-get-next-token"></a><h3>g_scanner_get_next_token ()</h3>
629 <pre class="programlisting"><a class="link" href="glib-Lexical-Scanner.html#GTokenType" title="enum GTokenType"><span class="returnvalue">GTokenType</span></a>          g_scanner_get_next_token            (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner);</pre>
630 <p>
631 Parses the next token just like <a class="link" href="glib-Lexical-Scanner.html#g-scanner-peek-next-token" title="g_scanner_peek_next_token ()"><code class="function">g_scanner_peek_next_token()</code></a> and also
632 removes it from the input stream.
633 The token data is placed in the
634 <em class="structfield"><code>token</code></em>,
635 <em class="structfield"><code>value</code></em>,
636 <em class="structfield"><code>line</code></em>, and
637 <em class="structfield"><code>position</code></em> fields of the <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a> structure.
638 </p>
639 <div class="variablelist"><table border="0">
640 <col align="left" valign="top">
641 <tbody>
642 <tr>
643 <td><p><span class="term"><em class="parameter"><code>scanner</code></em> :</span></p></td>
644 <td>a <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
645 </td>
646 </tr>
647 <tr>
648 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
649 <td>the type of the token.
650 </td>
651 </tr>
652 </tbody>
653 </table></div>
654 </div>
655 <hr>
656 <div class="refsect2" title="g_scanner_eof ()">
657 <a name="g-scanner-eof"></a><h3>g_scanner_eof ()</h3>
658 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a>            g_scanner_eof                       (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner);</pre>
659 <p>
660 Returns <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> if the scanner has reached the end of the file or text buffer.
661 </p>
662 <div class="variablelist"><table border="0">
663 <col align="left" valign="top">
664 <tbody>
665 <tr>
666 <td><p><span class="term"><em class="parameter"><code>scanner</code></em> :</span></p></td>
667 <td>a <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
668 </td>
669 </tr>
670 <tr>
671 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
672 <td>
673 <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> if the scanner has reached the end of the file or text buffer.
674 </td>
675 </tr>
676 </tbody>
677 </table></div>
678 </div>
679 <hr>
680 <div class="refsect2" title="g_scanner_cur_line ()">
681 <a name="g-scanner-cur-line"></a><h3>g_scanner_cur_line ()</h3>
682 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="returnvalue">guint</span></a>               g_scanner_cur_line                  (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner);</pre>
683 <p>
684 Returns the current line in the input stream (counting from 1).
685 This is the line of the last token parsed via <a class="link" href="glib-Lexical-Scanner.html#g-scanner-get-next-token" title="g_scanner_get_next_token ()"><code class="function">g_scanner_get_next_token()</code></a>.
686 </p>
687 <div class="variablelist"><table border="0">
688 <col align="left" valign="top">
689 <tbody>
690 <tr>
691 <td><p><span class="term"><em class="parameter"><code>scanner</code></em> :</span></p></td>
692 <td>a <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
693 </td>
694 </tr>
695 <tr>
696 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
697 <td>the current line.
698 </td>
699 </tr>
700 </tbody>
701 </table></div>
702 </div>
703 <hr>
704 <div class="refsect2" title="g_scanner_cur_position ()">
705 <a name="g-scanner-cur-position"></a><h3>g_scanner_cur_position ()</h3>
706 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="returnvalue">guint</span></a>               g_scanner_cur_position              (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner);</pre>
707 <p>
708 Returns the current position in the current line (counting from 0).
709 This is the position of the last token parsed via <a class="link" href="glib-Lexical-Scanner.html#g-scanner-get-next-token" title="g_scanner_get_next_token ()"><code class="function">g_scanner_get_next_token()</code></a>.
710 </p>
711 <div class="variablelist"><table border="0">
712 <col align="left" valign="top">
713 <tbody>
714 <tr>
715 <td><p><span class="term"><em class="parameter"><code>scanner</code></em> :</span></p></td>
716 <td>a <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
717 </td>
718 </tr>
719 <tr>
720 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
721 <td>the current position on the line.
722 </td>
723 </tr>
724 </tbody>
725 </table></div>
726 </div>
727 <hr>
728 <div class="refsect2" title="g_scanner_cur_token ()">
729 <a name="g-scanner-cur-token"></a><h3>g_scanner_cur_token ()</h3>
730 <pre class="programlisting"><a class="link" href="glib-Lexical-Scanner.html#GTokenType" title="enum GTokenType"><span class="returnvalue">GTokenType</span></a>          g_scanner_cur_token                 (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner);</pre>
731 <p>
732 Gets the current token type.
733 This is simply the <em class="structfield"><code>token</code></em> field in the <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>
734 structure.
735 </p>
736 <div class="variablelist"><table border="0">
737 <col align="left" valign="top">
738 <tbody>
739 <tr>
740 <td><p><span class="term"><em class="parameter"><code>scanner</code></em> :</span></p></td>
741 <td>a <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
742 </td>
743 </tr>
744 <tr>
745 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
746 <td>the current token type.
747 </td>
748 </tr>
749 </tbody>
750 </table></div>
751 </div>
752 <hr>
753 <div class="refsect2" title="g_scanner_cur_value ()">
754 <a name="g-scanner-cur-value"></a><h3>g_scanner_cur_value ()</h3>
755 <pre class="programlisting"><a class="link" href="glib-Lexical-Scanner.html#GTokenValue" title="union GTokenValue"><span class="returnvalue">GTokenValue</span></a>         g_scanner_cur_value                 (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner);</pre>
756 <p>
757 Gets the current token value.
758 This is simply the <em class="structfield"><code>value</code></em> field in the <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>
759 structure.
760 </p>
761 <div class="variablelist"><table border="0">
762 <col align="left" valign="top">
763 <tbody>
764 <tr>
765 <td><p><span class="term"><em class="parameter"><code>scanner</code></em> :</span></p></td>
766 <td>a <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
767 </td>
768 </tr>
769 <tr>
770 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
771 <td>the current token value.
772 </td>
773 </tr>
774 </tbody>
775 </table></div>
776 </div>
777 <hr>
778 <div class="refsect2" title="g_scanner_set_scope ()">
779 <a name="g-scanner-set-scope"></a><h3>g_scanner_set_scope ()</h3>
780 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="returnvalue">guint</span></a>               g_scanner_set_scope                 (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner,
781                                                          <a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="returnvalue">guint</span></a> scope_id);</pre>
782 <p>
783 Sets the current scope.
784 </p>
785 <div class="variablelist"><table border="0">
786 <col align="left" valign="top">
787 <tbody>
788 <tr>
789 <td><p><span class="term"><em class="parameter"><code>scanner</code></em> :</span></p></td>
790 <td>a <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
791 </td>
792 </tr>
793 <tr>
794 <td><p><span class="term"><em class="parameter"><code>scope_id</code></em> :</span></p></td>
795 <td>the new scope id.
796 </td>
797 </tr>
798 <tr>
799 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
800 <td>the old scope id.
801 </td>
802 </tr>
803 </tbody>
804 </table></div>
805 </div>
806 <hr>
807 <div class="refsect2" title="g_scanner_scope_add_symbol ()">
808 <a name="g-scanner-scope-add-symbol"></a><h3>g_scanner_scope_add_symbol ()</h3>
809 <pre class="programlisting"><span class="returnvalue">void</span>                g_scanner_scope_add_symbol          (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner,
810                                                          <a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="returnvalue">guint</span></a> scope_id,
811                                                          const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *symbol,
812                                                          <a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="returnvalue">gpointer</span></a> value);</pre>
813 <p>
814 Adds a symbol to the given scope.
815 </p>
816 <div class="variablelist"><table border="0">
817 <col align="left" valign="top">
818 <tbody>
819 <tr>
820 <td><p><span class="term"><em class="parameter"><code>scanner</code></em> :</span></p></td>
821 <td>a <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
822 </td>
823 </tr>
824 <tr>
825 <td><p><span class="term"><em class="parameter"><code>scope_id</code></em> :</span></p></td>
826 <td>the scope id.
827 </td>
828 </tr>
829 <tr>
830 <td><p><span class="term"><em class="parameter"><code>symbol</code></em> :</span></p></td>
831 <td>the symbol to add.
832 </td>
833 </tr>
834 <tr>
835 <td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
836 <td>the value of the symbol.
837 </td>
838 </tr>
839 </tbody>
840 </table></div>
841 </div>
842 <hr>
843 <div class="refsect2" title="g_scanner_scope_foreach_symbol ()">
844 <a name="g-scanner-scope-foreach-symbol"></a><h3>g_scanner_scope_foreach_symbol ()</h3>
845 <pre class="programlisting"><span class="returnvalue">void</span>                g_scanner_scope_foreach_symbol      (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner,
846                                                          <a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="returnvalue">guint</span></a> scope_id,
847                                                          <a class="link" href="glib-Hash-Tables.html#GHFunc" title="GHFunc ()"><span class="returnvalue">GHFunc</span></a> func,
848                                                          <a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="returnvalue">gpointer</span></a> user_data);</pre>
849 <p>
850 Calls the given function for each of the symbol/value pairs in the
851 given scope of the <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>. The function is passed the symbol and
852 value of each pair, and the given <em class="parameter"><code>user_data</code></em> parameter.
853 </p>
854 <div class="variablelist"><table border="0">
855 <col align="left" valign="top">
856 <tbody>
857 <tr>
858 <td><p><span class="term"><em class="parameter"><code>scanner</code></em> :</span></p></td>
859 <td>a <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
860 </td>
861 </tr>
862 <tr>
863 <td><p><span class="term"><em class="parameter"><code>scope_id</code></em> :</span></p></td>
864 <td>the scope id.
865 </td>
866 </tr>
867 <tr>
868 <td><p><span class="term"><em class="parameter"><code>func</code></em> :</span></p></td>
869 <td>the function to call for each symbol/value pair.
870 </td>
871 </tr>
872 <tr>
873 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
874 <td>user data to pass to the function.
875 </td>
876 </tr>
877 </tbody>
878 </table></div>
879 </div>
880 <hr>
881 <div class="refsect2" title="g_scanner_scope_lookup_symbol ()">
882 <a name="g-scanner-scope-lookup-symbol"></a><h3>g_scanner_scope_lookup_symbol ()</h3>
883 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="returnvalue">gpointer</span></a>            g_scanner_scope_lookup_symbol       (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner,
884                                                          <a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="returnvalue">guint</span></a> scope_id,
885                                                          const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *symbol);</pre>
886 <p>
887 Looks up a symbol in a scope and return its value. If the
888 symbol is not bound in the scope, <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a> is returned.
889 </p>
890 <div class="variablelist"><table border="0">
891 <col align="left" valign="top">
892 <tbody>
893 <tr>
894 <td><p><span class="term"><em class="parameter"><code>scanner</code></em> :</span></p></td>
895 <td>a <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
896 </td>
897 </tr>
898 <tr>
899 <td><p><span class="term"><em class="parameter"><code>scope_id</code></em> :</span></p></td>
900 <td>the scope id.
901 </td>
902 </tr>
903 <tr>
904 <td><p><span class="term"><em class="parameter"><code>symbol</code></em> :</span></p></td>
905 <td>the symbol to look up.
906 </td>
907 </tr>
908 <tr>
909 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
910 <td>the value of <em class="parameter"><code>symbol</code></em> in the given scope, or <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a>
911 if <em class="parameter"><code>symbol</code></em> is not bound in the given scope.
912 </td>
913 </tr>
914 </tbody>
915 </table></div>
916 </div>
917 <hr>
918 <div class="refsect2" title="g_scanner_scope_remove_symbol ()">
919 <a name="g-scanner-scope-remove-symbol"></a><h3>g_scanner_scope_remove_symbol ()</h3>
920 <pre class="programlisting"><span class="returnvalue">void</span>                g_scanner_scope_remove_symbol       (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner,
921                                                          <a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="returnvalue">guint</span></a> scope_id,
922                                                          const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *symbol);</pre>
923 <p>
924 Removes a symbol from a scope.
925 </p>
926 <div class="variablelist"><table border="0">
927 <col align="left" valign="top">
928 <tbody>
929 <tr>
930 <td><p><span class="term"><em class="parameter"><code>scanner</code></em> :</span></p></td>
931 <td>a <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
932 </td>
933 </tr>
934 <tr>
935 <td><p><span class="term"><em class="parameter"><code>scope_id</code></em> :</span></p></td>
936 <td>the scope id.
937 </td>
938 </tr>
939 <tr>
940 <td><p><span class="term"><em class="parameter"><code>symbol</code></em> :</span></p></td>
941 <td>the symbol to remove.
942 </td>
943 </tr>
944 </tbody>
945 </table></div>
946 </div>
947 <hr>
948 <div class="refsect2" title="g_scanner_add_symbol()">
949 <a name="g-scanner-add-symbol"></a><h3>g_scanner_add_symbol()</h3>
950 <pre class="programlisting">#define             g_scanner_add_symbol( scanner, symbol, value )</pre>
951 <div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;">
952 <h3 class="title">Warning</h3>
953 <p><code class="literal">g_scanner_add_symbol</code> has been deprecated since version 2.2 and should not be used in newly-written code. Use <a class="link" href="glib-Lexical-Scanner.html#g-scanner-scope-add-symbol" title="g_scanner_scope_add_symbol ()"><code class="function">g_scanner_scope_add_symbol()</code></a> instead.</p>
954 </div>
955 <p>
956 Adds a symbol to the default scope.
957 </p>
958 <div class="variablelist"><table border="0">
959 <col align="left" valign="top">
960 <tbody>
961 <tr>
962 <td><p><span class="term"><em class="parameter"><code>scanner</code></em> :</span></p></td>
963 <td>a <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
964 </td>
965 </tr>
966 <tr>
967 <td><p><span class="term"><em class="parameter"><code>symbol</code></em> :</span></p></td>
968 <td>the symbol to add.
969 </td>
970 </tr>
971 <tr>
972 <td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
973 <td>the value of the symbol.
974 </td>
975 </tr>
976 </tbody>
977 </table></div>
978 </div>
979 <hr>
980 <div class="refsect2" title="g_scanner_remove_symbol()">
981 <a name="g-scanner-remove-symbol"></a><h3>g_scanner_remove_symbol()</h3>
982 <pre class="programlisting">#define             g_scanner_remove_symbol( scanner, symbol )</pre>
983 <div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;">
984 <h3 class="title">Warning</h3>
985 <p><code class="literal">g_scanner_remove_symbol</code> has been deprecated since version 2.2 and should not be used in newly-written code. Use <a class="link" href="glib-Lexical-Scanner.html#g-scanner-scope-remove-symbol" title="g_scanner_scope_remove_symbol ()"><code class="function">g_scanner_scope_remove_symbol()</code></a> instead.</p>
986 </div>
987 <p>
988 Removes a symbol from the default scope.
989 </p>
990 <div class="variablelist"><table border="0">
991 <col align="left" valign="top">
992 <tbody>
993 <tr>
994 <td><p><span class="term"><em class="parameter"><code>scanner</code></em> :</span></p></td>
995 <td>a <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
996 </td>
997 </tr>
998 <tr>
999 <td><p><span class="term"><em class="parameter"><code>symbol</code></em> :</span></p></td>
1000 <td>the symbol to remove.
1001 </td>
1002 </tr>
1003 </tbody>
1004 </table></div>
1005 </div>
1006 <hr>
1007 <div class="refsect2" title="g_scanner_foreach_symbol()">
1008 <a name="g-scanner-foreach-symbol"></a><h3>g_scanner_foreach_symbol()</h3>
1009 <pre class="programlisting">#define             g_scanner_foreach_symbol( scanner, func, data )</pre>
1010 <div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;">
1011 <h3 class="title">Warning</h3>
1012 <p><code class="literal">g_scanner_foreach_symbol</code> has been deprecated since version 2.2 and should not be used in newly-written code. Use <a class="link" href="glib-Lexical-Scanner.html#g-scanner-scope-foreach-symbol" title="g_scanner_scope_foreach_symbol ()"><code class="function">g_scanner_scope_foreach_symbol()</code></a> instead.</p>
1013 </div>
1014 <p>
1015 Calls a function for each symbol in the default scope.
1016 </p>
1017 <div class="variablelist"><table border="0">
1018 <col align="left" valign="top">
1019 <tbody>
1020 <tr>
1021 <td><p><span class="term"><em class="parameter"><code>scanner</code></em> :</span></p></td>
1022 <td>a <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
1023 </td>
1024 </tr>
1025 <tr>
1026 <td><p><span class="term"><em class="parameter"><code>func</code></em> :</span></p></td>
1027 <td>the function to call with each symbol.
1028 </td>
1029 </tr>
1030 <tr>
1031 <td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td>
1032 <td>data to pass to the function.
1033 </td>
1034 </tr>
1035 </tbody>
1036 </table></div>
1037 </div>
1038 <hr>
1039 <div class="refsect2" title="g_scanner_freeze_symbol_table()">
1040 <a name="g-scanner-freeze-symbol-table"></a><h3>g_scanner_freeze_symbol_table()</h3>
1041 <pre class="programlisting">#define             g_scanner_freeze_symbol_table(scanner)</pre>
1042 <div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;">
1043 <h3 class="title">Warning</h3>
1044 <p><code class="literal">g_scanner_freeze_symbol_table</code> has been deprecated since version 2.2 and should not be used in newly-written code. This macro does nothing.</p>
1045 </div>
1046 <p>
1047 There is no reason to use this macro, since it does nothing.
1048 </p>
1049 <div class="variablelist"><table border="0">
1050 <col align="left" valign="top">
1051 <tbody><tr>
1052 <td><p><span class="term"><em class="parameter"><code>scanner</code></em> :</span></p></td>
1053 <td>a <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
1054 </td>
1055 </tr></tbody>
1056 </table></div>
1057 </div>
1058 <hr>
1059 <div class="refsect2" title="g_scanner_thaw_symbol_table()">
1060 <a name="g-scanner-thaw-symbol-table"></a><h3>g_scanner_thaw_symbol_table()</h3>
1061 <pre class="programlisting">#define             g_scanner_thaw_symbol_table(scanner)</pre>
1062 <div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;">
1063 <h3 class="title">Warning</h3>
1064 <p><code class="literal">g_scanner_thaw_symbol_table</code> has been deprecated since version 2.2 and should not be used in newly-written code. This macro does nothing.</p>
1065 </div>
1066 <p>
1067 There is no reason to use this macro, since it does nothing.
1068 </p>
1069 <div class="variablelist"><table border="0">
1070 <col align="left" valign="top">
1071 <tbody><tr>
1072 <td><p><span class="term"><em class="parameter"><code>scanner</code></em> :</span></p></td>
1073 <td>a <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
1074 </td>
1075 </tr></tbody>
1076 </table></div>
1077 </div>
1078 <hr>
1079 <div class="refsect2" title="g_scanner_lookup_symbol ()">
1080 <a name="g-scanner-lookup-symbol"></a><h3>g_scanner_lookup_symbol ()</h3>
1081 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="returnvalue">gpointer</span></a>            g_scanner_lookup_symbol             (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner,
1082                                                          const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *symbol);</pre>
1083 <p>
1084 Looks up a symbol in the current scope and return its value. If the
1085 symbol is not bound in the current scope, <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a> is returned.
1086 </p>
1087 <div class="variablelist"><table border="0">
1088 <col align="left" valign="top">
1089 <tbody>
1090 <tr>
1091 <td><p><span class="term"><em class="parameter"><code>scanner</code></em> :</span></p></td>
1092 <td>a <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
1093 </td>
1094 </tr>
1095 <tr>
1096 <td><p><span class="term"><em class="parameter"><code>symbol</code></em> :</span></p></td>
1097 <td>the symbol to look up.
1098 </td>
1099 </tr>
1100 <tr>
1101 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1102 <td>the value of <em class="parameter"><code>symbol</code></em> in the current scope, or <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a>
1103 if <em class="parameter"><code>symbol</code></em> is not bound in the current scope.
1104 </td>
1105 </tr>
1106 </tbody>
1107 </table></div>
1108 </div>
1109 <hr>
1110 <div class="refsect2" title="g_scanner_warn ()">
1111 <a name="g-scanner-warn"></a><h3>g_scanner_warn ()</h3>
1112 <pre class="programlisting"><span class="returnvalue">void</span>                g_scanner_warn                      (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner,
1113                                                          const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *format,
1114                                                          ...);</pre>
1115 <p>
1116 Outputs a warning message, via the <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a> message handler.
1117 </p>
1118 <div class="variablelist"><table border="0">
1119 <col align="left" valign="top">
1120 <tbody>
1121 <tr>
1122 <td><p><span class="term"><em class="parameter"><code>scanner</code></em> :</span></p></td>
1123 <td>a <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
1124 </td>
1125 </tr>
1126 <tr>
1127 <td><p><span class="term"><em class="parameter"><code>format</code></em> :</span></p></td>
1128 <td>the message format. See the <code class="function"><code class="function">printf()</code></code>
1129 documentation.
1130 </td>
1131 </tr>
1132 <tr>
1133 <td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td>
1134 <td>the parameters to insert into the format string.
1135 </td>
1136 </tr>
1137 </tbody>
1138 </table></div>
1139 </div>
1140 <hr>
1141 <div class="refsect2" title="g_scanner_error ()">
1142 <a name="g-scanner-error"></a><h3>g_scanner_error ()</h3>
1143 <pre class="programlisting"><span class="returnvalue">void</span>                g_scanner_error                     (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner,
1144                                                          const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *format,
1145                                                          ...);</pre>
1146 <p>
1147 Outputs an error message, via the <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a> message handler.
1148 </p>
1149 <div class="variablelist"><table border="0">
1150 <col align="left" valign="top">
1151 <tbody>
1152 <tr>
1153 <td><p><span class="term"><em class="parameter"><code>scanner</code></em> :</span></p></td>
1154 <td>a <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
1155 </td>
1156 </tr>
1157 <tr>
1158 <td><p><span class="term"><em class="parameter"><code>format</code></em> :</span></p></td>
1159 <td>the message format. See the <code class="function"><code class="function">printf()</code></code>
1160 documentation.
1161 </td>
1162 </tr>
1163 <tr>
1164 <td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td>
1165 <td>the parameters to insert into the format string.
1166 </td>
1167 </tr>
1168 </tbody>
1169 </table></div>
1170 </div>
1171 <hr>
1172 <div class="refsect2" title="g_scanner_unexp_token ()">
1173 <a name="g-scanner-unexp-token"></a><h3>g_scanner_unexp_token ()</h3>
1174 <pre class="programlisting"><span class="returnvalue">void</span>                g_scanner_unexp_token               (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner,
1175                                                          <a class="link" href="glib-Lexical-Scanner.html#GTokenType" title="enum GTokenType"><span class="returnvalue">GTokenType</span></a> expected_token,
1176                                                          const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *identifier_spec,
1177                                                          const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *symbol_spec,
1178                                                          const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *symbol_name,
1179                                                          const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *message,
1180                                                          <a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="returnvalue">gint</span></a> is_error);</pre>
1181 <p>
1182 Outputs a message through the scanner's msg_handler, resulting from an
1183 unexpected token in the input stream.
1184 Note that you should not call <a class="link" href="glib-Lexical-Scanner.html#g-scanner-peek-next-token" title="g_scanner_peek_next_token ()"><code class="function">g_scanner_peek_next_token()</code></a> followed by
1185 <a class="link" href="glib-Lexical-Scanner.html#g-scanner-unexp-token" title="g_scanner_unexp_token ()"><code class="function">g_scanner_unexp_token()</code></a> without an intermediate call to
1186 <a class="link" href="glib-Lexical-Scanner.html#g-scanner-get-next-token" title="g_scanner_get_next_token ()"><code class="function">g_scanner_get_next_token()</code></a>, as <a class="link" href="glib-Lexical-Scanner.html#g-scanner-unexp-token" title="g_scanner_unexp_token ()"><code class="function">g_scanner_unexp_token()</code></a> evaluates the
1187 scanner's current token (not the peeked token) to construct part
1188 of the message.
1189 </p>
1190 <div class="variablelist"><table border="0">
1191 <col align="left" valign="top">
1192 <tbody>
1193 <tr>
1194 <td><p><span class="term"><em class="parameter"><code>scanner</code></em> :</span></p></td>
1195 <td>a <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
1196 </td>
1197 </tr>
1198 <tr>
1199 <td><p><span class="term"><em class="parameter"><code>expected_token</code></em> :</span></p></td>
1200 <td>the expected token.
1201 </td>
1202 </tr>
1203 <tr>
1204 <td><p><span class="term"><em class="parameter"><code>identifier_spec</code></em> :</span></p></td>
1205 <td>a string describing how the scanner's user refers to
1206                   identifiers (<a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a> defaults to "identifier").
1207                   This is used if <em class="parameter"><code>expected_token</code></em> is <span class="type">G_TOKEN_IDENTIFIER</span>
1208                   or <span class="type">G_TOKEN_IDENTIFIER_NULL</span>.
1209 </td>
1210 </tr>
1211 <tr>
1212 <td><p><span class="term"><em class="parameter"><code>symbol_spec</code></em> :</span></p></td>
1213 <td>a string describing how the scanner's user refers to
1214               symbols (<a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a> defaults to "symbol").
1215               This is used if <em class="parameter"><code>expected_token</code></em> is <span class="type">G_TOKEN_SYMBOL</span> or
1216               any token value greater than <span class="type">G_TOKEN_LAST</span>.
1217 </td>
1218 </tr>
1219 <tr>
1220 <td><p><span class="term"><em class="parameter"><code>symbol_name</code></em> :</span></p></td>
1221 <td>the name of the symbol, if the scanner's current token
1222               is a symbol.
1223 </td>
1224 </tr>
1225 <tr>
1226 <td><p><span class="term"><em class="parameter"><code>message</code></em> :</span></p></td>
1227 <td>a message string to output at the end of the warning/error, or <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a>.
1228 </td>
1229 </tr>
1230 <tr>
1231 <td><p><span class="term"><em class="parameter"><code>is_error</code></em> :</span></p></td>
1232 <td>if <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> it is output as an error. If <a class="link" href="glib-Standard-Macros.html#FALSE:CAPS" title="FALSE"><code class="literal">FALSE</code></a> it is output as a
1233            warning.
1234 </td>
1235 </tr>
1236 </tbody>
1237 </table></div>
1238 </div>
1239 <hr>
1240 <div class="refsect2" title="GScannerMsgFunc ()">
1241 <a name="GScannerMsgFunc"></a><h3>GScannerMsgFunc ()</h3>
1242 <pre class="programlisting"><span class="returnvalue">void</span>                (*GScannerMsgFunc)                  (<a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="returnvalue">GScanner</span></a> *scanner,
1243                                                          <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> *message,
1244                                                          <a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> error);</pre>
1245 <p>
1246 Specifies the type of the message handler function.
1247 </p>
1248 <div class="variablelist"><table border="0">
1249 <col align="left" valign="top">
1250 <tbody>
1251 <tr>
1252 <td><p><span class="term"><em class="parameter"><code>scanner</code></em> :</span></p></td>
1253 <td>a <a class="link" href="glib-Lexical-Scanner.html#GScanner" title="GScanner"><span class="type">GScanner</span></a>.
1254 </td>
1255 </tr>
1256 <tr>
1257 <td><p><span class="term"><em class="parameter"><code>message</code></em> :</span></p></td>
1258 <td>the message.
1259 </td>
1260 </tr>
1261 <tr>
1262 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
1263 <td>
1264 <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> if the message signals an error, <a class="link" href="glib-Standard-Macros.html#FALSE:CAPS" title="FALSE"><code class="literal">FALSE</code></a> if it 
1265   signals a warning.
1266 </td>
1267 </tr>
1268 </tbody>
1269 </table></div>
1270 </div>
1271 <hr>
1272 <div class="refsect2" title="G_CSET_a_2_z">
1273 <a name="G-CSET-a-2-z"></a><h3>G_CSET_a_2_z</h3>
1274 <pre class="programlisting">#define G_CSET_a_2_z "abcdefghijklmnopqrstuvwxyz"
1275 </pre>
1276 <p>
1277 The set of lowercase ASCII alphabet characters.
1278 Used for specifying valid identifier characters in <a class="link" href="glib-Lexical-Scanner.html#GScannerConfig" title="GScannerConfig"><span class="type">GScannerConfig</span></a>.
1279 </p>
1280 </div>
1281 <hr>
1282 <div class="refsect2" title="G_CSET_A_2_Z">
1283 <a name="G-CSET-A-2-Z:CAPS"></a><h3>G_CSET_A_2_Z</h3>
1284 <pre class="programlisting">#define G_CSET_A_2_Z "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
1285 </pre>
1286 <p>
1287 The set of uppercase ASCII alphabet characters.
1288 Used for specifying valid identifier characters in <a class="link" href="glib-Lexical-Scanner.html#GScannerConfig" title="GScannerConfig"><span class="type">GScannerConfig</span></a>.
1289 </p>
1290 </div>
1291 <hr>
1292 <div class="refsect2" title="G_CSET_DIGITS">
1293 <a name="G-CSET-DIGITS:CAPS"></a><h3>G_CSET_DIGITS</h3>
1294 <pre class="programlisting">#define G_CSET_DIGITS "0123456789"
1295 </pre>
1296 <p>
1297 The set of digits.
1298 Used for specifying valid identifier characters in <a class="link" href="glib-Lexical-Scanner.html#GScannerConfig" title="GScannerConfig"><span class="type">GScannerConfig</span></a>.
1299 </p>
1300 </div>
1301 <hr>
1302 <div class="refsect2" title="G_CSET_LATINC">
1303 <a name="G-CSET-LATINC:CAPS"></a><h3>G_CSET_LATINC</h3>
1304 <pre class="programlisting">#define             G_CSET_LATINC</pre>
1305 <p>
1306 The set of uppercase ISO 8859-1 alphabet characters which are
1307 not ASCII characters.
1308 Used for specifying valid identifier characters in <a class="link" href="glib-Lexical-Scanner.html#GScannerConfig" title="GScannerConfig"><span class="type">GScannerConfig</span></a>.
1309 </p>
1310 </div>
1311 <hr>
1312 <div class="refsect2" title="G_CSET_LATINS">
1313 <a name="G-CSET-LATINS:CAPS"></a><h3>G_CSET_LATINS</h3>
1314 <pre class="programlisting">#define             G_CSET_LATINS</pre>
1315 <p>
1316 The set of lowercase ISO 8859-1 alphabet characters which are
1317 not ASCII characters.
1318 Used for specifying valid identifier characters in <a class="link" href="glib-Lexical-Scanner.html#GScannerConfig" title="GScannerConfig"><span class="type">GScannerConfig</span></a>.
1319 </p>
1320 </div>
1321 <hr>
1322 <div class="refsect2" title="enum GTokenType">
1323 <a name="GTokenType"></a><h3>enum GTokenType</h3>
1324 <pre class="programlisting">typedef enum
1325 {
1326   G_TOKEN_EOF                   =   0,
1327   
1328   G_TOKEN_LEFT_PAREN            = '(',
1329   G_TOKEN_RIGHT_PAREN           = ')',
1330   G_TOKEN_LEFT_CURLY            = '{',
1331   G_TOKEN_RIGHT_CURLY           = '}',
1332   G_TOKEN_LEFT_BRACE            = '[',
1333   G_TOKEN_RIGHT_BRACE           = ']',
1334   G_TOKEN_EQUAL_SIGN            = '=',
1335   G_TOKEN_COMMA                 = ',',
1336   
1337   G_TOKEN_NONE                  = 256,
1338   
1339   G_TOKEN_ERROR,
1340   
1341   G_TOKEN_CHAR,
1342   G_TOKEN_BINARY,
1343   G_TOKEN_OCTAL,
1344   G_TOKEN_INT,
1345   G_TOKEN_HEX,
1346   G_TOKEN_FLOAT,
1347   G_TOKEN_STRING,
1348   
1349   G_TOKEN_SYMBOL,
1350   G_TOKEN_IDENTIFIER,
1351   G_TOKEN_IDENTIFIER_NULL,
1352   
1353   G_TOKEN_COMMENT_SINGLE,
1354   G_TOKEN_COMMENT_MULTI,
1355   G_TOKEN_LAST
1356 } GTokenType;
1357 </pre>
1358 <p>
1359 The possible types of token returned from each <a class="link" href="glib-Lexical-Scanner.html#g-scanner-get-next-token" title="g_scanner_get_next_token ()"><code class="function">g_scanner_get_next_token()</code></a> call.
1360 </p>
1361 <div class="variablelist"><table border="0">
1362 <col align="left" valign="top">
1363 <tbody>
1364 <tr>
1365 <td><p><a name="G-TOKEN-EOF:CAPS"></a><span class="term"><code class="literal">G_TOKEN_EOF</code></span></p></td>
1366 <td>the end of the file.
1367 </td>
1368 </tr>
1369 <tr>
1370 <td><p><a name="G-TOKEN-LEFT-PAREN:CAPS"></a><span class="term"><code class="literal">G_TOKEN_LEFT_PAREN</code></span></p></td>
1371 <td>a '(' character.
1372 </td>
1373 </tr>
1374 <tr>
1375 <td><p><a name="G-TOKEN-LEFT-CURLY:CAPS"></a><span class="term"><code class="literal">G_TOKEN_LEFT_CURLY</code></span></p></td>
1376 <td>a '{' character.
1377 </td>
1378 </tr>
1379 <tr>
1380 <td><p><a name="G-TOKEN-RIGHT-CURLY:CAPS"></a><span class="term"><code class="literal">G_TOKEN_RIGHT_CURLY</code></span></p></td>
1381 <td>a '}' character.
1382 </td>
1383 </tr>
1384 </tbody>
1385 </table></div>
1386 </div>
1387 <hr>
1388 <div class="refsect2" title="union GTokenValue">
1389 <a name="GTokenValue"></a><h3>union GTokenValue</h3>
1390 <pre class="programlisting">union GTokenValue
1391 {
1392   gpointer v_symbol;
1393   gchar         *v_identifier;
1394   gulong v_binary;
1395   gulong v_octal;
1396   gulong v_int;
1397   guint64       v_int64;
1398   gdouble v_float;
1399   gulong v_hex;
1400   gchar         *v_string;
1401   gchar         *v_comment;
1402   guchar v_char;
1403   guint         v_error;
1404 };
1405 </pre>
1406 <p>
1407 A union holding the value of the token.
1408 </p>
1409 </div>
1410 <hr>
1411 <div class="refsect2" title="enum GErrorType">
1412 <a name="GErrorType"></a><h3>enum GErrorType</h3>
1413 <pre class="programlisting">typedef enum
1414 {
1415   G_ERR_UNKNOWN,
1416   G_ERR_UNEXP_EOF,
1417   G_ERR_UNEXP_EOF_IN_STRING,
1418   G_ERR_UNEXP_EOF_IN_COMMENT,
1419   G_ERR_NON_DIGIT_IN_CONST,
1420   G_ERR_DIGIT_RADIX,
1421   G_ERR_FLOAT_RADIX,
1422   G_ERR_FLOAT_MALFORMED
1423 } GErrorType;
1424 </pre>
1425 <p>
1426 The possible errors, used in the <em class="structfield"><code>v_error</code></em> field
1427 of <a class="link" href="glib-Lexical-Scanner.html#GTokenValue" title="union GTokenValue"><span class="type">GTokenValue</span></a>, when the token is a <span class="type">G_TOKEN_ERROR</span>.
1428 </p>
1429 <div class="variablelist"><table border="0">
1430 <col align="left" valign="top">
1431 <tbody>
1432 <tr>
1433 <td><p><a name="G-ERR-UNKNOWN:CAPS"></a><span class="term"><code class="literal">G_ERR_UNKNOWN</code></span></p></td>
1434 <td>unknown error.
1435 </td>
1436 </tr>
1437 <tr>
1438 <td><p><a name="G-ERR-UNEXP-EOF:CAPS"></a><span class="term"><code class="literal">G_ERR_UNEXP_EOF</code></span></p></td>
1439 <td>unexpected end of file.
1440 </td>
1441 </tr>
1442 <tr>
1443 <td><p><a name="G-ERR-UNEXP-EOF-IN-STRING:CAPS"></a><span class="term"><code class="literal">G_ERR_UNEXP_EOF_IN_STRING</code></span></p></td>
1444 <td>unterminated string constant.
1445 </td>
1446 </tr>
1447 <tr>
1448 <td><p><a name="G-ERR-UNEXP-EOF-IN-COMMENT:CAPS"></a><span class="term"><code class="literal">G_ERR_UNEXP_EOF_IN_COMMENT</code></span></p></td>
1449 <td>unterminated comment.
1450 </td>
1451 </tr>
1452 <tr>
1453 <td><p><a name="G-ERR-NON-DIGIT-IN-CONST:CAPS"></a><span class="term"><code class="literal">G_ERR_NON_DIGIT_IN_CONST</code></span></p></td>
1454 <td>non-digit character in a number.
1455 </td>
1456 </tr>
1457 <tr>
1458 <td><p><a name="G-ERR-DIGIT-RADIX:CAPS"></a><span class="term"><code class="literal">G_ERR_DIGIT_RADIX</code></span></p></td>
1459 <td>digit beyond radix in a number.
1460 </td>
1461 </tr>
1462 <tr>
1463 <td><p><a name="G-ERR-FLOAT-RADIX:CAPS"></a><span class="term"><code class="literal">G_ERR_FLOAT_RADIX</code></span></p></td>
1464 <td>non-decimal floating point number.
1465 </td>
1466 </tr>
1467 <tr>
1468 <td><p><a name="G-ERR-FLOAT-MALFORMED:CAPS"></a><span class="term"><code class="literal">G_ERR_FLOAT_MALFORMED</code></span></p></td>
1469 <td>malformed floating point number.
1470 </td>
1471 </tr>
1472 </tbody>
1473 </table></div>
1474 </div>
1475 </div>
1476 </div>
1477 <div class="footer">
1478 <hr>
1479           Generated by GTK-Doc V1.13</div>
1480 </body>
1481 </html>