1/*
2 * $Id: comment.h,v 1.6 2009-10-13 22:55:37 didg Exp $
3 *
4 * Copyright (c) 1990,1991 Regents of The University of Michigan.
5 * All Rights Reserved.  See COPYRIGHT.
6 */
7
8#ifndef PAPD_COMMENT_H
9#define PAPD_COMMENT_H 1
10
11#include <sys/cdefs.h>
12
13struct papd_comment {
14    char		*c_begin;
15    char		*c_end;
16    int			(*c_handler)();
17    int			c_flags;
18};
19
20#define CH_DONE		0
21#define CH_MORE		1
22#define CH_ERROR	-1
23
24struct comstate {
25    struct papd_comment	*cs_comment;
26    struct comstate	*cs_prev;
27    int			cs_flags;
28};
29
30extern struct papd_comment	*commatch();
31extern struct comstate		*comstate;
32extern struct papd_comment	magics[];
33extern struct papd_comment	queries[];
34extern struct papd_comment	headers[];
35extern char			*comcont;
36
37#define compeek()	(comstate==NULL?NULL:(comstate->cs_comment))
38#define comgetflags()	(comstate->cs_flags)
39#define comsetflags(f)	(comstate->cs_flags=(f))
40
41/*
42 * Comment flags.  0-15 reserved for "global" flags, 16-31 for specific
43 * subtypes.
44 */
45#define C_FULL		(1<<0)				/* or prefix */
46#define C_CONTINUE	(1<<1)
47
48/*
49 * Query subtypes.
50 */
51
52/*
53 * Magic "number" subtypes.
54 */
55#define CM_NOPRINT	(1<<16)				/* or print */
56
57void compop ( void );
58void compush ( struct papd_comment * );
59int comswitch ( struct papd_comment *, int (*)() );
60int comcmp ( char *, char *, char *, int );
61struct papd_comment *commatch ( char *, char *, struct papd_comment * );
62char *comtoken ( char *, char *, char *, char * );
63
64#endif /* PAPD_COMMENT_H */
65