Code View

fson / source / fson-1.1.0.0 / libs / internal / sdk / fson / Boolean.hh
// 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