C++ API#
Metkit is primarily a C++ library. This page documents the main public C++ interfaces.
The MarsRequest class#
metkit::mars::MarsRequest is the central data structure of the
library: it represents a single MARS request (a verb plus a set of keyword
parameters and their values) that can be parsed, inspected and manipulated.
-
class MarsRequest#
Public Functions
-
MarsRequest()#
-
explicit MarsRequest(const std::string&)#
-
explicit MarsRequest(eckit::Stream&, bool lowercase = false)#
-
MarsRequest(const std::string&, const std::map<std::string, std::string>&)#
-
MarsRequest(const std::string&, const eckit::Value&)#
-
explicit MarsRequest(const eckit::message::Message&)#
-
~MarsRequest() = default#
-
bool operator<(const MarsRequest &other) const#
-
const std::string &operator[](const std::string&) const#
-
operator eckit::Value() const#
-
const std::string &verb() const#
-
size_t countValues(const std::string&) const#
-
bool has(const std::string&) const#
-
bool is(const std::string ¶m, const std::string &value) const#
-
const std::vector<std::string> &values(const std::string&, bool emptyOk = false) const#
-
std::optional<std::reference_wrapper<const std::vector<std::string>>> get(const std::string &keyword) const#
-
template<class T>
size_t getValues(const std::string &name, std::vector<T> &v, bool emptyOk = false) const#
-
void getParams(std::vector<std::string>&) const#
-
std::vector<std::string> params() const#
-
inline std::list<Parameter> ¶meters()#
-
inline const std::list<Parameter> ¶meters() const#
-
void verb(const std::string&)#
-
void values(const std::string&, const std::vector<std::string>&)#
-
void setValue(const std::string &name, const char *value)#
-
void unsetValues(const std::string&)#
-
std::vector<MarsRequest> split(const std::string &keys) const#
Splits a MARS request into multiple requests along the provided key.
-
std::vector<MarsRequest> split(const std::vector<std::string> &keys) const#
Splits a MARS request into multiple requests along the indicated keys.
-
void merge(const MarsRequest &other)#
Merges one MarsRequest into another
- Todo:
Improve performance — uses O(N^2) search / merge in std::list’s
-
MarsRequest subset(const std::set<std::string>&) const#
Create a new MarsRequest from this one with only the given set of keys.
-
void json(eckit::JSON&, bool array = false) const#
-
void md5(eckit::MD5&) const#
-
void dump(std::ostream&, const char *cr = "\n", const char *tab = "\t", bool verb = true) const#
-
void setValuesTyped(Type*, const std::vector<std::string>&)#
-
bool filter(const MarsRequest &filter)#
-
bool matches(const MarsRequest &filter) const#
-
bool empty() const#
-
size_t count() const#
-
MarsRequest extract(const std::string &category) const#
-
void erase(const std::string ¶m)#
-
std::string asString() const#
Public Static Functions
-
static MarsRequest parse(const std::string &s, bool strict = false)#
-
static std::vector<MarsRequest> parse(std::istream&, bool strict = false)#
-
static const MarsRequest &fromOpaque(const metkit_marsrequest_t *request)#
Implementation in api/metkit_c.cc.
-
MarsRequest()#