auto &ekeys = e.second;
assert(!ekeys.empty());
ekeys.push_back(INVALID_EKEY); /* terminator */
- out[qi] = bc.engine_blob.add(ekeys.begin(), ekeys.end());
+ out[qi] = bc.engine_blob.add_range(ekeys);
}
return out;
}
proto.somRevCount = verify_u32(nfas.size());
- proto.somRevOffsetOffset =
- bc.engine_blob.add(begin(nfa_offsets), end(nfa_offsets));
+ proto.somRevOffsetOffset = bc.engine_blob.add_range(nfa_offsets);
}
static
reach += REACH_BITVECTOR_LEN;
}
- proto.lookaroundTableOffset =
- bc.engine_blob.add(begin(look_table), end(look_table));
- proto.lookaroundReachOffset =
- bc.engine_blob.add(begin(reach_table), end(reach_table));
+ proto.lookaroundTableOffset = bc.engine_blob.add_range(look_table);
+ proto.lookaroundReachOffset = bc.engine_blob.add_range(reach_table);
}
static
void writeDkeyInfo(const ReportManager &rm, build_context &bc,
RoseEngine &proto) {
const auto inv_dkeys = rm.getDkeyToReportTable();
- proto.invDkeyOffset = bc.engine_blob.add(begin(inv_dkeys), end(inv_dkeys));
+ proto.invDkeyOffset = bc.engine_blob.add_range(inv_dkeys);
proto.dkeyCount = rm.numDkeys();
proto.dkeyLogSize = fatbit_size(proto.dkeyCount);
}
static
void writeLeftInfo(build_context &bc, RoseEngine &proto,
const vector<LeftNfaInfo> &leftInfoTable) {
- proto.leftOffset =
- bc.engine_blob.add(begin(leftInfoTable), end(leftInfoTable));
+ proto.leftOffset = bc.engine_blob.add_range(leftInfoTable);
proto.activeLeftIterOffset = writeActiveLeftIter(bc, leftInfoTable);
proto.roseCount = verify_u32(leftInfoTable.size());
proto.activeLeftCount = verify_u32(leftInfoTable.size());
}
}
- proto.nfaInfoOffset = bc.engine_blob.add(begin(infos), end(infos));
+ proto.nfaInfoOffset = bc.engine_blob.add_range(infos);
}
static
if (hasUsefulStops(lbi)) {
assert(lbi.stopAlphabet.size() == N_CHARS);
- left.stopTable = bc.engine_blob.add(lbi.stopAlphabet.begin(),
- lbi.stopAlphabet.end());
+ left.stopTable = bc.engine_blob.add_range(lbi.stopAlphabet);
}
assert(lbi.countingMiracleOffset || !lbi.countingMiracleCount);
}
DEBUG_PRINTF("%zu delay programs\n", programs.size());
- return {bc.engine_blob.add(begin(programs), end(programs)),
- verify_u32(programs.size())};
+ return {bc.engine_blob.add_range(programs), verify_u32(programs.size())};
}
/**
}
DEBUG_PRINTF("%zu anchored programs\n", programs.size());
- return {bc.engine_blob.add(begin(programs), end(programs)),
- verify_u32(programs.size())};
+ return {bc.engine_blob.add_range(programs), verify_u32(programs.size())};
}
/**
programs.back(), program.size());
}
- u32 offset = bc.engine_blob.add(begin(programs), end(programs));
+ u32 offset = bc.engine_blob.add_range(programs);
u32 count = verify_u32(programs.size());
return {offset, count};
}
/*
- * Copyright (c) 2016, Intel Corporation
+ * Copyright (c) 2016-2017, Intel Corporation
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
return offset;
}
+ template<typename Range>
+ u32 add_range(const Range &range) {
+ return add(begin(range), end(range));
+ }
+
u32 add_iterator(const std::vector<mmbit_sparse_iter> &iter) {
auto cache_it = cached_iters.find(iter);
if (cache_it != cached_iters.end()) {