Program Listing for File config_validator.h

Return to documentation for file (src/common/config_validator.h)

#pragma once

#include "3rd_party/yaml-cpp/yaml.h"
#include "common/config_parser.h"

namespace marian {

class ConfigValidator {
private:
  const YAML::Node& config_;

  bool has(const std::string& key) const;
  template <typename T>
  T get(const std::string& key) const {
    return config_[key].as<T>();
  }

  // The option --dump-config is used, so alleviate some constraints, e.g. we don't want to require
  // --train-sets or --vocabs
  bool dumpConfigOnly_{false};

  void validateOptionsTranslation() const;
  void validateOptionsParallelData() const;
  void validateOptionsScoring() const;
  void validateOptionsTraining() const;

  void validateModelExtension(cli::mode mode) const;
  void validateDevices(cli::mode mode) const;

public:
  ConfigValidator(const YAML::Node& config);
  virtual ~ConfigValidator();

  // Validate options according to the given mode. Abort on first validation error
  void validateOptions(cli::mode mode) const;
};

}  // namespace marian