yaml_helper.h 845 字节
Newer Older
X
xiexionghang 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
#pragma once
#include <glog/logging.h>
#include <yaml-cpp/yaml.h>

namespace paddle {
namespace custom_trainer {
namespace feed {
    
class YamlHelper {
public:
    // 直接使用node["key"]判断,会导致node数据被加入key键
    static bool has_key(const YAML::Node& node, const std::string& key) {
        CHECK(node.Type() == YAML::NodeType::Map);
        for (const auto& itr : node) {
            if (key == itr.first.as<std::string>()) {
                return true;
            }
        } 
        return false;
    }
    template <class T>
    static T get_with_default(YAML::Node node, const std::string& key, const T& default_v) {
        if (has_key(node, key)) {
            return node[key].as<T>();
        }
        return default_v;
    }
};

}  // namespace feed
}  // namespace custom_trainer
}  // namespace paddle