From: Charles-Henri Bruyand Date: Tue, 29 Jun 2021 14:46:31 +0000 (+0200) Subject: turn off clang-format for RecursorLua4::postPrepareContext X-Git-Tag: dnsdist-1.7.0-alpha1~106^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ebd9aa6ea276aa61879712c01b0d1e68bfdd44cd;p=thirdparty%2Fpdns.git turn off clang-format for RecursorLua4::postPrepareContext --- diff --git a/pdns/lua-recursor4.cc b/pdns/lua-recursor4.cc index e8719864c4..98244c9da6 100644 --- a/pdns/lua-recursor4.cc +++ b/pdns/lua-recursor4.cc @@ -151,31 +151,22 @@ struct DynMetric void set(unsigned long val) { *ptr = val; } }; +// clang-format off + void RecursorLua4::postPrepareContext() { - d_lw->registerMember( - "qname", [](const DNSQuestion& dq) -> const DNSName& { return dq.qname; }, [](DNSQuestion& dq, const DNSName& newName) { (void)newName; }); - d_lw->registerMember( - "qtype", [](const DNSQuestion& dq) -> uint16_t { return dq.qtype; }, [](DNSQuestion& dq, uint16_t newType) { (void)newType; }); - d_lw->registerMember( - "isTcp", [](const DNSQuestion& dq) -> bool { return dq.isTcp; }, [](DNSQuestion& dq, bool newTcp) { (void)newTcp; }); - d_lw->registerMember( - "localaddr", [](const DNSQuestion& dq) -> const ComboAddress& { return dq.local; }, [](DNSQuestion& dq, const ComboAddress& newLocal) { (void)newLocal; }); - d_lw->registerMember( - "remoteaddr", [](const DNSQuestion& dq) -> const ComboAddress& { return dq.remote; }, [](DNSQuestion& dq, const ComboAddress& newRemote) { (void)newRemote; }); - d_lw->registerMember( - "validationState", [](const DNSQuestion& dq) -> uint8_t { return (vStateIsBogus(dq.validationState) ? /* in order not to break older scripts */ static_cast(255) : static_cast(dq.validationState)); }, [](DNSQuestion& dq, uint8_t newState) { (void)newState; }); - d_lw->registerMember( - "detailedValidationState", [](const DNSQuestion& dq) -> vState { return dq.validationState; }, [](DNSQuestion& dq, vState newState) { (void)newState; }); - - d_lw->registerMember( - "variable", [](const DNSQuestion& dq) -> bool { return dq.variable; }, [](DNSQuestion& dq, bool newVariable) { dq.variable = newVariable; }); - d_lw->registerMember( - "wantsRPZ", [](const DNSQuestion& dq) -> bool { return dq.wantsRPZ; }, [](DNSQuestion& dq, bool newWantsRPZ) { dq.wantsRPZ = newWantsRPZ; }); - d_lw->registerMember( - "logResponse", [](const DNSQuestion& dq) -> bool { return dq.logResponse; }, [](DNSQuestion& dq, bool newLogResponse) { dq.logResponse = newLogResponse; }); - d_lw->registerMember( - "addPaddingToResponse", [](const DNSQuestion& dq) -> bool { return dq.addPaddingToResponse; }, [](DNSQuestion& dq, bool add) { dq.addPaddingToResponse = add; }); + d_lw->registerMember("qname", [](const DNSQuestion& dq) -> const DNSName& { return dq.qname; }, [](DNSQuestion& dq, const DNSName& newName) { (void) newName; }); + d_lw->registerMember("qtype", [](const DNSQuestion& dq) -> uint16_t { return dq.qtype; }, [](DNSQuestion& dq, uint16_t newType) { (void) newType; }); + d_lw->registerMember("isTcp", [](const DNSQuestion& dq) -> bool { return dq.isTcp; }, [](DNSQuestion& dq, bool newTcp) { (void) newTcp; }); + d_lw->registerMember("localaddr", [](const DNSQuestion& dq) -> const ComboAddress& { return dq.local; }, [](DNSQuestion& dq, const ComboAddress& newLocal) { (void) newLocal; }); + d_lw->registerMember("remoteaddr", [](const DNSQuestion& dq) -> const ComboAddress& { return dq.remote; }, [](DNSQuestion& dq, const ComboAddress& newRemote) { (void) newRemote; }); + d_lw->registerMember("validationState", [](const DNSQuestion& dq) -> uint8_t { return (vStateIsBogus(dq.validationState) ? /* in order not to break older scripts */ static_cast(255) : static_cast(dq.validationState)); }, [](DNSQuestion& dq, uint8_t newState) { (void) newState; }); + d_lw->registerMember("detailedValidationState", [](const DNSQuestion& dq) -> vState { return dq.validationState; }, [](DNSQuestion& dq, vState newState) { (void) newState; }); + + d_lw->registerMember("variable", [](const DNSQuestion& dq) -> bool { return dq.variable; }, [](DNSQuestion& dq, bool newVariable) { dq.variable = newVariable; }); + d_lw->registerMember("wantsRPZ", [](const DNSQuestion& dq) -> bool { return dq.wantsRPZ; }, [](DNSQuestion& dq, bool newWantsRPZ) { dq.wantsRPZ = newWantsRPZ; }); + d_lw->registerMember("logResponse", [](const DNSQuestion& dq) -> bool { return dq.logResponse; }, [](DNSQuestion& dq, bool newLogResponse) { dq.logResponse = newLogResponse; }); + d_lw->registerMember("addPaddingToResponse", [](const DNSQuestion& dq) -> bool { return dq.addPaddingToResponse; }, [](DNSQuestion& dq, bool add) { dq.addPaddingToResponse = add; }); d_lw->registerMember("rcode", &DNSQuestion::rcode); d_lw->registerMember("tag", &DNSQuestion::tag); @@ -186,23 +177,23 @@ void RecursorLua4::postPrepareContext() d_lw->registerMember("followupPrefix", &DNSQuestion::followupPrefix); d_lw->registerMember("followupName", &DNSQuestion::followupName); d_lw->registerMember("data", &DNSQuestion::data); - d_lw->registerMember( - "extendedErrorCode", [](const DNSQuestion& dq) -> uint16_t { + d_lw->registerMember("extendedErrorCode", [](const DNSQuestion& dq) -> uint16_t { if (dq.extendedErrorCode && *dq.extendedErrorCode) { return *(*dq.extendedErrorCode); } - return 0; }, + return 0; + }, [](DNSQuestion& dq, uint16_t newCode) { if (dq.extendedErrorCode) { *dq.extendedErrorCode = newCode; } }); - d_lw->registerMember( - "extendedErrorExtra", [](const DNSQuestion& dq) -> std::string { + d_lw->registerMember("extendedErrorExtra", [](const DNSQuestion& dq) -> std::string { if (dq.extendedErrorExtra) { return *dq.extendedErrorExtra; } - return ""; }, + return ""; + }, [](DNSQuestion& dq, const std::string& newExtra) { if (dq.extendedErrorExtra) { *dq.extendedErrorExtra = newExtra; @@ -214,8 +205,7 @@ void RecursorLua4::postPrepareContext() d_lw->registerMember("udpCallback", &DNSQuestion::udpCallback); d_lw->registerMember("appliedPolicy", &DNSQuestion::appliedPolicy); - d_lw->registerMember( - "policyName", + d_lw->registerMember("policyName", [](const DNSFilterEngine::Policy& pol) -> std::string { return pol.getName(); }, @@ -227,8 +217,7 @@ void RecursorLua4::postPrepareContext() d_lw->registerMember("policyTTL", &DNSFilterEngine::Policy::d_ttl); d_lw->registerMember("policyTrigger", &DNSFilterEngine::Policy::d_trigger); d_lw->registerMember("policyHit", &DNSFilterEngine::Policy::d_hit); - d_lw->registerMember( - "policyCustom", + d_lw->registerMember("policyCustom", [](const DNSFilterEngine::Policy& pol) -> std::string { std::string result; if (pol.d_kind != DNSFilterEngine::PolicyKind::Custom) { @@ -248,7 +237,8 @@ void RecursorLua4::postPrepareContext() // Only CNAMES for now, when we ever add a d_custom_type, there will be pain pol.d_custom.clear(); pol.d_custom.push_back(DNSRecordContent::mastermake(QType::CNAME, QClass::IN, content)); - }); + } + ); d_lw->registerFunction("getDH", &DNSQuestion::getDH); d_lw->registerFunction("getEDNSOptions", &DNSQuestion::getEDNSOptions); d_lw->registerFunction("getEDNSOption", &DNSQuestion::getEDNSOption); @@ -263,133 +253,148 @@ void RecursorLua4::postPrepareContext() d_lw->registerMember("place", &DNSRecord::d_place); d_lw->registerMember("size", &EDNSOptionViewValue::size); - d_lw->registerFunction("getContent", [](const EDNSOptionViewValue& value) { return std::string(value.content, value.size); }); - d_lw->registerFunction("count", [](const EDNSOptionView& option) { return option.values.size(); }); - d_lw->registerFunction (EDNSOptionView::*)()>("getValues", [](const EDNSOptionView& option) { - std::vector values; - for (const auto& value : option.values) { - values.push_back(std::string(value.content, value.size)); - } - return values; - }); + d_lw->registerFunction("getContent", [](const EDNSOptionViewValue& value) { return std::string(value.content, value.size); }); + d_lw->registerFunction("count", [](const EDNSOptionView& option) { return option.values.size(); }); + d_lw->registerFunction(EDNSOptionView::*)()>("getValues", [] (const EDNSOptionView& option) { + std::vector values; + for (const auto& value : option.values) { + values.push_back(std::string(value.content, value.size)); + } + return values; + }); /* pre 4.2 API compatibility, when we had only one value for a given EDNS option */ - d_lw->registerMember( - "size", [](const EDNSOptionView& option) -> uint16_t { + d_lw->registerMember("size", [](const EDNSOptionView& option) -> uint16_t { uint16_t result = 0; if (!option.values.empty()) { result = option.values.at(0).size; } - return result; }, - [](EDNSOptionView& option, uint16_t newSize) { (void)newSize; }); - d_lw->registerFunction("getContent", [](const EDNSOptionView& option) { + return result; + }, + [](EDNSOptionView& option, uint16_t newSize) { (void) newSize; }); + d_lw->registerFunction("getContent", [](const EDNSOptionView& option) { if (option.values.empty()) { return std::string(); } return std::string(option.values.at(0).content, option.values.at(0).size); }); - d_lw->registerFunction("getContent", [](const DNSRecord& dr) { return dr.d_content->getZoneRepresentation(); }); - d_lw->registerFunction (DNSRecord::*)()>("getCA", [](const DNSRecord& dr) { - boost::optional ret; + d_lw->registerFunction("getContent", [](const DNSRecord& dr) { return dr.d_content->getZoneRepresentation(); }); + d_lw->registerFunction(DNSRecord::*)()>("getCA", [](const DNSRecord& dr) { + boost::optional ret; - if (auto rec = std::dynamic_pointer_cast(dr.d_content)) - ret = rec->getCA(53); - else if (auto aaaarec = std::dynamic_pointer_cast(dr.d_content)) - ret = aaaarec->getCA(53); - return ret; - }); + if(auto rec = std::dynamic_pointer_cast(dr.d_content)) + ret=rec->getCA(53); + else if(auto aaaarec = std::dynamic_pointer_cast(dr.d_content)) + ret=aaaarec->getCA(53); + return ret; + }); d_lw->registerFunction("getContent", [](const ProxyProtocolValue& value) { return value.content; }); d_lw->registerFunction("getType", [](const ProxyProtocolValue& value) { return value.type; }); - d_lw->registerFunction("changeContent", [](DNSRecord& dr, const std::string& newContent) { dr.d_content = DNSRecordContent::mastermake(dr.d_type, QClass::IN, newContent); }); + d_lw->registerFunction("changeContent", [](DNSRecord& dr, const std::string& newContent) { dr.d_content = DNSRecordContent::mastermake(dr.d_type, QClass::IN, newContent); }); d_lw->registerFunction("addAnswer", &DNSQuestion::addAnswer); d_lw->registerFunction("addRecord", &DNSQuestion::addRecord); d_lw->registerFunction("getRecords", &DNSQuestion::getRecords); d_lw->registerFunction("setRecords", &DNSQuestion::setRecords); - d_lw->registerFunction("addPolicyTag", [](DNSQuestion& dq, const std::string& tag) { if (dq.policyTags) { dq.policyTags->insert(tag); } }); - d_lw->registerFunction>&)>("setPolicyTags", [](DNSQuestion& dq, const std::vector>& tags) { - if (dq.policyTags) { - dq.policyTags->clear(); - dq.policyTags->reserve(tags.size()); - for (const auto& tag : tags) { - dq.policyTags->insert(tag.second); + d_lw->registerFunction("addPolicyTag", [](DNSQuestion& dq, const std::string& tag) { if (dq.policyTags) { dq.policyTags->insert(tag); } }); + d_lw->registerFunction >&)>("setPolicyTags", [](DNSQuestion& dq, const std::vector >& tags) { + if (dq.policyTags) { + dq.policyTags->clear(); + dq.policyTags->reserve(tags.size()); + for (const auto& tag : tags) { + dq.policyTags->insert(tag.second); + } } - } - }); - d_lw->registerFunction> (DNSQuestion::*)()>("getPolicyTags", [](const DNSQuestion& dq) { - std::vector> ret; - if (dq.policyTags) { - int count = 1; - ret.reserve(dq.policyTags->size()); - for (const auto& tag : *dq.policyTags) { - ret.push_back({count++, tag}); + }); + d_lw->registerFunction >(DNSQuestion::*)()>("getPolicyTags", [](const DNSQuestion& dq) { + std::vector > ret; + if (dq.policyTags) { + int count = 1; + ret.reserve(dq.policyTags->size()); + for (const auto& tag : *dq.policyTags) { + ret.push_back({count++, tag}); + } } - } - return ret; - }); + return ret; + }); - d_lw->registerFunction("discardPolicy", [](DNSQuestion& dq, const std::string& policy) { - if (dq.discardedPolicies) { - (*dq.discardedPolicies)[policy] = true; - } - }); + d_lw->registerFunction("discardPolicy", [](DNSQuestion& dq, const std::string& policy) { + if (dq.discardedPolicies) { + (*dq.discardedPolicies)[policy] = true; + } + }); d_lw->writeFunction("newDS", []() { return SuffixMatchNode(); }); - d_lw->registerFunction>>)>( + d_lw->registerFunction > >)>( "add", - [](SuffixMatchNode& smn, const boost::variant>>& in) { + [](SuffixMatchNode&smn, const boost::variant > >& in){ try { - if (auto s = boost::get(&in)) { + if(auto s = boost::get(&in)) { smn.add(DNSName(*s)); } - else if (auto v = boost::get>>(&in)) { - for (const auto& entry : *v) + else if(auto v = boost::get > >(&in)) { + for(const auto& entry : *v) smn.add(DNSName(entry.second)); } else { smn.add(boost::get(in)); } } - catch (std::exception& e) { - g_log << Logger::Error << e.what() << endl; + catch(std::exception& e) { + g_log <registerFunction("check", (bool (SuffixMatchNode::*)(const DNSName&) const) & SuffixMatchNode::check); - d_lw->registerFunction("toString", (string(SuffixMatchNode::*)() const) & SuffixMatchNode::toString); - - d_pd.push_back({"policykinds", in_t{{"NoAction", (int)DNSFilterEngine::PolicyKind::NoAction}, {"Drop", (int)DNSFilterEngine::PolicyKind::Drop}, {"NXDOMAIN", (int)DNSFilterEngine::PolicyKind::NXDOMAIN}, {"NODATA", (int)DNSFilterEngine::PolicyKind::NODATA}, {"Truncate", (int)DNSFilterEngine::PolicyKind::Truncate}, {"Custom", (int)DNSFilterEngine::PolicyKind::Custom}}}); - - d_pd.push_back({"policytypes", in_t{{"None", (int)DNSFilterEngine::PolicyType::None}, {"QName", (int)DNSFilterEngine::PolicyType::QName}, {"ClientIP", (int)DNSFilterEngine::PolicyType::ClientIP}, {"ResponseIP", (int)DNSFilterEngine::PolicyType::ResponseIP}, {"NSDName", (int)DNSFilterEngine::PolicyType::NSDName}, {"NSIP", (int)DNSFilterEngine::PolicyType::NSIP}}}); - - for (const auto& n : QType::names) + } + ); + + d_lw->registerFunction("check",(bool (SuffixMatchNode::*)(const DNSName&) const) &SuffixMatchNode::check); + d_lw->registerFunction("toString",(string (SuffixMatchNode::*)() const) &SuffixMatchNode::toString); + + d_pd.push_back({"policykinds", in_t { + {"NoAction", (int)DNSFilterEngine::PolicyKind::NoAction}, + {"Drop", (int)DNSFilterEngine::PolicyKind::Drop }, + {"NXDOMAIN", (int)DNSFilterEngine::PolicyKind::NXDOMAIN}, + {"NODATA", (int)DNSFilterEngine::PolicyKind::NODATA }, + {"Truncate", (int)DNSFilterEngine::PolicyKind::Truncate}, + {"Custom", (int)DNSFilterEngine::PolicyKind::Custom } + }}); + + d_pd.push_back({"policytypes", in_t { + {"None", (int)DNSFilterEngine::PolicyType::None }, + {"QName", (int)DNSFilterEngine::PolicyType::QName }, + {"ClientIP", (int)DNSFilterEngine::PolicyType::ClientIP }, + {"ResponseIP", (int)DNSFilterEngine::PolicyType::ResponseIP }, + {"NSDName", (int)DNSFilterEngine::PolicyType::NSDName }, + {"NSIP", (int)DNSFilterEngine::PolicyType::NSIP } + }}); + + for(const auto& n : QType::names) d_pd.push_back({n.first, n.second}); d_pd.push_back({"validationstates", in_t{ - {"Indeterminate", static_cast(vState::Indeterminate)}, - {"BogusNoValidDNSKEY", static_cast(vState::BogusNoValidDNSKEY)}, - {"BogusInvalidDenial", static_cast(vState::BogusInvalidDenial)}, - {"BogusUnableToGetDSs", static_cast(vState::BogusUnableToGetDSs)}, - {"BogusUnableToGetDNSKEYs", static_cast(vState::BogusUnableToGetDNSKEYs)}, - {"BogusSelfSignedDS", static_cast(vState::BogusSelfSignedDS)}, - {"BogusNoRRSIG", static_cast(vState::BogusNoRRSIG)}, - {"BogusNoValidRRSIG", static_cast(vState::BogusNoValidRRSIG)}, - {"BogusMissingNegativeIndication", static_cast(vState::BogusMissingNegativeIndication)}, - {"BogusSignatureNotYetValid", static_cast(vState::BogusSignatureNotYetValid)}, - {"BogusSignatureExpired", static_cast(vState::BogusSignatureExpired)}, - {"BogusUnsupportedDNSKEYAlgo", static_cast(vState::BogusUnsupportedDNSKEYAlgo)}, - {"BogusUnsupportedDSDigestType", static_cast(vState::BogusUnsupportedDSDigestType)}, - {"BogusNoZoneKeyBitSet", static_cast(vState::BogusNoZoneKeyBitSet)}, - {"BogusRevokedDNSKEY", static_cast(vState::BogusRevokedDNSKEY)}, - {"BogusInvalidDNSKEYProtocol", static_cast(vState::BogusInvalidDNSKEYProtocol)}, - {"Insecure", static_cast(vState::Insecure)}, - {"Secure", static_cast(vState::Secure)}, - /* in order not to break compatibility with older scripts: */ - {"Bogus", static_cast(255)}, - }}); + {"Indeterminate", static_cast(vState::Indeterminate) }, + {"BogusNoValidDNSKEY", static_cast(vState::BogusNoValidDNSKEY) }, + {"BogusInvalidDenial", static_cast(vState::BogusInvalidDenial) }, + {"BogusUnableToGetDSs", static_cast(vState::BogusUnableToGetDSs) }, + {"BogusUnableToGetDNSKEYs", static_cast(vState::BogusUnableToGetDNSKEYs) }, + {"BogusSelfSignedDS", static_cast(vState::BogusSelfSignedDS) }, + {"BogusNoRRSIG", static_cast(vState::BogusNoRRSIG) }, + {"BogusNoValidRRSIG", static_cast(vState::BogusNoValidRRSIG) }, + {"BogusMissingNegativeIndication", static_cast(vState::BogusMissingNegativeIndication) }, + {"BogusSignatureNotYetValid", static_cast(vState::BogusSignatureNotYetValid)}, + {"BogusSignatureExpired", static_cast(vState::BogusSignatureExpired)}, + {"BogusUnsupportedDNSKEYAlgo", static_cast(vState::BogusUnsupportedDNSKEYAlgo)}, + {"BogusUnsupportedDSDigestType", static_cast(vState::BogusUnsupportedDSDigestType)}, + {"BogusNoZoneKeyBitSet", static_cast(vState::BogusNoZoneKeyBitSet)}, + {"BogusRevokedDNSKEY", static_cast(vState::BogusRevokedDNSKEY)}, + {"BogusInvalidDNSKEYProtocol", static_cast(vState::BogusInvalidDNSKEYProtocol)}, + {"Insecure", static_cast(vState::Insecure) }, + {"Secure", static_cast(vState::Secure) }, + /* in order not to break compatibility with older scripts: */ + {"Bogus", static_cast(255) }, + }}); d_lw->writeFunction("isValidationStateBogus", [](vState state) { return vStateIsBogus(state); @@ -399,7 +404,7 @@ void RecursorLua4::postPrepareContext() d_lw->writeFunction("getMetric", [](const std::string& str, boost::optional prometheusName) { return DynMetric{getDynMetric(str, prometheusName ? *prometheusName : "")}; - }); + }); d_lw->registerFunction("inc", &DynMetric::inc); d_lw->registerFunction("incBy", &DynMetric::incBy); @@ -407,65 +412,63 @@ void RecursorLua4::postPrepareContext() d_lw->registerFunction("get", &DynMetric::get); d_lw->writeFunction("getStat", [](const std::string& str) { - uint64_t result = 0; - boost::optional value = getStatByName(str); - if (value) { - result = *value; - } - return result; - }); + uint64_t result = 0; + boost::optional value = getStatByName(str); + if (value) { + result = *value; + } + return result; + }); d_lw->writeFunction("getRecursorThreadId", []() { - return getRecursorThreadId(); - }); + return getRecursorThreadId(); + }); d_lw->writeFunction("sendCustomSNMPTrap", [](const std::string& str) { - if (g_snmpAgent) { - g_snmpAgent->sendCustomTrap(str); - } - }); + if (g_snmpAgent) { + g_snmpAgent->sendCustomTrap(str); + } + }); - d_lw->writeFunction("getregisteredname", [](const DNSName& dname) { - return getRegisteredName(dname); + d_lw->writeFunction("getregisteredname", [](const DNSName &dname) { + return getRegisteredName(dname); }); - d_lw->registerMember( - "qname", [](const PolicyEvent& event) -> const DNSName& { return event.qname; }, [](PolicyEvent& event, const DNSName& newName) { (void)newName; }); - d_lw->registerMember( - "qtype", [](const PolicyEvent& event) -> uint16_t { return event.qtype.getCode(); }, [](PolicyEvent& event, uint16_t newType) { (void)newType; }); - d_lw->registerMember( - "isTcp", [](const PolicyEvent& event) -> bool { return event.isTcp; }, [](PolicyEvent& event, bool newTcp) { (void)newTcp; }); - d_lw->registerMember( - "remote", [](const PolicyEvent& event) -> const ComboAddress& { return event.remote; }, [](PolicyEvent& event, const ComboAddress& newRemote) { (void)newRemote; }); + d_lw->registerMember("qname", [](const PolicyEvent& event) -> const DNSName& { return event.qname; }, [](PolicyEvent& event, const DNSName& newName) { (void) newName; }); + d_lw->registerMember("qtype", [](const PolicyEvent& event) -> uint16_t { return event.qtype.getCode(); }, [](PolicyEvent& event, uint16_t newType) { (void) newType; }); + d_lw->registerMember("isTcp", [](const PolicyEvent& event) -> bool { return event.isTcp; }, [](PolicyEvent& event, bool newTcp) { (void) newTcp; }); + d_lw->registerMember("remote", [](const PolicyEvent& event) -> const ComboAddress& { return event.remote; }, [](PolicyEvent& event, const ComboAddress& newRemote) { (void) newRemote; }); d_lw->registerMember("appliedPolicy", &PolicyEvent::appliedPolicy); - d_lw->registerFunction("addPolicyTag", [](PolicyEvent& event, const std::string& tag) { if (event.policyTags) { event.policyTags->insert(tag); } }); - d_lw->registerFunction>&)>("setPolicyTags", [](PolicyEvent& event, const std::vector>& tags) { - if (event.policyTags) { - event.policyTags->clear(); - event.policyTags->reserve(tags.size()); - for (const auto& tag : tags) { - event.policyTags->insert(tag.second); + d_lw->registerFunction("addPolicyTag", [](PolicyEvent& event, const std::string& tag) { if (event.policyTags) { event.policyTags->insert(tag); } }); + d_lw->registerFunction >&)>("setPolicyTags", [](PolicyEvent& event, const std::vector >& tags) { + if (event.policyTags) { + event.policyTags->clear(); + event.policyTags->reserve(tags.size()); + for (const auto& tag : tags) { + event.policyTags->insert(tag.second); + } } - } - }); - d_lw->registerFunction> (PolicyEvent::*)()>("getPolicyTags", [](const PolicyEvent& event) { - std::vector> ret; - if (event.policyTags) { - int count = 1; - ret.reserve(event.policyTags->size()); - for (const auto& tag : *event.policyTags) { - ret.push_back({count++, tag}); + }); + d_lw->registerFunction >(PolicyEvent::*)()>("getPolicyTags", [](const PolicyEvent& event) { + std::vector > ret; + if (event.policyTags) { + int count = 1; + ret.reserve(event.policyTags->size()); + for (const auto& tag : *event.policyTags) { + ret.push_back({count++, tag}); + } } - } - return ret; - }); - d_lw->registerFunction("discardPolicy", [](PolicyEvent& event, const std::string& policy) { + return ret; + }); + d_lw->registerFunction("discardPolicy", [](PolicyEvent& event, const std::string& policy) { if (event.discardedPolicies) { (*event.discardedPolicies)[policy] = true; } }); } +// clang-format on + void RecursorLua4::postLoad() { d_prerpz = d_lw->readVariable>("prerpz").get_value_or(0);