Annotation of GNUtools/cc/pcp.h, revision 1.1.1.1

1.1       root        1: /* pcp.h -- Describes the format of a precompiled file
                      2:    Copyright (C) 1990 Free Software Foundation, Inc.
                      3: 
                      4: This file is part of GNU CC.
                      5: 
                      6: GNU CC is free software; you can redistribute it and/or modify
                      7: it under the terms of the GNU General Public License as published by
                      8: the Free Software Foundation; either version 2, or (at your option)
                      9: any later version.
                     10: 
                     11: GNU CC is distributed in the hope that it will be useful,
                     12: but WITHOUT ANY WARRANTY; without even the implied warranty of
                     13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     14: GNU General Public License for more details.
                     15: 
                     16: You should have received a copy of the GNU General Public License
                     17: along with GNU CC; see the file COPYING.  If not, write to
                     18: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
                     19: 
                     20: 
                     21: 
                     22: /* Structure allocated for every string in a precompiled file */
                     23: typedef struct stringdef STRINGDEF;
                     24: struct 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: 
                     35: typedef struct keydef KEYDEF;
                     36: struct 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: 
                     49: These preconditions must be true for a precompiled file to be used.  
                     50: The 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: */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.