Code View

fson / source / fson-1.1.0.0 / libs / internal / sdk / fson / Null.hh
// SPDX-License-Identifier: MIT
#pragma once

#include <memory>

#include "Value.hh"

namespace fedem
{
  namespace fson
  {
    // ─────────────────────────────────────────────────────────────────────
    // Null — the FSON literal "null"
    // ─────────────────────────────────────────────────────────────────────
    class Null final : public Value
    {
      public:
        Null( ) = default;

        Type getType( ) const noexcept override;
        std::unique_ptr< Value > clone( ) const override;

        Null*       asNull( )       noexcept override;
        Null const* asNull( ) const noexcept override;
    };

    inline Value::Type Null::getType( ) const noexcept
    {
      return Type::Null;
    }

    inline std::unique_ptr< Value > Null::clone( ) const
    {
      return std::make_unique< Null >( );
    }

    inline Null* Null::asNull( ) noexcept
    {
      return this;
    }

    inline Null const* Null::asNull( ) const noexcept
    {
      return this;
    }
  }  // end namespace fson
}  // end namespace fedem