Annotation of GNUtools/cc/pcp.h, revision 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.