OSDN Git Service

entered into RCS
authormycroft <mycroft@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 31 May 1991 20:45:39 +0000 (20:45 +0000)
committermycroft <mycroft@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 31 May 1991 20:45:39 +0000 (20:45 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/pcp.h [new file with mode: 0644]
gcc/stack.h [new file with mode: 0644]

diff --git a/gcc/pcp.h b/gcc/pcp.h
new file mode 100644 (file)
index 0000000..0b86a87
--- /dev/null
+++ b/gcc/pcp.h
@@ -0,0 +1,100 @@
+/* pcp.h -- Describes the format of a precompiled file
+   Copyright (C) 1990 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC 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.
+
+GNU CC 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 GNU CC; see the file COPYING.  If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+
+
+/* Structure allocated for every string in a precompiled file */
+typedef struct stringdef STRINGDEF;
+struct stringdef
+{
+  U_CHAR *contents;            /* String to include */
+  int len;                     /* Its length */
+  int writeflag;               /* Whether we write this */
+  int lineno;                  /* Linenumber of source file */
+  U_CHAR *filename;            /* Name of source file */
+  STRINGDEF *chain;            /* Global list of strings in natural order */
+  int output_mark;             /* Where in the output this goes */
+};
+
+typedef struct keydef KEYDEF;
+struct keydef
+{
+  STRINGDEF *str;
+  KEYDEF *chain;
+};
+
+/* Format: */
+/* A precompiled file starts with a series of #define and #undef
+ statements:
+    #define MAC DEF     ---   Indicates MAC must be defined with defn DEF
+    #define MAC         ---   Indicates MAC must be defined with any defn
+    #undef MAC          ---   Indicates MAC cannot be defined
+
+These preconditions must be true for a precompiled file to be used.  
+The preconditions section is null terminated. */
+
+/* Then, there is a four byte number (in network byte order) which */
+ /* indicates the number of strings the file contains. */
+
+/* Each string contains a STRINGDEF structure.  The only component of */
+ /* the STRINGDEF structure which is used is the lineno field, which */
+ /* should hold the line number in the original header file.  */
+ /* Then follows the string, followed by a null.  Then comes a four */
+ /* byte number (again, in network byte order) indicating the number */
+ /* of keys for this string.  Each key is a KEYDEF structure, with */
+ /* irrelevant contents, followed by the null-terminated string. */
+
+/* If the number of keys is 0, then there are no keys for the string, */
+ /* in other words, the string will never be included.  If the number */
+ /* of keys is -1, this is a special flag indicating there are no keys */
+ /* in the file, and the string is mandatory (that is, it must be */
+ /* included regardless in the included output).  */
+
+/* A file, then, looks like this:
+
+  Precondition 1
+  Precondition 2
+  . 
+  .
+  .
+  <NUL>
+  Number of strings
+    STRINGDEF
+    String . . . <NUL>
+    Number of keys
+      KEYDEF
+      Key . . . <NUL>
+      KEYDEF 
+      Key . . . <NUL>
+      .
+      .
+      .
+    STRINGDEF
+    String . . . <NUL>
+    Number of keys
+      KEYDEF
+      Key . . . <NUL>
+      .
+      .
+      .
+    .
+    .
+    .
+
+*/
diff --git a/gcc/stack.h b/gcc/stack.h
new file mode 100644 (file)
index 0000000..ac24154
--- /dev/null
@@ -0,0 +1,41 @@
+/* stack.h - structed access to object stacks
+   Copyright (C) 1988 Free Software Foundation, Inc.
+   Contributed by Michael Tiemann (tiemann@cygnus.com).
+
+This program 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.
+
+This program 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 this program; if not, write to the Free Software
+Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+/* Summary: this file contains additional structures that layer
+   on top of obstacks for GNU C++.  */
+
+/* Stack of data placed on obstacks.  */
+   
+struct stack_level
+{
+  /* Pointer back to previous such level.  */
+  struct stack_level *prev;
+
+  /* Point to obstack we should return to.  */
+  struct obstack *obstack;
+
+  /* First place we start putting data.  */
+  tree *first;
+
+  /* Number of entries we can have from `first'.
+     Right now we are dumb: if we overflow, abort.  */
+  int limit;
+};
+
+struct stack_level *push_stack_level ();
+struct stack_level *pop_stack_level ();