From: Rosen Penev Date: Thu, 5 Nov 2020 09:10:12 +0000 (-0800) Subject: clang-tidy: several reference conversions X-Git-Tag: dnsdist-1.6.0-alpha2~55^2~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4de01aaa752a13f4b74bbe9629e33b9a8f7fbd41;p=thirdparty%2Fpdns.git clang-tidy: several reference conversions Found with performance-unnecessary-value-param Signed-off-by: Rosen Penev --- diff --git a/modules/bindbackend/bindbackend2.cc b/modules/bindbackend/bindbackend2.cc index 0cd68a26c1..fc57cdc933 100644 --- a/modules/bindbackend/bindbackend2.cc +++ b/modules/bindbackend/bindbackend2.cc @@ -765,7 +765,7 @@ void Bind2Backend::reload() } } -void Bind2Backend::fixupOrderAndAuth(std::shared_ptr& records, const DNSName& zoneName, bool nsec3zone, NSEC3PARAMRecordContent ns3pr) +void Bind2Backend::fixupOrderAndAuth(std::shared_ptr& records, const DNSName& zoneName, bool nsec3zone, const NSEC3PARAMRecordContent& ns3pr) { bool skip; DNSName shorter; @@ -803,7 +803,7 @@ void Bind2Backend::fixupOrderAndAuth(std::shared_ptr& records, } } -void Bind2Backend::doEmptyNonTerminals(std::shared_ptr& records, const DNSName& zoneName, bool nsec3zone, NSEC3PARAMRecordContent ns3pr) +void Bind2Backend::doEmptyNonTerminals(std::shared_ptr& records, const DNSName& zoneName, bool nsec3zone, const NSEC3PARAMRecordContent& ns3pr) { bool auth; DNSName shorter; diff --git a/modules/bindbackend/bindbackend2.hh b/modules/bindbackend/bindbackend2.hh index 53ab5a4d5b..f7a73fda19 100644 --- a/modules/bindbackend/bindbackend2.hh +++ b/modules/bindbackend/bindbackend2.hh @@ -312,7 +312,7 @@ private: static string DLListRejectsHandler(const vector&parts, Utility::pid_t ppid); static string DLReloadNowHandler(const vector&parts, Utility::pid_t ppid); static string DLAddDomainHandler(const vector&parts, Utility::pid_t ppid); - static void fixupOrderAndAuth(std::shared_ptr& records, const DNSName& zoneName, bool nsec3zone, NSEC3PARAMRecordContent ns3pr); - static void doEmptyNonTerminals(std::shared_ptr& records, const DNSName& zoneName, bool nsec3zone, NSEC3PARAMRecordContent ns3pr); + static void fixupOrderAndAuth(std::shared_ptr& records, const DNSName& zoneName, bool nsec3zone, const NSEC3PARAMRecordContent& ns3pr); + static void doEmptyNonTerminals(std::shared_ptr& records, const DNSName& zoneName, bool nsec3zone, const NSEC3PARAMRecordContent& ns3pr); void loadConfig(string *status=nullptr); }; diff --git a/pdns/dnsparser.cc b/pdns/dnsparser.cc index 147daafb32..1c9f92dc3f 100644 --- a/pdns/dnsparser.cc +++ b/pdns/dnsparser.cc @@ -160,7 +160,7 @@ std::shared_ptr DNSRecordContent::mastermake(const DNSRecord & return i->second(dr, pr); } -string DNSRecordContent::upgradeContent(const DNSName& qname, const QType qtype, const string& content) { +string DNSRecordContent::upgradeContent(const DNSName& qname, const QType& qtype, const string& content) { // seamless upgrade for previously unsupported but now implemented types. UnknownRecordContent unknown_content(content); shared_ptr rc = DNSRecordContent::deserialize(qname, qtype.getCode(), unknown_content.serialize(qname)); @@ -693,7 +693,7 @@ string simpleCompress(const string& elabel, const string& root) } // method of operation: silently fail if it doesn't work - we're only trying to be nice, don't fall over on it -void editDNSPacketTTL(char* packet, size_t length, std::function visitor) +void editDNSPacketTTL(char* packet, size_t length, const std::function& visitor) { if(length < sizeof(dnsheader)) return; diff --git a/pdns/dnsparser.hh b/pdns/dnsparser.hh index fc39aaeb95..c6954e4958 100644 --- a/pdns/dnsparser.hh +++ b/pdns/dnsparser.hh @@ -195,7 +195,7 @@ public: static std::shared_ptr mastermake(const DNSRecord &dr, PacketReader& pr); static std::shared_ptr mastermake(const DNSRecord &dr, PacketReader& pr, uint16_t opcode); static std::shared_ptr mastermake(uint16_t qtype, uint16_t qclass, const string& zone); - static string upgradeContent(const DNSName& qname, const QType qtype, const string& content); + static string upgradeContent(const DNSName& qname, const QType& qtype, const string& content); virtual std::string getZoneRepresentation(bool noDot=false) const = 0; virtual ~DNSRecordContent() {} @@ -427,7 +427,7 @@ private: string simpleCompress(const string& label, const string& root=""); void ageDNSPacket(char* packet, size_t length, uint32_t seconds); void ageDNSPacket(std::string& packet, uint32_t seconds); -void editDNSPacketTTL(char* packet, size_t length, std::function visitor); +void editDNSPacketTTL(char* packet, size_t length, const std::function& visitor); uint32_t getDNSPacketMinTTL(const char* packet, size_t length, bool* seenAuthSOA=nullptr); uint32_t getDNSPacketLength(const char* packet, size_t length); uint16_t getRecordsOfTypeCount(const char* packet, size_t length, uint8_t section, uint16_t type); diff --git a/pdns/json.cc b/pdns/json.cc index b1847d06a3..929fc81cc1 100644 --- a/pdns/json.cc +++ b/pdns/json.cc @@ -28,7 +28,7 @@ using json11::Json; -int intFromJson(const Json container, const std::string& key) +int intFromJson(const Json& container, const std::string& key) { auto val = container[key]; if (val.is_number()) { @@ -40,7 +40,7 @@ int intFromJson(const Json container, const std::string& key) } } -int intFromJson(const Json container, const std::string& key, const int default_value) +int intFromJson(const Json& container, const std::string& key, const int default_value) { auto val = container[key]; if (val.is_number()) { @@ -57,7 +57,7 @@ int intFromJson(const Json container, const std::string& key, const int default_ } } -double doubleFromJson(const Json container, const std::string& key) +double doubleFromJson(const Json& container, const std::string& key) { auto val = container[key]; if (val.is_number()) { @@ -73,7 +73,7 @@ double doubleFromJson(const Json container, const std::string& key) } } -double doubleFromJson(const Json container, const std::string& key, const double default_value) +double doubleFromJson(const Json& container, const std::string& key, const double default_value) { auto val = container[key]; if (val.is_number()) { @@ -86,7 +86,7 @@ double doubleFromJson(const Json container, const std::string& key, const double } } -string stringFromJson(const Json container, const std::string &key) +string stringFromJson(const Json& container, const std::string &key) { const Json val = container[key]; if (val.is_string()) { @@ -96,7 +96,7 @@ string stringFromJson(const Json container, const std::string &key) } } -bool boolFromJson(const Json container, const std::string& key) +bool boolFromJson(const Json& container, const std::string& key) { auto val = container[key]; if (val.is_bool()) { @@ -105,7 +105,7 @@ bool boolFromJson(const Json container, const std::string& key) throw JsonException("Key '" + string(key) + "' not present or not a Bool"); } -bool boolFromJson(const Json container, const std::string& key, const bool default_value) +bool boolFromJson(const Json& container, const std::string& key, const bool default_value) { auto val = container[key]; if (val.is_bool()) { diff --git a/pdns/json.hh b/pdns/json.hh index 12cda8eea1..db2703641b 100644 --- a/pdns/json.hh +++ b/pdns/json.hh @@ -25,13 +25,13 @@ #include #include "json11.hpp" -int intFromJson(const json11::Json container, const std::string& key); -int intFromJson(const json11::Json container, const std::string& key, const int default_value); -double doubleFromJson(const json11::Json container, const std::string& key); -double doubleFromJson(const json11::Json container, const std::string& key, const double default_value); -std::string stringFromJson(const json11::Json container, const std::string &key); -bool boolFromJson(const json11::Json container, const std::string& key); -bool boolFromJson(const json11::Json container, const std::string& key, const bool default_value); +int intFromJson(const json11::Json& container, const std::string& key); +int intFromJson(const json11::Json& container, const std::string& key, const int default_value); +double doubleFromJson(const json11::Json& container, const std::string& key); +double doubleFromJson(const json11::Json& container, const std::string& key, const double default_value); +std::string stringFromJson(const json11::Json& container, const std::string &key); +bool boolFromJson(const json11::Json& container, const std::string& key); +bool boolFromJson(const json11::Json& container, const std::string& key, const bool default_value); class JsonException : public std::runtime_error { diff --git a/pdns/lua-auth4.cc b/pdns/lua-auth4.cc index aa5bcf09bb..f20e4b0512 100644 --- a/pdns/lua-auth4.cc +++ b/pdns/lua-auth4.cc @@ -144,7 +144,7 @@ bool AuthLua4::axfrfilter(const ComboAddress& remote, const DNSName& zone, const } -bool AuthLua4::updatePolicy(const DNSName &qname, QType qtype, const DNSName &zonename, const DNSPacket& packet) { +bool AuthLua4::updatePolicy(const DNSName &qname, const QType& qtype, const DNSName &zonename, const DNSPacket& packet) { // default decision is all goes if (d_update_policy == nullptr) return true; diff --git a/pdns/lua-auth4.hh b/pdns/lua-auth4.hh index 3e8af48ecd..bac43dd267 100644 --- a/pdns/lua-auth4.hh +++ b/pdns/lua-auth4.hh @@ -13,7 +13,7 @@ class AuthLua4 : public BaseLua4 { public: AuthLua4(); - bool updatePolicy(const DNSName &qname, QType qtype, const DNSName &zonename, const DNSPacket& packet); + bool updatePolicy(const DNSName &qname, const QType& qtype, const DNSName &zonename, const DNSPacket& packet); bool axfrfilter(const ComboAddress&, const DNSName&, const DNSResourceRecord&, std::vector&); LuaContext* getLua(); diff --git a/pdns/lua-record.cc b/pdns/lua-record.cc index 3878f4745a..94464ead9c 100644 --- a/pdns/lua-record.cc +++ b/pdns/lua-record.cc @@ -2,6 +2,7 @@ #include #include #include +#include #include "version.hh" #include "ext/luawrapper/include/LuaContext.hpp" #include "lua-auth4.hh" @@ -507,7 +508,7 @@ static vector convIplist(const iplist_t& src) return ret; } -static vector > convWIplist(std::unordered_map src) +static vector > convWIplist(const std::unordered_map& src) { vector > ret; @@ -823,7 +824,7 @@ static void setupLuaRecords() * @example pickwrandom({ {100, '1.2.3.4'}, {50, '5.4.3.2'}, {1, '192.168.1.0'} }) */ lua.writeFunction("pickwrandom", [](std::unordered_map ips) { - vector > conv = convWIplist(ips); + vector > conv = convWIplist(std::move(ips)); return pickwrandom(conv).toString(); }); diff --git a/pdns/pdnsutil.cc b/pdns/pdnsutil.cc index 52385275ae..ecabdd61fa 100644 --- a/pdns/pdnsutil.cc +++ b/pdns/pdnsutil.cc @@ -25,6 +25,7 @@ #include "dns_random.hh" #include "ipcipher.hh" #include +#include #include //termios, TCSANOW, ECHO, ICANON #include "opensslsigners.hh" #ifdef HAVE_LIBSODIUM @@ -1011,7 +1012,7 @@ static int editZone(const DNSName &zone) { unixDie("Making temporary filename in "+string(tmpnam)); struct deleteme { ~deleteme() { unlink(d_name.c_str()); } - deleteme(string name) : d_name(name) {} + deleteme(string name) : d_name(std::move(name)) {} string d_name; } dm(tmpnam); @@ -1218,7 +1219,7 @@ static int xcryptIP(const std::string& cmd, const std::string& ip, const std::st } -static int loadZone(DNSName zone, const string& fname) { +static int loadZone(const DNSName& zone, const string& fname) { UeberBackend B; DomainInfo di; diff --git a/pdns/statbag.cc b/pdns/statbag.cc index a04e81c78c..a1e0eef3e4 100644 --- a/pdns/statbag.cc +++ b/pdns/statbag.cc @@ -28,6 +28,7 @@ #include #include #include +#include #include "arguments.hh" #include "lock.hh" #include "iputils.hh" @@ -131,7 +132,7 @@ void StatBag::declare(const string &key, const string &descrip, StatBag::func_t throw PDNSException("Attempt to re-declare func statbag '"+key+"'"); } - d_funcstats[key]=func; + d_funcstats[key]=std::move(func); d_keyDescrips[key]=descrip; d_statTypes[key]=statType; } diff --git a/pdns/webserver.cc b/pdns/webserver.cc index d573094799..da7ad858ae 100644 --- a/pdns/webserver.cc +++ b/pdns/webserver.cc @@ -27,6 +27,7 @@ #include "misc.hh" #include #include "threadname.hh" +#include #include #include "logger.hh" #include @@ -121,13 +122,13 @@ void HttpResponse::setSuccessResult(const std::string& message, const int status this->status = status_; } -static void bareHandlerWrapper(WebServer::HandlerFunction handler, YaHTTP::Request* req, YaHTTP::Response* resp) +static void bareHandlerWrapper(const WebServer::HandlerFunction& handler, YaHTTP::Request* req, YaHTTP::Response* resp) { // wrapper to convert from YaHTTP::* to our subclasses handler(static_cast(req), static_cast(resp)); } -void WebServer::registerBareHandler(const string& url, HandlerFunction handler) +void WebServer::registerBareHandler(const string& url, const HandlerFunction& handler) { YaHTTP::THandlerFunction f = [=](YaHTTP::Request* req, YaHTTP::Response* resp){return bareHandlerWrapper(handler, req, resp);}; YaHTTP::Router::Any(url, f); @@ -147,7 +148,7 @@ static bool optionsHandler(HttpRequest* req, HttpResponse* resp) { return false; } -void WebServer::apiWrapper(WebServer::HandlerFunction handler, HttpRequest* req, HttpResponse* resp, bool allowPassword) { +void WebServer::apiWrapper(const WebServer::HandlerFunction& handler, HttpRequest* req, HttpResponse* resp, bool allowPassword) { if (optionsHandler(req, resp)) return; resp->headers["access-control-allow-origin"] = "*"; @@ -198,12 +199,12 @@ void WebServer::apiWrapper(WebServer::HandlerFunction handler, HttpRequest* req, } } -void WebServer::registerApiHandler(const string& url, HandlerFunction handler, bool allowPassword) { +void WebServer::registerApiHandler(const string& url, const HandlerFunction& handler, bool allowPassword) { auto f = [=](HttpRequest *req, HttpResponse* resp){apiWrapper(handler, req, resp, allowPassword);}; registerBareHandler(url, f); } -void WebServer::webWrapper(WebServer::HandlerFunction handler, HttpRequest* req, HttpResponse* resp) { +void WebServer::webWrapper(const WebServer::HandlerFunction& handler, HttpRequest* req, HttpResponse* resp) { if (!d_webserverPassword.empty()) { bool auth_ok = req->compareAuthorization(d_webserverPassword); if (!auth_ok) { @@ -215,7 +216,7 @@ void WebServer::webWrapper(WebServer::HandlerFunction handler, HttpRequest* req, handler(req, resp); } -void WebServer::registerWebHandler(const string& url, HandlerFunction handler) { +void WebServer::registerWebHandler(const string& url, const HandlerFunction& handler) { auto f = [=](HttpRequest *req, HttpResponse *resp){webWrapper(handler, req, resp);}; registerBareHandler(url, f); } @@ -223,7 +224,7 @@ void WebServer::registerWebHandler(const string& url, HandlerFunction handler) { static void *WebServerConnectionThreadStart(const WebServer* webServer, std::shared_ptr client) { setThreadName("pdns-r/webhndlr"); try { - webServer->serveConnection(client); + webServer->serveConnection(std::move(client)); } catch(PDNSException &e) { g_log< client) const { +void WebServer::serveConnection(const std::shared_ptr& client) const { const string logprefix = d_logprefix + to_string(getUniqueID()) + " "; HttpRequest req(logprefix); diff --git a/pdns/webserver.hh b/pdns/webserver.hh index 2c23d1fe2d..7917b93af1 100644 --- a/pdns/webserver.hh +++ b/pdns/webserver.hh @@ -178,12 +178,12 @@ public: void bind(); void go(); - void serveConnection(std::shared_ptr client) const; + void serveConnection(const std::shared_ptr& client) const; void handleRequest(HttpRequest& request, HttpResponse& resp) const; typedef boost::function HandlerFunction; - void registerApiHandler(const string& url, HandlerFunction handler, bool allowPassword=false); - void registerWebHandler(const string& url, HandlerFunction handler); + void registerApiHandler(const string& url, const HandlerFunction& handler, bool allowPassword=false); + void registerWebHandler(const string& url, const HandlerFunction& handler); enum class LogLevel : uint8_t { None = 0, // No logs from requests at all @@ -219,7 +219,7 @@ public: }; protected: - void registerBareHandler(const string& url, HandlerFunction handler); + void registerBareHandler(const string& url, const HandlerFunction& handler); void logRequest(const HttpRequest& req, const ComboAddress& remote) const; void logResponse(const HttpResponse& resp, const ComboAddress& remote, const string& logprefix) const; @@ -233,9 +233,9 @@ protected: std::shared_ptr d_server; std::string d_apikey; - void apiWrapper(WebServer::HandlerFunction handler, HttpRequest* req, HttpResponse* resp, bool allowPassword); + void apiWrapper(const WebServer::HandlerFunction& handler, HttpRequest* req, HttpResponse* resp, bool allowPassword); std::string d_webserverPassword; - void webWrapper(WebServer::HandlerFunction handler, HttpRequest* req, HttpResponse* resp); + void webWrapper(const WebServer::HandlerFunction& handler, HttpRequest* req, HttpResponse* resp); ssize_t d_maxbodysize; // in bytes diff --git a/pdns/ws-auth.cc b/pdns/ws-auth.cc index 34236f1b4e..ef5b9c777a 100644 --- a/pdns/ws-auth.cc +++ b/pdns/ws-auth.cc @@ -516,7 +516,7 @@ static void validateGatheredRRType(const DNSResourceRecord& rr) { } } -static void gatherRecords(UeberBackend& B, const string& logprefix, const Json container, const DNSName& qname, const QType qtype, const int ttl, vector& new_records) { +static void gatherRecords(UeberBackend& B, const string& logprefix, const Json& container, const DNSName& qname, const QType& qtype, const int ttl, vector& new_records) { DNSResourceRecord rr; rr.qname = qname; rr.qtype = qtype; @@ -556,7 +556,7 @@ static void gatherRecords(UeberBackend& B, const string& logprefix, const Json c } } -static void gatherComments(const Json container, const DNSName& qname, const QType qtype, vector& new_comments) { +static void gatherComments(const Json& container, const DNSName& qname, const QType& qtype, vector& new_comments) { Comment c; c.qname = qname; c.qtype = qtype; @@ -598,7 +598,7 @@ static void throwUnableToSecure(const DNSName& zonename) { } -static void extractDomainInfoFromDocument(const Json document, boost::optional& kind, boost::optional>& masters, boost::optional& account) { +static void extractDomainInfoFromDocument(const Json& document, boost::optional& kind, boost::optional>& masters, boost::optional& account) { if (document["kind"].is_string()) { kind = DomainInfo::stringToKind(stringFromJson(document, "kind")); } else { @@ -628,7 +628,7 @@ static void extractDomainInfoFromDocument(const Json document, boost::optional kind; boost::optional> masters; boost::optional account; @@ -1051,7 +1051,7 @@ static void apiZoneMetadataKind(HttpRequest* req, HttpResponse* resp) { } // Throws 404 if the key with inquireKeyId does not exist -static void apiZoneCryptoKeysCheckKeyExists(DNSName zonename, int inquireKeyId, DNSSECKeeper *dk) { +static void apiZoneCryptoKeysCheckKeyExists(const DNSName& zonename, int inquireKeyId, DNSSECKeeper *dk) { DNSSECKeeper::keyset_t keyset=dk->getKeys(zonename, false); bool found = false; for(const auto& value : keyset) { @@ -1065,7 +1065,7 @@ static void apiZoneCryptoKeysCheckKeyExists(DNSName zonename, int inquireKeyId, } } -static void apiZoneCryptokeysGET(DNSName zonename, int inquireKeyId, HttpResponse *resp, DNSSECKeeper *dk) { +static void apiZoneCryptokeysGET(const DNSName& zonename, int inquireKeyId, HttpResponse *resp, DNSSECKeeper *dk) { DNSSECKeeper::keyset_t keyset=dk->getKeys(zonename, false); bool inquireSingleKey = inquireKeyId >= 0; @@ -1131,7 +1131,7 @@ static void apiZoneCryptokeysGET(DNSName zonename, int inquireKeyId, HttpRespons * Case 3: the key or zone does not exist. * The server returns 404 Not Found * */ -static void apiZoneCryptokeysDELETE(DNSName zonename, int inquireKeyId, HttpRequest *req, HttpResponse *resp, DNSSECKeeper *dk) { +static void apiZoneCryptokeysDELETE(const DNSName& zonename, int inquireKeyId, HttpRequest *req, HttpResponse *resp, DNSSECKeeper *dk) { if (dk->removeKey(zonename, inquireKeyId)) { resp->body = ""; resp->status = 204; @@ -1176,7 +1176,7 @@ static void apiZoneCryptokeysDELETE(DNSName zonename, int inquireKeyId, HttpRequ * The server returns 201 Created and all public data about the added cryptokey */ -static void apiZoneCryptokeysPOST(DNSName zonename, HttpRequest *req, HttpResponse *resp, DNSSECKeeper *dk) { +static void apiZoneCryptokeysPOST(const DNSName& zonename, HttpRequest *req, HttpResponse *resp, DNSSECKeeper *dk) { auto document = req->json(); string privatekey_fieldname = "privatekey"; auto privatekey = document["privatekey"]; @@ -1277,7 +1277,7 @@ static void apiZoneCryptokeysPOST(DNSName zonename, HttpRequest *req, HttpRespon * Case 3: the backend returns false on de/activation. An error occurred. * The sever returns 422 Unprocessable Entity with message "Could not de/activate Key: :cryptokey_id in Zone: :zone_name" * */ -static void apiZoneCryptokeysPUT(DNSName zonename, int inquireKeyId, HttpRequest *req, HttpResponse *resp, DNSSECKeeper *dk) { +static void apiZoneCryptokeysPUT(const DNSName& zonename, int inquireKeyId, HttpRequest *req, HttpResponse *resp, DNSSECKeeper *dk) { //throws an exception if the Body is empty auto document = req->json(); //throws an exception if the key does not exist or is not a bool @@ -1350,7 +1350,7 @@ static void apiZoneCryptokeys(HttpRequest *req, HttpResponse *resp) { } } -static void gatherRecordsFromZone(const std::string& zonestring, vector& new_records, DNSName zonename) { +static void gatherRecordsFromZone(const std::string& zonestring, vector& new_records, const DNSName& zonename) { DNSResourceRecord rr; vector zonedata; stringtok(zonedata, zonestring, "\r\n"); diff --git a/pdns/zoneparser-tng.cc b/pdns/zoneparser-tng.cc index 323c9dee0d..7a11aae2c8 100644 --- a/pdns/zoneparser-tng.cc +++ b/pdns/zoneparser-tng.cc @@ -47,7 +47,7 @@ ZoneParserTNG::ZoneParserTNG(const string& fname, const DNSName& zname, const st stackFile(fname); } -ZoneParserTNG::ZoneParserTNG(const vector zonedata, const DNSName& zname, bool upgradeContent): +ZoneParserTNG::ZoneParserTNG(const vector& zonedata, const DNSName& zname, bool upgradeContent): d_zonename(zname), d_zonedata(zonedata), d_defaultttl(3600), d_templatecounter(0), d_templatestop(0), d_templatestep(0), d_havedollarttl(false), d_fromfile(false), d_upgradeContent(upgradeContent) diff --git a/pdns/zoneparser-tng.hh b/pdns/zoneparser-tng.hh index f490f58d3d..6653310754 100644 --- a/pdns/zoneparser-tng.hh +++ b/pdns/zoneparser-tng.hh @@ -32,7 +32,7 @@ class ZoneParserTNG { public: ZoneParserTNG(const string& fname, const DNSName& zname=g_rootdnsname, const string& reldir="", bool upgradeContent=false); - ZoneParserTNG(const vector zonedata, const DNSName& zname, bool upgradeContent=false); + ZoneParserTNG(const vector& zonedata, const DNSName& zname, bool upgradeContent=false); ~ZoneParserTNG(); bool get(DNSResourceRecord& rr, std::string* comment=0);