浏览代码

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

+ 0
- 0
查看文件


+ 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";
}


正在加载...
取消
保存