mirror of
https://github.com/SerenityOS/serenity.git
synced 2026-11-09 17:52:31 -10:00
43 lines
1.1 KiB
C++
43 lines
1.1 KiB
C++
/*
|
|
* Copyright (c) 2026, Undefine <[email protected]>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include "Object.h"
|
|
|
|
namespace ACPI::AML {
|
|
|
|
ErrorOr<String> String::clone() const
|
|
{
|
|
return String(TRY(m_buffer.clone()));
|
|
}
|
|
|
|
ErrorOr<Buffer> Buffer::clone() const
|
|
{
|
|
return Buffer(TRY(m_buffer.clone()));
|
|
}
|
|
|
|
ErrorOr<Package> Package::clone() const
|
|
{
|
|
Vector<Object> package;
|
|
TRY(package.try_ensure_capacity(m_package.size()));
|
|
for (auto const& object : m_package)
|
|
package.unchecked_append(TRY(object.clone()));
|
|
|
|
return Package(move(package));
|
|
}
|
|
|
|
ErrorOr<Object> Object::clone() const
|
|
{
|
|
return m_data.visit(
|
|
[](AK::Empty) -> ErrorOr<Object> { return Object(); },
|
|
[](u64 value) -> ErrorOr<Object> { return value; },
|
|
[](String const& value) -> ErrorOr<Object> { return TRY(value.clone()); },
|
|
[](Buffer const& value) -> ErrorOr<Object> { return TRY(value.clone()); },
|
|
[](Package const& value) -> ErrorOr<Object> { return TRY(value.clone()); },
|
|
[](NameString const& value) -> ErrorOr<Object> { return TRY(value.clone()); });
|
|
}
|
|
|
|
}
|