#ifndef LLVM_CLANG_INDEX_INDEXSYMBOL_H
#define LLVM_CLANG_INDEX_INDEXSYMBOL_H
#include "clang/Basic/LLVM.h"
#include "clang/Lex/MacroInfo.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/Support/DataTypes.h"
namespace clang {
class Decl;
class LangOptions;
namespace index {
enum class SymbolKind : uint8_t { … };
enum class SymbolLanguage : uint8_t { … };
enum class SymbolSubKind : uint8_t { … };
SymbolPropertySet;
enum class SymbolProperty : SymbolPropertySet { … };
static const unsigned SymbolPropertyBitNum = …;
enum class SymbolRole : uint32_t { … };
static const unsigned SymbolRoleBitNum = …;
SymbolRoleSet;
struct SymbolRelation { … };
struct SymbolInfo { … };
SymbolInfo getSymbolInfo(const Decl *D);
SymbolInfo getSymbolInfoForMacro(const MacroInfo &MI);
bool isFunctionLocalSymbol(const Decl *D);
void applyForEachSymbolRole(SymbolRoleSet Roles,
llvm::function_ref<void(SymbolRole)> Fn);
bool applyForEachSymbolRoleInterruptible(SymbolRoleSet Roles,
llvm::function_ref<bool(SymbolRole)> Fn);
void printSymbolRoles(SymbolRoleSet Roles, raw_ostream &OS);
bool printSymbolName(const Decl *D, const LangOptions &LO, raw_ostream &OS);
StringRef getSymbolKindString(SymbolKind K);
StringRef getSymbolSubKindString(SymbolSubKind K);
StringRef getSymbolLanguageString(SymbolLanguage K);
void applyForEachSymbolProperty(SymbolPropertySet Props,
llvm::function_ref<void(SymbolProperty)> Fn);
void printSymbolProperties(SymbolPropertySet Props, raw_ostream &OS);
}
}
#endif