Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 
 

53 строки
1.9 KiB

  1. proc create_source_code_location(String* file, int line, int col) -> Source_Code_Location* {
  2. if (!file)
  3. return nullptr;
  4. Source_Code_Location* ret = new(Source_Code_Location);
  5. ret->file = file;
  6. ret->line = line;
  7. ret->column = col;
  8. return ret;
  9. }
  10. proc Lisp_Object_Type_to_string(Lisp_Object_Type type) -> const char* {
  11. switch (type) {
  12. case(Lisp_Object_Type::Nil): return "nil";
  13. case(Lisp_Object_Type::T): return "t";
  14. case(Lisp_Object_Type::Number): return "number";
  15. case(Lisp_Object_Type::String): return "string";
  16. case(Lisp_Object_Type::Symbol): return "symbol";
  17. case(Lisp_Object_Type::Keyword): return "keyword";
  18. case(Lisp_Object_Type::Function): return "function";
  19. case(Lisp_Object_Type::CFunction): return "C-function";
  20. case(Lisp_Object_Type::Continuation): return "continuation";
  21. case(Lisp_Object_Type::Pair): return "pair";
  22. case(Lisp_Object_Type::Vector): return "vector";
  23. }
  24. return "unknown";
  25. }
  26. proc create_positional_argument_list(int initial_capacity) -> Positional_Arguments {
  27. Positional_Arguments ret;
  28. ret.symbols = create_Lisp_Object_array_list(initial_capacity);
  29. return ret;
  30. }
  31. proc append_to_positional_argument_list(Positional_Arguments* args, Lisp_Object* sym) -> void {
  32. append_to_array_list(&args->symbols, sym);
  33. }
  34. proc create_keyword_argument_list(int initial_capacity) -> Keyword_Arguments {
  35. Keyword_Arguments ret;
  36. ret.keywords = create_Lisp_Object_array_list(initial_capacity);
  37. ret.values = create_Lisp_Object_array_list(initial_capacity);
  38. return ret;
  39. }
  40. proc append_to_keyword_argument_list(Keyword_Arguments* args,
  41. Lisp_Object* keyword,
  42. Lisp_Object* default_value) -> void
  43. {
  44. append_to_array_list(&args->keywords, keyword);
  45. append_to_array_list(&args->values, default_value);
  46. }