return *this;
}
-const std::string QClass::toString() const
+static const std::map<const std::string, uint16_t> s_classMap = {
+ {"IN", QClass::IN},
+ {"CHAOS", QClass::CHAOS},
+ {"NONE", QClass::NONE},
+ {"ANY", QClass::ANY},
+};
+
+QClass::QClass(const std::string& code)
+{
+ auto mapIt = s_classMap.find(code);
+ if (mapIt == s_classMap.end()) {
+ throw std::runtime_error("Invalid QClass '" + code + "'");
+ }
+ qclass = mapIt->second;
+}
+
+std::string QClass::toString() const
{
switch (qclass) {
case IN:
struct QClass
{
constexpr QClass(uint16_t code = 0) : qclass(code) {}
+ explicit QClass(const std::string& code);
constexpr operator uint16_t() const {
return qclass;
{
return qclass;
}
- const std::string toString() const;
+ std::string toString() const;
static const QClass IN;
static const QClass CHAOS;