#pragma once #include #include namespace Kernel::ACPI::AML { struct NamedObject : public Node { BAN::RefPtr parent; NameSeg name; NamedObject(Node::Type type, NameSeg name) : Node(type), name(name) {} }; struct Name : public NamedObject { BAN::RefPtr object; Name(NameSeg name, BAN::RefPtr object) : NamedObject(Node::Type::Name, name), object(BAN::move(object)) {} BAN::RefPtr evaluate() override { ASSERT(object); return object->evaluate(); } bool store(BAN::RefPtr node) override { ASSERT(object); object = node; return true; } static ParseResult parse(ParseContext& context); virtual void debug_print(int indent) const override; }; }