rose: only write out report programs if in use

These programs are only used by output-exposed engines.
This commit is contained in:
Justin Viiret
2016-07-14 16:17:06 +10:00
committed by Matthew Barr
parent 4ce268af47
commit 7f49958824
4 changed files with 70 additions and 12 deletions

View File

@@ -74,6 +74,8 @@ public:
void add(const NGWrapper &w) override;
void add(const ue2_literal &literal, ReportID r) override;
set<ReportID> all_reports() const override;
bool determiniseLiterals();
const ReportManager &rm;
@@ -413,6 +415,20 @@ SmallWriteBuildImpl::build(u32 roseQuality) {
return smwr;
}
set<ReportID> SmallWriteBuildImpl::all_reports() const {
set<ReportID> reports;
if (poisoned) {
return reports;
}
if (rdfa) {
insert(&reports, ::ue2::all_reports(*rdfa));
}
for (const auto &cand : cand_literals) {
reports.insert(cand.second);
}
return reports;
}
size_t smwrSize(const SmallWriteEngine *smwr) {
assert(smwr);
return smwr->size;

View File

@@ -38,6 +38,8 @@
#include "ue2common.h"
#include "util/alloc.h"
#include <set>
#include <boost/core/noncopyable.hpp>
struct SmallWriteEngine;
@@ -61,6 +63,8 @@ public:
virtual void add(const NGWrapper &w) = 0;
virtual void add(const ue2_literal &literal, ReportID r) = 0;
virtual std::set<ReportID> all_reports() const = 0;
};
// Construct a usable SmallWrite builder.