]> git.ipfire.org Git - thirdparty/vectorscan.git/commitdiff
dfa_build_strat: remove dead pure virtual impl
authorJustin Viiret <justin.viiret@intel.com>
Thu, 4 Aug 2016 00:36:09 +0000 (10:36 +1000)
committerMatthew Barr <matthew.barr@intel.com>
Wed, 10 Aug 2016 05:11:15 +0000 (15:11 +1000)
src/nfa/dfa_build_strat.cpp

index 1d31feb1a0fb51069ad12efaddd0daa5cf242589..d4d418aa7e0a007da012936bd3c4fdd67aaef536 100755 (executable)
 
 #include "dfa_build_strat.h"
 
-#include "accel.h"
-#include "accelcompile.h"
-#include "grey.h"
-#include "mcclellan_internal.h"
-#include "mcclellancompile_util.h"
-#include "nfa_internal.h"
-#include "shufticompile.h"
-#include "trufflecompile.h"
-#include "ue2common.h"
-#include "util/alloc.h"
-#include "util/bitutils.h"
-#include "util/charreach.h"
-#include "util/compare.h"
-#include "util/compile_context.h"
-#include "util/container.h"
-#include "util/make_unique.h"
-#include "util/order_check.h"
-#include "util/report_manager.h"
-#include "util/ue2_containers.h"
-#include "util/unaligned.h"
-#include "util/verify_types.h"
-
-#include <vector>
-
-using namespace std;
-
 namespace ue2 {
 
 // prevent weak vtables for raw_report_info, dfa_build_strat and raw_dfa
-raw_report_info::~raw_report_info() {
-}
-
-dfa_build_strat::~dfa_build_strat() {
-}
-
-raw_dfa::~raw_dfa() {
-}
-
-namespace {
-
-struct raw_report_list {
-    flat_set<ReportID> reports;
-
-    raw_report_list(const flat_set<ReportID> &reports_in,
-                    const ReportManager &rm, bool do_remap) {
-        if (do_remap) {
-            for (auto &id : reports_in) {
-                reports.insert(rm.getProgramOffset(id));
-            }
-        } else {
-            reports = reports_in;
-        }
-    }
-
-    bool operator<(const raw_report_list &b) const {
-        return reports < b.reports;
-    }
-};
-
-struct raw_report_info_impl : public raw_report_info {
-    vector<raw_report_list> rl;
-    u32 getReportListSize() const override;
-    size_t size() const override;
-    void fillReportLists(NFA *n, size_t base_offset,
-                         std::vector<u32> &ro /* out */) const override;
-};
-}
-
-unique_ptr<raw_report_info>
-dfa_build_strat::gatherReports(vector<u32> &reports, vector<u32> &reports_eod,
-                               u8 *isSingleReport, ReportID *arbReport) const {
-    auto &rdfa = get_raw();
-    DEBUG_PRINTF("gathering reports\n");
-
-    const bool remap_reports = has_managed_reports(rdfa.kind);
-
-    auto ri = ue2::make_unique<raw_report_info_impl>();
-    map<raw_report_list, u32> rev;
-
-    for (const dstate &s : rdfa.states) {
-        if (s.reports.empty()) {
-            reports.push_back(MO_INVALID_IDX);
-            continue;
-        }
-
-        raw_report_list rrl(s.reports, rm, remap_reports);
-        DEBUG_PRINTF("non empty r\n");
-        if (rev.find(rrl) != rev.end()) {
-            reports.push_back(rev[rrl]);
-        } else {
-            DEBUG_PRINTF("adding to rl %zu\n", ri->size());
-            rev[rrl] = ri->size();
-            reports.push_back(ri->size());
-            ri->rl.push_back(rrl);
-        }
-    }
-
-    for (const dstate &s : rdfa.states) {
-        if (s.reports_eod.empty()) {
-            reports_eod.push_back(MO_INVALID_IDX);
-            continue;
-        }
-
-        DEBUG_PRINTF("non empty r eod\n");
-        raw_report_list rrl(s.reports_eod, rm, remap_reports);
-        if (rev.find(rrl) != rev.end()) {
-            reports_eod.push_back(rev[rrl]);
-            continue;
-        }
-
-        DEBUG_PRINTF("adding to rl eod %zu\n", s.reports_eod.size());
-        rev[rrl] = ri->size();
-        reports_eod.push_back(ri->size());
-        ri->rl.push_back(rrl);
-    }
-
-    assert(!ri->rl.empty()); /* all components should be able to generate
-                                reports */
-    if (!ri->rl.empty()) {
-        *arbReport = *ri->rl.begin()->reports.begin();
-    } else {
-        *arbReport = 0;
-    }
-
-    /* if we have only a single report id generated from all accepts (not eod)
-     * we can take some short cuts */
-    set<ReportID> reps;
-
-    for (u32 rl_index : reports) {
-        if (rl_index == MO_INVALID_IDX) {
-            continue;
-        }
-        assert(rl_index < ri->size());
-        insert(&reps, ri->rl[rl_index].reports);
-    }
-
-    if (reps.size() == 1) {
-        *isSingleReport = 1;
-        *arbReport = *reps.begin();
-        DEBUG_PRINTF("single -- %u\n", *arbReport);
-    } else {
-        *isSingleReport = 0;
-    }
-
-    return move(ri);
-}
-
-u32 raw_report_info_impl::getReportListSize() const {
-    u32 rv = 0;
-
-    for (const auto &reps : rl) {
-        rv += sizeof(report_list);
-        rv += sizeof(ReportID) * reps.reports.size();
-    }
-
-    return rv;
-}
-
-size_t raw_report_info_impl::size() const {
-    return rl.size();
-}
-
-void raw_report_info_impl::fillReportLists(NFA *n, size_t base_offset,
-                                           vector<u32> &ro) const {
-    for (const auto &reps : rl) {
-        ro.push_back(base_offset);
-
-        report_list *p = (report_list *)((char *)n + base_offset);
+raw_report_info::~raw_report_info() {}
 
-        u32 i = 0;
-        for (const ReportID report : reps.reports) {
-            p->report[i++] = report;
-        }
-        p->count = verify_u32(reps.reports.size());
+dfa_build_strat::~dfa_build_strat() {}
 
-        base_offset += sizeof(report_list);
-        base_offset += sizeof(ReportID) * reps.reports.size();
-    }
-}
+raw_dfa::~raw_dfa() {}
 
 } // namespace ue2