#include "object.hh" #include std::ostream &operator<<(std::ostream &os, const ObjectType &type) { switch (type) { case ObjectType::NIL: os << "ObjectType::NIL"; break; case ObjectType::IDENTIFIER: os << "ObjectType::IDENTIFIER"; break; case ObjectType::STRING_LIT: os << "ObjectType::STRING_LIT"; break; case ObjectType::NUMBER: os << "ObjectType::NUMBER"; break; } return os; } std::ostream &operator<<(std::ostream &os, const Object &obj) { os << "Object(" << obj.type; switch (obj.type) { case ObjectType::NIL: break; case ObjectType::IDENTIFIER: case ObjectType::STRING_LIT: os << ", " << std::get(obj.value); break; case ObjectType::NUMBER: os << ", " << std::get(obj.value); break; } os << ')'; return os; }