// SPDX-License-Identifier: MIT
#pragma once
#include <memory>
#include "Value.hh"
namespace fedem
{
namespace fson
{
// ─────────────────────────────────────────────────────────────────────
// Boolean — the FSON literals "true" / "false"
// ─────────────────────────────────────────────────────────────────────
class Boolean final : public Value
{
public:
explicit Boolean( bool value = false ) noexcept;
Type getType( ) const noexcept override;
std::unique_ptr< Value > clone( ) const override;
Boolean* asBoolean( ) noexcept override;
Boolean const* asBoolean( ) const noexcept override;
bool getValue( ) const noexcept;
void setValue( bool value ) noexcept;
private:
bool value;
};
inline Boolean::Boolean( bool value ) noexcept
: value( value )
{
}
inline Value::Type Boolean::getType( ) const noexcept
{
return Type::Boolean;
}
inline std::unique_ptr< Value > Boolean::clone( ) const
{
return std::make_unique< Boolean >( value );
}
inline Boolean* Boolean::asBoolean( ) noexcept
{
return this;
}
inline Boolean const* Boolean::asBoolean( ) const noexcept
{
return this;
}
inline bool Boolean::getValue( ) const noexcept
{
return value;
}
inline void Boolean::setValue( bool value ) noexcept
{
this->value = value;
}
} // end namespace fson
} // end namespace fedem