|
|
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;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.