builtins.h 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. /* -*-comment-start: "//";comment-end:""-*-
  2. * GNU Mes --- Maxwell Equations of Software
  3. * Copyright © 2016,2017,2018,2019,2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
  4. *
  5. * This file is part of GNU Mes.
  6. *
  7. * GNU Mes is free software; you can redistribute it and/or modify it
  8. * under the terms of the GNU General Public License as published by
  9. * the Free Software Foundation; either version 3 of the License, or (at
  10. * your option) any later version.
  11. *
  12. * GNU Mes 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
  15. * GNU General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU General Public License
  18. * along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
  19. */
  20. /* src/builtins.c */
  21. struct scm *make_builtin (struct scm *builtin_type, struct scm *name, struct scm *arity, struct scm *function);
  22. struct scm *builtin_name (struct scm *builtin);
  23. struct scm *builtin_arity (struct scm *builtin);
  24. struct scm *builtin_p (struct scm *x);
  25. struct scm *builtin_printer (struct scm *builtin);
  26. /* src/core.c */
  27. struct scm *car (struct scm *x);
  28. struct scm *cdr (struct scm *x);
  29. struct scm *list (struct scm *x);
  30. struct scm *null_p (struct scm *x);
  31. struct scm *eq_p (struct scm *x, struct scm *y);
  32. struct scm *values (struct scm *x);
  33. struct scm *acons (struct scm *key, struct scm *value, struct scm *alist);
  34. struct scm *length (struct scm *x);
  35. struct scm *error (struct scm *key, struct scm *x);
  36. struct scm *append2 (struct scm *x, struct scm *y);
  37. struct scm *append_reverse (struct scm *x, struct scm *y);
  38. struct scm *reverse_x_ (struct scm *x, struct scm *t);
  39. struct scm *assq (struct scm *x, struct scm *a);
  40. struct scm *assoc (struct scm *x, struct scm *a);
  41. /* src/display.c */
  42. struct scm *display_ (struct scm *x);
  43. struct scm *display_error_ (struct scm *x);
  44. struct scm *display_port_ (struct scm *x, struct scm *p);
  45. struct scm *write_ (struct scm *x);
  46. struct scm *write_error_ (struct scm *x);
  47. struct scm *write_port_ (struct scm *x, struct scm *p);
  48. /* src/eval-apply.c */
  49. struct scm *pairlis (struct scm *x, struct scm *y, struct scm *a);
  50. struct scm *set_car_x (struct scm *x, struct scm *e);
  51. struct scm *set_cdr_x (struct scm *x, struct scm *e);
  52. struct scm *set_env_x (struct scm *x, struct scm *e, struct scm *a);
  53. struct scm *add_formals (struct scm *formals, struct scm *x);
  54. struct scm *eval_apply ();
  55. /* src/gc.c */
  56. struct scm *gc_stats ();
  57. struct scm *cons (struct scm *x, struct scm *y);
  58. struct scm *gc_check ();
  59. struct scm *gc ();
  60. /* src/hash.c */
  61. struct scm *hashq (struct scm *x, struct scm *size);
  62. struct scm *hash (struct scm *x, struct scm *size);
  63. struct scm *hashq_get_handle (struct scm *table, struct scm *key, struct scm *dflt);
  64. struct scm *hashq_ref (struct scm *table, struct scm *key, struct scm *dflt);
  65. struct scm *hash_ref (struct scm *table, struct scm *key, struct scm *dflt);
  66. struct scm *hashq_set_x (struct scm *table, struct scm *key, struct scm *value);
  67. struct scm *hash_set_x (struct scm *table, struct scm *key, struct scm *value);
  68. struct scm *hash_table_printer (struct scm *table);
  69. struct scm *make_hash_table (struct scm *x);
  70. /* src/lib.c */
  71. struct scm *type_ (struct scm *x);
  72. struct scm *car_ (struct scm *x);
  73. struct scm *cdr_ (struct scm *x);
  74. struct scm *xassq (struct scm *x, struct scm *a);
  75. struct scm *memq (struct scm *x, struct scm *a);
  76. struct scm *equal2_p (struct scm *a, struct scm *b);
  77. struct scm *last_pair (struct scm *x);
  78. struct scm *pair_p (struct scm *x);
  79. struct scm *char_to_integer (struct scm *x);
  80. struct scm *integer_to_char (struct scm *x);
  81. /* src/math.c */
  82. struct scm *greater_p (struct scm *x);
  83. struct scm *less_p (struct scm *x);
  84. struct scm *is_p (struct scm *x);
  85. struct scm *minus (struct scm *x);
  86. struct scm *plus (struct scm *x);
  87. struct scm *divide (struct scm *x);
  88. struct scm *modulo (struct scm *a, struct scm *b);
  89. struct scm *multiply (struct scm *x);
  90. struct scm *logand (struct scm *x);
  91. struct scm *logior (struct scm *x);
  92. struct scm *lognot (struct scm *x);
  93. struct scm *logxor (struct scm *x);
  94. struct scm *ash (struct scm *n, struct scm *count);
  95. /* src/module.c */
  96. struct scm *make_module_type ();
  97. struct scm *module_printer (struct scm *module);
  98. struct scm *module_variable (struct scm *module, struct scm *name);
  99. struct scm *module_ref (struct scm *module, struct scm *name);
  100. struct scm *module_define_x (struct scm *module, struct scm *name, struct scm *value);
  101. /* src/posix.c */
  102. struct scm *exit_ (struct scm *x);
  103. struct scm *peek_byte ();
  104. struct scm *read_byte ();
  105. struct scm *unread_byte (struct scm *i);
  106. struct scm *peek_char ();
  107. struct scm *read_char (struct scm *port);
  108. struct scm *unread_char (struct scm *i);
  109. struct scm *write_char (struct scm *i);
  110. struct scm *write_byte (struct scm *x);
  111. struct scm *getenv_ (struct scm *s);
  112. struct scm *setenv_ (struct scm *s, struct scm *v);
  113. struct scm *access_p (struct scm *file_name, struct scm *mode);
  114. struct scm *current_input_port ();
  115. struct scm *open_input_file (struct scm *file_name);
  116. struct scm *open_input_string (struct scm *string);
  117. struct scm *set_current_input_port (struct scm *port);
  118. struct scm *current_output_port ();
  119. struct scm *current_error_port ();
  120. struct scm *open_output_file (struct scm *x);
  121. struct scm *set_current_output_port (struct scm *port);
  122. struct scm *set_current_error_port (struct scm *port);
  123. struct scm *chmod_ (struct scm *file_name, struct scm *mode);
  124. struct scm *isatty_p (struct scm *port);
  125. struct scm *primitive_fork ();
  126. struct scm *execl_ (struct scm *file_name, struct scm *args);
  127. struct scm *waitpid_ (struct scm *pid, struct scm *options);
  128. struct scm *current_time ();
  129. struct scm *gettimeofday_ ();
  130. struct scm *get_internal_run_time ();
  131. struct scm *getcwd_ ();
  132. struct scm *dup_ (struct scm *port);
  133. struct scm *dup2_ (struct scm *old, struct scm *new);
  134. struct scm *delete_file (struct scm *file_name);
  135. /* src/reader.c */
  136. struct scm *read_input_file_env_ (struct scm *e, struct scm *a);
  137. struct scm *read_input_file_env (struct scm *a);
  138. struct scm *read_env (struct scm *a);
  139. struct scm *reader_read_sexp (struct scm *c, struct scm *s, struct scm *a);
  140. struct scm *reader_read_character ();
  141. struct scm *reader_read_binary ();
  142. struct scm *reader_read_octal ();
  143. struct scm *reader_read_hex ();
  144. struct scm *reader_read_string ();
  145. /* src/stack.c */
  146. struct scm *frame_printer (struct scm *frame);
  147. struct scm *make_stack (struct scm *stack);
  148. struct scm *stack_length (struct scm *stack);
  149. struct scm *stack_ref (struct scm *stack, struct scm *index);
  150. /* src/string.c */
  151. struct scm *string_equal_p (struct scm *a, struct scm *b);
  152. struct scm *symbol_to_string (struct scm *symbol);
  153. struct scm *symbol_to_keyword (struct scm *symbol);
  154. struct scm *keyword_to_string (struct scm *keyword);
  155. struct scm *string_to_symbol (struct scm *string);
  156. struct scm *make_symbol (struct scm *string);
  157. struct scm *string_to_list (struct scm *string);
  158. struct scm *list_to_string (struct scm *list);
  159. struct scm *read_string (struct scm *port);
  160. struct scm *string_append (struct scm *x);
  161. struct scm *string_length (struct scm *string);
  162. struct scm *string_ref (struct scm *str, struct scm *k);
  163. /* src/struct.c */
  164. struct scm *make_struct (struct scm *type, struct scm *fields, struct scm *printer);
  165. struct scm *struct_length (struct scm *x);
  166. struct scm *struct_ref (struct scm *x, struct scm *i);
  167. struct scm *struct_set_x (struct scm *x, struct scm *i, struct scm *e);
  168. /* src/vector.c */
  169. struct scm *make_vector (struct scm *x);
  170. struct scm *vector_length (struct scm *x);
  171. struct scm *vector_ref (struct scm *x, struct scm *i);
  172. struct scm *vector_entry (struct scm *x);
  173. struct scm *vector_set_x (struct scm *x, struct scm *i, struct scm *e);
  174. struct scm *list_to_vector (struct scm *x);
  175. struct scm *vector_to_list (struct scm *v);