home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mitsch75.zip / scheme-7_5_17-src.zip / scheme-7.5.17 / src / microcode / extern.h < prev    next >
C/C++ Source or Header  |  2001-03-08  |  11KB  |  279 lines

  1. /* -*-C-*-
  2.  
  3. $Id: extern.h,v 9.59 2001/03/08 17:12:50 cph Exp $
  4.  
  5. Copyright (c) 1987-2001 Massachusetts Institute of Technology
  6.  
  7. This program is free software; you can redistribute it and/or modify
  8. it under the terms of the GNU General Public License as published by
  9. the Free Software Foundation; either version 2 of the License, or (at
  10. your option) any later version.
  11.  
  12. This program is distributed in the hope that it will be useful, but
  13. WITHOUT ANY WARRANTY; without even the implied warranty of
  14. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15. General Public License for more details.
  16.  
  17. You should have received a copy of the GNU General Public License
  18. along with this program; if not, write to the Free Software
  19. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  20. */
  21.  
  22. /* External Declarations */
  23.  
  24. #ifdef ENABLE_DEBUGGING_TOOLS
  25.  
  26. extern Boolean Eval_Debug;
  27. extern Boolean Hex_Input_Debug;
  28. extern Boolean Cont_Debug;
  29. extern Boolean File_Load_Debug;
  30. extern Boolean Reloc_Debug;
  31. extern Boolean Intern_Debug;
  32. extern Boolean Primitive_Debug;
  33. extern Boolean Define_Debug;
  34. extern Boolean Lookup_Debug;
  35. extern Boolean GC_Debug;
  36. extern Boolean Upgrade_Debug;
  37. extern Boolean Trace_On_Error;
  38. extern Boolean Dump_Debug;
  39. extern Boolean Per_File;
  40. extern Boolean Bignum_Debug;
  41. extern Boolean Fluids_Debug;
  42.  
  43. extern sp_record_list SP_List;
  44. extern void EXFUN (Pop_Return_Break_Point, (void));
  45. extern int debug_slotno;
  46. extern int debug_nslots;
  47. extern int local_slotno;
  48. extern int local_nslots;
  49. extern int debug_circle [];
  50. extern int local_circle [];
  51.  
  52. #else /* not ENABLE_DEBUGGING_TOOLS */
  53.  
  54. #define Eval_Debug        false
  55. #define Hex_Input_Debug        false
  56. #define File_Load_Debug        false
  57. #define Reloc_Debug        false
  58. #define Intern_Debug        false
  59. #define Cont_Debug        false
  60. #define Primitive_Debug        false
  61. #define Lookup_Debug        false
  62. #define Define_Debug        false
  63. #define GC_Debug        false
  64. #define Upgrade_Debug        false
  65. #define Trace_On_Error          false
  66. #define Dump_Debug        false
  67. #define Per_File        false
  68. #define Bignum_Debug        false
  69. #define Fluids_Debug        false
  70.  
  71. #endif /* ENABLE_DEBUGGING_TOOLS */
  72.  
  73. /* The register block */
  74.  
  75. #ifdef __WIN32__
  76. extern SCHEME_OBJECT *RegistersPtr;
  77. #define Registers RegistersPtr
  78. #else
  79. extern SCHEME_OBJECT Registers [];
  80. #endif
  81.  
  82. extern SCHEME_OBJECT
  83.   * MemTop,        /* Top of free space available */
  84.   * Free,        /* Next free word in heap */
  85.   * Heap_Top,        /* Top of current heap */
  86.   * Heap_Bottom,    /* Bottom of current heap */
  87.   * Unused_Heap_Top,    /* Top of unused heap */
  88.   * Unused_Heap_Bottom,    /* Bottom of unused heap */
  89.   * Stack_Guard,    /* Guard area at end of stack */
  90.   * Ext_Stack_Pointer,    /* Next available slot in control stack */
  91.   * Stack_Bottom,    /* Bottom of control stack */
  92.   * Stack_Top,        /* Top of control stack */
  93.   * Free_Constant,    /* Next free word in constant space */
  94.   * Constant_Space,    /* Bottom of constant+pure space */
  95.   * Constant_Top,    /* Top of constant+pure space */
  96.   * Local_Heap_Base,    /* Per-processor CONSing area */
  97.   * Free_Stacklets,    /* Free list of stacklets */
  98.   * Ext_History,    /* History register */
  99.   Current_State_Point,    /* Dynamic state point */
  100.   Fluid_Bindings;    /* Fluid bindings AList */
  101.  
  102. /* Address of the most recent return code in the stack.  This is
  103.    only meaningful while in compiled code.  *** This must be changed
  104.    when stacklets are used. *** */
  105. extern SCHEME_OBJECT * last_return_code;
  106.  
  107. /* Return code/address used by the compiled code interface to make
  108.    compiled code return to the interpreter.  */
  109. extern SCHEME_OBJECT return_to_interpreter;
  110.  
  111. extern Declare_Fixed_Objects ();
  112.  
  113. extern long
  114.   temp_long,        /* temporary for sign extension */
  115.   GC_Reserve,        /* Scheme pointer overflow space in heap */
  116.   GC_Space_Needed;     /* Amount of space needed when GC triggered */
  117.  
  118. extern char * Return_Names [];
  119. extern long MAX_RETURN;
  120.  
  121. extern char
  122.   * CONT_PRINT_RETURN_MESSAGE,
  123.   * CONT_PRINT_EXPR_MESSAGE,
  124.   * RESTORE_CONT_RETURN_MESSAGE,
  125.   * RESTORE_CONT_EXPR_MESSAGE;
  126.  
  127. extern int GC_Type_Map [];
  128.  
  129. extern Boolean Trapping;
  130. extern SCHEME_OBJECT Old_Return_Code;
  131. extern SCHEME_OBJECT * Return_Hook_Address;
  132.  
  133. extern SCHEME_OBJECT * Prev_Restore_History_Stacklet;
  134. extern long Prev_Restore_History_Offset;
  135.  
  136. extern CONST char * scheme_program_name;
  137. extern CONST char * OS_Name;
  138. extern CONST char * OS_Variant;
  139. extern struct obstack scratch_obstack;
  140.  
  141. extern long Heap_Size;
  142. extern long Constant_Size;
  143. extern long Stack_Size;
  144. extern SCHEME_OBJECT * Lowest_Allocated_Address, * Highest_Allocated_Address;
  145.  
  146. /* Environment lookup utilities. */
  147. extern long EXFUN (Lex_Ref, (SCHEME_OBJECT, SCHEME_OBJECT));
  148. extern long EXFUN (Local_Set, (SCHEME_OBJECT, SCHEME_OBJECT, SCHEME_OBJECT));
  149. extern long EXFUN (Lex_Set, (SCHEME_OBJECT, SCHEME_OBJECT, SCHEME_OBJECT));
  150. extern long EXFUN (Symbol_Lex_Ref, (SCHEME_OBJECT, SCHEME_OBJECT));
  151. extern long EXFUN (Symbol_Lex_Set,
  152.            (SCHEME_OBJECT, SCHEME_OBJECT, SCHEME_OBJECT));
  153.  
  154. /* Arithmetic utilities */
  155. extern long EXFUN (fixnum_to_long, (SCHEME_OBJECT));
  156. extern SCHEME_OBJECT EXFUN (double_to_fixnum, (double));
  157. extern SCHEME_OBJECT EXFUN (double_to_flonum, (double));
  158. extern Boolean EXFUN (integer_to_long_p, (SCHEME_OBJECT));
  159. extern long EXFUN (integer_to_long, (SCHEME_OBJECT));
  160. extern SCHEME_OBJECT EXFUN (long_to_integer, (long));
  161. extern Boolean EXFUN (integer_to_ulong_p, (SCHEME_OBJECT));
  162. extern unsigned long EXFUN (integer_to_ulong, (SCHEME_OBJECT));
  163. extern SCHEME_OBJECT EXFUN (ulong_to_integer, (unsigned long));
  164. extern Boolean EXFUN (integer_to_double_p, (SCHEME_OBJECT));
  165. extern double EXFUN (integer_to_double, (SCHEME_OBJECT));
  166. extern SCHEME_OBJECT EXFUN (double_to_integer, (double));
  167. extern double EXFUN (double_truncate, (double));
  168. extern Boolean EXFUN (real_number_to_double_p, (SCHEME_OBJECT));
  169. extern double EXFUN (real_number_to_double, (SCHEME_OBJECT));
  170. extern SCHEME_OBJECT EXFUN (bignum_to_fixnum, (SCHEME_OBJECT));
  171. extern SCHEME_OBJECT EXFUN (bignum_to_integer, (SCHEME_OBJECT));
  172. extern SCHEME_OBJECT EXFUN (bignum_to_flonum, (SCHEME_OBJECT));
  173. extern SCHEME_OBJECT EXFUN (flonum_floor, (SCHEME_OBJECT));
  174. extern SCHEME_OBJECT EXFUN (flonum_ceiling, (SCHEME_OBJECT));
  175. extern SCHEME_OBJECT EXFUN (flonum_round, (SCHEME_OBJECT));
  176. extern SCHEME_OBJECT EXFUN (flonum_normalize, (SCHEME_OBJECT));
  177. extern SCHEME_OBJECT EXFUN (flonum_denormalize,
  178.                 (SCHEME_OBJECT, SCHEME_OBJECT));
  179. extern Boolean EXFUN (integer_zero_p, (SCHEME_OBJECT));
  180. extern Boolean EXFUN (integer_negative_p, (SCHEME_OBJECT));
  181. extern Boolean EXFUN (integer_positive_p, (SCHEME_OBJECT));
  182. extern Boolean EXFUN (integer_equal_p, (SCHEME_OBJECT, SCHEME_OBJECT));
  183. extern Boolean EXFUN (integer_less_p, (SCHEME_OBJECT, SCHEME_OBJECT));
  184. extern SCHEME_OBJECT EXFUN (integer_negate, (SCHEME_OBJECT));
  185. extern SCHEME_OBJECT EXFUN (integer_add, (SCHEME_OBJECT, SCHEME_OBJECT));
  186. extern SCHEME_OBJECT EXFUN (integer_add_1, (SCHEME_OBJECT));
  187. extern SCHEME_OBJECT EXFUN (integer_subtract, (SCHEME_OBJECT, SCHEME_OBJECT));
  188. extern SCHEME_OBJECT EXFUN (integer_subtract_1, (SCHEME_OBJECT));
  189. extern SCHEME_OBJECT EXFUN (integer_multiply, (SCHEME_OBJECT, SCHEME_OBJECT));
  190. extern Boolean EXFUN (integer_divide,
  191.               (SCHEME_OBJECT, SCHEME_OBJECT,
  192.                SCHEME_OBJECT *, SCHEME_OBJECT *));
  193. extern SCHEME_OBJECT EXFUN (integer_quotient, (SCHEME_OBJECT, SCHEME_OBJECT));
  194. extern SCHEME_OBJECT EXFUN (integer_remainder, (SCHEME_OBJECT, SCHEME_OBJECT));
  195. extern SCHEME_OBJECT EXFUN (integer_length_in_bits, (SCHEME_OBJECT));
  196. extern SCHEME_OBJECT EXFUN
  197.   (integer_shift_left, (SCHEME_OBJECT, SCHEME_OBJECT));
  198.  
  199. /* Character utilities */
  200. extern long EXFUN (char_downcase, (long));
  201. extern long EXFUN (char_upcase, (long));
  202.  
  203. /* Allocation utilities */
  204. extern SCHEME_OBJECT EXFUN (cons, (SCHEME_OBJECT, SCHEME_OBJECT));
  205. extern SCHEME_OBJECT EXFUN (system_pair_cons,
  206.                 (long, SCHEME_OBJECT, SCHEME_OBJECT));
  207. extern SCHEME_OBJECT EXFUN (hunk3_cons,
  208.                 (SCHEME_OBJECT, SCHEME_OBJECT, SCHEME_OBJECT));
  209. extern SCHEME_OBJECT EXFUN (allocate_non_marked_vector, (int, long, Boolean));
  210. extern SCHEME_OBJECT EXFUN (allocate_marked_vector, (int, long, Boolean));
  211. extern SCHEME_OBJECT EXFUN (make_vector, (long, SCHEME_OBJECT, Boolean));
  212. extern SCHEME_OBJECT EXFUN (allocate_string, (unsigned long));
  213. extern SCHEME_OBJECT EXFUN (allocate_string_no_gc, (unsigned long));
  214. extern SCHEME_OBJECT EXFUN
  215.   (memory_to_string, (unsigned long, CONST unsigned char *));
  216. extern SCHEME_OBJECT EXFUN
  217.   (memory_to_string_no_gc, (unsigned long, CONST unsigned char *));
  218. extern SCHEME_OBJECT EXFUN (char_pointer_to_string, (CONST unsigned char *));
  219. extern SCHEME_OBJECT EXFUN
  220.   (char_pointer_to_string_no_gc, (CONST unsigned char *));
  221.  
  222. /* Random and OS utilities */
  223. extern Boolean EXFUN (Restore_History, (SCHEME_OBJECT));
  224. extern Boolean EXFUN (interpreter_applicable_p, (SCHEME_OBJECT));
  225. extern void EXFUN
  226.   (add_reload_cleanup, (void EXFUN ((*cleanup_procedure), (void))));
  227.  
  228. /* Memory management utilities */
  229.  
  230. extern Boolean EXFUN (Pure_Test, (SCHEME_OBJECT *));
  231.  
  232. /* Interpreter utilities */
  233.  
  234. extern void EXFUN (Microcode_Termination, (int code));
  235. extern void EXFUN (termination_normal, (CONST int));
  236. extern void EXFUN (termination_init_error, (void));
  237. extern void EXFUN (termination_end_of_computation, (void));
  238. extern void EXFUN (termination_trap, (void));
  239. extern void EXFUN (termination_no_error_handler, (void));
  240. extern void EXFUN (termination_gc_out_of_space, (void));
  241. extern void EXFUN (termination_eof, (void));
  242. extern void EXFUN (termination_signal, (CONST char * signal_name));
  243.  
  244. extern void EXFUN (Setup_Interrupt, (long Masked_Interrupts));
  245. extern void EXFUN (preserve_interrupt_mask, (void));
  246. extern void EXFUN (back_out_of_primitive, (void));
  247.  
  248. extern void EXFUN (Interpret, (Boolean));
  249. extern void EXFUN (Do_Micro_Error, (long, Boolean));
  250. extern void EXFUN (Translate_To_Point, (SCHEME_OBJECT));
  251. extern void EXFUN (Stop_History, (void));
  252. extern void EXFUN (Stack_Death, (void));
  253.  
  254. extern SCHEME_OBJECT * EXFUN (Make_Dummy_History, (void));
  255. extern SCHEME_OBJECT EXFUN (Find_State_Space, (SCHEME_OBJECT));
  256.  
  257. /* Debugging utilities */
  258.  
  259. extern void EXFUN (debug_edit_flags, (void));
  260.  
  261. extern void EXFUN (Back_Trace, (outf_channel));
  262. extern void EXFUN (Debug_Stack_Trace, (void));
  263. extern void EXFUN (Debug_Print, (SCHEME_OBJECT, Boolean));
  264. extern void EXFUN (Show_Env, (SCHEME_OBJECT));
  265. extern void EXFUN (Show_Pure, (void));
  266. extern void EXFUN (Print_Return, (char *));
  267. extern void EXFUN (Print_Expression, (SCHEME_OBJECT, char *));
  268. extern void EXFUN (Print_Primitive, (SCHEME_OBJECT));
  269.  
  270. /* Conditional utilities */
  271.  
  272. #ifdef USE_STACKLETS
  273. extern void EXFUN (Allocate_New_Stacklet, (long));
  274. #endif
  275.  
  276. #if FALSE
  277. extern void EXFUN (Clear_Perfinfo_Data, (void));
  278. #endif
  279.