#pragma once
#include <myapp/configuration/configprovider.h>
#include <string>
#include <yaml.h>

namespace myapp::configuration {

class yaml_config_provider final : public config_provider
{
public:
    yaml_config_provider() noexcept = default;
    ~yaml_config_provider() = default;

    yaml_config_provider(yaml_config_provider const&) noexcept = default;
    yaml_config_provider& operator=(yaml_config_provider const&) noexcept = default;

    yaml_config_provider(yaml_config_provider &&) noexcept = default;
    yaml_config_provider& operator=(yaml_config_provider &&) noexcept = default;

    config from_string(std::string const&) override;
    config from_file(std::string const&) override;
};

} /* namespace myapp::configuration */
