diff --git a/furdb/src/command.cpp b/furdb/src/command.cpp index 88f997e..91a9620 100644 --- a/furdb/src/command.cpp +++ b/furdb/src/command.cpp @@ -107,6 +107,11 @@ static void print_type(const furvm::thing_type& type) { std::cout << type.value.array.size; std::cout << ")"; break; + case furvm::thing_type::Slice: + std::cout << "slice("; + print_type(*type.value.slice.type); + std::cout << ")"; + break; case furvm::thing_type::Count: break; } } @@ -125,12 +130,17 @@ static void print_thing(const furvm::thing<>& thing) { case furvm::thing_type::U32: std::cout << thing.get(); break; case furvm::thing_type::U64: std::cout << thing.get(); break; case furvm::thing_type::Ptr: std::cout << thing.get(); break; - case furvm::thing_type::Array: { - if (thing.type().value.array.size == 0) std::cout << thing.length(); - std::cout << "{ "; - for (std::size_t i = 0; i < thing.length(); ++i) { - if (i > 0) std::cout << ", "; - print_thing(thing.at(i)); + case furvm::thing_type::Array: + case furvm::thing_type::Slice: { + if (thing.length() == 0) { + std::cout << "{}"; + break; + } + + std::cout << '(' << thing.length() << ") { "; + for (const auto& el : thing) { + print_thing(el); + std::cout << ", "; } std::cout << " }"; } break; diff --git a/furdb/src/context.cpp b/furdb/src/context.cpp index f952795..6ce6f80 100644 --- a/furdb/src/context.cpp +++ b/furdb/src/context.cpp @@ -49,6 +49,8 @@ void context::print_instruction() const { "push", // Array "array", + // Slice + "slice", // Get "get", // Set