UFO
Variable.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2019 UCAR
3  *
4  * This software is licensed under the terms of the Apache Licence Version 2.0
5  * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
6  */
7 
8 #ifndef UFO_FILTERS_VARIABLE_H_
9 #define UFO_FILTERS_VARIABLE_H_
10 
11 #include <ostream>
12 #include <string>
13 #include <vector>
14 
15 #include "eckit/config/LocalConfiguration.h"
16 #include "oops/base/Variables.h"
17 #include "oops/util/Printable.h"
18 
19 namespace ufo {
20 
21 // -----------------------------------------------------------------------------
22 
23 class Variable: public util::Printable {
24  public:
25  static const std::string classname() {return "ufo::Variable";}
26 
27  explicit Variable(const eckit::Configuration &);
28  explicit Variable(const std::string &,
29  const eckit::LocalConfiguration conf = eckit::LocalConfiguration());
30  Variable(const std::string &, const std::vector<int> &);
31  Variable(const Variable &, const std::string &);
32  ~Variable();
33 
34  size_t size() const;
35  Variable operator[](const size_t) const;
36  const std::string & variable() const;
37  std::string variable(const size_t) const;
38  const std::string & group() const;
39  const std::vector<int> & channels() const;
40 
41  /// Return the full variable name including the group name (but no channel number), e.g.
42  /// `air_pressure@MetaData`.
43  std::string fullName() const;
44 
45  oops::Variables toOopsVariables() const;
46 
47  const eckit::LocalConfiguration & options() const {return options_;}
48 
49  private:
50  void print(std::ostream &) const;
51  std::string varname_;
52  std::string grpname_;
53  std::vector<int> channels_;
54  eckit::LocalConfiguration options_;
55 };
56 
57 // -----------------------------------------------------------------------------
58 
59 } // namespace ufo
60 
61 #endif // UFO_FILTERS_VARIABLE_H_
Variable(const eckit::Configuration &)
Definition: Variable.cc:31
const std::string & variable() const
Definition: Variable.cc:99
eckit::LocalConfiguration options_
Definition: Variable.h:54
static const std::string classname()
Definition: Variable.h:25
std::string fullName() const
Definition: Variable.cc:128
const std::string & group() const
Definition: Variable.cc:116
void print(std::ostream &) const
Definition: Variable.cc:150
const eckit::LocalConfiguration & options() const
Definition: Variable.h:47
oops::Variables toOopsVariables() const
Definition: Variable.cc:139
const std::vector< int > & channels() const
Definition: Variable.cc:122
size_t size() const
Definition: Variable.cc:78
std::string grpname_
Definition: Variable.h:52
std::vector< int > channels_
Definition: Variable.h:53
std::string varname_
Definition: Variable.h:51
Variable operator[](const size_t) const
Definition: Variable.cc:88
Definition: RunCRTM.h:27