xref: /OK3568_Linux_fs/external/xserver/hw/xfree86/parser/xf86Parser.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  *
3*4882a593Smuzhiyun  * Copyright (c) 1997  Metro Link Incorporated
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Permission is hereby granted, free of charge, to any person obtaining a
6*4882a593Smuzhiyun  * copy of this software and associated documentation files (the "Software"),
7*4882a593Smuzhiyun  * to deal in the Software without restriction, including without limitation
8*4882a593Smuzhiyun  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9*4882a593Smuzhiyun  * and/or sell copies of the Software, and to permit persons to whom the
10*4882a593Smuzhiyun  * Software is furnished to do so, subject to the following conditions:
11*4882a593Smuzhiyun  *
12*4882a593Smuzhiyun  * The above copyright notice and this permission notice shall be included in
13*4882a593Smuzhiyun  * all copies or substantial portions of the Software.
14*4882a593Smuzhiyun  *
15*4882a593Smuzhiyun  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16*4882a593Smuzhiyun  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17*4882a593Smuzhiyun  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18*4882a593Smuzhiyun  * THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
19*4882a593Smuzhiyun  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
20*4882a593Smuzhiyun  * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21*4882a593Smuzhiyun  * SOFTWARE.
22*4882a593Smuzhiyun  *
23*4882a593Smuzhiyun  * Except as contained in this notice, the name of the Metro Link shall not be
24*4882a593Smuzhiyun  * used in advertising or otherwise to promote the sale, use or other dealings
25*4882a593Smuzhiyun  * in this Software without prior written authorization from Metro Link.
26*4882a593Smuzhiyun  *
27*4882a593Smuzhiyun  */
28*4882a593Smuzhiyun /*
29*4882a593Smuzhiyun  * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
30*4882a593Smuzhiyun  *
31*4882a593Smuzhiyun  * Permission is hereby granted, free of charge, to any person obtaining a
32*4882a593Smuzhiyun  * copy of this software and associated documentation files (the "Software"),
33*4882a593Smuzhiyun  * to deal in the Software without restriction, including without limitation
34*4882a593Smuzhiyun  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
35*4882a593Smuzhiyun  * and/or sell copies of the Software, and to permit persons to whom the
36*4882a593Smuzhiyun  * Software is furnished to do so, subject to the following conditions:
37*4882a593Smuzhiyun  *
38*4882a593Smuzhiyun  * The above copyright notice and this permission notice shall be included in
39*4882a593Smuzhiyun  * all copies or substantial portions of the Software.
40*4882a593Smuzhiyun  *
41*4882a593Smuzhiyun  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
42*4882a593Smuzhiyun  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
43*4882a593Smuzhiyun  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
44*4882a593Smuzhiyun  * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
45*4882a593Smuzhiyun  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
46*4882a593Smuzhiyun  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
47*4882a593Smuzhiyun  * OTHER DEALINGS IN THE SOFTWARE.
48*4882a593Smuzhiyun  *
49*4882a593Smuzhiyun  * Except as contained in this notice, the name of the copyright holder(s)
50*4882a593Smuzhiyun  * and author(s) shall not be used in advertising or otherwise to promote
51*4882a593Smuzhiyun  * the sale, use or other dealings in this Software without prior written
52*4882a593Smuzhiyun  * authorization from the copyright holder(s) and author(s).
53*4882a593Smuzhiyun  */
54*4882a593Smuzhiyun 
55*4882a593Smuzhiyun /*
56*4882a593Smuzhiyun  * This file contains the external interfaces for the XFree86 configuration
57*4882a593Smuzhiyun  * file parser.
58*4882a593Smuzhiyun  */
59*4882a593Smuzhiyun #ifdef HAVE_XORG_CONFIG_H
60*4882a593Smuzhiyun #include <xorg-config.h>
61*4882a593Smuzhiyun #endif
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun #ifndef _xf86Parser_h_
64*4882a593Smuzhiyun #define _xf86Parser_h_
65*4882a593Smuzhiyun 
66*4882a593Smuzhiyun #include <X11/Xdefs.h>
67*4882a593Smuzhiyun #include "xf86Optrec.h"
68*4882a593Smuzhiyun #include "list.h"
69*4882a593Smuzhiyun 
70*4882a593Smuzhiyun #define HAVE_PARSER_DECLS
71*4882a593Smuzhiyun 
72*4882a593Smuzhiyun typedef struct {
73*4882a593Smuzhiyun     char *file_logfile;
74*4882a593Smuzhiyun     char *file_modulepath;
75*4882a593Smuzhiyun     char *file_fontpath;
76*4882a593Smuzhiyun     char *file_comment;
77*4882a593Smuzhiyun     char *file_xkbdir;
78*4882a593Smuzhiyun } XF86ConfFilesRec, *XF86ConfFilesPtr;
79*4882a593Smuzhiyun 
80*4882a593Smuzhiyun /* Values for load_type */
81*4882a593Smuzhiyun #define XF86_LOAD_MODULE	0
82*4882a593Smuzhiyun #define XF86_LOAD_DRIVER	1
83*4882a593Smuzhiyun #define XF86_DISABLE_MODULE	2
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun typedef struct {
86*4882a593Smuzhiyun     GenericListRec list;
87*4882a593Smuzhiyun     int load_type;
88*4882a593Smuzhiyun     const char *load_name;
89*4882a593Smuzhiyun     XF86OptionPtr load_opt;
90*4882a593Smuzhiyun     char *load_comment;
91*4882a593Smuzhiyun     int ignore;
92*4882a593Smuzhiyun } XF86LoadRec, *XF86LoadPtr;
93*4882a593Smuzhiyun 
94*4882a593Smuzhiyun typedef struct {
95*4882a593Smuzhiyun     XF86LoadPtr mod_load_lst;
96*4882a593Smuzhiyun     XF86LoadPtr mod_disable_lst;
97*4882a593Smuzhiyun     char *mod_comment;
98*4882a593Smuzhiyun } XF86ConfModuleRec, *XF86ConfModulePtr;
99*4882a593Smuzhiyun 
100*4882a593Smuzhiyun #define CONF_IMPLICIT_KEYBOARD	"Implicit Core Keyboard"
101*4882a593Smuzhiyun 
102*4882a593Smuzhiyun #define CONF_IMPLICIT_POINTER	"Implicit Core Pointer"
103*4882a593Smuzhiyun 
104*4882a593Smuzhiyun #define XF86CONF_PHSYNC    0x0001
105*4882a593Smuzhiyun #define XF86CONF_NHSYNC    0x0002
106*4882a593Smuzhiyun #define XF86CONF_PVSYNC    0x0004
107*4882a593Smuzhiyun #define XF86CONF_NVSYNC    0x0008
108*4882a593Smuzhiyun #define XF86CONF_INTERLACE 0x0010
109*4882a593Smuzhiyun #define XF86CONF_DBLSCAN   0x0020
110*4882a593Smuzhiyun #define XF86CONF_CSYNC     0x0040
111*4882a593Smuzhiyun #define XF86CONF_PCSYNC    0x0080
112*4882a593Smuzhiyun #define XF86CONF_NCSYNC    0x0100
113*4882a593Smuzhiyun #define XF86CONF_HSKEW     0x0200       /* hskew provided */
114*4882a593Smuzhiyun #define XF86CONF_BCAST     0x0400
115*4882a593Smuzhiyun #define XF86CONF_VSCAN     0x1000
116*4882a593Smuzhiyun 
117*4882a593Smuzhiyun typedef struct {
118*4882a593Smuzhiyun     GenericListRec list;
119*4882a593Smuzhiyun     const char *ml_identifier;
120*4882a593Smuzhiyun     int ml_clock;
121*4882a593Smuzhiyun     int ml_hdisplay;
122*4882a593Smuzhiyun     int ml_hsyncstart;
123*4882a593Smuzhiyun     int ml_hsyncend;
124*4882a593Smuzhiyun     int ml_htotal;
125*4882a593Smuzhiyun     int ml_vdisplay;
126*4882a593Smuzhiyun     int ml_vsyncstart;
127*4882a593Smuzhiyun     int ml_vsyncend;
128*4882a593Smuzhiyun     int ml_vtotal;
129*4882a593Smuzhiyun     int ml_vscan;
130*4882a593Smuzhiyun     int ml_flags;
131*4882a593Smuzhiyun     int ml_hskew;
132*4882a593Smuzhiyun     char *ml_comment;
133*4882a593Smuzhiyun } XF86ConfModeLineRec, *XF86ConfModeLinePtr;
134*4882a593Smuzhiyun 
135*4882a593Smuzhiyun typedef struct {
136*4882a593Smuzhiyun     GenericListRec list;
137*4882a593Smuzhiyun     const char *vp_identifier;
138*4882a593Smuzhiyun     XF86OptionPtr vp_option_lst;
139*4882a593Smuzhiyun     char *vp_comment;
140*4882a593Smuzhiyun } XF86ConfVideoPortRec, *XF86ConfVideoPortPtr;
141*4882a593Smuzhiyun 
142*4882a593Smuzhiyun typedef struct {
143*4882a593Smuzhiyun     GenericListRec list;
144*4882a593Smuzhiyun     const char *va_identifier;
145*4882a593Smuzhiyun     const char *va_vendor;
146*4882a593Smuzhiyun     const char *va_board;
147*4882a593Smuzhiyun     const char *va_busid;
148*4882a593Smuzhiyun     const char *va_driver;
149*4882a593Smuzhiyun     XF86OptionPtr va_option_lst;
150*4882a593Smuzhiyun     XF86ConfVideoPortPtr va_port_lst;
151*4882a593Smuzhiyun     const char *va_fwdref;
152*4882a593Smuzhiyun     char *va_comment;
153*4882a593Smuzhiyun } XF86ConfVideoAdaptorRec, *XF86ConfVideoAdaptorPtr;
154*4882a593Smuzhiyun 
155*4882a593Smuzhiyun #define CONF_MAX_HSYNC 8
156*4882a593Smuzhiyun #define CONF_MAX_VREFRESH 8
157*4882a593Smuzhiyun 
158*4882a593Smuzhiyun typedef struct {
159*4882a593Smuzhiyun     float hi, lo;
160*4882a593Smuzhiyun } parser_range;
161*4882a593Smuzhiyun 
162*4882a593Smuzhiyun typedef struct {
163*4882a593Smuzhiyun     int red, green, blue;
164*4882a593Smuzhiyun } parser_rgb;
165*4882a593Smuzhiyun 
166*4882a593Smuzhiyun typedef struct {
167*4882a593Smuzhiyun     GenericListRec list;
168*4882a593Smuzhiyun     const char *modes_identifier;
169*4882a593Smuzhiyun     XF86ConfModeLinePtr mon_modeline_lst;
170*4882a593Smuzhiyun     char *modes_comment;
171*4882a593Smuzhiyun } XF86ConfModesRec, *XF86ConfModesPtr;
172*4882a593Smuzhiyun 
173*4882a593Smuzhiyun typedef struct {
174*4882a593Smuzhiyun     GenericListRec list;
175*4882a593Smuzhiyun     const char *ml_modes_str;
176*4882a593Smuzhiyun     XF86ConfModesPtr ml_modes;
177*4882a593Smuzhiyun } XF86ConfModesLinkRec, *XF86ConfModesLinkPtr;
178*4882a593Smuzhiyun 
179*4882a593Smuzhiyun typedef struct {
180*4882a593Smuzhiyun     GenericListRec list;
181*4882a593Smuzhiyun     const char *mon_identifier;
182*4882a593Smuzhiyun     const char *mon_vendor;
183*4882a593Smuzhiyun     char *mon_modelname;
184*4882a593Smuzhiyun     int mon_width;              /* in mm */
185*4882a593Smuzhiyun     int mon_height;             /* in mm */
186*4882a593Smuzhiyun     XF86ConfModeLinePtr mon_modeline_lst;
187*4882a593Smuzhiyun     int mon_n_hsync;
188*4882a593Smuzhiyun     parser_range mon_hsync[CONF_MAX_HSYNC];
189*4882a593Smuzhiyun     int mon_n_vrefresh;
190*4882a593Smuzhiyun     parser_range mon_vrefresh[CONF_MAX_VREFRESH];
191*4882a593Smuzhiyun     float mon_gamma_red;
192*4882a593Smuzhiyun     float mon_gamma_green;
193*4882a593Smuzhiyun     float mon_gamma_blue;
194*4882a593Smuzhiyun     XF86OptionPtr mon_option_lst;
195*4882a593Smuzhiyun     XF86ConfModesLinkPtr mon_modes_sect_lst;
196*4882a593Smuzhiyun     char *mon_comment;
197*4882a593Smuzhiyun } XF86ConfMonitorRec, *XF86ConfMonitorPtr;
198*4882a593Smuzhiyun 
199*4882a593Smuzhiyun #define CONF_MAXDACSPEEDS 4
200*4882a593Smuzhiyun #define CONF_MAXCLOCKS    128
201*4882a593Smuzhiyun 
202*4882a593Smuzhiyun typedef struct {
203*4882a593Smuzhiyun     GenericListRec list;
204*4882a593Smuzhiyun     const char *dev_identifier;
205*4882a593Smuzhiyun     const char *dev_vendor;
206*4882a593Smuzhiyun     const char *dev_board;
207*4882a593Smuzhiyun     const char *dev_chipset;
208*4882a593Smuzhiyun     const char *dev_busid;
209*4882a593Smuzhiyun     const char *dev_card;
210*4882a593Smuzhiyun     const char *dev_driver;
211*4882a593Smuzhiyun     const char *dev_ramdac;
212*4882a593Smuzhiyun     int dev_dacSpeeds[CONF_MAXDACSPEEDS];
213*4882a593Smuzhiyun     int dev_videoram;
214*4882a593Smuzhiyun     unsigned long dev_mem_base;
215*4882a593Smuzhiyun     unsigned long dev_io_base;
216*4882a593Smuzhiyun     const char *dev_clockchip;
217*4882a593Smuzhiyun     int dev_clocks;
218*4882a593Smuzhiyun     int dev_clock[CONF_MAXCLOCKS];
219*4882a593Smuzhiyun     int dev_chipid;
220*4882a593Smuzhiyun     int dev_chiprev;
221*4882a593Smuzhiyun     int dev_irq;
222*4882a593Smuzhiyun     int dev_screen;
223*4882a593Smuzhiyun     XF86OptionPtr dev_option_lst;
224*4882a593Smuzhiyun     char *dev_comment;
225*4882a593Smuzhiyun     char *match_seat;
226*4882a593Smuzhiyun } XF86ConfDeviceRec, *XF86ConfDevicePtr;
227*4882a593Smuzhiyun 
228*4882a593Smuzhiyun typedef struct {
229*4882a593Smuzhiyun     GenericListRec list;
230*4882a593Smuzhiyun     const char *mode_name;
231*4882a593Smuzhiyun } XF86ModeRec, *XF86ModePtr;
232*4882a593Smuzhiyun 
233*4882a593Smuzhiyun typedef struct {
234*4882a593Smuzhiyun     GenericListRec list;
235*4882a593Smuzhiyun     int disp_frameX0;
236*4882a593Smuzhiyun     int disp_frameY0;
237*4882a593Smuzhiyun     int disp_virtualX;
238*4882a593Smuzhiyun     int disp_virtualY;
239*4882a593Smuzhiyun     int disp_depth;
240*4882a593Smuzhiyun     int disp_bpp;
241*4882a593Smuzhiyun     const char *disp_visual;
242*4882a593Smuzhiyun     parser_rgb disp_weight;
243*4882a593Smuzhiyun     parser_rgb disp_black;
244*4882a593Smuzhiyun     parser_rgb disp_white;
245*4882a593Smuzhiyun     XF86ModePtr disp_mode_lst;
246*4882a593Smuzhiyun     XF86OptionPtr disp_option_lst;
247*4882a593Smuzhiyun     char *disp_comment;
248*4882a593Smuzhiyun } XF86ConfDisplayRec, *XF86ConfDisplayPtr;
249*4882a593Smuzhiyun 
250*4882a593Smuzhiyun typedef struct {
251*4882a593Smuzhiyun     XF86OptionPtr flg_option_lst;
252*4882a593Smuzhiyun     char *flg_comment;
253*4882a593Smuzhiyun } XF86ConfFlagsRec, *XF86ConfFlagsPtr;
254*4882a593Smuzhiyun 
255*4882a593Smuzhiyun typedef struct {
256*4882a593Smuzhiyun     GenericListRec list;
257*4882a593Smuzhiyun     const char *al_adaptor_str;
258*4882a593Smuzhiyun     XF86ConfVideoAdaptorPtr al_adaptor;
259*4882a593Smuzhiyun } XF86ConfAdaptorLinkRec, *XF86ConfAdaptorLinkPtr;
260*4882a593Smuzhiyun 
261*4882a593Smuzhiyun #define CONF_MAXGPUDEVICES 4
262*4882a593Smuzhiyun typedef struct {
263*4882a593Smuzhiyun     GenericListRec list;
264*4882a593Smuzhiyun     const char *scrn_identifier;
265*4882a593Smuzhiyun     const char *scrn_obso_driver;
266*4882a593Smuzhiyun     int scrn_defaultdepth;
267*4882a593Smuzhiyun     int scrn_defaultbpp;
268*4882a593Smuzhiyun     int scrn_defaultfbbpp;
269*4882a593Smuzhiyun     const char *scrn_monitor_str;
270*4882a593Smuzhiyun     XF86ConfMonitorPtr scrn_monitor;
271*4882a593Smuzhiyun     const char *scrn_device_str;
272*4882a593Smuzhiyun     XF86ConfDevicePtr scrn_device;
273*4882a593Smuzhiyun     XF86ConfAdaptorLinkPtr scrn_adaptor_lst;
274*4882a593Smuzhiyun     XF86ConfDisplayPtr scrn_display_lst;
275*4882a593Smuzhiyun     XF86OptionPtr scrn_option_lst;
276*4882a593Smuzhiyun     char *scrn_comment;
277*4882a593Smuzhiyun     int scrn_virtualX, scrn_virtualY;
278*4882a593Smuzhiyun     char *match_seat;
279*4882a593Smuzhiyun 
280*4882a593Smuzhiyun     int num_gpu_devices;
281*4882a593Smuzhiyun     const char *scrn_gpu_device_str[CONF_MAXGPUDEVICES];
282*4882a593Smuzhiyun     XF86ConfDevicePtr scrn_gpu_devices[CONF_MAXGPUDEVICES];
283*4882a593Smuzhiyun } XF86ConfScreenRec, *XF86ConfScreenPtr;
284*4882a593Smuzhiyun 
285*4882a593Smuzhiyun typedef struct {
286*4882a593Smuzhiyun     GenericListRec list;
287*4882a593Smuzhiyun     char *inp_identifier;
288*4882a593Smuzhiyun     char *inp_driver;
289*4882a593Smuzhiyun     XF86OptionPtr inp_option_lst;
290*4882a593Smuzhiyun     char *inp_comment;
291*4882a593Smuzhiyun } XF86ConfInputRec, *XF86ConfInputPtr;
292*4882a593Smuzhiyun 
293*4882a593Smuzhiyun typedef struct {
294*4882a593Smuzhiyun     GenericListRec list;
295*4882a593Smuzhiyun     XF86ConfInputPtr iref_inputdev;
296*4882a593Smuzhiyun     char *iref_inputdev_str;
297*4882a593Smuzhiyun     XF86OptionPtr iref_option_lst;
298*4882a593Smuzhiyun } XF86ConfInputrefRec, *XF86ConfInputrefPtr;
299*4882a593Smuzhiyun 
300*4882a593Smuzhiyun typedef struct {
301*4882a593Smuzhiyun     Bool set;
302*4882a593Smuzhiyun     Bool val;
303*4882a593Smuzhiyun } xf86TriState;
304*4882a593Smuzhiyun 
305*4882a593Smuzhiyun typedef struct {
306*4882a593Smuzhiyun     struct xorg_list entry;
307*4882a593Smuzhiyun     char **values;
308*4882a593Smuzhiyun     Bool is_negated;
309*4882a593Smuzhiyun } xf86MatchGroup;
310*4882a593Smuzhiyun 
311*4882a593Smuzhiyun typedef struct {
312*4882a593Smuzhiyun     GenericListRec list;
313*4882a593Smuzhiyun     char *identifier;
314*4882a593Smuzhiyun     char *driver;
315*4882a593Smuzhiyun     struct xorg_list match_product;
316*4882a593Smuzhiyun     struct xorg_list match_vendor;
317*4882a593Smuzhiyun     struct xorg_list match_device;
318*4882a593Smuzhiyun     struct xorg_list match_os;
319*4882a593Smuzhiyun     struct xorg_list match_pnpid;
320*4882a593Smuzhiyun     struct xorg_list match_usbid;
321*4882a593Smuzhiyun     struct xorg_list match_driver;
322*4882a593Smuzhiyun     struct xorg_list match_tag;
323*4882a593Smuzhiyun     struct xorg_list match_layout;
324*4882a593Smuzhiyun     xf86TriState is_keyboard;
325*4882a593Smuzhiyun     xf86TriState is_pointer;
326*4882a593Smuzhiyun     xf86TriState is_joystick;
327*4882a593Smuzhiyun     xf86TriState is_tablet;
328*4882a593Smuzhiyun     xf86TriState is_tablet_pad;
329*4882a593Smuzhiyun     xf86TriState is_touchpad;
330*4882a593Smuzhiyun     xf86TriState is_touchscreen;
331*4882a593Smuzhiyun     XF86OptionPtr option_lst;
332*4882a593Smuzhiyun     char *comment;
333*4882a593Smuzhiyun } XF86ConfInputClassRec, *XF86ConfInputClassPtr;
334*4882a593Smuzhiyun 
335*4882a593Smuzhiyun typedef struct {
336*4882a593Smuzhiyun     GenericListRec list;
337*4882a593Smuzhiyun     char *identifier;
338*4882a593Smuzhiyun     char *driver;
339*4882a593Smuzhiyun     char *modulepath;
340*4882a593Smuzhiyun     struct xorg_list match_driver;
341*4882a593Smuzhiyun     XF86OptionPtr option_lst;
342*4882a593Smuzhiyun     char *comment;
343*4882a593Smuzhiyun } XF86ConfOutputClassRec, *XF86ConfOutputClassPtr;
344*4882a593Smuzhiyun 
345*4882a593Smuzhiyun /* Values for adj_where */
346*4882a593Smuzhiyun #define CONF_ADJ_OBSOLETE	-1
347*4882a593Smuzhiyun #define CONF_ADJ_ABSOLUTE	0
348*4882a593Smuzhiyun #define CONF_ADJ_RIGHTOF	1
349*4882a593Smuzhiyun #define CONF_ADJ_LEFTOF		2
350*4882a593Smuzhiyun #define CONF_ADJ_ABOVE		3
351*4882a593Smuzhiyun #define CONF_ADJ_BELOW		4
352*4882a593Smuzhiyun #define CONF_ADJ_RELATIVE	5
353*4882a593Smuzhiyun 
354*4882a593Smuzhiyun typedef struct {
355*4882a593Smuzhiyun     GenericListRec list;
356*4882a593Smuzhiyun     int adj_scrnum;
357*4882a593Smuzhiyun     XF86ConfScreenPtr adj_screen;
358*4882a593Smuzhiyun     const char *adj_screen_str;
359*4882a593Smuzhiyun     XF86ConfScreenPtr adj_top;
360*4882a593Smuzhiyun     const char *adj_top_str;
361*4882a593Smuzhiyun     XF86ConfScreenPtr adj_bottom;
362*4882a593Smuzhiyun     const char *adj_bottom_str;
363*4882a593Smuzhiyun     XF86ConfScreenPtr adj_left;
364*4882a593Smuzhiyun     const char *adj_left_str;
365*4882a593Smuzhiyun     XF86ConfScreenPtr adj_right;
366*4882a593Smuzhiyun     const char *adj_right_str;
367*4882a593Smuzhiyun     int adj_where;
368*4882a593Smuzhiyun     int adj_x;
369*4882a593Smuzhiyun     int adj_y;
370*4882a593Smuzhiyun     const char *adj_refscreen;
371*4882a593Smuzhiyun } XF86ConfAdjacencyRec, *XF86ConfAdjacencyPtr;
372*4882a593Smuzhiyun 
373*4882a593Smuzhiyun typedef struct {
374*4882a593Smuzhiyun     GenericListRec list;
375*4882a593Smuzhiyun     const char *inactive_device_str;
376*4882a593Smuzhiyun     XF86ConfDevicePtr inactive_device;
377*4882a593Smuzhiyun } XF86ConfInactiveRec, *XF86ConfInactivePtr;
378*4882a593Smuzhiyun 
379*4882a593Smuzhiyun typedef struct {
380*4882a593Smuzhiyun     GenericListRec list;
381*4882a593Smuzhiyun     const char *lay_identifier;
382*4882a593Smuzhiyun     XF86ConfAdjacencyPtr lay_adjacency_lst;
383*4882a593Smuzhiyun     XF86ConfInactivePtr lay_inactive_lst;
384*4882a593Smuzhiyun     XF86ConfInputrefPtr lay_input_lst;
385*4882a593Smuzhiyun     XF86OptionPtr lay_option_lst;
386*4882a593Smuzhiyun     char *match_seat;
387*4882a593Smuzhiyun     char *lay_comment;
388*4882a593Smuzhiyun } XF86ConfLayoutRec, *XF86ConfLayoutPtr;
389*4882a593Smuzhiyun 
390*4882a593Smuzhiyun typedef struct {
391*4882a593Smuzhiyun     GenericListRec list;
392*4882a593Smuzhiyun     const char *vs_name;
393*4882a593Smuzhiyun     const char *vs_identifier;
394*4882a593Smuzhiyun     XF86OptionPtr vs_option_lst;
395*4882a593Smuzhiyun     char *vs_comment;
396*4882a593Smuzhiyun } XF86ConfVendSubRec, *XF86ConfVendSubPtr;
397*4882a593Smuzhiyun 
398*4882a593Smuzhiyun typedef struct {
399*4882a593Smuzhiyun     GenericListRec list;
400*4882a593Smuzhiyun     const char *vnd_identifier;
401*4882a593Smuzhiyun     XF86OptionPtr vnd_option_lst;
402*4882a593Smuzhiyun     XF86ConfVendSubPtr vnd_sub_lst;
403*4882a593Smuzhiyun     char *vnd_comment;
404*4882a593Smuzhiyun } XF86ConfVendorRec, *XF86ConfVendorPtr;
405*4882a593Smuzhiyun 
406*4882a593Smuzhiyun typedef struct {
407*4882a593Smuzhiyun     const char *dri_group_name;
408*4882a593Smuzhiyun     int dri_group;
409*4882a593Smuzhiyun     int dri_mode;
410*4882a593Smuzhiyun     char *dri_comment;
411*4882a593Smuzhiyun } XF86ConfDRIRec, *XF86ConfDRIPtr;
412*4882a593Smuzhiyun 
413*4882a593Smuzhiyun typedef struct {
414*4882a593Smuzhiyun     XF86OptionPtr ext_option_lst;
415*4882a593Smuzhiyun     char *extensions_comment;
416*4882a593Smuzhiyun } XF86ConfExtensionsRec, *XF86ConfExtensionsPtr;
417*4882a593Smuzhiyun 
418*4882a593Smuzhiyun typedef struct {
419*4882a593Smuzhiyun     XF86ConfFilesPtr conf_files;
420*4882a593Smuzhiyun     XF86ConfModulePtr conf_modules;
421*4882a593Smuzhiyun     XF86ConfFlagsPtr conf_flags;
422*4882a593Smuzhiyun     XF86ConfVideoAdaptorPtr conf_videoadaptor_lst;
423*4882a593Smuzhiyun     XF86ConfModesPtr conf_modes_lst;
424*4882a593Smuzhiyun     XF86ConfMonitorPtr conf_monitor_lst;
425*4882a593Smuzhiyun     XF86ConfDevicePtr conf_device_lst;
426*4882a593Smuzhiyun     XF86ConfScreenPtr conf_screen_lst;
427*4882a593Smuzhiyun     XF86ConfInputPtr conf_input_lst;
428*4882a593Smuzhiyun     XF86ConfInputClassPtr conf_inputclass_lst;
429*4882a593Smuzhiyun     XF86ConfOutputClassPtr conf_outputclass_lst;
430*4882a593Smuzhiyun     XF86ConfLayoutPtr conf_layout_lst;
431*4882a593Smuzhiyun     XF86ConfVendorPtr conf_vendor_lst;
432*4882a593Smuzhiyun     XF86ConfDRIPtr conf_dri;
433*4882a593Smuzhiyun     XF86ConfExtensionsPtr conf_extensions;
434*4882a593Smuzhiyun     char *conf_comment;
435*4882a593Smuzhiyun } XF86ConfigRec, *XF86ConfigPtr;
436*4882a593Smuzhiyun 
437*4882a593Smuzhiyun typedef struct {
438*4882a593Smuzhiyun     int token;                  /* id of the token */
439*4882a593Smuzhiyun     const char *name;           /* pointer to the LOWERCASED name */
440*4882a593Smuzhiyun } xf86ConfigSymTabRec, *xf86ConfigSymTabPtr;
441*4882a593Smuzhiyun 
442*4882a593Smuzhiyun /*
443*4882a593Smuzhiyun  * prototypes for public functions
444*4882a593Smuzhiyun  */
445*4882a593Smuzhiyun extern void xf86initConfigFiles(void);
446*4882a593Smuzhiyun extern char *xf86openConfigFile(const char *path, const char *cmdline,
447*4882a593Smuzhiyun                                 const char *projroot);
448*4882a593Smuzhiyun extern char *xf86openConfigDirFiles(const char *path, const char *cmdline,
449*4882a593Smuzhiyun                                     const char *projroot);
450*4882a593Smuzhiyun extern void xf86setBuiltinConfig(const char *config[]);
451*4882a593Smuzhiyun extern XF86ConfigPtr xf86readConfigFile(void);
452*4882a593Smuzhiyun extern void xf86closeConfigFile(void);
453*4882a593Smuzhiyun extern XF86ConfigPtr xf86allocateConfig(void);
454*4882a593Smuzhiyun extern void xf86freeConfig(XF86ConfigPtr p);
455*4882a593Smuzhiyun extern int xf86writeConfigFile(const char *, XF86ConfigPtr);
456*4882a593Smuzhiyun extern _X_EXPORT XF86ConfDevicePtr xf86findDevice(const char *ident,
457*4882a593Smuzhiyun                                                   XF86ConfDevicePtr p);
458*4882a593Smuzhiyun extern _X_EXPORT XF86ConfLayoutPtr xf86findLayout(const char *name,
459*4882a593Smuzhiyun                                                   XF86ConfLayoutPtr list);
460*4882a593Smuzhiyun extern _X_EXPORT XF86ConfMonitorPtr xf86findMonitor(const char *ident,
461*4882a593Smuzhiyun                                                     XF86ConfMonitorPtr p);
462*4882a593Smuzhiyun extern _X_EXPORT XF86ConfModesPtr xf86findModes(const char *ident,
463*4882a593Smuzhiyun                                                 XF86ConfModesPtr p);
464*4882a593Smuzhiyun extern _X_EXPORT XF86ConfModeLinePtr xf86findModeLine(const char *ident,
465*4882a593Smuzhiyun                                                       XF86ConfModeLinePtr p);
466*4882a593Smuzhiyun extern _X_EXPORT XF86ConfScreenPtr xf86findScreen(const char *ident,
467*4882a593Smuzhiyun                                                   XF86ConfScreenPtr p);
468*4882a593Smuzhiyun extern _X_EXPORT XF86ConfInputPtr xf86findInput(const char *ident,
469*4882a593Smuzhiyun                                                 XF86ConfInputPtr p);
470*4882a593Smuzhiyun extern _X_EXPORT XF86ConfInputPtr xf86findInputByDriver(const char *driver,
471*4882a593Smuzhiyun                                                         XF86ConfInputPtr p);
472*4882a593Smuzhiyun extern _X_EXPORT XF86ConfVideoAdaptorPtr xf86findVideoAdaptor(const char *ident,
473*4882a593Smuzhiyun                                                               XF86ConfVideoAdaptorPtr
474*4882a593Smuzhiyun                                                               p);
475*4882a593Smuzhiyun extern int xf86layoutAddInputDevices(XF86ConfigPtr config,
476*4882a593Smuzhiyun                                      XF86ConfLayoutPtr layout);
477*4882a593Smuzhiyun 
478*4882a593Smuzhiyun extern _X_EXPORT GenericListPtr xf86addListItem(GenericListPtr head,
479*4882a593Smuzhiyun                                                 GenericListPtr c_new);
480*4882a593Smuzhiyun extern _X_EXPORT int xf86itemNotSublist(GenericListPtr list_1,
481*4882a593Smuzhiyun                                         GenericListPtr list_2);
482*4882a593Smuzhiyun 
483*4882a593Smuzhiyun extern _X_EXPORT int xf86pathIsAbsolute(const char *path);
484*4882a593Smuzhiyun extern _X_EXPORT int xf86pathIsSafe(const char *path);
485*4882a593Smuzhiyun extern _X_EXPORT char *xf86addComment(char *cur, const char *add);
486*4882a593Smuzhiyun extern _X_EXPORT Bool xf86getBoolValue(Bool *val, const char *str);
487*4882a593Smuzhiyun 
488*4882a593Smuzhiyun #endif                          /* _xf86Parser_h_ */
489