10 #include "llvm/Support/Regex.h" 13 using llvm::StringRef;
16 namespace include_fixer {
21 MemSymbolIndex(std::vector<SymbolAndSignals> Symbols) {
22 for (
auto &Symbol : Symbols) {
23 auto Tokens = tokenize(Symbol.Symbol.getName());
24 this->Symbols.emplace_back(
30 std::vector<SymbolAndSignals> search(StringRef Query)
override {
31 auto Tokens = tokenize(Query);
32 llvm::Regex Pattern(
"^" + queryRegexp(
Tokens));
33 std::vector<SymbolAndSignals>
Results;
34 for (
const Entry &E : Symbols)
35 if (Pattern.match(E.first))
36 Results.push_back(E.second);
42 std::vector<Entry> Symbols;
68 std::vector<std::string>
Result;
71 TokenizeState State = EMPTY;
73 auto Flush = [&](
size_t End) {
75 Result.push_back(Text.substr(Start, End - Start).lower());
80 for (
size_t I = 0; I < Text.size(); ++I) {
81 CharType Type = classify(Text[I]);
84 else if (Type == LOWER)
98 else if (Type == UPPER)
109 else if (Type == DIGIT && State != NUMBER) {
121 for (
size_t I = 0; I < Tokens.size(); ++I) {
123 Result.append(
"[[:alnum:]]* ");
124 for (
size_t J = 0; J < Tokens[I].size(); ++J) {
126 Result.append(
"([[:alnum:]]* )?");
127 Result.push_back(Tokens[I][J]);
133 llvm::Expected<std::unique_ptr<FuzzySymbolIndex>>
135 auto Buffer = llvm::MemoryBuffer::getFile(FilePath);
137 return llvm::errorCodeToError(Buffer.getError());
138 return llvm::make_unique<MemSymbolIndex>(
std::vector< CodeCompletionResult > Results
static llvm::Expected< std::unique_ptr< FuzzySymbolIndex > > createFromYAML(llvm::StringRef File)
std::vector< SymbolAndSignals > ReadSymbolInfosFromYAML(llvm::StringRef Yaml)
Read SymbolInfos from a YAML document.
llvm::Optional< llvm::Expected< tooling::AtomicChanges > > Result
===– Representation.cpp - ClangDoc Representation --------—*- C++ -*-===//
static std::string queryRegexp(const std::vector< std::string > &Tokens)
static std::string join(ArrayRef< SpecialMemberFunctionsCheck::SpecialMemberFunctionKind > SMFS, llvm::StringRef AndOr)
static std::vector< std::string > tokenize(llvm::StringRef Text)