home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 2 / FFMCD02.bin / new / dev / misc / p2c / src / p2c.h < prev    next >
C/C++ Source or Header  |  1993-12-21  |  14KB  |  525 lines

  1. #ifndef P2C_H
  2. #define P2C_H
  3.  
  4.  
  5. /* Header file for code generated by "p2c", the Pascal-to-C translator */
  6.  
  7. /* "p2c"  Copyright (C) 1989, 1990, 1991 Free Software Foundation.
  8.  * By Dave Gillespie, daveg@csvax.cs.caltech.edu.  Version 1.20.
  9.  * This file may be copied, modified, etc. in any way.  It is not restricted
  10.  * by the licence agreement accompanying p2c itself.
  11.  */
  12.  
  13.  
  14. #include <stdio.h>
  15.  
  16.  
  17.  
  18. /* If the following heuristic fails, compile -DBSD=0 for non-BSD systems,
  19.    or -DBSD=1 for BSD systems. */
  20.  
  21. #ifdef M_XENIX
  22. # define BSD 0
  23. #endif
  24.  
  25. #ifdef vms
  26. # define BSD 0
  27. # ifndef __STDC__
  28. #  define __STDC__ 1
  29. # endif
  30. #endif
  31.  
  32. #ifdef __TURBOC__
  33. # define MSDOS 1
  34. #endif
  35.  
  36. #ifdef MSDOS
  37. # define BSD 0
  38. #endif
  39.  
  40. #ifdef FILE       /* a #define in BSD, a typedef in SYSV (hp-ux, at least) */
  41. # ifndef BSD      /*  (a convenient, but horrible kludge!) */
  42. #  define BSD 1
  43. # endif
  44. #endif
  45.  
  46. #ifdef BSD
  47. # if !BSD
  48. #  undef BSD
  49. # endif
  50. #endif
  51.  
  52.  
  53. #if (defined(__STDC__) && !defined(M_XENIX)) || defined(__TURBOC__)
  54. # include <stddef.h>
  55. # include <stdlib.h>
  56. # define HAS_STDLIB
  57. # if defined(vms) || defined(__TURBOC__)
  58. #  define __ID__(a)a
  59. # endif
  60. #else
  61. # ifndef BSD
  62. #  ifndef __TURBOC__
  63. #   include <memory.h>
  64. #  endif
  65. # endif
  66. # ifdef hpux
  67. #  ifdef _INCLUDE__STDC__
  68. #   include <stddef.h>
  69. #   include <stdlib.h>
  70. #  endif
  71. # endif
  72. # include <sys/types.h>
  73. # if !defined(MSDOS) || defined(__TURBOC__)
  74. #  define __ID__(a)a
  75. # endif
  76. #endif
  77.  
  78. #ifdef __ID__
  79. # define __CAT__(a,b)__ID__(a)b
  80. #else
  81. # define __CAT__(a,b)a##b
  82. #endif
  83.  
  84.  
  85. #ifdef BSD
  86. # include <strings.h>
  87. # define memcpy(a,b,n) (bcopy(b,a,n),a)
  88. # define memcmp(a,b,n) bcmp(a,b,n)
  89. # define strchr(s,c) index(s,c)
  90. # define strrchr(s,c) rindex(s,c)
  91. #else
  92. # include <string.h>
  93. #endif
  94.  
  95. #include <ctype.h>
  96. #include <math.h>
  97. #include <setjmp.h>
  98. #include <assert.h>
  99.  
  100.  
  101. #ifndef NO_LACK
  102. #ifdef vms
  103.  
  104. #define LACK_LABS
  105. #define LACK_MEMMOVE
  106. #define LACK_MEMCPY
  107.  
  108. #else
  109.  
  110. #define LACK_LABS       /* Undefine these if your library has these */
  111. #define LACK_MEMMOVE
  112.  
  113. #endif
  114. #endif
  115.  
  116.  
  117. typedef struct __p2c_jmp_buf {
  118.     struct __p2c_jmp_buf *next;
  119.     jmp_buf jbuf;
  120. } __p2c_jmp_buf;
  121.  
  122.  
  123. /* Warning: The following will not work if setjmp is used simultaneously.
  124.    This also violates the ANSI restriction about using vars after longjmp,
  125.    but a typical implementation of longjmp will get it right anyway. */
  126.  
  127. #ifndef FAKE_TRY
  128. # define TRY(x)         do { __p2c_jmp_buf __try_jb;  \
  129.                  __try_jb.next = __top_jb;  \
  130.                  if (!setjmp((__top_jb = &__try_jb)->jbuf)) {
  131. # define RECOVER(x)    __top_jb = __try_jb.next; } else {
  132. # define RECOVER2(x,L)  __top_jb = __try_jb.next; } else {  \
  133.                  if (0) { L: __top_jb = __try_jb.next; }
  134. # define ENDTRY(x)      } } while (0) 
  135. #else
  136. # define TRY(x)         if (1) {
  137. # define RECOVER(x)     } else do {
  138. # define RECOVER2(x,L)  } else do { L: ;
  139. # define ENDTRY(x)      } while (0)
  140. #endif
  141.  
  142.  
  143.  
  144. #ifdef M_XENIX  /* avoid compiler bug */
  145. # define SHORT_MAX  (32767)
  146. # define SHORT_MIN  (-32768)
  147. #endif
  148.  
  149.  
  150. /* The following definitions work only on twos-complement machines */
  151. #ifndef SHORT_MAX
  152. # define SHORT_MAX  ((short)(((unsigned short) -1) >> 1))
  153. # define SHORT_MIN  (~SHORT_MAX)
  154. #endif
  155.  
  156. #ifndef INT_MAX
  157. # define INT_MAX    ((int)(((unsigned int) -1) >> 1))
  158. # define INT_MIN    (~INT_MAX)
  159. #endif
  160.  
  161. #ifndef LONG_MAX
  162. # define LONG_MAX   ((long)(((unsigned long) -1) >> 1))
  163. # define LONG_MIN   (~LONG_MAX)
  164. #endif
  165.  
  166. #ifndef SEEK_SET
  167. # define SEEK_SET   0
  168. # define SEEK_CUR   1
  169. # define SEEK_END   2
  170. #endif
  171.  
  172. #ifndef EXIT_SUCCESS
  173. # ifdef vms
  174. #  define EXIT_SUCCESS  1
  175. #  define EXIT_FAILURE  (02000000000L)
  176. # else
  177. #  define EXIT_SUCCESS  0
  178. #  define EXIT_FAILURE  1
  179. # endif
  180. #endif
  181.  
  182. #ifdef MCH_AMIGA
  183. # undef EXIT_SUCCESS
  184. # undef EXIT_FAILURE
  185. # define EXIT_SUCCESS 0
  186. # define EXIT_FAILURE 20
  187. #endif
  188.  
  189.  
  190. #define SETBITS  32
  191.  
  192.  
  193. #if defined(__STDC__) || defined(__TURBOC__)
  194. # if !defined(vms) && !defined(M_LINT)
  195. #  define Signed    signed
  196. # else
  197. #  define Signed
  198. # endif
  199. # define Void       void      /* Void f() = procedure */
  200. # ifndef Const
  201. #  define Const     const
  202. # endif
  203. # ifndef Volatile
  204. # define Volatile   volatile
  205. # endif
  206. # ifdef M_LINT
  207. #  define PP(x)     ()
  208. #  define PV()        ()
  209. typedef char *Anyptr;
  210. # else
  211. #  define PP(x)     x         /* function prototype */
  212. #  define PV()      (void)    /* null function prototype */
  213. typedef void *Anyptr;
  214. # endif
  215. #else
  216. # define Signed
  217. # define Void       void
  218. # ifndef Const
  219. #  define Const
  220. # endif
  221. # ifndef Volatile
  222. #  define Volatile
  223. # endif
  224. # define PP(x)      ()
  225. # define PV()       ()
  226. typedef char *Anyptr;
  227. #endif
  228.  
  229. #ifdef __GNUC__
  230. # define Inline     inline
  231. #else
  232. # define Inline
  233. #endif
  234.  
  235. #define Register    register  /* Register variables */
  236. #define Char        char      /* Characters (not bytes) */
  237.  
  238. #ifndef Static
  239. # define Static     static    /* Private global funcs and vars */
  240. #endif
  241.  
  242. #ifndef Local
  243. # define Local      static    /* Nested functions */
  244. #endif
  245.  
  246. typedef Signed   char schar;
  247. typedef unsigned char uchar;
  248. typedef unsigned char boolean;
  249.  
  250. #ifndef true
  251. # define true    1
  252. # define false   0
  253. #endif
  254.  
  255. #ifndef TRUE
  256. # define TRUE    1
  257. # define FALSE   0
  258. #endif
  259.  
  260.  
  261. typedef struct {
  262.     Anyptr proc, link;
  263. } _PROCEDURE;
  264.  
  265. #ifndef _FNSIZE
  266. # define _FNSIZE  120
  267. #endif
  268.  
  269.  
  270. extern Void    PASCAL_MAIN  PP( (int, Char **) );
  271. extern Char    **P_argv;
  272. extern int     P_argc;
  273. extern short   P_escapecode;
  274. extern int     P_ioresult;
  275. extern __p2c_jmp_buf *__top_jb;
  276.  
  277.  
  278. #ifdef P2C_H_PROTO   /* if you have Ansi C but non-prototyped header files */
  279. extern Char    *strcat      PP( (Char *, Const Char *) );
  280. extern Char    *strchr      PP( (Const Char *, int) );
  281. extern int      strcmp      PP( (Const Char *, Const Char *) );
  282. extern Char    *strcpy      PP( (Char *, Const Char *) );
  283. extern size_t   strlen      PP( (Const Char *) );
  284. extern Char    *strncat     PP( (Char *, Const Char *, size_t) );
  285. extern int      strncmp     PP( (Const Char *, Const Char *, size_t) );
  286. extern Char    *strncpy     PP( (Char *, Const Char *, size_t) );
  287. extern Char    *strrchr     PP( (Const Char *, int) );
  288.  
  289. extern Anyptr   memchr      PP( (Const Anyptr, int, size_t) );
  290. extern Anyptr   memmove     PP( (Anyptr, Const Anyptr, size_t) );
  291. extern Anyptr   memset      PP( (Anyptr, int, size_t) );
  292. #ifndef memcpy
  293. extern Anyptr   memcpy      PP( (Anyptr, Const Anyptr, size_t) );
  294. extern int      memcmp      PP( (Const Anyptr, Const Anyptr, size_t) );
  295. #endif
  296.  
  297. extern int      atoi        PP( (Const Char *) );
  298. extern double   atof        PP( (Const Char *) );
  299. extern long     atol        PP( (Const Char *) );
  300. extern double   strtod      PP( (Const Char *, Char **) );
  301. extern long     strtol      PP( (Const Char *, Char **, int) );
  302. #endif /*P2C_H_PROTO*/
  303.  
  304. #ifndef HAS_STDLIB
  305. extern Anyptr   malloc      PP( (size_t) );
  306. extern Void     free        PP( (Anyptr) );
  307. #endif
  308.  
  309. extern int      _OutMem     PV();
  310. extern int      _CaseCheck  PV();
  311. #ifdef MCH_AMIGA
  312. extern int      _Overflow   PV();
  313. extern int      _BusError   PV();
  314. extern int      _abort      PV();
  315. extern int      _Illegal    PV();
  316. #endif
  317. extern int      _NilCheck   PV();
  318. extern int    _Escape     PP( (int) );
  319. extern int    _EscIO      PP( (int) );
  320.  
  321. extern long     ipow        PP( (long, long) );
  322. extern Char    *strsub      PP( (Char *, Char *, int, int) );
  323. extern Char    *strltrim    PP( (Char *) );
  324. extern Char    *strrtrim    PP( (Char *) );
  325. extern Char    *strrpt      PP( (Char *, Char *, int) );
  326. extern Char    *strpad      PP( (Char *, Char *, int, int) );
  327. extern int      strpos2     PP( (Char *, Char *, int) );
  328. extern long     memavail    PV();
  329. extern int      P_peek      PP( (FILE *) );
  330. extern int      P_eof       PP( (FILE *) );
  331. extern int      P_eoln      PP( (FILE *) );
  332. extern Void     P_readpaoc  PP( (FILE *, Char *, int) );
  333. extern Void     P_readlnpaoc PP( (FILE *, Char *, int) );
  334. extern long     P_maxpos    PP( (FILE *) );
  335. extern Char    *P_trimname  PP( (Char *, int) );
  336. extern long    *P_setunion  PP( (long *, long *, long *) );
  337. extern long    *P_setint    PP( (long *, long *, long *) );
  338. extern long    *P_setdiff   PP( (long *, long *, long *) );
  339. extern long    *P_setxor    PP( (long *, long *, long *) );
  340. extern int      P_inset     PP( (unsigned, long *) );
  341. extern int      P_setequal  PP( (long *, long *) );
  342. extern int      P_subset