Преглед на файлове

added pointers to all swiches over types containing types

master
Felix Brendel преди 6 години
родител
ревизия
8076c91600
променени са 4 файла, в които са добавени 9 реда и са изтрити 4 реда
  1. +0
    -0
     
  2. +3
    -0
      src/built_ins.cpp
  3. +4
    -3
      src/io.cpp
  4. +2
    -1
      src/lisp_object.cpp

+ 3
- 0
src/built_ins.cpp Целия файл

@@ -18,6 +18,8 @@ proc lisp_object_equal(Lisp_Object* n1, Lisp_Object* n2) -> bool {
// pointer, true is returned a
// few lines above
case Lisp_Object_Type::Function:
case Lisp_Object_Type::Pointer: // TODO(Felix): should a pointer
// object compare the pointer?
case Lisp_Object_Type::Continuation: return false;
case Lisp_Object_Type::T: // code for t and nil should never be
// reached since they are memory unique
@@ -861,6 +863,7 @@ proc load_built_ins_into_environment() -> void {
case Lisp_Object_Type::Keyword: return Memory::get_or_create_lisp_object_keyword("keyword");
case Lisp_Object_Type::Nil: return Memory::get_or_create_lisp_object_keyword("nil");
case Lisp_Object_Type::T: return Memory::get_or_create_lisp_object_keyword("t");
case Lisp_Object_Type::Pointer: return Memory::get_or_create_lisp_object_keyword("pointer");
case Lisp_Object_Type::Number: return Memory::get_or_create_lisp_object_keyword("number");
case Lisp_Object_Type::Pair: return Memory::get_or_create_lisp_object_keyword("pair");
case Lisp_Object_Type::Vector: return Memory::get_or_create_lisp_object_keyword("vector");


+ 4
- 3
src/io.cpp Целия файл

@@ -279,10 +279,11 @@ proc print(Lisp_Object* node, bool print_repr = false, FILE* file = stdout) -> v
else
fprintf(file, "%f", node->value.number);
} break;
case (Lisp_Object_Type::Keyword): fputs(":", file); // NOTE(Felix): intentionall fallthough
case (Lisp_Object_Type::Symbol): fprintf(file, "%s", Memory::get_c_str(node->value.symbol.identifier)); break;
case (Lisp_Object_Type::Keyword): fputs(":", file); // NOTE(Felix): intentionall fallthough
case (Lisp_Object_Type::Symbol): fprintf(file, "%s", Memory::get_c_str(node->value.symbol.identifier)); break;
case (Lisp_Object_Type::Continuation): fputs("[continuation]", file); break;
case (Lisp_Object_Type::CFunction): fputs("[C-function]", file); break;
case (Lisp_Object_Type::CFunction): fputs("[C-function]", file); break;
case (Lisp_Object_Type::Pointer): fputs("[pointer]", file); break;
case (Lisp_Object_Type::String): {
if (print_repr) {
putc('\"', file);


+ 2
- 1
src/lisp_object.cpp Целия файл

@@ -21,7 +21,8 @@ proc Lisp_Object_Type_to_string(Lisp_Object_Type type) -> const char* {
case(Lisp_Object_Type::CFunction): return "C-function";
case(Lisp_Object_Type::Continuation): return "continuation";
case(Lisp_Object_Type::Pair): return "pair";
case(Lisp_Object_Type::Vector): return "vector";
case(Lisp_Object_Type::Vector): return "vector";
case(Lisp_Object_Type::Pointer): return "pointer";
}
return "unknown";
}


Зареждане…
Отказ
Запис