aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/hyperscan/src/grey.h
diff options
context:
space:
mode:
authorbnagaev <bnagaev@yandex-team.ru>2022-02-10 16:47:04 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:47:04 +0300
commitc74559fb88da8adac0d9186cfa55a6b13c47695f (patch)
treeb83306b6e37edeea782e9eed673d89286c4fef35 /contrib/libs/hyperscan/src/grey.h
parentd6449ba66291ff0c0d352c82e6eb3efb4c8a7e8d (diff)
downloadydb-c74559fb88da8adac0d9186cfa55a6b13c47695f.tar.gz
Restoring authorship annotation for <bnagaev@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib/libs/hyperscan/src/grey.h')
-rw-r--r--contrib/libs/hyperscan/src/grey.h380
1 files changed, 190 insertions, 190 deletions
diff --git a/contrib/libs/hyperscan/src/grey.h b/contrib/libs/hyperscan/src/grey.h
index 352d9892e4..ed2f845a4b 100644
--- a/contrib/libs/hyperscan/src/grey.h
+++ b/contrib/libs/hyperscan/src/grey.h
@@ -1,73 +1,73 @@
-/*
+/*
* Copyright (c) 2015-2018, Intel Corporation
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Intel Corporation nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef GREY_H
-#define GREY_H
-
-#include <vector>
-#include <string>
-
-#include "ue2common.h"
-
-namespace ue2 {
-
-struct Grey {
- Grey(void);
-
- bool optimiseComponentTree;
-
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Intel Corporation nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef GREY_H
+#define GREY_H
+
+#include <vector>
+#include <string>
+
+#include "ue2common.h"
+
+namespace ue2 {
+
+struct Grey {
+ Grey(void);
+
+ bool optimiseComponentTree;
+
bool calcComponents;
- bool performGraphSimplification;
- bool prefilterReductions;
- bool removeEdgeRedundancy;
-
- bool allowGough;
- bool allowHaigLit;
- bool allowLitHaig;
- bool allowLbr;
- bool allowMcClellan;
+ bool performGraphSimplification;
+ bool prefilterReductions;
+ bool removeEdgeRedundancy;
+
+ bool allowGough;
+ bool allowHaigLit;
+ bool allowLitHaig;
+ bool allowLbr;
+ bool allowMcClellan;
bool allowSheng;
bool allowMcSheng;
- bool allowPuff;
+ bool allowPuff;
bool allowLiteral;
bool allowViolet;
- bool allowExtendedNFA;
- bool allowLimExNFA;
- bool allowAnchoredAcyclic;
- bool allowSmallLiteralSet;
- bool allowCastle;
- bool allowDecoratedLiteral;
+ bool allowExtendedNFA;
+ bool allowLimExNFA;
+ bool allowAnchoredAcyclic;
+ bool allowSmallLiteralSet;
+ bool allowCastle;
+ bool allowDecoratedLiteral;
bool allowApproximateMatching;
-
- bool allowNoodle;
- bool fdrAllowTeddy;
+
+ bool allowNoodle;
+ bool fdrAllowTeddy;
bool fdrAllowFlood;
-
+
u32 violetAvoidSuffixes; /* 0=never, 1=sometimes, 2=always */
bool violetAvoidWeakInfixes;
bool violetDoubleCut;
@@ -76,144 +76,144 @@ struct Grey {
u32 violetDoubleCutLiteralLen;
u32 violetEarlyCleanLiteralLen;
- bool puffImproveHead;
- bool castleExclusive; // enable castle mutual exclusion analysis
-
- bool mergeSEP;
- bool mergeRose;
- bool mergeSuffixes;
- bool mergeOutfixes;
- bool onlyOneOutfix; // if > 1 outfix, fail compile
-
- bool allowShermanStates;
- bool allowMcClellan8;
+ bool puffImproveHead;
+ bool castleExclusive; // enable castle mutual exclusion analysis
+
+ bool mergeSEP;
+ bool mergeRose;
+ bool mergeSuffixes;
+ bool mergeOutfixes;
+ bool onlyOneOutfix; // if > 1 outfix, fail compile
+
+ bool allowShermanStates;
+ bool allowMcClellan8;
bool allowWideStates; // enable wide state for McClellan8
- bool highlanderPruneDFA;
- bool minimizeDFA;
-
- bool accelerateDFA;
- bool accelerateNFA;
- bool reverseAccelerate;
-
- bool squashNFA;
- bool compressNFAState;
- bool numberNFAStatesWrong;
- bool highlanderSquash;
- bool allowZombies;
- bool floodAsPuffette;
-
- u32 nfaForceSize;
-
- u32 maxHistoryAvailable;
- u32 minHistoryAvailable;
- u32 maxAnchoredRegion;
- u32 minRoseLiteralLength;
- u32 minRoseNetflowLiteralLength;
- u32 maxRoseNetflowEdges;
+ bool highlanderPruneDFA;
+ bool minimizeDFA;
+
+ bool accelerateDFA;
+ bool accelerateNFA;
+ bool reverseAccelerate;
+
+ bool squashNFA;
+ bool compressNFAState;
+ bool numberNFAStatesWrong;
+ bool highlanderSquash;
+ bool allowZombies;
+ bool floodAsPuffette;
+
+ u32 nfaForceSize;
+
+ u32 maxHistoryAvailable;
+ u32 minHistoryAvailable;
+ u32 maxAnchoredRegion;
+ u32 minRoseLiteralLength;
+ u32 minRoseNetflowLiteralLength;
+ u32 maxRoseNetflowEdges;
u32 maxEditDistance;
-
- u32 minExtBoundedRepeatSize; /* to be considered for ng_repeat */
-
- bool goughCopyPropagate;
- bool goughRegisterAllocate;
-
- bool shortcutLiterals;
-
- bool roseGraphReduction;
- bool roseRoleAliasing;
- bool roseMasks;
- bool roseConvertFloodProneSuffixes;
- bool roseMergeRosesDuringAliasing;
- bool roseMultiTopRoses;
- bool roseHamsterMasks;
- bool roseLookaroundMasks;
- u32 roseMcClellanPrefix; /* 0 = off, 1 = only if large nfa, 2 = always */
- u32 roseMcClellanSuffix; /* 0 = off, 1 = only if very large nfa, 2 =
- * always */
- u32 roseMcClellanOutfix; /* 0 = off, 1 = sometimes, 2 = almost always */
- bool roseTransformDelay;
-
- bool earlyMcClellanPrefix;
- bool earlyMcClellanInfix;
- bool earlyMcClellanSuffix;
-
- bool allowCountingMiracles;
-
- bool allowSomChain;
- u32 somMaxRevNfaLength;
-
- bool hamsterAccelForward;
- bool hamsterAccelReverse; // currently not implemented
-
- u32 miracleHistoryBonus; /* cheap hack to make miracles better, TODO
- * something dignified */
-
- bool equivalenceEnable;
-
- // SmallWrite engine
- bool allowSmallWrite;
+
+ u32 minExtBoundedRepeatSize; /* to be considered for ng_repeat */
+
+ bool goughCopyPropagate;
+ bool goughRegisterAllocate;
+
+ bool shortcutLiterals;
+
+ bool roseGraphReduction;
+ bool roseRoleAliasing;
+ bool roseMasks;
+ bool roseConvertFloodProneSuffixes;
+ bool roseMergeRosesDuringAliasing;
+ bool roseMultiTopRoses;
+ bool roseHamsterMasks;
+ bool roseLookaroundMasks;
+ u32 roseMcClellanPrefix; /* 0 = off, 1 = only if large nfa, 2 = always */
+ u32 roseMcClellanSuffix; /* 0 = off, 1 = only if very large nfa, 2 =
+ * always */
+ u32 roseMcClellanOutfix; /* 0 = off, 1 = sometimes, 2 = almost always */
+ bool roseTransformDelay;
+
+ bool earlyMcClellanPrefix;
+ bool earlyMcClellanInfix;
+ bool earlyMcClellanSuffix;
+
+ bool allowCountingMiracles;
+
+ bool allowSomChain;
+ u32 somMaxRevNfaLength;
+
+ bool hamsterAccelForward;
+ bool hamsterAccelReverse; // currently not implemented
+
+ u32 miracleHistoryBonus; /* cheap hack to make miracles better, TODO
+ * something dignified */
+
+ bool equivalenceEnable;
+
+ // SmallWrite engine
+ bool allowSmallWrite;
bool allowSmallWriteSheng;
- u32 smallWriteLargestBuffer; // largest buffer that can be small write
- u32 smallWriteLargestBufferBad;// largest buffer that can be small write
- u32 limitSmallWriteOutfixSize; //!< max total size of outfix DFAs
+ u32 smallWriteLargestBuffer; // largest buffer that can be small write
+ u32 smallWriteLargestBufferBad;// largest buffer that can be small write
+ u32 limitSmallWriteOutfixSize; //!< max total size of outfix DFAs
u32 smallWriteMaxPatterns; // only try small writes if fewer patterns
u32 smallWriteMaxLiterals; // only try small writes if fewer literals
u32 smallWriteMergeBatchSize; // number of DFAs to merge in a batch
-
+
// Tamarama engine
bool allowTamarama;
u32 tamaChunkSize; //!< max chunk size for exclusivity analysis in Tamarama
- enum DumpFlags {
- DUMP_NONE = 0,
- DUMP_BASICS = 1 << 0, // Dump basic textual data
- DUMP_PARSE = 1 << 1, // Dump component tree to .txt
- DUMP_INT_GRAPH = 1 << 2, // Dump non-implementation graphs
- DUMP_IMPL = 1 << 3 // Dump implementation graphs
- };
-
- u32 dumpFlags;
- std::string dumpPath;
-
- /* Resource limits. These are somewhat arbitrary, but are intended to bound
- * the input to many of our internal structures. Exceeding one of these
- * limits will cause an error to be returned to the user.
- *
- * NOTE: Raising these limitations make cause smoke to come out of parts of
- * the runtime. */
-
- u32 limitPatternCount; //!< max number of patterns
- u32 limitPatternLength; //!< max number of characters in a regex
- u32 limitGraphVertices; //!< max number of states in built NFA graph
- u32 limitGraphEdges; //!< max number of edges in build NFA graph
- u32 limitReportCount; //!< max number of ReportIDs allocated internally
-
- // HWLM literal matcher limits.
- u32 limitLiteralCount; //!< max number of literals in an HWLM table
- u32 limitLiteralLength; //!< max number of characters in a literal
- u32 limitLiteralMatcherChars; //!< max characters in an HWLM literal matcher
- u32 limitLiteralMatcherSize; //!< max size of an HWLM matcher (in bytes)
-
- // Rose limits.
- u32 limitRoseRoleCount; //!< max number of Rose roles
- u32 limitRoseEngineCount; //!< max prefix/infix/suffix/outfix engines
- u32 limitRoseAnchoredSize; //!< max total size of anchored DFAs (bytes)
-
- // Engine (DFA/NFA/etc) limits.
- u32 limitEngineSize; //!< max size of an engine (in bytes)
- u32 limitDFASize; //!< max size of a DFA (in bytes)
- u32 limitNFASize; //!< max size of an NFA (in bytes)
- u32 limitLBRSize; //!< max size of an LBR engine (in bytes)
+ enum DumpFlags {
+ DUMP_NONE = 0,
+ DUMP_BASICS = 1 << 0, // Dump basic textual data
+ DUMP_PARSE = 1 << 1, // Dump component tree to .txt
+ DUMP_INT_GRAPH = 1 << 2, // Dump non-implementation graphs
+ DUMP_IMPL = 1 << 3 // Dump implementation graphs
+ };
+
+ u32 dumpFlags;
+ std::string dumpPath;
+
+ /* Resource limits. These are somewhat arbitrary, but are intended to bound
+ * the input to many of our internal structures. Exceeding one of these
+ * limits will cause an error to be returned to the user.
+ *
+ * NOTE: Raising these limitations make cause smoke to come out of parts of
+ * the runtime. */
+
+ u32 limitPatternCount; //!< max number of patterns
+ u32 limitPatternLength; //!< max number of characters in a regex
+ u32 limitGraphVertices; //!< max number of states in built NFA graph
+ u32 limitGraphEdges; //!< max number of edges in build NFA graph
+ u32 limitReportCount; //!< max number of ReportIDs allocated internally
+
+ // HWLM literal matcher limits.
+ u32 limitLiteralCount; //!< max number of literals in an HWLM table
+ u32 limitLiteralLength; //!< max number of characters in a literal
+ u32 limitLiteralMatcherChars; //!< max characters in an HWLM literal matcher
+ u32 limitLiteralMatcherSize; //!< max size of an HWLM matcher (in bytes)
+
+ // Rose limits.
+ u32 limitRoseRoleCount; //!< max number of Rose roles
+ u32 limitRoseEngineCount; //!< max prefix/infix/suffix/outfix engines
+ u32 limitRoseAnchoredSize; //!< max total size of anchored DFAs (bytes)
+
+ // Engine (DFA/NFA/etc) limits.
+ u32 limitEngineSize; //!< max size of an engine (in bytes)
+ u32 limitDFASize; //!< max size of a DFA (in bytes)
+ u32 limitNFASize; //!< max size of an NFA (in bytes)
+ u32 limitLBRSize; //!< max size of an LBR engine (in bytes)
// Approximate matching limits.
u32 limitApproxMatchingVertices; //!< max number of vertices per graph
-};
-
-#ifndef RELEASE_BUILD
-#include <string>
-void applyGreyOverrides(Grey *g, const std::string &overrides);
-#endif
-
-} // namespace ue2
-
-#endif
+};
+
+#ifndef RELEASE_BUILD
+#include <string>
+void applyGreyOverrides(Grey *g, const std::string &overrides);
+#endif
+
+} // namespace ue2
+
+#endif