home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / oct93 / develop / umbscheme.lha / UMBScheme / src / portable.h < prev    next >
C/C++ Source or Header  |  1992-08-05  |  3KB  |  137 lines

  1. /* portable.h -- UMB Scheme, general portability definitions
  2.  
  3. UMB Scheme Interpreter                    $Revision: 2.5 $
  4. Copyright (C) 1988, 1991 William R Campbell
  5.  
  6. This program is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 1, or (at your option)
  9. any later version.
  10.  
  11. This program is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with this program; if not, write to the Free Software
  18. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  19.  
  20. UMB Scheme was written by Bill Campbell with help from Karl Berry,
  21. Barbara Dixey, Ira Gerstein, Mary Glaser, Kathy Hargreaves, Bill McCabe,
  22. Long Nguyen, Susan Quina, Jeyashree Sivasubram, Bela Sohoni and Thang Quoc Tran.
  23.  
  24. For additional information about UMB Scheme, contact the author:
  25.  
  26.     Bill Campbell
  27.     Department of Mathematics and Computer Science
  28.     University of Massachusetts at Boston
  29.     Harbor Campus
  30.     Boston, MA 02125
  31.  
  32.     Telephone: 617-287-6449     Internet: bill@cs.umb.edu
  33.  
  34. */
  35.  
  36. #ifdef __STDC__
  37. #include <stdlib.h>
  38. #endif
  39.  
  40. #include <stdio.h>
  41. #include <ctype.h>
  42. #include <errno.h>
  43.  
  44. #ifndef u3b2
  45. #include <strings.h>
  46. #endif
  47.  
  48. #define TRUE    1
  49. #define FALSE    0
  50.  
  51. #define MAX_TOKEN_SIZE 1000
  52. #define RADIX 0x8000
  53.  
  54. #define Private static
  55. #define Public
  56. #define Import extern
  57.  
  58. typedef unsigned char Byte;
  59. typedef char    Character ;
  60. typedef char *    String ;
  61. typedef int    Boolean ;
  62. typedef int    Integer ;
  63. typedef short    Short ;
  64. typedef double    Double ;
  65. typedef unsigned short Unsigned_Short;
  66.  
  67. #define Integer_Format "%d"
  68. #define Short_Format "%d"
  69. #define Double_Format "%.16g"
  70.  
  71. typedef enum
  72. {
  73.    LESS_THAN, GREATER_THAN, EQUAL_TO
  74. } Compare_Type;
  75.  
  76. /* Type definitions for library functions. */
  77. #ifndef __STDC__
  78. Import Byte *malloc();
  79. Import Integer system(), memcmp(), strspn(), _filbuf(), _flsbuf(), setjmp();
  80. Import Integer abs();
  81. Import String getenv(), strchr(), strrchr(), realloc();
  82. Import Boolean isatty();
  83. #endif
  84.  
  85. /* A usually nicer way to call |strcmp|. */
  86. #define Eq_Strs(s1,s2) (strcmp((s1),(s2)) == 0)
  87. #define Is_Terminal(stream) (isatty(fileno(stream)))
  88.  
  89.  
  90. #ifdef sun
  91. Import    void    memcpy(), free(), exit(), longjmp() ;
  92. Import    void    fclose(), fprintf(), printf();
  93. Import    int    ungetc();
  94. Import    char*    sprintf() ;
  95. #endif
  96.  
  97.  
  98. #ifdef vax
  99. Import    void    memcpy(), free(), exit(), longjmp() ;
  100. Import    void    fclose(), fprintf(), printf();
  101. Import    int    ungetc();
  102. Import    int    errno;
  103. #endif
  104.  
  105. #ifdef AMIGA
  106. #define Read xRead
  107. #define Write xWrite
  108. #define Output xOutput
  109. #endif
  110.  
  111. /* Alignment */
  112.  
  113. #ifdef vax
  114. #define NEGATIVE_ADDRESSES    0
  115. #define ALIGNMENT        1
  116. #endif
  117.  
  118. #ifdef mc68000
  119. #define NEGATIVE_ADDRESSES    0
  120. #define ALIGNMENT        2
  121. #endif
  122.  
  123. #ifdef sparc
  124. #define NEGATIVE_ADDRESSES    0
  125. #define ALIGNMENT        8
  126. #endif
  127.  
  128. #ifdef    sun386
  129. #define NEGATIVE_ADDRESSES    0
  130. #define ALIGNMENT        1
  131. #endif
  132.  
  133. #ifdef u3b2
  134. #define NEGATIVE_ADDRESSES    1
  135. #define ALIGNMENT        8
  136. #endif
  137.