home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fonts 1 / freshfonts1.bin / programs / amiga / pastex / archives / bm2font.lha / bm2font / p2c.h < prev    next >
C/C++ Source or Header  |  1992-09-29  |  14KB  |  516 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. #ifndef NOSTDDEF
  55. # include <stddef.h>
  56. #endif
  57. # include <stdlib.h>
  58. # define HAS_STDLIB
  59. # if defined(vms) || defined(__TURBOC__)
  60. #  define __ID__(a)a
  61. # endif
  62. #else
  63. # ifndef BSD
  64. #  ifndef __TURBOC__
  65. #   include <memory.h>
  66. #  endif
  67. # endif
  68. # ifdef hpux
  69. #  ifdef _INCLUDE__STDC__
  70. #   include <stddef.h>
  71. #   include <stdlib.h>
  72. #  endif
  73. # endif
  74. # include <sys/types.h>
  75. # if !defined(MSDOS) || defined(__TURBOC__)
  76. #  define __ID__(a)a
  77. # endif
  78. #endif
  79.  
  80. #ifdef __ID__
  81. # define __CAT__(a,b)__ID__(a)b
  82. #else
  83. # define __CAT__(a,b)a##b
  84. #endif
  85.  
  86.  
  87. #ifdef BSD
  88. # include <strings.h>
  89. # define memcpy(a,b,n) (bcopy(b,a,n),a)
  90. # define memcmp(a,b,n) bcmp(a,b,n)
  91. # define strchr(s,c) index(s,c)
  92. # define strrchr(s,c) rindex(s,c)
  93. #else
  94. # include <string.h>
  95. #endif
  96.  
  97. #include <ctype.h>
  98. #include <math.h>
  99. #include <setjmp.h>
  100. #include <assert.h>
  101.  
  102.  
  103. #ifndef NO_LACK
  104. #ifdef vms
  105.  
  106. #define LACK_LABS
  107. #define LACK_MEMMOVE
  108. #define LACK_MEMCPY
  109.  
  110. #else
  111.  
  112. #define LACK_LABS       /* Undefine these if your library has these */
  113. #define LACK_MEMMOVE
  114.  
  115. #endif
  116. #endif
  117.  
  118.  
  119. typedef struct __p2c_jmp_buf {
  120.     struct __p2c_jmp_buf *next;
  121.     jmp_buf jbuf;
  122. } __p2c_jmp_buf;
  123.  
  124.  
  125. /* Warning: The following will not work if setjmp is used simultaneously.
  126.    This also violates the ANSI restriction about using vars after longjmp,
  127.    but a typical implementation of longjmp will get it right anyway. */
  128.  
  129. #ifndef FAKE_TRY
  130. # define TRY(x)         do { __p2c_jmp_buf __try_jb;  \
  131.                  __try_jb.next = __top_jb;  \
  132.                  if (!setjmp((__top_jb = &__try_jb)->jbuf)) {
  133. # define RECOVER(x)    __top_jb = __try_jb.next; } else {
  134. # define RECOVER2(x,L)  __top_jb = __try_jb.next; } else {  \
  135.                  if (0) { L: __top_jb = __try_jb.next; }
  136. # define ENDTRY(x)      } } while (0) 
  137. #else
  138. # define TRY(x)         if (1) {
  139. # define RECOVER(x)     } else do {
  140. # define RECOVER2(x,L)  } else do { L: ;
  141. # define ENDTRY(x)      } while (0)
  142. #endif
  143.  
  144.  
  145.  
  146. #ifdef M_XENIX  /* avoid compiler bug */
  147. # define SHORT_MAX  (32767)
  148. # define SHORT_MIN  (-32768)
  149. #endif
  150.  
  151.  
  152. /* The following definitions work only on twos-complement machines */
  153. #ifndef SHORT_MAX
  154. # define SHORT_MAX  ((short)(((unsigned short) -1) >> 1))
  155. # define SHORT_MIN  (~SHORT_MAX)
  156. #endif
  157.  
  158. #ifndef INT_MAX
  159. # define INT_MAX    ((int)(((unsigned int) -1) >> 1))
  160. # define INT_MIN    (~INT_MAX)
  161. #endif
  162.  
  163. #ifndef LONG_MAX
  164. # define LONG_MAX   ((long)(((unsigned long) -1) >> 1))
  165. # define LONG_MIN   (~LONG_MAX)
  166. #endif
  167.  
  168. #ifndef SEEK_SET
  169. # define SEEK_SET   0
  170. # define SEEK_CUR   1
  171. # define SEEK_END   2
  172. #endif
  173.  
  174. #ifndef EXIT_SUCCESS
  175. # ifdef vms
  176. #  define EXIT_SUCCESS  1
  177. #  define EXIT_FAILURE  (02000000000L)
  178. # else
  179. #  define EXIT_SUCCESS  0
  180. #  define EXIT_FAILURE  1
  181. # endif
  182. #endif
  183.  
  184.  
  185. #define SETBITS  32
  186.  
  187.  
  188. #if defined(__STDC__) || defined(__TURBOC__)
  189. # if !defined(vms) && !defined(M_LINT)
  190. #  define Signed    signed
  191. # else
  192. #  define Signed
  193. # endif
  194. # define Void       void      /* Void f() = procedure */
  195. # ifndef Const
  196. #  define Const     const
  197. # endif
  198. # ifndef Volatile
  199. # define Volatile   volatile
  200. # endif
  201. # ifdef M_LINT
  202. #  define PP(x)     ()
  203. #  define PV()        ()
  204. typedef char *Anyptr;
  205. # else
  206. #  define PP(x)     x         /* function prototype */
  207. #  define PV()      (void)    /* null function prototype */
  208. typedef void *Anyptr;
  209. # endif
  210. #else
  211. # define Signed
  212. # define Void       void
  213. # ifndef Const
  214. #  define Const
  215. # endif
  216. # ifndef Volatile
  217. #  define Volatile
  218. # endif
  219. # define PP(x)      ()
  220. # define PV()       ()
  221. typedef char *Anyptr;
  222. #endif
  223.  
  224. #ifdef __GNUC__
  225. # define Inline     inline
  226. #else
  227. # define Inline
  228. #endif
  229.  
  230. #define Register    register  /* Register variables */
  231. #define Char        char      /* Characters (not bytes) */
  232.  
  233. #ifndef Static
  234. # define Static     static    /* Private global funcs and vars */
  235. #endif
  236.  
  237. #ifndef Local
  238. # define Local      static    /* Nested functions */
  239. #endif
  240.  
  241. typedef Signed   char schar;
  242. #ifndef HAS_UCHAR
  243. typedef unsigned char uchar;
  244. #endif
  245. typedef unsigned char boolean;
  246.  
  247. #ifndef true
  248. # define true    1
  249. # define false   0
  250. #endif
  251.  
  252. #ifndef TRUE
  253. # define TRUE    1
  254. # define FALSE   0
  255. #endif
  256.  
  257.  
  258. typedef struct {
  259.     Anyptr proc, link;
  260. } _PROCEDURE;
  261.  
  262. #ifndef _FNSIZE
  263. # define _FNSIZE  120
  264. #endif
  265.  
  266.  
  267. extern Void    PASCAL_MAIN  PP( (int, Char **) );
  268. extern Char    **P_argv;
  269. extern int     P_argc;
  270. extern short   P_escapecode;
  271. extern int     P_ioresult;
  272. extern __p2c_jmp_buf *__top_jb;
  273.  
  274.  
  275. #ifdef P2C_H_PROTO   /* if you have Ansi C but non-prototyped header files */
  276. extern Char    *strcat      PP( (Char *, Const Char *) );
  277. extern Char    *strchr      PP( (Const Char *, int) );
  278. extern int      strcmp      PP( (Const Char *, Const Char *) );
  279. extern Char    *strcpy      PP( (Char *, Const Char *) );
  280. extern size_t   strlen      PP( (Const Char *) );
  281. extern Char    *strncat     PP( (Char *, Const Char *, size_t) );
  282. extern int      strncmp     PP( (Const Char *, Const Char *, size_t) );
  283. extern Char    *strncpy     PP( (Char *, Const Char *, size_t) );
  284. extern Char    *strrchr     PP( (Const Char *, int) );
  285.  
  286. extern Anyptr   memchr      PP( (Const Anyptr, int, size_t) );
  287. extern Anyptr   memmove     PP( (Anyptr, Const Anyptr, size_t) );
  288. extern Anyptr   memset      PP( (Anyptr, int, size_t) );
  289. #ifndef memcpy
  290. extern Anyptr   memcpy      PP( (Anyptr, Const Anyptr, size_t) );
  291. extern int      memcmp      PP( (Const Anyptr, Const Anyptr, size_t) );
  292. #endif
  293.  
  294. extern int      atoi        PP( (Const Char *) );
  295. extern double   atof        PP( (Const Char *) );
  296. extern long     atol        PP( (Const Char *) );
  297. extern double   strtod      PP( (Const Char *, Char **) );
  298. extern long     strtol      PP( (Const Char *, Char **, int) );
  299. #endif /*P2C_H_PROTO*/
  300.  
  301. #ifndef HAS_STDLIB
  302. extern Anyptr   malloc      PP( (size_t) );
  303. extern Void     free        PP( (Anyptr) );
  304. #endif
  305.  
  306. extern int      _OutMem     PV();
  307. extern int      _CaseCheck  PV();
  308. extern int      _NilCheck   PV();
  309. extern int    _Escape     PP( (int) );
  310. extern int    _EscIO      PP( (int) );
  311.  
  312. extern long     ipow        PP( (long, long) );
  313. extern Char    *strsub      PP( (Char *, Char *, int, int) );
  314. extern Char    *strltrim    PP( (Char *) );
  315. extern Char    *strrtrim    PP( (Char *) );
  316. extern Char    *strrpt      PP( (Char *, Char *, int) );
  317. extern Char    *strpad      PP( (Char *, Char *, int, int) );
  318. extern int      strpos2     PP( (Char *, Char *, int) );
  319. extern long     memavail    PV();
  320. extern int      P_peek      PP( (FILE *) );
  321. extern int      P_eof       PP( (FILE *) );
  322. extern int      P_eoln      PP( (FILE *) );
  323. extern Void     P_readpaoc  PP( (FILE *, Char *, int) );
  324. extern Void     P_readlnpaoc PP( (FILE *, Char *, int) );
  325. extern long     P_maxpos    PP( (FILE *) );
  326. extern Char    *P_trimname  PP( (Char *, int) );
  327. extern long    *P_setunion  PP( (long *, long *, long *) );
  328. extern long    *P_setint    PP( (long *, long *, long *) );
  329. extern long    *P_setdiff   PP( (long *, long *, long *) );
  330. extern long    *P_setxor    PP( (long *, long *, long *) );
  331. extern int      P_inset     PP( (unsigned, long *) );
  332. extern int      P_setequal  PP( (long *, long *) );
  333. extern int      P_subset    PP( (long *, long *) );
  334. extern long    *P_addset    PP( (long *, unsigned) );
  335. extern long    *P_addsetr   PP( (long *, unsigned, unsigned) );
  336. extern long    *P_remset    PP( (long *, unsigned) );
  337. extern long    *P_setcpy    PP