source: trunk/third/gcc/pcp.h @ 8834

Revision 8834, 3.1 KB checked in by ghudson, 28 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r8833, which included commits to RCS files with non-trunk default branches.
Line 
1/* pcp.h -- Describes the format of a precompiled file
2   Copyright (C) 1990 Free Software Foundation, Inc.
3
4This file is part of GNU CC.
5
6GNU CC is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 2, or (at your option)
9any later version.
10
11GNU CC is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License
17along with GNU CC; see the file COPYING.  If not, write to
18the Free Software Foundation, 59 Temple Place - Suite 330,
19Boston, MA 02111-1307, USA.  */
20
21
22
23/* Structure allocated for every string in a precompiled file */
24typedef struct stringdef STRINGDEF;
25struct stringdef
26{
27  U_CHAR *contents;             /* String to include */
28  int len;                      /* Its length */
29  int writeflag;                /* Whether we write this */
30  int lineno;                   /* Linenumber of source file */
31  U_CHAR *filename;             /* Name of source file */
32  STRINGDEF *chain;             /* Global list of strings in natural order */
33  int output_mark;              /* Where in the output this goes */
34};
35
36typedef struct keydef KEYDEF;
37struct keydef
38{
39  STRINGDEF *str;
40  KEYDEF *chain;
41};
42
43/* Format: */
44/* A precompiled file starts with a series of #define and #undef
45 statements:
46    #define MAC DEF     ---   Indicates MAC must be defined with defn DEF
47    #define MAC         ---   Indicates MAC must be defined with any defn
48    #undef MAC          ---   Indicates MAC cannot be defined
49
50These preconditions must be true for a precompiled file to be used. 
51The preconditions section is null terminated. */
52
53/* Then, there is a four byte number (in network byte order) which */
54 /* indicates the number of strings the file contains. */
55
56/* Each string contains a STRINGDEF structure.  The only component of */
57 /* the STRINGDEF structure which is used is the lineno field, which */
58 /* should hold the line number in the original header file.  */
59 /* Then follows the string, followed by a null.  Then comes a four */
60 /* byte number (again, in network byte order) indicating the number */
61 /* of keys for this string.  Each key is a KEYDEF structure, with */
62 /* irrelevant contents, followed by the null-terminated string. */
63
64/* If the number of keys is 0, then there are no keys for the string, */
65 /* in other words, the string will never be included.  If the number */
66 /* of keys is -1, this is a special flag indicating there are no keys */
67 /* in the file, and the string is mandatory (that is, it must be */
68 /* included regardless in the included output).  */
69
70/* A file, then, looks like this:
71
72  Precondition 1
73  Precondition 2
74  .
75  .
76  .
77  <NUL>
78  Number of strings
79    STRINGDEF
80    String . . . <NUL>
81    Number of keys
82      KEYDEF
83      Key . . . <NUL>
84      KEYDEF
85      Key . . . <NUL>
86      .
87      .
88      .
89    STRINGDEF
90    String . . . <NUL>
91    Number of keys
92      KEYDEF
93      Key . . . <NUL>
94      .
95      .
96      .
97    .
98    .
99    .
100
101*/
Note: See TracBrowser for help on using the repository browser.