const ConcreteValueBase* ESolver::CreateValue(const ESFixedTypeBase* Type, const string& ValueString) { switch(Type->GetBaseType()) { case BaseTypeBool: return CreateValue(Type, ParseBoolString(ValueString)); case BaseTypeInt: return CreateValue(Type, ParseIntString(ValueString)); case BaseTypeEnum: return CreateValue(Type, ParseEnumString(ValueString, Type)); case BaseTypeBitVector: return CreateValue(Type, ParseBVString(ValueString, Type->As<ESBVType>()->GetSize())); default: throw TypeException("Unhandled type in CreateValue()"); } }
std::vector<int> InputParserUtil::ParseWorkerAffinities( const int num_workers, const string &affinity_string) { std::vector<int> affinities; if (affinity_string.empty()) { affinities.resize(num_workers, -1); return affinities; } if (!ParseIntString(affinity_string, ',', &affinities)) { LOG(FATAL) << "--worker_affinities must be a comma-separated list of " << "integer CPU ids.\n"; } for (const int affinity : affinities) { if (affinity < -1) { LOG(FATAL) << "CPU affinities specified by --worker_affinities must be " << "non-negative, or -1 to specify no affinity.\n"; } } if (affinities.size() < static_cast<std::size_t>(num_workers)) { std::cout << "--num_workers is " << num_workers << ", but only " << "specified " << affinities.size() << " CPU affinities " << "with --worker_affinities. " << (num_workers - affinities.size()) << " workers will be " << "unaffinitized.\n"; affinities.resize(num_workers, -1); } else if (affinities.size() > static_cast<std::size_t>(num_workers)) { std::cout << "--num_workers is " << num_workers << ", but specified " << affinities.size() << " CPU affinities with " << "--worker_affinities. Extra affinities will be ignored.\n"; affinities.resize(num_workers); } return affinities; }