aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/yaml-cpp/src/regeximpl.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/yaml-cpp/src/regeximpl.h
parentd6449ba66291ff0c0d352c82e6eb3efb4c8a7e8d (diff)
downloadydb-c74559fb88da8adac0d9186cfa55a6b13c47695f.tar.gz
Restoring authorship annotation for <bnagaev@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib/libs/yaml-cpp/src/regeximpl.h')
-rw-r--r--contrib/libs/yaml-cpp/src/regeximpl.h372
1 files changed, 186 insertions, 186 deletions
diff --git a/contrib/libs/yaml-cpp/src/regeximpl.h b/contrib/libs/yaml-cpp/src/regeximpl.h
index 4a529e7a0d..709124f008 100644
--- a/contrib/libs/yaml-cpp/src/regeximpl.h
+++ b/contrib/libs/yaml-cpp/src/regeximpl.h
@@ -1,186 +1,186 @@
-#ifndef REGEXIMPL_H_62B23520_7C8E_11DE_8A39_0800200C9A66
-#define REGEXIMPL_H_62B23520_7C8E_11DE_8A39_0800200C9A66
-
-#if defined(_MSC_VER) || \
- (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \
- (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4
-#pragma once
-#endif
-
-#include "stream.h"
-#include "stringsource.h"
-#include "streamcharsource.h"
-
-namespace YAML {
-// query matches
-inline bool RegEx::Matches(char ch) const {
- std::string str;
- str += ch;
- return Matches(str);
-}
-
-inline bool RegEx::Matches(const std::string& str) const {
- return Match(str) >= 0;
-}
-
-inline bool RegEx::Matches(const Stream& in) const { return Match(in) >= 0; }
-
-template <typename Source>
-inline bool RegEx::Matches(const Source& source) const {
- return Match(source) >= 0;
-}
-
-// Match
-// . Matches the given string against this regular expression.
-// . Returns the number of characters matched.
-// . Returns -1 if no characters were matched (the reason for
-// not returning zero is that we may have an empty regex
-// which is ALWAYS successful at matching zero characters).
-// . REMEMBER that we only match from the start of the buffer!
-inline int RegEx::Match(const std::string& str) const {
- StringCharSource source(str.c_str(), str.size());
- return Match(source);
-}
-
-inline int RegEx::Match(const Stream& in) const {
- StreamCharSource source(in);
- return Match(source);
-}
-
-template <typename Source>
-inline bool RegEx::IsValidSource(const Source& source) const {
- return source;
-}
-
-template <>
-inline bool RegEx::IsValidSource<StringCharSource>(
- const StringCharSource& source) const {
- switch (m_op) {
- case REGEX_MATCH:
- case REGEX_RANGE:
- return source;
- default:
- return true;
- }
-}
-
-template <typename Source>
-inline int RegEx::Match(const Source& source) const {
- return IsValidSource(source) ? MatchUnchecked(source) : -1;
-}
-
-template <typename Source>
-inline int RegEx::MatchUnchecked(const Source& source) const {
- switch (m_op) {
- case REGEX_EMPTY:
- return MatchOpEmpty(source);
- case REGEX_MATCH:
- return MatchOpMatch(source);
- case REGEX_RANGE:
- return MatchOpRange(source);
- case REGEX_OR:
- return MatchOpOr(source);
- case REGEX_AND:
- return MatchOpAnd(source);
- case REGEX_NOT:
- return MatchOpNot(source);
- case REGEX_SEQ:
- return MatchOpSeq(source);
- }
-
- return -1;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// Operators
-// Note: the convention MatchOp*<Source> is that we can assume
-// IsSourceValid(source).
-// So we do all our checks *before* we call these functions
-
-// EmptyOperator
-template <typename Source>
-inline int RegEx::MatchOpEmpty(const Source& source) const {
- return source[0] == Stream::eof() ? 0 : -1;
-}
-
-template <>
-inline int RegEx::MatchOpEmpty<StringCharSource>(
- const StringCharSource& source) const {
- return !source
- ? 0
- : -1; // the empty regex only is successful on the empty string
-}
-
-// MatchOperator
-template <typename Source>
-inline int RegEx::MatchOpMatch(const Source& source) const {
- if (source[0] != m_a)
- return -1;
- return 1;
-}
-
-// RangeOperator
-template <typename Source>
-inline int RegEx::MatchOpRange(const Source& source) const {
- if (m_a > source[0] || m_z < source[0])
- return -1;
- return 1;
-}
-
-// OrOperator
-template <typename Source>
-inline int RegEx::MatchOpOr(const Source& source) const {
- for (std::size_t i = 0; i < m_params.size(); i++) {
- int n = m_params[i].MatchUnchecked(source);
- if (n >= 0)
- return n;
- }
- return -1;
-}
-
-// AndOperator
-// Note: 'AND' is a little funny, since we may be required to match things
-// of different lengths. If we find a match, we return the length of
-// the FIRST entry on the list.
-template <typename Source>
-inline int RegEx::MatchOpAnd(const Source& source) const {
- int first = -1;
- for (std::size_t i = 0; i < m_params.size(); i++) {
- int n = m_params[i].MatchUnchecked(source);
- if (n == -1)
- return -1;
- if (i == 0)
- first = n;
- }
- return first;
-}
-
-// NotOperator
-template <typename Source>
-inline int RegEx::MatchOpNot(const Source& source) const {
- if (m_params.empty())
- return -1;
- if (m_params[0].MatchUnchecked(source) >= 0)
- return -1;
- return 1;
-}
-
-// SeqOperator
-template <typename Source>
-inline int RegEx::MatchOpSeq(const Source& source) const {
- int offset = 0;
- for (std::size_t i = 0; i < m_params.size(); i++) {
- int n = m_params[i].Match(source + offset); // note Match, not
- // MatchUnchecked because we
- // need to check validity after
- // the offset
- if (n == -1)
- return -1;
- offset += n;
- }
-
- return offset;
-}
-}
-
-#endif // REGEXIMPL_H_62B23520_7C8E_11DE_8A39_0800200C9A66
+#ifndef REGEXIMPL_H_62B23520_7C8E_11DE_8A39_0800200C9A66
+#define REGEXIMPL_H_62B23520_7C8E_11DE_8A39_0800200C9A66
+
+#if defined(_MSC_VER) || \
+ (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \
+ (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4
+#pragma once
+#endif
+
+#include "stream.h"
+#include "stringsource.h"
+#include "streamcharsource.h"
+
+namespace YAML {
+// query matches
+inline bool RegEx::Matches(char ch) const {
+ std::string str;
+ str += ch;
+ return Matches(str);
+}
+
+inline bool RegEx::Matches(const std::string& str) const {
+ return Match(str) >= 0;
+}
+
+inline bool RegEx::Matches(const Stream& in) const { return Match(in) >= 0; }
+
+template <typename Source>
+inline bool RegEx::Matches(const Source& source) const {
+ return Match(source) >= 0;
+}
+
+// Match
+// . Matches the given string against this regular expression.
+// . Returns the number of characters matched.
+// . Returns -1 if no characters were matched (the reason for
+// not returning zero is that we may have an empty regex
+// which is ALWAYS successful at matching zero characters).
+// . REMEMBER that we only match from the start of the buffer!
+inline int RegEx::Match(const std::string& str) const {
+ StringCharSource source(str.c_str(), str.size());
+ return Match(source);
+}
+
+inline int RegEx::Match(const Stream& in) const {
+ StreamCharSource source(in);
+ return Match(source);
+}
+
+template <typename Source>
+inline bool RegEx::IsValidSource(const Source& source) const {
+ return source;
+}
+
+template <>
+inline bool RegEx::IsValidSource<StringCharSource>(
+ const StringCharSource& source) const {
+ switch (m_op) {
+ case REGEX_MATCH:
+ case REGEX_RANGE:
+ return source;
+ default:
+ return true;
+ }
+}
+
+template <typename Source>
+inline int RegEx::Match(const Source& source) const {
+ return IsValidSource(source) ? MatchUnchecked(source) : -1;
+}
+
+template <typename Source>
+inline int RegEx::MatchUnchecked(const Source& source) const {
+ switch (m_op) {
+ case REGEX_EMPTY:
+ return MatchOpEmpty(source);
+ case REGEX_MATCH:
+ return MatchOpMatch(source);
+ case REGEX_RANGE:
+ return MatchOpRange(source);
+ case REGEX_OR:
+ return MatchOpOr(source);
+ case REGEX_AND:
+ return MatchOpAnd(source);
+ case REGEX_NOT:
+ return MatchOpNot(source);
+ case REGEX_SEQ:
+ return MatchOpSeq(source);
+ }
+
+ return -1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// Operators
+// Note: the convention MatchOp*<Source> is that we can assume
+// IsSourceValid(source).
+// So we do all our checks *before* we call these functions
+
+// EmptyOperator
+template <typename Source>
+inline int RegEx::MatchOpEmpty(const Source& source) const {
+ return source[0] == Stream::eof() ? 0 : -1;
+}
+
+template <>
+inline int RegEx::MatchOpEmpty<StringCharSource>(
+ const StringCharSource& source) const {
+ return !source
+ ? 0
+ : -1; // the empty regex only is successful on the empty string
+}
+
+// MatchOperator
+template <typename Source>
+inline int RegEx::MatchOpMatch(const Source& source) const {
+ if (source[0] != m_a)
+ return -1;
+ return 1;
+}
+
+// RangeOperator
+template <typename Source>
+inline int RegEx::MatchOpRange(const Source& source) const {
+ if (m_a > source[0] || m_z < source[0])
+ return -1;
+ return 1;
+}
+
+// OrOperator
+template <typename Source>
+inline int RegEx::MatchOpOr(const Source& source) const {
+ for (std::size_t i = 0; i < m_params.size(); i++) {
+ int n = m_params[i].MatchUnchecked(source);
+ if (n >= 0)
+ return n;
+ }
+ return -1;
+}
+
+// AndOperator
+// Note: 'AND' is a little funny, since we may be required to match things
+// of different lengths. If we find a match, we return the length of
+// the FIRST entry on the list.
+template <typename Source>
+inline int RegEx::MatchOpAnd(const Source& source) const {
+ int first = -1;
+ for (std::size_t i = 0; i < m_params.size(); i++) {
+ int n = m_params[i].MatchUnchecked(source);
+ if (n == -1)
+ return -1;
+ if (i == 0)
+ first = n;
+ }
+ return first;
+}
+
+// NotOperator
+template <typename Source>
+inline int RegEx::MatchOpNot(const Source& source) const {
+ if (m_params.empty())
+ return -1;
+ if (m_params[0].MatchUnchecked(source) >= 0)
+ return -1;
+ return 1;
+}
+
+// SeqOperator
+template <typename Source>
+inline int RegEx::MatchOpSeq(const Source& source) const {
+ int offset = 0;
+ for (std::size_t i = 0; i < m_params.size(); i++) {
+ int n = m_params[i].Match(source + offset); // note Match, not
+ // MatchUnchecked because we
+ // need to check validity after
+ // the offset
+ if (n == -1)
+ return -1;
+ offset += n;
+ }
+
+ return offset;
+}
+}
+
+#endif // REGEXIMPL_H_62B23520_7C8E_11DE_8A39_0800200C9A66