16 #include "eckit/config/Configuration.h"
17 #include "eckit/exception/Exceptions.h"
18 #include "eckit/types/Types.h"
20 #include "oops/util/IntSetParser.h"
21 #include "oops/util/Logger.h"
28 : convention_(
""), vars_(0) {
29 Log::trace() <<
"Variables::Variables" << std::endl;
35 : convention_(
""), vars_(0), channels_(0) {
36 Log::trace() <<
"Variables::Variables start " << conf << std::endl;
37 std::vector<std::string> vars;
39 if (vars.size() == 0) {
40 Log::error() << name <<
" not found in " << conf << std::endl;
41 throw eckit::BadParameter(
"Undefined variable: '" + name +
"'");
44 if (conf.has(
"channels")) {
45 std::string chlist = conf.getString(
"channels");
46 std::set<int>
channels = parseIntSet(chlist);
49 for (
size_t jvar = 0; jvar < vars.size(); ++jvar) {
50 for (
size_t jch = 0; jch <
channels_.size(); ++jch) {
57 Log::trace() <<
"Variables::Variables done" << std::endl;
63 : convention_(conv), vars_(vars) {
64 Log::trace() <<
"Variables::Variables start " << vars << std::endl;
65 Log::trace() <<
"Variables::Variables done" << std::endl;
71 : convention_(
""), vars_(0), channels_(channels) {
72 Log::trace() <<
"Variables::Variables start " << vars <<
" @ " <<
channels << std::endl;
73 for (
size_t jvar = 0; jvar < vars.size(); ++jvar) {
74 for (
size_t jch = 0; jch <
channels_.size(); ++jch) {
78 Log::trace() <<
"Variables::Variables done" << std::endl;
84 : convention_(other.convention_), vars_(other.vars_), channels_(other.channels_)
115 bool is_in_rhs =
true;
116 for (
size_t jj = 0; jj <
vars_.size(); ++jj) {
117 is_in_rhs = is_in_rhs && rhs.
has(
vars_[jj]);
126 for (
size_t jj = 0; jj <
vars_.size(); ++jj) {
127 found = found ||
vars_[jj] == var;
135 size_t ii =
vars_.size();
136 for (
size_t jj = 0; jj <
vars_.size(); ++jj) {
137 if (
vars_[jj] == var) ii = jj;
139 ASSERT(ii <
vars_.size());
146 vars_.push_back(vname);
156 os <<
vars_.size() <<
" variables: ";
157 for (
size_t jj = 0; jj <
vars_.size(); ++jj) {
158 if (jj > 0) os <<
", ";