added pointers to all swiches over types containing types
This commit is contained in:
@@ -18,6 +18,8 @@ proc lisp_object_equal(Lisp_Object* n1, Lisp_Object* n2) -> bool {
|
|||||||
// pointer, true is returned a
|
// pointer, true is returned a
|
||||||
// few lines above
|
// few lines above
|
||||||
case Lisp_Object_Type::Function:
|
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::Continuation: return false;
|
||||||
case Lisp_Object_Type::T: // code for t and nil should never be
|
case Lisp_Object_Type::T: // code for t and nil should never be
|
||||||
// reached since they are memory unique
|
// 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::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::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::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::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::Pair: return Memory::get_or_create_lisp_object_keyword("pair");
|
||||||
case Lisp_Object_Type::Vector: return Memory::get_or_create_lisp_object_keyword("vector");
|
case Lisp_Object_Type::Vector: return Memory::get_or_create_lisp_object_keyword("vector");
|
||||||
|
|||||||
+4
-3
@@ -279,10 +279,11 @@ proc print(Lisp_Object* node, bool print_repr = false, FILE* file = stdout) -> v
|
|||||||
else
|
else
|
||||||
fprintf(file, "%f", node->value.number);
|
fprintf(file, "%f", node->value.number);
|
||||||
} break;
|
} break;
|
||||||
case (Lisp_Object_Type::Keyword): fputs(":", file); // NOTE(Felix): intentionall fallthough
|
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::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::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): {
|
case (Lisp_Object_Type::String): {
|
||||||
if (print_repr) {
|
if (print_repr) {
|
||||||
putc('\"', file);
|
putc('\"', file);
|
||||||
|
|||||||
+2
-1
@@ -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::CFunction): return "C-function";
|
||||||
case(Lisp_Object_Type::Continuation): return "continuation";
|
case(Lisp_Object_Type::Continuation): return "continuation";
|
||||||
case(Lisp_Object_Type::Pair): return "pair";
|
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";
|
return "unknown";
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user