mdef.h
来自「早期freebsd实现」· C头文件 代码 · 共 177 行
H
177 行
/* * Copyright (c) 1989, 1993 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Ozan Yigit at York University. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by the University of * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)mdef.h 8.1 (Berkeley) 6/6/93 */#define MACRTYPE 1#define DEFITYPE 2#define EXPRTYPE 3#define SUBSTYPE 4#define IFELTYPE 5#define LENGTYPE 6#define CHNQTYPE 7#define SYSCTYPE 8#define UNDFTYPE 9#define INCLTYPE 10#define SINCTYPE 11#define PASTTYPE 12#define SPASTYPE 13#define INCRTYPE 14#define IFDFTYPE 15#define PUSDTYPE 16#define POPDTYPE 17#define SHIFTYPE 18#define DECRTYPE 19#define DIVRTYPE 20#define UNDVTYPE 21#define DIVNTYPE 22#define MKTMTYPE 23#define ERRPTYPE 24#define M4WRTYPE 25#define TRNLTYPE 26#define DNLNTYPE 27#define DUMPTYPE 28#define CHNCTYPE 29#define INDXTYPE 30#define SYSVTYPE 31#define EXITTYPE 32#define DEFNTYPE 33 #define STATIC 128/* * m4 special characters */ #define ARGFLAG '$'#define LPAREN '('#define RPAREN ')'#define LQUOTE '`'#define RQUOTE '\''#define COMMA ','#define SCOMMT '#'#define ECOMMT '\n'#ifdef msdos#define system(str) (-1)#endif/* * other important constants */#define EOS (char) 0#define MAXINP 10 /* maximum include files */#define MAXOUT 10 /* maximum # of diversions */#define MAXSTR 512 /* maximum size of string */#define BUFSIZE 4096 /* size of pushback buffer */#define STACKMAX 1024 /* size of call stack */#define STRSPMAX 4096 /* size of string space */#define MAXTOK MAXSTR /* maximum chars in a tokn */#define HASHSIZE 199 /* maximum size of hashtab */ #define ALL 1#define TOP 0 #define TRUE 1#define FALSE 0#define cycle for(;;)/* * m4 data structures */ typedef struct ndblock *ndptr; struct ndblock { /* hastable structure */ char *name; /* entry name.. */ char *defn; /* definition.. */ int type; /* type of the entry.. */ ndptr nxtptr; /* link to next entry.. */}; #define nil ((ndptr) 0) struct keyblk { char *knam; /* keyword name */ int ktyp; /* keyword type */};typedef union { /* stack structure */ int sfra; /* frame entry */ char *sstr; /* string entry */} stae;/* * macros for readibility and/or speed * * gpbc() - get a possibly pushed-back character * pushf() - push a call frame entry onto stack * pushs() - push a string pointer onto stack */#define gpbc() (bp > bufbase) ? *--bp : getc(infile[ilevel])#define pushf(x) if (sp < STACKMAX) mstack[++sp].sfra = (x)#define pushs(x) if (sp < STACKMAX) mstack[++sp].sstr = (x)/* * . . * | . | <-- sp | . | * +-------+ +-----+ * | arg 3 ----------------------->| str | * +-------+ | . | * | arg 2 ---PREVEP-----+ . * +-------+ | * . | | | * +-------+ | +-----+ * | plev | PARLEV +-------->| str | * +-------+ | . | * | type | CALTYP . * +-------+ * | prcf ---PREVFP--+ * +-------+ | * | . | PREVSP | * . | * +-------+ | * | <----------+ * +-------+ * */#define PARLEV (mstack[fp].sfra)#define CALTYP (mstack[fp-1].sfra)#define PREVEP (mstack[fp+3].sstr)#define PREVSP (fp-3)#define PREVFP (mstack[fp-2].sfra)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?