mirror of
https://github.com/VectorCamp/vectorscan.git
synced 2025-10-09 07:42:21 +03:00
tamarama: add container engine for exclusive nfas
Add the new Tamarama engine that acts as a container for infix/suffix engines that can be proven to run exclusively of one another. This reduces stream state for pattern sets with many exclusive engines.
This commit is contained in:
@@ -42,6 +42,7 @@
|
||||
#include "limex.h"
|
||||
#include "mcclellan.h"
|
||||
#include "mpv.h"
|
||||
#include "tamarama.h"
|
||||
|
||||
#define DISPATCH_CASE(dc_ltype, dc_ftype, dc_subtype, dc_func_call) \
|
||||
case dc_ltype##_NFA_##dc_subtype: \
|
||||
@@ -68,6 +69,7 @@
|
||||
DISPATCH_CASE(LBR, Lbr, Shuf, dbnt_func); \
|
||||
DISPATCH_CASE(LBR, Lbr, Truf, dbnt_func); \
|
||||
DISPATCH_CASE(CASTLE, Castle, 0, dbnt_func); \
|
||||
DISPATCH_CASE(TAMARAMA, Tamarama, 0, dbnt_func); \
|
||||
default: \
|
||||
assert(0); \
|
||||
}
|
||||
@@ -105,6 +107,14 @@ char nfaQueueExec2_i(const struct NFA *nfa, struct mq *q, s64a end) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
char nfaQueueExec_raw(const struct NFA *nfa, struct mq *q, s64a end) {
|
||||
return nfaQueueExec_i(nfa, q, end);
|
||||
}
|
||||
|
||||
char nfaQueueExec2_raw(const struct NFA *nfa, struct mq *q, s64a end) {
|
||||
return nfaQueueExec2_i(nfa, q, end);
|
||||
}
|
||||
|
||||
static really_inline
|
||||
char nfaQueueExecRose_i(const struct NFA *nfa, struct mq *q, ReportID report) {
|
||||
DISPATCH_BY_NFA_TYPE(_QR(nfa, q, report));
|
||||
|
Reference in New Issue
Block a user