~ubuntu-branches/ubuntu/precise/kompozer/precise

« back to all changes in this revision

Viewing changes to mozilla/config/mkdepend/ifparser.h

  • Committer: Bazaar Package Importer
  • Author(s): Anthony Yarusso
  • Date: 2007-08-27 01:11:03 UTC
  • Revision ID: james.westby@ubuntu.com-20070827011103-2jgf4s6532gqu2ka
Tags: upstream-0.7.10
ImportĀ upstreamĀ versionĀ 0.7.10

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * $Xorg: ifparser.h,v 1.3 2000/08/17 19:41:51 cpqbld 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
 *                       |      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.5 2001/07/25 15:04:40 dawes Exp $ */
 
61
 
 
62
#include <stdio.h>
 
63
 
 
64
typedef int Bool;
 
65
#define False 0
 
66
#define True 1
 
67
 
 
68
typedef struct _if_parser {
 
69
    struct {                            /* functions */
 
70
        const char *(*handle_error) (struct _if_parser *, const char *,
 
71
                                     const char *);
 
72
        long (*eval_variable) (struct _if_parser *, const char *, int);
 
73
        int (*eval_defined) (struct _if_parser *, const char *, int);
 
74
    } funcs;
 
75
    char *data;
 
76
} IfParser;
 
77
 
 
78
const char *ParseIfExpression (
 
79
    IfParser *, 
 
80
    const char *, 
 
81
    long *
 
82
);
 
83