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

1.1       root        1: /* scan.h - Utility declarations for scan-decls and fix-header programs.
                      2:    Copyright (C) 1993 Free Software Foundation, Inc.
                      3: 
                      4: This program is free software; you can redistribute it and/or modify it
                      5: under the terms of the GNU General Public License as published by the
                      6: Free Software Foundation; either version 2, or (at your option) any
                      7: later version.
                      8: 
                      9: This program is distributed in the hope that it will be useful,
                     10: but WITHOUT ANY WARRANTY; without even the implied warranty of
                     11: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     12: GNU General Public License for more details.
                     13: 
                     14: You should have received a copy of the GNU General Public License
                     15: along with this program; if not, write to the Free Software
                     16: Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
                     17: 
                     18: #include <stdio.h>
                     19: 
                     20: typedef struct sstring
                     21: {
                     22:   char *base;
                     23:   char *ptr;
                     24:   char *limit;
                     25: } sstring;
                     26: 
                     27: #define INIT_SSTRING(STR) ((STR)->base = 0, (STR)->ptr = 0, (STR)->limit = 0)
                     28: #define FREE_SSTRING(STR) do { if ((STR)->base) free (STR)->base; } while(0)
                     29: #define SSTRING_PUT(STR, C) do {\
                     30:   if ((STR)->limit <= (STR)->ptr) make_sstring_space (STR, 1); \
                     31:   *(STR)->ptr++ = (C); } while (0)
                     32: #define SSTRING_LENGTH(STR) ((STR)->ptr - (STR)->base)
                     33: #define MAKE_SSTRING_SPACE(STR, COUNT) \
                     34:   if ((STR)->limit - (STR)->ptr < (COUNT)) make_sstring_space (STR, COUNT);
                     35: 
                     36: #ifndef _PARAMS
                     37: #if defined(__STDC__) || defined(__cplusplus)
                     38: #define _PARAMS(args) args
                     39: #else
                     40: #define _PARAMS(args) ()
                     41: #endif
                     42: #endif
                     43: 
                     44: struct partial_proto;
                     45: struct fn_decl
                     46: {
                     47:   char *fname;
                     48:   char *rtype;
                     49:   char *params;
                     50:   struct partial_proto *partial;
                     51: };
                     52: 
                     53: extern int lineno;
                     54: extern void sstring_append _PARAMS((sstring*, sstring*));
                     55: extern void make_sstring_space _PARAMS((sstring*, int));
                     56: extern int skip_spaces _PARAMS((FILE*, int));
                     57: extern int scan_ident _PARAMS((FILE *, sstring *, int));
                     58: extern int scan_string _PARAMS((FILE*, sstring *, int));
                     59: extern int read_upto _PARAMS((FILE*, sstring*, int));
                     60: extern char *xmalloc _PARAMS((unsigned));
                     61: extern char *xrealloc _PARAMS((char *, unsigned));
                     62: extern unsigned long hash _PARAMS((char*));
                     63: 
                     64: /* get_token is a simple C lexer. */
                     65: #define IDENTIFIER_TOKEN 300
                     66: #define CHAR_TOKEN 301
                     67: #define STRING_TOKEN 302
                     68: #define INT_TOKEN 303
                     69: extern int get_token _PARAMS ((FILE*, sstring*));
                     70: 
                     71: /* Current file and line numer, taking #-directives into account */
                     72: extern int source_lineno;
                     73: extern sstring source_filename;
                     74: /* Current physical line number */
                     75: extern int lineno;

unix.superglobalmegacorp.com

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