You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

90 lines
4.0 KiB

  1. namespace Slime {
  2. void add_to_load_path(const char*);
  3. bool lisp_object_equal(Lisp_Object*,Lisp_Object*);
  4. Lisp_Object* built_in_load(String);
  5. Lisp_Object* built_in_import(String);
  6. void delete_error();
  7. void create_error(const char* c_func_name, const char* c_file_name, int c_file_line, Lisp_Object* type, const char* format, ...);
  8. void create_error(const char* c_func_name, const char* c_file_name, int c_file_line, Lisp_Object* type, String message);
  9. void create_error(Lisp_Object* type, const char* message, const char* c_file_name, int c_file_line);
  10. Lisp_Object* eval_arguments(Lisp_Object*);
  11. Lisp_Object* eval_expr(Lisp_Object*);
  12. bool is_truthy (Lisp_Object*);
  13. int list_length(Lisp_Object*);
  14. void* load_built_ins_into_environment();
  15. void create_arguments_from_lambda_list_and_inject(Lisp_Object* formal_arguments, Lisp_Object* function);
  16. Lisp_Object* lookup_symbol(Lisp_Object* symbol, Environment*);
  17. void define_symbol(Lisp_Object* symbol, Lisp_Object* value);
  18. void define_symbol(Lisp_Object* symbol, Lisp_Object* value, Environment* env);
  19. char* lisp_object_to_string(Lisp_Object* node, bool print_repr = true);
  20. void print(Lisp_Object* node, bool print_repr = false, FILE* file = stdout);
  21. void print_environment(Environment*);
  22. bool run_all_tests();
  23. inline Environment* get_root_environment();
  24. inline Environment* get_current_environment();
  25. inline void push_environment(Environment*);
  26. inline void pop_environment();
  27. const char* lisp_object_type_to_string(Lisp_Object_Type type);
  28. void visualize_lisp_machine();
  29. void generate_docs(String path);
  30. void log_error();
  31. namespace Memory {
  32. Environment* create_built_ins_environment();
  33. Lisp_Object* create_lisp_object_cfunction(bool is_special);
  34. inline Lisp_Object_Type get_type(Lisp_Object* node);
  35. void init();
  36. char* get_c_str(String);
  37. void free_everything();
  38. String create_string(const char*);
  39. Lisp_Object* get_symbol(String identifier);
  40. Lisp_Object* get_symbol(const char*);
  41. Lisp_Object* get_keyword(String identifier);
  42. Lisp_Object* get_keyword(const char*);
  43. Lisp_Object* create_lisp_object(double);
  44. Lisp_Object* create_lisp_object(const char*);
  45. Lisp_Object* create_lisp_object_vector(Lisp_Object*);
  46. Lisp_Object* create_lisp_object_vector(Lisp_Object*, Lisp_Object*);
  47. Lisp_Object* create_lisp_object_vector(Lisp_Object*, Lisp_Object*, Lisp_Object*);
  48. Lisp_Object* create_lisp_object_vector(int, Lisp_Object*);
  49. inline Lisp_Object* create_list(Lisp_Object*);
  50. inline Lisp_Object* create_list(Lisp_Object*,Lisp_Object*);
  51. inline Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*);
  52. inline Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*);
  53. inline Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*);
  54. inline Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*);
  55. }
  56. namespace Parser {
  57. // extern Environment* environment_for_macros;
  58. extern String standard_in;
  59. extern String parser_file;
  60. extern int parser_line;
  61. extern int parser_col;
  62. Lisp_Object* parse_expression(char* text, int* index_in_text);
  63. Lisp_Object* parse_single_expression(const char* text);
  64. Lisp_Object* parse_single_expression(char* text);
  65. Lisp_Object* parse_single_expression(wchar_t* text);
  66. }
  67. namespace Globals {
  68. extern bool debug_log;
  69. extern char* bin_path;
  70. extern Log_Level log_level;
  71. extern Array_List<void*> load_path;
  72. namespace Current_Execution {
  73. extern Array_List<Lisp_Object*> call_stack;
  74. extern Array_List<Environment*> envi_stack;
  75. }
  76. extern Error* error;
  77. extern bool breaking_on_errors;
  78. }
  79. }