]> git.sesse.net Git - rdpsrv/blob - Xserver/config/makedepend/ifparser.h
Support RDP5 logon packets.
[rdpsrv] / Xserver / config / makedepend / ifparser.h
1 /*
2  * $XConsortium: ifparser.h /main/4 1996/09/28 16:15:24 rws $
3  *
4  * Copyright 1992 Network Computing Devices, Inc.
5  * 
6  * Permission to use, copy, modify, and distribute this software and its
7  * documentation for any purpose and without fee is hereby granted, provided
8  * that the above copyright notice appear in all copies and that both that
9  * copyright notice and this permission notice appear in supporting
10  * documentation, and that the name of Network Computing Devices may not be
11  * used in advertising or publicity pertaining to distribution of the software
12  * without specific, written prior permission.  Network Computing Devices makes
13  * no representations about the suitability of this software for any purpose.
14  * It is provided ``as is'' without express or implied warranty.
15  * 
16  * NETWORK COMPUTING DEVICES DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
17  * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
18  * IN NO EVENT SHALL NETWORK COMPUTING DEVICES BE LIABLE FOR ANY SPECIAL,
19  * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
20  * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
21  * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
22  * PERFORMANCE OF THIS SOFTWARE.
23  * 
24  * Author:  Jim Fulton
25  *          Network Computing Devices, Inc.
26  * 
27  * Simple if statement processor
28  *
29  * This module can be used to evaluate string representations of C language
30  * if constructs.  It accepts the following grammar:
31  * 
32  *     EXPRESSION       :=      VALUE
33  *                       |      VALUE  BINOP    EXPRESSION
34  *                       |      VALUE   '?'     EXPRESSION ':'  EXPRESSION
35  * 
36  *     VALUE            :=      '('  EXPRESSION  ')'
37  *                       |      '!'  VALUE
38  *                       |      '-'  VALUE
39  *                       |      '~'  VALUE
40  *                       |      'defined'  '('  variable  ')'
41  *                       |      variable
42  *                       |      number
43  * 
44  *     BINOP            :=      '*'     |  '/'  |  '%'
45  *                       |      '+'     |  '-'
46  *                       |      '<<'    |  '>>'
47  *                       |      '<'     |  '>'  |  '<='  |  '>='
48  *                       |      '=='    |  '!='
49  *                       |      '&'     |  '^'  |  '|'
50  *                       |      '&&'    |  '||'
51  * 
52  * The normal C order of precedence is supported.
53  * 
54  * 
55  * External Entry Points:
56  * 
57  *     ParseIfExpression                parse a string for #if
58  */
59
60 /* $XFree86: xc/config/makedepend/ifparser.h,v 3.2 1996/12/30 13:57:56 dawes Exp $ */
61
62 #include <stdio.h>
63
64 #define const /**/
65 typedef int Bool;
66 #define False 0
67 #define True 1
68
69 typedef struct _if_parser {
70     struct {                            /* functions */
71         char *(*handle_error) (/* struct _if_parser *, const char *,
72                                  const char * */);
73         long (*eval_variable) (/* struct _if_parser *, const char *, int */);
74         int (*eval_defined) (/* struct _if_parser *, const char *, int */);
75     } funcs;
76     char *data;
77 } IfParser;
78
79 char *ParseIfExpression (
80 #ifdef __STDC__
81     IfParser *, 
82     const char *, 
83     long *
84 #endif
85 );
86