]> gcc.gnu.org Git - gcc.git/blame - gcc/pcp.h
(get_class_reference): Call add_class_reference for
[gcc.git] / gcc / pcp.h
CommitLineData
acde64ae
CH
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, 675 Mass Ave, Cambridge, MA 02139, USA. */
19
20
21
22/* Structure allocated for every string in a precompiled file */
23typedef struct stringdef STRINGDEF;
24struct stringdef
25{
26 U_CHAR *contents; /* String to include */
27 int len; /* Its length */
28 int writeflag; /* Whether we write this */
29 int lineno; /* Linenumber of source file */
30 U_CHAR *filename; /* Name of source file */
31 STRINGDEF *chain; /* Global list of strings in natural order */
32 int output_mark; /* Where in the output this goes */
33};
34
35typedef struct keydef KEYDEF;
36struct keydef
37{
38 STRINGDEF *str;
39 KEYDEF *chain;
40};
41
42/* Format: */
43/* A precompiled file starts with a series of #define and #undef
44 statements:
45 #define MAC DEF --- Indicates MAC must be defined with defn DEF
46 #define MAC --- Indicates MAC must be defined with any defn
47 #undef MAC --- Indicates MAC cannot be defined
48
49These preconditions must be true for a precompiled file to be used.
50The preconditions section is null terminated. */
51
52/* Then, there is a four byte number (in network byte order) which */
53 /* indicates the number of strings the file contains. */
54
55/* Each string contains a STRINGDEF structure. The only component of */
56 /* the STRINGDEF structure which is used is the lineno field, which */
57 /* should hold the line number in the original header file. */
58 /* Then follows the string, followed by a null. Then comes a four */
59 /* byte number (again, in network byte order) indicating the number */
60 /* of keys for this string. Each key is a KEYDEF structure, with */
61 /* irrelevant contents, followed by the null-terminated string. */
62
63/* If the number of keys is 0, then there are no keys for the string, */
64 /* in other words, the string will never be included. If the number */
65 /* of keys is -1, this is a special flag indicating there are no keys */
66 /* in the file, and the string is mandatory (that is, it must be */
67 /* included regardless in the included output). */
68
69/* A file, then, looks like this:
70
71 Precondition 1
72 Precondition 2
73 .
74 .
75 .
76 <NUL>
77 Number of strings
78 STRINGDEF
79 String . . . <NUL>
80 Number of keys
81 KEYDEF
82 Key . . . <NUL>
83 KEYDEF
84 Key . . . <NUL>
85 .
86 .
87 .
88 STRINGDEF
89 String . . . <NUL>
90 Number of keys
91 KEYDEF
92 Key . . . <NUL>
93 .
94 .
95 .
96 .
97 .
98 .
99
100*/
This page took 0.137772 seconds and 5 git commands to generate.