Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 
 
 

55 rindas
2.4 KiB

  1. /**
  2. Usage of the create_error_macros:
  3. */
  4. #define __create_error(keyword, ...) \
  5. create_error( \
  6. __FUNCTION__, __FILE__, __LINE__, \
  7. Memory::get_keyword(keyword), \
  8. __VA_ARGS__)
  9. #define create_out_of_memory_error(...) \
  10. __create_error("out-of-memory", __VA_ARGS__)
  11. #define create_generic_error(...) \
  12. __create_error("generic", __VA_ARGS__)
  13. #define create_not_yet_implemented_error() \
  14. __create_error("not-yet-implemented", "This feature has not yet been implemented.")
  15. #define create_parsing_error(...) \
  16. __create_error("parsing-error", __VA_ARGS__)
  17. #define create_symbol_undefined_error(...) \
  18. __create_error("symbol-undefined", __VA_ARGS__)
  19. #define create_type_missmatch_error(expected, actual) \
  20. __create_error("type-missmatch", \
  21. "Type missmatch: expected %s, got %s", \
  22. expected, actual)
  23. #ifdef _DEBUG
  24. #define assert_type(_node, _type) \
  25. do { \
  26. if (Memory::get_type(_node) != _type) { \
  27. create_type_missmatch_error( \
  28. lisp_object_type_to_string(_type), \
  29. lisp_object_type_to_string(Memory::get_type(_node))); \
  30. } \
  31. } while(0)
  32. #define assert(condition) \
  33. do { \
  34. if (!(condition)) { \
  35. create_generic_error("Assertion-error."); \
  36. } \
  37. } while(0)
  38. #else
  39. # define assert_arguments_length(expected, actual) do {} while (0)
  40. # define assert_arguments_length_less_equal(expected, actual) do {} while (0)
  41. # define assert_arguments_length_greater_equal(expected, actual) do {} while (0)
  42. # define assert_type(_node, _type) do {} while (0)
  43. # define assert(condition) do {} while (0)
  44. #endif