📄 p2c.h
字号:
#ifndef P2C_H#define P2C_H/* Header file for code generated by "p2c", the Pascal-to-C translator *//* "p2c" Copyright (C) 1989, 1990, 1991, 1992, 1993 Free Software Foundation. * By Dave Gillespie, daveg@synaptics.com. Version 1.21alpha-07.Dec.93. * This file may be copied, modified, etc. in any way. It is not restricted * by the licence agreement accompanying p2c itself. */#include <stdio.h>/* If the following heuristic fails, compile -DBSD=0 for non-BSD systems, or -DBSD=1 for BSD systems. */#ifdef M_XENIX# define BSD 0#endif#ifdef vms# define BSD 0# ifndef __STDC__# define __STDC__ 1# endif#endif#ifdef __TURBOC__# define MSDOS 1#endif#ifdef MSDOS# define BSD 0#endif#ifdef FILE /* a #define in BSD, a typedef in SYSV (hp-ux, at least) */# ifndef BSD /* (a convenient, but horrible kludge!) */# define BSD 1# endif#endif#ifdef BSD# if !BSD# undef BSD# endif#endif#if (defined(__STDC__) && !defined(M_XENIX)) || defined(__TURBOC__)# include <stdlib.h># include <stddef.h># define HAS_STDLIB# if defined(vms) || defined(__TURBOC__)# define NON_ANSI_CAT# endif#else# ifndef BSD# ifndef __TURBOC__# include <memory.h># endif# endif# ifdef hpux# ifdef _INCLUDE__STDC__# include <stddef.h># include <stdlib.h># define HAS_STDLIB# endif# endif# include <sys/types.h># if !defined(MSDOS) || defined(__TURBOC__)# define NON_ANSI_CAT# endif#endif#if defined(NON_ANSI_CAT) && !defined(ANSI_CAT)# ifdef NON_ANSI_CAT_ALTERNATE# define __CAT__(a,b)a/**/b# else# define __ID__(a)a# define __CAT__(a,b)__ID__(a)b# endif#else# define __CAT__(a,b)a##b#endif#ifdef BSD# include <strings.h># define memcpy(a,b,n) (bcopy(b,a,n),a)# define memcmp(a,b,n) bcmp(a,b,n)# define strchr(s,c) index(s,c)# define strrchr(s,c) rindex(s,c)#else# include <string.h>#endif#include <ctype.h>#include <math.h>#include <setjmp.h>#include <assert.h>#ifndef NO_LACK#ifdef vms#define LACK_LABS#define LACK_MEMMOVE#define LACK_MEMCPY#else#define LACK_LABS /* Undefine these if your library has these */#define LACK_MEMMOVE#endif#endiftypedef struct __p2c_jmp_buf { struct __p2c_jmp_buf *next; jmp_buf jbuf;} __p2c_jmp_buf;/* Warning: The following will not work if setjmp is used simultaneously. This also violates the ANSI restriction about using vars after longjmp, but a typical implementation of longjmp will get it right anyway. */#ifndef FAKE_TRY# define TRY(x) do { __p2c_jmp_buf __try_jb; \ __try_jb.next = __top_jb; \ if (!setjmp((__top_jb = &__try_jb)->jbuf)) {# define RECOVER(x) __top_jb = __try_jb.next; } else {# define RECOVER2(x,L) __top_jb = __try_jb.next; } else { \ if (0) { L: __top_jb = __try_jb.next; }# define ENDTRY(x) } } while (0) #else# define TRY(x) if (1) {# define RECOVER(x) } else do {# define RECOVER2(x,L) } else do { L: ;# define ENDTRY(x) } while (0)#endif#ifdef M_XENIX /* avoid compiler bug */# define SHORT_MAX (32767)# define SHORT_MIN (-32768)#endif/* The following definitions work only on twos-complement machines */#ifndef SHORT_MAX# define SHORT_MAX ((short)(((unsigned short) -1) >> 1))# define SHORT_MIN (~SHORT_MAX)#endif#ifndef INT_MAX# define INT_MAX ((int)(((unsigned int) -1) >> 1))# define INT_MIN (~INT_MAX)#endif#ifndef LONG_MAX# define LONG_MAX ((long)(((unsigned long) -1) >> 1))# define LONG_MIN (~LONG_MAX)#endif#ifndef SEEK_SET# define SEEK_SET 0# define SEEK_CUR 1# define SEEK_END 2#endif#ifndef EXIT_SUCCESS# ifdef vms# define EXIT_SUCCESS 1# define EXIT_FAILURE (02000000000L)# else# define EXIT_SUCCESS 0# define EXIT_FAILURE 1# endif#endif#define SETBITS 32#if defined(__STDC__) || defined(__TURBOC__)# if !defined(vms) && !defined(M_LINT)# define Signed signed# else# define Signed# endif# define Void void /* Void f() = procedure */# ifndef Const# define Const const# endif# ifndef Volatile# define Volatile volatile# endif# ifdef M_LINT# define PP(x) ()# define PV() ()typedef char *Anyptr;# else# define PP(x) x /* function prototype */# define PV() (void) /* null function prototype */typedef void *Anyptr;# endif#else# define Signed# define Void void# ifndef Const# define Const# endif# ifndef Volatile# define Volatile# endif# define PP(x) ()# define PV() ()typedef char *Anyptr;#endif#ifdef __GNUC__# define Inline inline#else# define Inline#endif#define Register register /* Register variables */#define Char char /* Characters (not bytes) */#ifndef Static# define Static static /* Private global funcs and vars */#endif#ifndef Local# define Local static /* Nested functions */#endiftypedef Signed char schar;typedef unsigned char uchar;typedef unsigned char boolean;#ifndef NO_DECLARE_ALFAtypedef Char alfa[10];#endif#ifndef true# define true 1# define false 0#endif#ifndef TRUE# define TRUE 1# define FALSE 0#endiftypedef struct { Anyptr proc, link;} _PROCEDURE;#ifndef _FNSIZE# define _FNSIZE 120#endifextern Void PASCAL_MAIN PP( (int, Char **) );extern Char **P_argv;extern int P_argc;extern short P_escapecode;extern int P_ioresult;extern __p2c_jmp_buf *__top_jb;#ifdef P2C_H_PROTO /* if you have Ansi C but non-prototyped header files */extern Char *strcat PP( (Char *, Const Char *) );extern Char *strchr PP( (Const Char *, int) );extern int strcmp PP( (Const Char *, Const Char *) );extern Char *strcpy PP( (Char *, Const Char *) );extern size_t strlen PP( (Const Char *) );extern Char *strncat PP( (Char *, Const Char *, size_t) );extern int strncmp PP( (Const Char *, Const Char *, size_t) );extern Char *strncpy PP( (Char *, Const Char *, size_t) );extern Char *strrchr PP( (Const Char *, int) );extern Anyptr memchr PP( (Const Anyptr, int, size_t) );extern Anyptr memmove PP( (Anyptr, Const Anyptr, size_t) );extern Anyptr memset PP( (Anyptr, int, size_t) );#ifndef memcpyextern Anyptr memcpy PP( (Anyptr, Const Anyptr, size_t) );extern int memcmp PP( (Const Anyptr, Const Anyptr, size_t) );#endifextern int atoi PP( (Const Char *) );extern double atof PP( (Const Char *) );extern long atol PP( (Const Char *) );extern double strtod PP( (Const Char *, Char **) );extern long strtol PP( (Const Char *, Char **, int) );#endif /*P2C_H_PROTO*/#ifndef HAS_STDLIB#ifndef NO_DECLARE_MALLOCextern Anyptr malloc PP( (size_t) );extern Void free PP( (Anyptr) );#endif#endifextern int _OutMem PV();extern int _CaseCheck PV();extern int _NilCheck PV();extern int _Escape PP( (int) );extern int _EscIO PP( (int) );extern int _EscIO2 PP( (int, Char *) );extern long ipow PP( (long, long) );extern long P_imax PP( (long, long) );extern long P_imin PP( (long, long) );extern double P_rmax PP( (double, double) );extern double P_rmin PP( (double, double) );extern Char *strsub PP( (Char *, Char *, int, int) );extern Char *strltrim PP( (Char *) );extern Char *strrtrim PP( (Char *) );extern Char *strrpt PP( (Char *, Char *, int) );extern Char *strpad PP( (Char *, Char *, int, int) );extern int strpos2 PP( (Char *, Char *, int) );extern long memavail PV();extern int P_peek PP( (FILE *) );extern int P_eof PP( (FILE *) );extern int P_eoln PP( (FILE *) );extern Void P_readpaoc PP( (FILE *, Char *, int) );extern Void P_readlnpaoc PP( (FILE *, Char *, int) );extern long P_maxpos PP( (FILE *) );extern Char *P_trimname PP( (Char *, int) );extern long *P_setunion PP( (long *, long *, long *) );extern long *P_setint PP( (long *, long *, long *) );extern long *P_setdiff PP( (long *, long *, long *) );extern long *P_setxor PP( (long *, long *, long *) );extern int P_inset PP( (unsigned, long *) );extern int P_setequal PP( (long *, long *) );extern int P_subset PP( (long *, long *) );extern long *P_addset PP( (long *, unsigned) );extern long *P_addsetr PP( (long *, unsigned, unsigned) );extern long *P_remset PP( (long *, unsigned) );extern long *P_setcpy PP( (long *, long *) );extern long *P_expset PP( (long *, long) );extern long P_packset PP( (long *) );extern int P_getcmdline PP( (int, int, Char *) );extern Void TimeStamp PP( (int *, int *, int *, int *, int *, int *) );extern Void P_sun_argv PP( (char *, int, int) );extern FILE *_skipspaces PP( (FILE *) );extern FILE *_skipnlspaces PP( (FILE *) );/* I/O error handling */#define _CHKIO(cond,ior,val,def) ((cond) ? P_ioresult=0,(val) \ : P_ioresult=(ior),(def))#define _SETIO(cond,ior) (P_ioresult = (cond) ? 0 : (ior))/* Following defines are suitable for the HP Pascal operating system */#define FileNotFound 10#define FileNotOpen 13#define FileWriteError 38#define BadInputFormat 14#define EndOfFile 30#define FILENOTFOUND 10#define FILENOTOPEN 13#define FILEWRITEERROR 38#define BADINPUTFORMAT 14#define ENDOFFILE 30/* Creating temporary files */#if (defined(BSD) || defined(NO_TMPFILE)) && !defined(HAVE_TMPFILE)# define tmpfile() (fopen(tmpnam(NULL), "w+"))#endif/* File buffers */#define FILEBUF(f,sc,type) sc int __CAT__(f,_BFLAGS); \ sc type __CAT__(f,_BUFFER)#define FILEBUFNC(f,type) int __CAT__(f,_BFLAGS); \ type __CAT__(f,_BUFFER)#define RESETBUF(f,type) (__CAT__(f,_BFLAGS) = 1)#define SETUPBUF(f,type) (__CAT__(f,_BFLAGS) = 0)#define GETFBUF(f,type) (*((__CAT__(f,_BFLAGS) == 1 && \ ((__CAT__(f,_BFLAGS) = 2), \ fread(&__CAT__(f,_BUFFER), \ sizeof(type),1,(f)))),\ &__CAT__(f,_BUFFER)))#define AGETFBUF(f,type) ((__CAT__(f,_BFLAGS) == 1 && \ ((__CAT__(f,_BFLAGS) = 2), \ fread(__CAT__(f,_BUFFER), \ sizeof(type),1,(f)))),\ __CAT__(f,_BUFFER))#define PUTFBUF(f,type,v) (GETFBUF(f,type) = (v))#define CPUTFBUF(f,v) (PUTFBUF(f,char,v))#define APUTFBUF(f,type,v) (memcpy(AGETFBUF(f,type), (v), \ sizeof(__CAT__(f,_BUFFER))))#define GET(f,type) (__CAT__(f,_BFLAGS) == 1 ? \ fread(&__CAT__(f,_BUFFER),sizeof(type),1,(f)) : \ (__CAT__(f,_BFLAGS) = 1))#define PUT(f,type) (fwrite(&__CAT__(f,_BUFFER),sizeof(type),1,(f)), \ (__CAT__(f,_BFLAGS) = 0))#define CPUT(f) (PUT(f,char))#define BUFEOF(f) (__CAT__(f,_BFLAGS) != 2 && P_eof(f))#define BUFFPOS(f) (ftell(f) - (__CAT__(f,_BFLAGS) == 2))typedef struct { FILE *f; int f_BFLAGS; /* FILEBUFNC(f,Char); */ Char f_BUFFER; Char name[_FNSIZE];} _TEXT;/* Memory allocation */#ifdef __GCC__# define Malloc(n) (malloc(n) ?: (Anyptr)_OutMem())#elseextern Anyptr __MallocTemp__;# define Malloc(n) ((__MallocTemp__ = malloc(n)) ? __MallocTemp__ : (Anyptr)_OutMem())#endif#define FreeR(p) (free((Anyptr)(p))) /* used if arg is an rvalue */#define Free(p) (free((Anyptr)(p)), (p)=NULL)/* sign extension */#define SEXT(x,n) ((x) | -(((x) & (1L<<((n)-1))) << 1))/* packed arrays */ /* BEWARE: these are untested! */#define P_getbits_UB(a,i,n,L) ((int)((a)[(i)>>(L)-(n)] >> \ (((~(i))&((1<<(L)-(n))-1)) << (n)) & \ (1<<(1<<(n)))-1))#define P_getbits_SB(a,i,n,L) ((int)((a)[(i)>>(L)-(n)] << \ (16 - ((((~(i))&((1<<(L)-(n))-1))+1) <<\ (n)) >> (16-(1<<(n))))))#define P_putbits_UB(a,i,x,n,L) ((a)[(i)>>(L)-(n)] |= \ (x) << (((~(i))&((1<<(L)-(n))-1)) << (n)))#define P_putbits_SB(a,i,x,n,L) ((a)[(i)>>(L)-(n)] |= \ ((x) & (1<<(1<<(n)))-1) << \ (((~(i))&((1<<(L)-(n))-1)) << (n)))#define P_clrbits_B(a,i,n,L) ((a)[(i)>>(L)-(n)] &= \ ~( ((1<<(1<<(n)))-1) << \ (((~(i))&((1<<(L)-(n))-1)) << (n))) )/* small packed arrays */#define P_getbits_US(v,i,n) ((int)((v) >> ((i)<<(n)) & (1<<(1<<(n)))-1))#define P_getbits_SS(v,i,n) ((int)((long)(v) << (SETBITS - (((i)+1) << (n))) >> (SETBITS-(1<<(n)))))#define P_putbits_US(v,i,x,n) ((v) |= (x) << ((i) << (n)))#define P_putbits_SS(v,i,x,n) ((v) |= ((x) & (1<<(1<<(n)))-1) << ((i)<<(n)))#define P_clrbits_S(v,i,n) ((v) &= ~( ((1<<(1<<(n)))-1) << ((i)<<(n)) ))#define P_max(a,b) ((a) > (b) ? (a) : (b))#define P_min(a,b) ((a) < (b) ? (a) : (b))/* Fix ANSI-isms */#ifdef LACK_LABS# ifndef labs# define labs my_labs extern long my_labs PP( (long) );# endif#endif#ifdef LACK_MEMMOVE# ifndef memmove# define memmove my_memmove extern Anyptr my_memmove PP( (Anyptr, Const Anyptr, size_t) );# endif#endif#ifdef LACK_MEMCPY# ifndef memcpy# define memcpy my_memcpy extern Anyptr my_memcpy PP( (Anyptr, Const Anyptr, size_t) );# endif# ifndef memcmp# define memcmp my_memcmp extern int my_memcmp PP( (Const Anyptr, Const Anyptr, size_t) );# endif# ifndef memset# define memset my_memset extern Anyptr my_memset PP( (Anyptr, int, size_t) );# endif#endif/* Fix toupper/tolower on Suns and other stupid BSD systems */#ifdef toupper# undef toupper# undef tolower# define toupper(c) my_toupper(c)# define tolower(c) my_tolower(c)#endif#ifndef _toupper# if 'A' == 65 && 'a' == 97# define _toupper(c) ((c)-'a'+'A')# define _tolower(c) ((c)-'A'+'a')# else# ifdef toupper# undef toupper /* hope these are shadowing real functions, */# undef tolower /* because my_toupper calls _toupper! */# endif# define _toupper(c) toupper(c)# define _tolower(c) tolower(c)# endif#endif#endif /* P2C_H *//* End. */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -