#include "settings.h" #include #include #include #include namespace settings { std::vector readVector(std::string heading) { cfg_opt_t opts[] = { CFG_STR_LIST(heading.c_str(), NULL, CFGF_NONE), CFG_END() }; cfg_t *cfg = cfg_init(opts, CFGF_IGNORE_UNKNOWN); if(cfg_parse(cfg, "annotator.conf") == CFG_PARSE_ERROR) { throw std::runtime_error("Configuration file annotator.conf could not be read: " + std::string(strerror(errno))); } try { std::vector ret; std::size_t i; for(i = 0; i < cfg_size(cfg, heading.c_str()); i++) { ret.push_back(cfg_getnstr(cfg, heading.c_str(), i)); } return ret; } catch(std::exception& e) { throw std::runtime_error("Cannot find '" + heading + "' in configuration file"); } } std::vector getLabels() { return readVector("labels"); } std::vector getRectangleLabels() { return readVector("rectangles"); } }