69 lines
2.6 KiB
C
69 lines
2.6 KiB
C
/* Define constants and variables for communication with the parser.
|
|
Copyright (C) 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
|
|
2000, 2001, 2002, 2003 Free Software Foundation, Inc.
|
|
Hacked by Michael Tiemann (tiemann@cygnus.com)
|
|
and by Brendan Kehoe (brendan@cygnus.com).
|
|
|
|
This file is part of GCC.
|
|
|
|
GCC is free software; you can redistribute it and/or modify it
|
|
under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2, or (at your option)
|
|
any later version.
|
|
|
|
GCC is distributed in the hope that it will be useful, but
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with GCC; see the file COPYING. If not, write to the Free
|
|
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
|
02111-1307, USA. */
|
|
|
|
|
|
#ifndef GCC_CP_LEX_H
|
|
#define GCC_CP_LEX_H
|
|
|
|
#if 0
|
|
/* Formerly, the RID_* values used as mask bits did not fit into a
|
|
single 32-bit word. Now they do, but let's preserve the old logic
|
|
in case they ever stop fitting again. -zw, 8 Aug 2000 */
|
|
|
|
/* The type that can represent all values of RIDBIT. */
|
|
/* We assume that we can stick in at least 32 bits into this. */
|
|
typedef struct { unsigned long idata[2]; }
|
|
RID_BIT_TYPE;
|
|
|
|
/* Be careful, all these modify N twice. */
|
|
#define RIDBIT_SETP(N, V) (((unsigned long)1 << (int) ((N)%32)) \
|
|
& (V).idata[(N)/32])
|
|
#define RIDBIT_NOTSETP(NN, VV) (! RIDBIT_SETP (NN, VV))
|
|
#define RIDBIT_SET(N, V) do { \
|
|
(V).idata[(N)/32] \
|
|
|= ((unsigned long)1 << (int) ((N)%32)); \
|
|
} while (0)
|
|
#define RIDBIT_RESET(N, V) do { \
|
|
(V).idata[(N)/32] \
|
|
&= ~((unsigned long)1 << (int) ((N)%32)); \
|
|
} while (0)
|
|
#define RIDBIT_RESET_ALL(V) do { \
|
|
(V).idata[0] = 0; \
|
|
(V).idata[1] = 0; \
|
|
} while (0)
|
|
#define RIDBIT_ANY_SET(V) ((V).idata[0] || (V).idata[1])
|
|
#else
|
|
typedef unsigned long RID_BIT_TYPE; /* assumed at least 32 bits */
|
|
#define RIDBIT_OF(R) ((unsigned long)1 << (int) (R))
|
|
|
|
#define RIDBIT_SETP(N, V) ((V) & RIDBIT_OF (N))
|
|
#define RIDBIT_NOTSETP(N, V) (! ((V) & RIDBIT_OF (N)))
|
|
#define RIDBIT_ANY_SET(V) (V)
|
|
|
|
#define RIDBIT_SET(N, V) do { (V) |= RIDBIT_OF (N); } while (0)
|
|
#define RIDBIT_RESET(N, V) do { (V) &= ~RIDBIT_OF (N); } while (0)
|
|
#define RIDBIT_RESET_ALL(V) do { (V) = 0; } while (0)
|
|
#endif
|
|
|
|
#endif /* ! GCC_CP_LEX_H */
|