aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/hyperscan/src/util/report_manager.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/util/report_manager.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/util/report_manager.h')
-rw-r--r--contrib/libs/hyperscan/src/util/report_manager.h286
1 files changed, 143 insertions, 143 deletions
diff --git a/contrib/libs/hyperscan/src/util/report_manager.h b/contrib/libs/hyperscan/src/util/report_manager.h
index 08e7dd65d8..015dc9c855 100644
--- a/contrib/libs/hyperscan/src/util/report_manager.h
+++ b/contrib/libs/hyperscan/src/util/report_manager.h
@@ -1,86 +1,86 @@
-/*
+/*
* 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.
- */
-
-/** \file
- * \brief ReportManager: tracks Report structures, exhaustion and
- * dedupe keys.
- */
-
-#ifndef REPORT_MANAGER_H
-#define REPORT_MANAGER_H
-
-#include "ue2common.h"
-#include "util/compile_error.h"
+ *
+ * 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.
+ */
+
+/** \file
+ * \brief ReportManager: tracks Report structures, exhaustion and
+ * dedupe keys.
+ */
+
+#ifndef REPORT_MANAGER_H
+#define REPORT_MANAGER_H
+
+#include "ue2common.h"
+#include "util/compile_error.h"
#include "util/noncopyable.h"
-#include "util/report.h"
+#include "util/report.h"
#include "parser/logical_combination.h"
-
-#include <map>
-#include <set>
+
+#include <map>
+#include <set>
#include <unordered_map>
-#include <vector>
-
-namespace ue2 {
-
-struct Grey;
-class RoseBuild;
+#include <vector>
+
+namespace ue2 {
+
+struct Grey;
+class RoseBuild;
class ExpressionInfo;
-
-struct external_report_info {
- external_report_info(bool h, u32 fpi)
- : highlander(h), first_pattern_index(fpi) { }
- const bool highlander;
- const u32 first_pattern_index;
-};
-
-/** \brief Tracks Report structures, exhaustion and dedupe keys. */
+
+struct external_report_info {
+ external_report_info(bool h, u32 fpi)
+ : highlander(h), first_pattern_index(fpi) { }
+ const bool highlander;
+ const u32 first_pattern_index;
+};
+
+/** \brief Tracks Report structures, exhaustion and dedupe keys. */
class ReportManager : noncopyable {
-public:
- explicit ReportManager(const Grey &g);
-
- /** \brief Fetch the ID associated with the given Report. */
- u32 getInternalId(const Report &r);
-
- /** \brief Fetch the Report associated with \a id. */
- const Report &getReport(u32 id) const;
-
- /** \brief Total number of reports. */
- size_t numReports() const;
-
- /** \brief Return an unused exhaustion key (the next available one). */
- u32 getUnassociatedExhaustibleKey(void);
-
- /** \brief Total number of dedupe keys. */
- u32 numDkeys() const;
-
- /** \brief Total number of exhaustion keys. */
- u32 numEkeys() const;
-
+public:
+ explicit ReportManager(const Grey &g);
+
+ /** \brief Fetch the ID associated with the given Report. */
+ u32 getInternalId(const Report &r);
+
+ /** \brief Fetch the Report associated with \a id. */
+ const Report &getReport(u32 id) const;
+
+ /** \brief Total number of reports. */
+ size_t numReports() const;
+
+ /** \brief Return an unused exhaustion key (the next available one). */
+ u32 getUnassociatedExhaustibleKey(void);
+
+ /** \brief Total number of dedupe keys. */
+ u32 numDkeys() const;
+
+ /** \brief Total number of exhaustion keys. */
+ u32 numEkeys() const;
+
/** \brief Total number of logical keys. */
u32 numLogicalKeys() const;
@@ -90,36 +90,36 @@ public:
/** \brief Total number of combination keys. */
u32 numCkeys() const;
- /** \brief True if the pattern set can exhaust (i.e. all patterns are
- * highlander). */
- bool patternSetCanExhaust() const;
-
- void assignDkeys(const RoseBuild *rose);
-
- std::vector<ReportID> getDkeyToReportTable() const;
-
- /** \brief Return a const reference to the table of Report
- * structures. */
- const std::vector<Report> &reports() const { return reportIds; }
-
- /**
+ /** \brief True if the pattern set can exhaust (i.e. all patterns are
+ * highlander). */
+ bool patternSetCanExhaust() const;
+
+ void assignDkeys(const RoseBuild *rose);
+
+ std::vector<ReportID> getDkeyToReportTable() const;
+
+ /** \brief Return a const reference to the table of Report
+ * structures. */
+ const std::vector<Report> &reports() const { return reportIds; }
+
+ /**
* Get a simple internal report corresponding to the expression. An ekey
* will be setup if required.
- *
- * Note: this function may throw a CompileError if constraints on external
- * match id are violated (mixed highlander status for example).
- */
+ *
+ * Note: this function may throw a CompileError if constraints on external
+ * match id are violated (mixed highlander status for example).
+ */
Report getBasicInternalReport(const ExpressionInfo &expr, s32 adj = 0);
-
- /** \brief Register an external report and validate that we are not
- * violating highlander constraints (which will cause an exception to be
- * thrown). */
- void registerExtReport(ReportID id, const external_report_info &ext);
-
- /** \brief Fetch the ekey associated with the given expression index,
- * assigning one if necessary. */
- u32 getExhaustibleKey(u32 expressionIndex);
-
+
+ /** \brief Register an external report and validate that we are not
+ * violating highlander constraints (which will cause an exception to be
+ * thrown). */
+ void registerExtReport(ReportID id, const external_report_info &ext);
+
+ /** \brief Fetch the ekey associated with the given expression index,
+ * assigning one if necessary. */
+ u32 getExhaustibleKey(u32 expressionIndex);
+
/** \brief Get lkey's corresponding ckeys. */
const std::set<u32> &getRelateCKeys(u32 lkey);
@@ -133,10 +133,10 @@ public:
/** \brief Used in Rose for writing bytecode. */
const std::vector<CombInfo> &getCombInfoMap() const;
- /** \brief Fetch the dedupe key associated with the given report. Returns
- * ~0U if no dkey is needed. */
- u32 getDkey(const Report &r) const;
-
+ /** \brief Fetch the dedupe key associated with the given report. Returns
+ * ~0U if no dkey is needed. */
+ u32 getDkey(const Report &r) const;
+
/** \brief Register a Rose program offset with the given report. */
void setProgramOffset(ReportID id, u32 programOffset);
@@ -148,45 +148,45 @@ public:
/** \brief Parsed logical combination structure. */
ParsedLogical pl;
-private:
- /** \brief Grey box ref, for checking resource limits. */
- const Grey &grey;
-
- /** \brief Report structures, indexed by ID. */
- std::vector<Report> reportIds;
-
- /** \brief Mapping from Report to ID (inverse of \ref reportIds
+private:
+ /** \brief Grey box ref, for checking resource limits. */
+ const Grey &grey;
+
+ /** \brief Report structures, indexed by ID. */
+ std::vector<Report> reportIds;
+
+ /** \brief Mapping from Report to ID (inverse of \ref reportIds
* vector). */
std::unordered_map<Report, size_t> reportIdToInternalMap;
-
- /** \brief Mapping from ReportID to dedupe key. */
+
+ /** \brief Mapping from ReportID to dedupe key. */
std::unordered_map<ReportID, u32> reportIdToDedupeKey;
-
+
/** \brief Mapping from ReportID to Rose program offset in bytecode. */
std::unordered_map<ReportID, u32> reportIdToProgramOffset;
- /** \brief Mapping from external match ids to information about that
- * id. */
+ /** \brief Mapping from external match ids to information about that
+ * id. */
std::unordered_map<ReportID, external_report_info> externalIdMap;
-
- /** \brief Mapping from expression index to exhaustion key. */
- std::map<s64a, u32> toExhaustibleKeyMap;
-
- /** \brief Unallocated expression index, used for \ref
- * getUnassociatedExhaustibleKey.
- *
- * TODO: work out why this is signed.
- */
- s64a freeEIndex;
-
- /** \brief True if database is globally exhaustible (all patterns must be
- * highlander for this to be the case). */
- bool global_exhaust;
-};
-
-std::set<u32> reportsToEkeys(const std::set<ReportID> &reports,
- const ReportManager &rm);
-
-} // namespace ue2
-
-#endif
+
+ /** \brief Mapping from expression index to exhaustion key. */
+ std::map<s64a, u32> toExhaustibleKeyMap;
+
+ /** \brief Unallocated expression index, used for \ref
+ * getUnassociatedExhaustibleKey.
+ *
+ * TODO: work out why this is signed.
+ */
+ s64a freeEIndex;
+
+ /** \brief True if database is globally exhaustible (all patterns must be
+ * highlander for this to be the case). */
+ bool global_exhaust;
+};
+
+std::set<u32> reportsToEkeys(const std::set<ReportID> &reports,
+ const ReportManager &rm);
+
+} // namespace ue2
+
+#endif