#include "re2/prefilter.h"
#include <stddef.h>
#include <string>
#include <utility>
#include <vector>
#include "absl/log/absl_check.h"
#include "absl/log/absl_log.h"
#include "absl/strings/str_format.h"
#include "re2/re2.h"
#include "re2/regexp.h"
#include "re2/unicode_casefold.h"
#include "re2/walker-inl.h"
#include "util/utf.h"
namespace re2 {
static const bool ExtraDebug = …;
Prefilter::Prefilter(Op op) { … }
Prefilter::~Prefilter() { … }
Prefilter* Prefilter::Simplify() { … }
Prefilter* Prefilter::AndOr(Op op, Prefilter* a, Prefilter* b) { … }
Prefilter* Prefilter::And(Prefilter* a, Prefilter* b) { … }
Prefilter* Prefilter::Or(Prefilter* a, Prefilter* b) { … }
void Prefilter::SimplifyStringSet(SSet* ss) { … }
Prefilter* Prefilter::OrStrings(SSet* ss) { … }
static Rune ToLowerRune(Rune r) { … }
static Rune ToLowerRuneLatin1(Rune r) { … }
Prefilter* Prefilter::FromString(const std::string& str) { … }
class Prefilter::Info { … };
Prefilter::Info::Info()
: … { … }
Prefilter::Info::~Info() { … }
Prefilter* Prefilter::Info::TakeMatch() { … }
std::string Prefilter::Info::ToString() { … }
void Prefilter::CrossProduct(const SSet& a, const SSet& b, SSet* dst) { … }
Prefilter::Info* Prefilter::Info::Concat(Info* a, Info* b) { … }
Prefilter::Info* Prefilter::Info::And(Info* a, Info* b) { … }
Prefilter::Info* Prefilter::Info::Alt(Info* a, Info* b) { … }
Prefilter::Info* Prefilter::Info::Quest(Info *a) { … }
Prefilter::Info* Prefilter::Info::Star(Info *a) { … }
Prefilter::Info* Prefilter::Info::Plus(Info *a) { … }
static std::string RuneToString(Rune r) { … }
static std::string RuneToStringLatin1(Rune r) { … }
Prefilter::Info* Prefilter::Info::Literal(Rune r) { … }
Prefilter::Info* Prefilter::Info::LiteralLatin1(Rune r) { … }
Prefilter::Info* Prefilter::Info::AnyCharOrAnyByte() { … }
Prefilter::Info* Prefilter::Info::NoMatch() { … }
Prefilter::Info* Prefilter::Info::AnyMatch() { … }
Prefilter::Info* Prefilter::Info::EmptyString() { … }
CCIter;
Prefilter::Info* Prefilter::Info::CClass(CharClass *cc,
bool latin1) { … }
class Prefilter::Info::Walker : public Regexp::Walker<Prefilter::Info*> { … };
Prefilter::Info* Prefilter::BuildInfo(Regexp* re) { … }
Prefilter::Info* Prefilter::Info::Walker::ShortVisit(
Regexp* re, Prefilter::Info* parent_arg) { … }
Prefilter::Info* Prefilter::Info::Walker::PostVisit(
Regexp* re, Prefilter::Info* parent_arg,
Prefilter::Info* pre_arg, Prefilter::Info** child_args,
int nchild_args) { … }
Prefilter* Prefilter::FromRegexp(Regexp* re) { … }
std::string Prefilter::DebugString() const { … }
Prefilter* Prefilter::FromRE2(const RE2* re2) { … }
}