Lines Matching full:cxcursor
1 //===- CXCursor.cpp - Routines for manipulating CXCursors -----------------===//
12 // CXCursor.
17 #include "CXCursor.h"
32 using namespace cxcursor;
34 CXCursor cxcursor::MakeCXCursorInvalid(CXCursorKind K, CXTranslationUnit TU) {
36 CXCursor C = { K, 0, { 0, 0, TU } };
56 CXCursor cxcursor::MakeCXCursor(const Attr *A, const Decl *Parent,
59 CXCursor C = { GetCursorKind(A), 0, { Parent, A, TU } };
63 CXCursor cxcursor::MakeCXCursor(const Decl *D, CXTranslationUnit TU,
83 CXCursor C = { K, SelectorIdIndex,
88 CXCursor C = { K, 0, { D, (void*)(intptr_t) (FirstInDeclGroup ? 1 : 0), TU }};
92 CXCursor cxcursor::MakeCXCursor(const Stmt *S, const Decl *Parent,
501 CXCursor C = { K, 0, { Parent, S, TU } };
514 CXCursor C = { K, 0, { Parent, S, TU } };
518 CXCursor cxcursor::MakeCursorObjCSuperClassRef(ObjCInterfaceDecl *Super,
523 CXCursor C = { CXCursor_ObjCSuperClassRef, 0, { Super, RawLoc, TU } };
528 cxcursor::getCursorObjCSuperClassRef(CXCursor C) {
534 CXCursor cxcursor::MakeCursorObjCProtocolRef(const ObjCProtocolDecl *Proto,
539 CXCursor C = { CXCursor_ObjCProtocolRef, 0, { Proto, RawLoc, TU } };
544 cxcursor::getCursorObjCProtocolRef(CXCursor C) {
550 CXCursor cxcursor::MakeCursorObjCClassRef(const ObjCInterfaceDecl *Class,
558 CXCursor C = { CXCursor_ObjCClassRef, 0, { Class, RawLoc, TU } };
563 cxcursor::getCursorObjCClassRef(CXCursor C) {
569 CXCursor cxcursor::MakeCursorTypeRef(const TypeDecl *Type, SourceLocation Loc,
573 CXCursor C = { CXCursor_TypeRef, 0, { Type, RawLoc, TU } };
578 cxcursor::getCursorTypeRef(CXCursor C) {
584 CXCursor cxcursor::MakeCursorTemplateRef(const TemplateDecl *Template,
589 CXCursor
594 cxcursor::getCursorTemplateRef(CXCursor C) {
600 CXCursor cxcursor::MakeCursorNamespaceRef(const NamedDecl *NS,
607 CXCursor C = { CXCursor_NamespaceRef, 0, { NS, RawLoc, TU } };
612 cxcursor::getCursorNamespaceRef(CXCursor C) {
618 CXCursor cxcursor::MakeCursorVariableRef(const VarDecl *Var, SourceLocation Loc,
623 CXCursor C = { CXCursor_VariableRef, 0, { Var, RawLoc, TU } };
628 cxcursor::getCursorVariableRef(CXCursor C) {
634 CXCursor cxcursor::MakeCursorMemberRef(const FieldDecl *Field, SourceLocation Loc,
639 CXCursor C = { CXCursor_MemberRef, 0, { Field, RawLoc, TU } };
644 cxcursor::getCursorMemberRef(CXCursor C) {
650 CXCursor cxcursor::MakeCursorCXXBaseSpecifier(const CXXBaseSpecifier *B,
652 CXCursor C = { CXCursor_CXXBaseSpecifier, 0, { B, 0, TU } };
656 const CXXBaseSpecifier *cxcursor::getCursorCXXBaseSpecifier(CXCursor C) {
661 CXCursor cxcursor::MakePreprocessingDirectiveCursor(SourceRange Range,
663 CXCursor C = { CXCursor_PreprocessingDirective, 0,
671 SourceRange cxcursor::getCursorPreprocessingDirective(CXCursor C) {
679 CXCursor cxcursor::MakeMacroDefinitionCursor(const MacroDefinition *MI,
681 CXCursor C = { CXCursor_MacroDefinition, 0, { MI, 0, TU } };
685 const MacroDefinition *cxcursor::getCursorMacroDefinition(CXCursor C) {
690 CXCursor cxcursor::MakeMacroExpansionCursor(MacroExpansion *MI,
692 CXCursor C = { CXCursor_MacroExpansion, 0, { MI, 0, TU } };
696 CXCursor cxcursor::MakeMacroExpansionCursor(MacroDefinition *MI,
700 CXCursor C = { CXCursor_MacroExpansion, 0, { MI, Loc.getPtrEncoding(), TU } };
704 const IdentifierInfo *cxcursor::MacroExpansionCursor::getName() const {
709 const MacroDefinition *cxcursor::MacroExpansionCursor::getDefinition() const {
714 SourceRange cxcursor::MacroExpansionCursor::getSourceRange() const {
720 CXCursor cxcursor::MakeInclusionDirectiveCursor(InclusionDirective *ID,
722 CXCursor C = { CXCursor_InclusionDirective, 0, { ID, 0, TU } };
726 const InclusionDirective *cxcursor::getCursorInclusionDirective(CXCursor C) {
731 CXCursor cxcursor::MakeCursorLabelRef(LabelStmt *Label, SourceLocation Loc,
736 CXCursor C = { CXCursor_LabelRef, 0, { Label, RawLoc, TU } };
741 cxcursor::getCursorLabelRef(CXCursor C) {
747 CXCursor cxcursor::MakeCursorOverloadedDeclRef(const OverloadExpr *E,
752 CXCursor C = {
759 CXCursor cxcursor::MakeCursorOverloadedDeclRef(const Decl *D,
765 CXCursor C = {
772 CXCursor cxcursor::MakeCursorOverloadedDeclRef(TemplateName Name,
778 CXCursor C = {
785 std::pair<cxcursor::OverloadedDeclRefStorage, SourceLocation>
786 cxcursor::getCursorOverloadedDeclRef(CXCursor C) {
793 const Decl *cxcursor::getCursorDecl(CXCursor Cursor) {
797 const Expr *cxcursor::getCursorExpr(CXCursor Cursor) {
801 const Stmt *cxcursor::getCursorStmt(CXCursor Cursor) {
810 const Attr *cxcursor::getCursorAttr(CXCursor Cursor) {
814 const Decl *cxcursor::getCursorParentDecl(CXCursor Cursor) {
818 ASTContext &cxcursor::getCursorContext(CXCursor Cursor) {
822 ASTUnit *cxcursor::getCursorASTUnit(CXCursor Cursor) {
829 CXTranslationUnit cxcursor::getCursorTU(CXCursor Cursor) {
833 void cxcursor::getOverriddenCursors(CXCursor cursor,
834 SmallVectorImpl<CXCursor> &overridden) {
851 cxcursor::getSelectorIdentifierIndexAndLoc(CXCursor cursor) {
868 CXCursor cxcursor::getSelectorIdentifierCursor(int SelIdx, CXCursor cursor) {
869 CXCursor newCursor = cursor;
891 CXCursor cxcursor::getTypeRefCursor(CXCursor cursor) {
932 bool cxcursor::operator==(CXCursor X, CXCursor Y) {
939 bool cxcursor::isFirstInDeclGroup(CXCursor C) {
945 // libclang CXCursor APIs
950 int clang_Cursor_isNull(CXCursor cursor) {
954 CXTranslationUnit clang_Cursor_getTranslationUnit(CXCursor cursor) {
958 int clang_Cursor_getNumArguments(CXCursor C) {
960 const Decl *D = cxcursor::getCursorDecl(C);
968 const Expr *E = cxcursor::getCursorExpr(C);
977 CXCursor clang_Cursor_getArgument(CXCursor C, unsigned i) {
979 const Decl *D = cxcursor::getCursorDecl(C);
982 return cxcursor::MakeCXCursor(MD->param_begin()[i],
983 cxcursor::getCursorTU(C));
986 return cxcursor::MakeCXCursor(FD->param_begin()[i],
987 cxcursor::getCursorTU(C));
992 const Expr *E = cxcursor::getCursorExpr(C);
995 return cxcursor::MakeCXCursor(CE->getArg(i),
997 cxcursor::getCursorTU(C));
1011 typedef llvm::DenseMap<CXCursor, unsigned> CXCursorSet_Impl;
1020 template<> struct DenseMapInfo<CXCursor> {
1022 static inline CXCursor getEmptyKey() {
1025 static inline CXCursor getTombstoneKey() {
1028 static inline unsigned getHashValue(const CXCursor &cursor) {
1032 static inline bool isEqual(const CXCursor &x, const CXCursor &y) {
1049 unsigned clang_CXCursorSet_contains(CXCursorSet set, CXCursor cursor) {
1056 unsigned clang_CXCursorSet_insert(CXCursorSet set, CXCursor cursor) {
1071 CXCompletionString clang_getCursorCompletionString(CXCursor cursor) {
1106 typedef SmallVector<CXCursor, 2> CursorVec;
1119 void *cxcursor::createOverridenCXCursorsPool() {
1123 void cxcursor::disposeOverridenCXCursorsPool(void *pool) {
1128 void clang_getOverriddenCursors(CXCursor cursor,
1129 CXCursor **overridden,
1136 CXTranslationUnit TU = cxcursor::getCursorTU(cursor);
1164 CXCursor backRefCursor = MakeCXCursorInvalid(CXCursor_InvalidFile, TU);
1166 assert(cxcursor::getCursorTU(backRefCursor) == TU);
1170 cxcursor::getOverriddenCursors(cursor, *Vec);
1185 void clang_disposeOverriddenCursors(CXCursor *overridden) {
1205 int clang_Cursor_isDynamicCall(CXCursor C) {
1230 CXType clang_Cursor_getReceiverType(CXCursor C) {
1231 CXTranslationUnit TU = cxcursor::getCursorTU(C);