summaryrefslogtreecommitdiff
path: root/rsc/source/rscpp/cppdef.h
diff options
context:
space:
mode:
authorNils Fuhrmann <nf@openoffice.org>2001-04-18 09:31:56 +0000
committerNils Fuhrmann <nf@openoffice.org>2001-04-18 09:31:56 +0000
commit457f5cb5c0b5a62438a205f6835abd2a51b857f4 (patch)
treeba4763ba1a0ccae57aef0c3ca8c7e38e317ff76e /rsc/source/rscpp/cppdef.h
parent413042a9b341838b3820bc3da14b498465de35ba (diff)
Moved from rscpp to rsc
Diffstat (limited to 'rsc/source/rscpp/cppdef.h')
-rw-r--r--rsc/source/rscpp/cppdef.h396
1 files changed, 396 insertions, 0 deletions
diff --git a/rsc/source/rscpp/cppdef.h b/rsc/source/rscpp/cppdef.h
new file mode 100644
index 000000000000..9b494dcb2ca8
--- /dev/null
+++ b/rsc/source/rscpp/cppdef.h
@@ -0,0 +1,396 @@
+/*************************************************************************
+ *
+ * $RCSfile: cppdef.h,v $
+ *
+ * $Revision: 1.1 $
+ *
+ * last change: $Author: nf $ $Date: 2001-04-18 10:31:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+/*
+ * This redundant definition of TRUE and FALSE works around
+ * a limitation of Decus C.
+ */
+#ifndef TRUE
+#define TRUE 1
+#define FALSE 0
+#endif
+
+/*
+ * Define the HOST operating system. This is needed so that
+ * cpp can use appropriate filename conventions.
+ */
+#define SYS_UNKNOWN 0
+#define SYS_UNIX 1
+#define SYS_VMS 2
+#define SYS_RSX 3
+#define SYS_RT11 4
+#define SYS_LATTICE 5
+#define SYS_ONYX 6
+#define SYS_68000 7
+
+#ifndef HOST
+#ifdef unix
+#define HOST SYS_UNIX
+#else
+#ifdef vms
+#define HOST SYS_VMS
+#else
+#ifdef rsx
+#define HOST SYS_RSX
+#else
+#ifdef rt11
+#define HOST SYS_RT11
+#endif
+#endif
+#endif
+#endif
+#endif
+
+#ifndef HOST
+#define HOST SYS_UNKNOWN
+#endif
+
+/*
+ * We assume that the target is the same as the host system
+ */
+#ifndef TARGET
+#define TARGET HOST
+#endif
+
+/*
+ * In order to predefine machine-dependent constants,
+ * several strings are defined here:
+ *
+ * MACHINE defines the target cpu (by name)
+ * SYSTEM defines the target operating system
+ * COMPILER defines the target compiler
+ *
+ * The above may be #defined as "" if they are not wanted.
+ * They should not be #defined as NULL.
+ *
+ * LINE_PREFIX defines the # output line prefix, if not "line"
+ * This should be defined as "" if cpp is to replace
+ * the "standard" C pre-processor.
+ *
+ * FILE_LOCAL marks functions which are referenced only in the
+ * file they reside. Some C compilers allow these
+ * to be marked "static" even though they are referenced
+ * by "extern" statements elsewhere.
+ *
+ * OK_DOLLAR Should be set TRUE if $ is a valid alphabetic character
+ * in identifiers (default), or zero if $ is invalid.
+ * Default is TRUE.
+ *
+ * OK_CONCAT Should be set TRUE if # may be used to concatenate
+ * tokens in macros (per the Ansi Draft Standard) or
+ * FALSE for old-style # processing (needed if cpp is
+ * to process assembler source code).
+ *
+ * OK_DATE Predefines the compilation date if set TRUE.
+ * Not permitted by the Nov. 12, 1984 Draft Standard.
+ *
+ * S_CHAR etc. Define the sizeof the basic TARGET machine word types.
+ * By default, sizes are set to the values for the HOST
+ * computer. If this is inappropriate, see the code in
+ * cpp3.c for details on what to change. Also, if you
+ * have a machine where sizeof (signed int) differs from
+ * sizeof (unsigned int), you will have to edit code and
+ * tables in cpp3.c (and extend the -S option definition.)
+ *
+ * CPP_LIBRARY May be defined if you have a site-specific include directory
+ * which is to be searched *before* the operating-system
+ * specific directories.
+ */
+
+#if TARGET == SYS_LATTICE
+/*
+ * We assume the operating system is pcdos for the IBM-PC.
+ * We also assume the small model (just like the PDP-11)
+ */
+#define MACHINE "i8086"
+#define SYSTEM "pcdos"
+#endif
+
+#if TARGET == SYS_ONYX
+#define MACHINE "z8000"
+#define SYSTEM "unix"
+#endif
+
+#if TARGET == SYS_VMS
+#define MACHINE "vax"
+#define SYSTEM "vms"
+#define COMPILER "vax11c"
+#endif
+
+#if TARGET == SYS_RSX
+#define MACHINE "pdp11"
+#define SYSTEM "rsx"
+#define COMPILER "decus"
+#endif
+
+#if TARGET == SYS_RT11
+#define MACHINE "pdp11"
+#define SYSTEM "rt11"
+#define COMPILER "decus"
+#endif
+
+#if TARGET == SYS_68000 || defined(M68000) || defined(m68000) || defined(m68k)
+/*
+ * All three machine designators have been seen in various systems.
+ * Warning -- compilers differ as to sizeof (int). cpp3 assumes that
+ * sizeof (int) == 2
+ */
+#define MACHINE "M68000", "m68000", "m68k"
+#define SYSTEM "unix"
+#endif
+
+#if TARGET == SYS_UNIX
+#define SYSTEM "unix"
+#ifdef pdp11
+#define MACHINE "pdp11"
+#endif
+#ifdef vax
+#define MACHINE "vax"
+#endif
+#endif
+
+/*
+ * defaults
+ */
+
+#ifndef MSG_PREFIX
+#define MSG_PREFIX "cpp: "
+#endif
+
+#ifndef LINE_PREFIX
+#define LINE_PREFIX ""
+#endif
+
+/*
+ * OLD_PREPROCESSOR forces the definition of OK_DOLLAR, OK_CONCAT,
+ * COMMENT_INVISIBLE, and STRING_FORMAL to values appropriate for
+ * an old-style preprocessor.
+ */
+
+#ifndef OLD_PREPROCESSOR
+#define OLD_PREPROCESSOR FALSE
+#endif
+
+#if OLD_PREPROCESSOR
+#define OK_DOLLAR FALSE
+#define OK_CONCAT TRUE
+#define COMMENT_INVISIBLE TRUE
+#define STRING_FORMAL TRUE
+#define IDMAX 63 /* actually, seems to be unlimited */
+#endif
+
+/*
+ * RECURSION_LIMIT may be set to -1 to disable the macro recursion test.
+ */
+#ifndef RECURSION_LIMIT
+#define RECURSION_LIMIT 1000
+#endif
+
+/*
+ * BITS_CHAR may be defined to set the number of bits per character.
+ * it is needed only for multi-byte character constants.
+ */
+#ifndef BITS_CHAR
+#define BITS_CHAR 8
+#endif
+
+/*
+ * BIG_ENDIAN is set TRUE on machines (such as the IBM 360 series)
+ * where 'ab' stores 'a' in the high-bits and 'b' in the low-bits.
+ * It is set FALSE on machines (such as the PDP-11 and Vax-11)
+ * where 'ab' stores 'a' in the low-bits and 'b' in the high-bits.
+ * (Or is it the other way around?) -- Warning: BIG_ENDIAN code is untested.
+ */
+#ifndef BIG_ENDIAN
+#ifdef S390
+#define BIG_ENDIAN TRUE
+#else
+#define BIG_ENDIAN FALSE
+#endif
+#endif
+
+/*
+ * COMMENT_INVISIBLE may be defined to allow "old-style" comment
+ * processing, whereby the comment becomes a zero-length token
+ * delimiter. This permitted tokens to be concatenated in macro
+ * expansions. This was removed from the Draft Ansi Standard.
+ */
+#ifndef COMMENT_INVISIBLE
+#define COMMENT_INVISIBLE FALSE
+#endif
+
+/*
+ * STRING_FORMAL may be defined to allow recognition of macro parameters
+ * anywhere in replacement strings. This was removed from the Draft Ansi
+ * Standard and a limited recognition capability added.
+ */
+#ifndef STRING_FORMAL
+#define STRING_FORMAL FALSE
+#endif
+
+/*
+ * OK_DOLLAR enables use of $ as a valid "letter" in identifiers.
+ * This is a permitted extension to the Ansi Standard and is required
+ * for e.g., VMS, RSX-11M, etc. It should be set FALSE if cpp is
+ * used to preprocess assembler source on Unix systems. OLD_PREPROCESSOR
+ * sets OK_DOLLAR FALSE for that reason.
+ */
+#ifndef OK_DOLLAR
+#define OK_DOLLAR TRUE
+#endif
+
+/*
+ * OK_CONCAT enables (one possible implementation of) token concatenation.
+ * If cpp is used to preprocess Unix assembler source, this should be
+ * set FALSE as the concatenation character, #, is used by the assembler.
+ */
+#ifndef OK_CONCAT
+#define OK_CONCAT TRUE
+#endif
+
+/*
+ * OK_DATE may be enabled to predefine today's date as a string
+ * at the start of each compilation. This is apparently not permitted
+ * by the Draft Ansi Standard.
+ */
+#ifndef OK_DATE
+#define OK_DATE TRUE
+#endif
+
+/*
+ * Some common definitions.
+ */
+
+/* ER 13.06.95 18:48
+ wer macht denn sowas?!? dadurch ist ifdef DEBUG immer wahr..
+ war wohl mal'n if DEBUG im Source, ist jetzt aber nicht..
+#ifndef DEBUG
+#define DEBUG FALSE
+#endif
+ */
+
+/*
+ * The following definitions are used to allocate memory for
+ * work buffers. In general, they should not be modified
+ * by implementors.
+ *
+ * PAR_MAC The maximum number of #define parameters (31 per Standard)
+ * Note: we need another one for strings.
+ * IDMAX The longest identifier, 31 per Ansi Standard
+ * NBUFF Input buffer size
+ * NWORK Work buffer size -- the longest macro
+ * must fit here after expansion.
+ * NEXP The nesting depth of #if expressions
+ * NINCLUDE The number of directories that may be specified
+ * on a per-system basis, or by the -I option.
+ * BLK_NEST The number of nested #if's permitted.
+ * NFWORK FileNameWorkBuffer (added by erAck, was NWORK)
+ */
+
+#ifndef IDMAX
+#define IDMAX 31
+#endif
+#ifdef SOLAR
+#define PAR_MAC (253 + 1)
+#else
+#define PAR_MAC (31 + 1)
+#endif
+/* ER 13.06.95 19:33
+ da Makros im file->buffer expandiert werden, muss NBUFF mindestens NWORK sein
+#define NWORK 4096
+#define NBUFF 4096
+ */
+/* ER 13.06.95 20:05 NWORK wg. grooossen Makros in *.src erhoeht,
+ da wir bald 10 Sprachen haben werden gleich ordentlich reingehauen.. */
+#define NWORK 16256 /* 16k - 128 wg. NPARMWORK */
+#define NBUFF NWORK
+#define NFWORK 1024
+#define NEXP 128
+#define NINCLUDE 100
+#define NPARMWORK (NWORK * 2)
+#define BLK_NEST 32
+
+
+#ifndef ALERT
+#ifdef EBCDIC
+#define ALERT '\057'
+#else
+#define ALERT '\007' /* '\a' is "Bell" */
+#endif
+#endif
+
+#ifndef VT
+#define VT '\013' /* Vertical Tab CTRL/K */
+#endif
+
+
+#ifndef FILE_LOCAL
+#ifdef decus
+#define FILE_LOCAL static
+#else
+#ifdef vax11c
+#define FILE_LOCAL static
+#else
+#define FILE_LOCAL /* Others are global */
+#endif
+#endif
+#endif
+