This is parsers.h in view mode; [Download] [Up]
/* docgen Objective C Document Generator Copyright (C) 1995 Bill Bereza. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Email: berezaw@river.it.gvsu.edu S-mail: Bill Bereza 9526 Judson Rd. Ravenna, MI 49451-9427 */ /* docgen Objective C Document Generator * Copyright (c) 1994 Bill Bereza * * $Log: parsers.h,v $ * Revision 1.25 96/01/07 01:30:32 berezaw * additions for 0.3.2 * * Revision 1.24 95/07/26 17:50:49 berezaw * got before and after comments parsing to work * * added findrealchr() function * * Revision 1.23 95/07/26 16:17:33 berezaw * 0.3.1 * * Revision 1.22 95/07/21 15:22:48 berezaw * *** empty log message *** * * Revision 1.21 95/07/16 19:19:57 berezaw * * bug fix found by pburka * * Revision 1.20 95/03/02 18:54:43 berezaw * adjusting expressions for methods * * Revision 1.19 95/03/02 03:44:48 berezaw * using GNU regex library * rewrote recmp() as docgen_recmp() * added GPL stuff to each file * increase rev. to 0.1.9 * * Revision 1.18 95/02/13 18:22:37 berezaw * *** empty log message *** * * Revision 1.17 95/02/13 18:01:56 berezaw * fixed METHEXP * * Revision 1.16 95/02/02 18:32:15 berezaw * 0.1.7, fixed problems with skipping lines * in odd classes * * Revision 1.15 95/02/02 15:22:00 berezaw * 0.1.6 * * Revision 1.14 95/02/01 18:50:05 berezaw * * 0.1.6 * * Revision 1.13 95/01/29 01:52:55 berezaw * reused code from parsemethods to create general * comment printing function to handle italicizing * variable names, and to eventually handle fancy * text * * Revision 1.12 95/01/28 23:22:10 berezaw * added CPEXPII for the way _I_ do copyrights * , * * Revision 1.11 95/01/27 00:31:47 berezaw * added '-x' option to hide methods beginning with '_' * * Revision 1.10 95/01/26 15:33:08 berezaw * added BSD, SYSV and HPUX checks * * Revision 1.9 95/01/26 05:36:24 berezaw * major fixing in parseivars and parsemethodtypes * added dcmp() * changed parsemethods to handle multiple classes, * to use a list that can be sorted, * and to handle method declarations better * * Revision 1.8 94/11/28 12:08:37 berezaw * *** empty log message *** * * * $Id: parsers.h,v 1.25 96/01/07 01:30:32 berezaw Exp $ */ #ifndef PARSERS_H #define PARSERS_H #include <ctype.h> #include <limits.h> #include "docgen.h" #include "RTFcrap.h" #include <sys/types.h> #include <regex-0.12/regex.h> #ifndef HAVE_FGETPOS #define fpos_t long int static int fgetpos(FILE *stream, fpos_t *pos) { return (int)(*pos=ftell(stream)); } static int fsetpos(FILE *stream, const fpos_t *pos) { return fseek(stream, *pos, SEEK_SET); } #endif #define DOCGEN_REBUF 1024 /* maximum number of files to add to the inheritance list (to stop infinite loops) */ #ifndef MAX_INHERIT_SEARCHES #define MAX_INHERIT_SEARCHES 200 #endif /* syntax for docgen regular expressions */ #define DOCGEN_SYNTAX ( RE_BK_PLUS_QM | RE_DOT_NOT_NULL ) /* regular-expression daffynitions */ #define SETEXP "^ *-.*set.*:" #define CLASSMETH "^ *+ *[^0-9+-]" #define WHITEXP "^ *$" /* Matches lines of all white space */ #define CPEXP ".*COPYRIGHT" /* Find a commented Copyright notice */ #define CPEXPII ".*Copyright" #define STOPEXP ".*\\*/" /* Find comment delimiter, looser than comment starter */ #define STARTEXP "^/\\*" /* Find comment starter, only finds comments on their own line */ #define IMPLEM "^ *@imp" /* Find @implementation line */ #define INTERFACE "^ *@interface" /* Find @interface line */ #define DONEINT ".*@end" /* Find @end line, looser to stop runs to eof */ #define IVARBEG "^ *{" /* Line beginning instance variables */ #define IVAREND "^ *}" /* Line at end of instance variables */ #define IVARNONE "^ *{ *}" /* Empty istance variable block */ #define IDESCEXP ".*; */" /* instance variable description comment prefix */ #define METHEXP "^ *[-+] *[^0-9+-]" /* expression to find a method */ #define UNDOC "^ *[-+].*[ )]*_" /* Pattern for methods that should be undocumented */ #define SEEALSO "^ *See.*:" /* Expression for extra special text in * method descriptions */ /* not-regular-expression definitions */ #define CLASSCHK ":" /* If this is in the interface line it is a Class */ #define CATCHK "(" /* " Category */ #define TOKSPACE " \t" /* String of whitespace chars */ #define INTTOK ":( " /* characters that seperate tokens in the @interface */ #define TOKPARENS "(" /* Left parenthesis */ #define IDESCSTR "//" /* String signifying start of i-var descriptions */ #define IDESCCHAR '/' /* Character that is the first of i-var description */ #define IVTOK ";" /* Seperates the declaration from the comment */ #define DESCRIPTOK " \t" /* String of whitespace for method descriptions */ #define PUNCS "!;,.?" /* String of chars that might be at the end of a word */ typedef enum { none, class, category } ofiletype; extern DSTRING *GLOB_istring; extern int parseivars(FILE *RTFf, FILE *Hf, char *FQh); extern void parsemethodtype(FILE *Hf, FILE *RTFf, char *hline); extern void parsecomments(FILE *RTFf, char *mline, DSTRING *dynstr); extern void parsemethods(FILE *Mf, FILE *RTFf, char *mline, fpos_t currPos); extern void traceinheritance(FILE *RTFf, char *hdir, char *hname); extern int docgen_recmp(char *expr, char *line); #define SKIPSPACE(s) while(isspace(*(s)) && *(s)) (s)++ #define SKIPTOCHAR(s,c) while(*(s) != (c) && *(s)) (s)++ #define SKIPCHAR(s,c) while(*(s) == (c) && *(s)) (s)++ #define SKIPPARENS(c) \ {\ int __parencount=1;\ while(__parencount && *(c)) { (c)++; if(*(c)=='(') __parencount++; else if(*(c)==')') __parencount--; }\ if(*(c)) \ (c)++;\ } #endif /* PARSERS_H */
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.