#pragma once #include #include #include #include #include #include namespace Kernel::ACPI::AML { struct ParseContext { BAN::ConstByteSpan aml_data; AML::NameString scope; // Used for cleaning up on method exit // NOTE: This uses linked list instead of vector because // we don't really need large contiguous memory BAN::LinkedList created_objects; uint8_t sync_level() const { return !sync_stack.empty() ? sync_stack.back() : 0; } BAN::Vector sync_stack; BAN::Array, 7> method_args; BAN::Array, 8> method_locals; }; }