feisty meow concerns codebase  2.140
ifparser.h
Go to the documentation of this file.
1 /*
2  * $XConsortium: ifparser.h,v 1.1 92/08/22 13:05:39 rws Exp $
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  *
35  * VALUE := '(' EXPRESSION ')'
36  * | '!' VALUE
37  * | '-' VALUE
38  * | 'defined' '(' variable ')'
39  * | variable
40  * | number
41  *
42  * BINOP := '*' | '/' | '%'
43  * | '+' | '-'
44  * | '<<' | '>>'
45  * | '<' | '>' | '<=' | '>='
46  * | '==' | '!='
47  * | '&' | '|'
48  * | '&&' | '||'
49  *
50  * The normal C order of precidence is supported.
51  *
52  *
53  * External Entry Points:
54  *
55  * ParseIfExpression parse a string for #if
56  */
57 
58 #include <stdio.h>
59 
60 struct IfParser {
61  struct { /* functions */
62  const char *(*handle_error) (IfParser *, const char *, const char *);
63  int (*eval_variable) (IfParser *, const char *, int);
64  int (*eval_defined) (IfParser *, const char *, int);
65  } funcs;
66  char *data;
67 };
68 
69 const char *ParseIfExpression(IfParser *, const char *, int *);
70 
const char * ParseIfExpression(IfParser *, const char *, int *)
Definition: ifparser.cpp:397
int(* eval_variable)(IfParser *, const char *, int)
Definition: ifparser.h:63
char * data
Definition: ifparser.h:66
int(* eval_defined)(IfParser *, const char *, int)
Definition: ifparser.h:64
struct IfParser::@0 funcs