#pragma once #include #include "Shared.h" #include "Feature/SemanticTokens.h" #include "Feature/FoldingRange.h" #include "Feature/DocumentLink.h" #include "Feature/DocumentSymbol.h" #include "llvm/ADT/DenseMap.h" #include "clang/Basic/SourceLocation.h" namespace clice::index { class FeatureIndex { public: FeatureIndex(char* base, std::size_t size) : base(base), size(size) {} /// The path of source file. llvm::StringRef path(); /// The content of source file. llvm::StringRef content(); std::vector semanticTokens() const; std::vector foldingRanges() const; std::vector documentLinks() const; std::vector documentSymbols() const; static Shared> build(ASTInfo& AST); public: char* base; std::size_t size; }; } // namespace clice::index