Index.h revision 4ade6d6eae934f796ca43c81a5aa185e456dde9b
1d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek/*===-- clang-c/Index.h - Indexing Public C Interface -------------*- C -*-===*\ 2d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek|* *| 3d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek|* The LLVM Compiler Infrastructure *| 4d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek|* *| 5d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek|* This file is distributed under the University of Illinois Open Source *| 6d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek|* License. See LICENSE.TXT for details. *| 7d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek|* *| 8d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek|*===----------------------------------------------------------------------===*| 9d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek|* *| 10d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek|* This header provides a public inferface to a Clang library for extracting *| 11d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek|* high-level symbol information from source files without exposing the full *| 12d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek|* Clang C++ API. *| 13d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek|* *| 14d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek\*===----------------------------------------------------------------------===*/ 15d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek 16d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek#ifndef CLANG_C_INDEX_H 17d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek#define CLANG_C_INDEX_H 18d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek 19d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek#ifdef __cplusplus 20d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenekextern "C" { 21d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek#endif 22d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek 23600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff/* 24600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff Clang indeX abstractions. The backing store for the following API's will be 25b7cd17cfd2970636af0fe9b491bab1acf0009c2fSteve Naroff clangs AST file (currently based on PCH). AST files are created as follows: 26600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff 27b7cd17cfd2970636af0fe9b491bab1acf0009c2fSteve Naroff "clang -emit-ast <sourcefile.langsuffix> -o <sourcefile.ast>". 28600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff 29600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff Naming Conventions: To avoid namespace pollution, data types are prefixed 30600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff with "CX" and functions are prefixed with "clang_". 31600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff*/ 3250398199fb10e196a8d92fbf7a062dbe42ed88fdSteve Narofftypedef void *CXIndex; /* An indexing instance. */ 33600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff 3450398199fb10e196a8d92fbf7a062dbe42ed88fdSteve Narofftypedef void *CXTranslationUnit; /* A translation unit instance. */ 35600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff 3689922f86f4e7da383af2a62ef04ad8b93b941220Steve Narofftypedef void *CXDecl; /* A specific declaration within a translation unit. */ 37fb5704295c6137685a7b90b92cd6b958028740c8Steve Narofftypedef void *CXStmt; /* A specific statement within a function/method */ 38600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff 39c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff/* Cursors represent declarations, definitions, and references. */ 4089922f86f4e7da383af2a62ef04ad8b93b941220Steve Naroffenum CXCursorKind { 4189922f86f4e7da383af2a62ef04ad8b93b941220Steve Naroff /* Declarations */ 4289922f86f4e7da383af2a62ef04ad8b93b941220Steve Naroff CXCursor_FirstDecl = 1, 43c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff CXCursor_TypedefDecl = 2, 44c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff CXCursor_StructDecl = 3, 45c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff CXCursor_UnionDecl = 4, 46c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff CXCursor_ClassDecl = 5, 47c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff CXCursor_EnumDecl = 6, 48c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff CXCursor_FieldDecl = 7, 49c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff CXCursor_EnumConstantDecl = 8, 50c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff CXCursor_FunctionDecl = 9, 51c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff CXCursor_VarDecl = 10, 52c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff CXCursor_ParmDecl = 11, 53c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff CXCursor_ObjCInterfaceDecl = 12, 54c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff CXCursor_ObjCCategoryDecl = 13, 55c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff CXCursor_ObjCProtocolDecl = 14, 56c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff CXCursor_ObjCPropertyDecl = 15, 57c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff CXCursor_ObjCIvarDecl = 16, 58c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff CXCursor_ObjCInstanceMethodDecl = 17, 59c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff CXCursor_ObjCClassMethodDecl = 18, 60c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff CXCursor_LastDecl = 18, 6189922f86f4e7da383af2a62ef04ad8b93b941220Steve Naroff 62c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff /* Definitions */ 63c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff CXCursor_FirstDefn = 32, 64c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff CXCursor_FunctionDefn = 32, 65c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff CXCursor_ObjCClassDefn = 33, 66c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff CXCursor_ObjCCategoryDefn = 34, 67c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff CXCursor_ObjCInstanceMethodDefn = 35, 68c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff CXCursor_ObjCClassMethodDefn = 36, 69c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff CXCursor_LastDefn = 36, 70c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroff 7189922f86f4e7da383af2a62ef04ad8b93b941220Steve Naroff /* References */ 72fb5704295c6137685a7b90b92cd6b958028740c8Steve Naroff CXCursor_FirstRef = 40, /* Decl references */ 73f334b4e3eda5a39f041fe13f805dbb53535daa2fSteve Naroff CXCursor_ObjCSuperClassRef = 40, 74f334b4e3eda5a39f041fe13f805dbb53535daa2fSteve Naroff CXCursor_ObjCProtocolRef = 41, 75fb5704295c6137685a7b90b92cd6b958028740c8Steve Naroff CXCursor_ObjCClassRef = 42, 76fb5704295c6137685a7b90b92cd6b958028740c8Steve Naroff 77fb5704295c6137685a7b90b92cd6b958028740c8Steve Naroff CXCursor_ObjCSelectorRef = 43, /* Expression references */ 78fb5704295c6137685a7b90b92cd6b958028740c8Steve Naroff CXCursor_ObjCIvarRef = 44, 79fb5704295c6137685a7b90b92cd6b958028740c8Steve Naroff CXCursor_VarRef = 45, 80fb5704295c6137685a7b90b92cd6b958028740c8Steve Naroff CXCursor_FunctionRef = 46, 81fb5704295c6137685a7b90b92cd6b958028740c8Steve Naroff CXCursor_EnumConstantRef = 47, 82fb5704295c6137685a7b90b92cd6b958028740c8Steve Naroff CXCursor_MemberRef = 48, 83fb5704295c6137685a7b90b92cd6b958028740c8Steve Naroff CXCursor_LastRef = 48, 8477128ddd3077fc045751a55bb3226802b15d5510Steve Naroff 8577128ddd3077fc045751a55bb3226802b15d5510Steve Naroff /* Error conditions */ 8677128ddd3077fc045751a55bb3226802b15d5510Steve Naroff CXCursor_FirstInvalid = 70, 8777128ddd3077fc045751a55bb3226802b15d5510Steve Naroff CXCursor_InvalidFile = 70, 8877128ddd3077fc045751a55bb3226802b15d5510Steve Naroff CXCursor_NoDeclFound = 71, 8977128ddd3077fc045751a55bb3226802b15d5510Steve Naroff CXCursor_NotImplemented = 72, 9077128ddd3077fc045751a55bb3226802b15d5510Steve Naroff CXCursor_LastInvalid = 72 91600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff}; 92600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff 9389922f86f4e7da383af2a62ef04ad8b93b941220Steve Naroff/* A cursor into the CXTranslationUnit. */ 94fb5704295c6137685a7b90b92cd6b958028740c8Steve Naroff 9589922f86f4e7da383af2a62ef04ad8b93b941220Steve Narofftypedef struct { 9689922f86f4e7da383af2a62ef04ad8b93b941220Steve Naroff enum CXCursorKind kind; 9789922f86f4e7da383af2a62ef04ad8b93b941220Steve Naroff CXDecl decl; 98fb5704295c6137685a7b90b92cd6b958028740c8Steve Naroff CXStmt stmt; /* expression reference */ 9989922f86f4e7da383af2a62ef04ad8b93b941220Steve Naroff} CXCursor; 100600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff 10150398199fb10e196a8d92fbf7a062dbe42ed88fdSteve Naroff/* A unique token for looking up "visible" CXDecls from a CXTranslationUnit. */ 102600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Narofftypedef void *CXEntity; 103600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff 104600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve NaroffCXIndex clang_createIndex(); 105fb5704295c6137685a7b90b92cd6b958028740c8Steve Naroffvoid clang_disposeIndex(CXIndex); 106600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff 107af08ddc8f1c53fed8d8d0ad82aa2a0bb7d654bd1Steve Naroffconst char *clang_getTranslationUnitSpelling(CXTranslationUnit CTUnit); 108af08ddc8f1c53fed8d8d0ad82aa2a0bb7d654bd1Steve Naroff 10950398199fb10e196a8d92fbf7a062dbe42ed88fdSteve NaroffCXTranslationUnit clang_createTranslationUnit( 110600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff CXIndex, const char *ast_filename 111600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff); 112fb5704295c6137685a7b90b92cd6b958028740c8Steve Naroffvoid clang_disposeTranslationUnit(CXTranslationUnit); 113600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff 114600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff/* 115600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff Usage: clang_loadTranslationUnit(). Will load the toplevel declarations 116600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff within a translation unit, issuing a 'callback' for each one. 117600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff 118600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff void printObjCInterfaceNames(CXTranslationUnit X, CXCursor C) { 119600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff if (clang_getCursorKind(C) == Cursor_Declaration) { 120600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff CXDecl D = clang_getCursorDecl(C); 121600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff if (clang_getDeclKind(D) == CXDecl_ObjC_interface) 122600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff printf("@interface %s in file %s on line %d column %d\n", 123600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff clang_getDeclSpelling(D), clang_getCursorSource(C), 124600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff clang_getCursorLine(C), clang_getCursorColumn(C)); 125600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff } 126600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff } 127600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff static void usage { 128600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff clang_loadTranslationUnit(CXTranslationUnit, printObjCInterfaceNames); 129600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff } 130600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff*/ 1312b8ee6c2994f738e5162ff46b638974870f51662Steve Narofftypedef void *CXClientData; 1322b8ee6c2994f738e5162ff46b638974870f51662Steve Narofftypedef void (*CXTranslationUnitIterator)(CXTranslationUnit, CXCursor, 1332b8ee6c2994f738e5162ff46b638974870f51662Steve Naroff CXClientData); 1342b8ee6c2994f738e5162ff46b638974870f51662Steve Naroffvoid clang_loadTranslationUnit(CXTranslationUnit, CXTranslationUnitIterator, 1352b8ee6c2994f738e5162ff46b638974870f51662Steve Naroff CXClientData); 136600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff 137600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff/* 138600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff Usage: clang_loadDeclaration(). Will load the declaration, issuing a 139600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff 'callback' for each declaration/reference within the respective declaration. 140600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff 141600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff For interface declarations, this will index the super class, protocols, 142600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff ivars, methods, etc. For structure declarations, this will index the fields. 143600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff For functions, this will index the parameters (and body, for function 144600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff definitions), local declarations/references. 145600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff 146600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff void getInterfaceDetails(CXDecl X, CXCursor C) { 147600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff switch (clang_getCursorKind(C)) { 148600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff case Cursor_ObjC_ClassRef: 149600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff CXDecl SuperClass = clang_getCursorDecl(C); 150600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff case Cursor_ObjC_ProtocolRef: 151600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff CXDecl AdoptsProtocol = clang_getCursorDecl(C); 152600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff case Cursor_Declaration: 153600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff CXDecl AnIvarOrMethod = clang_getCursorDecl(C); 154600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff } 155600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff } 156600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff static void usage() { 157600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff if (clang_getDeclKind(D) == CXDecl_ObjC_interface) { 158600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff clang_loadDeclaration(D, getInterfaceDetails); 159600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff } 160600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff } 161600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff*/ 162c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Narofftypedef void (*CXDeclIterator)(CXDecl, CXCursor, CXClientData); 16389922f86f4e7da383af2a62ef04ad8b93b941220Steve Naroff 164c857ea4d22e1e6dd9ede1f0e84d48b157c6924fdSteve Naroffvoid clang_loadDeclaration(CXDecl, CXDeclIterator, CXClientData); 165600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff 16650398199fb10e196a8d92fbf7a062dbe42ed88fdSteve Naroff/* 16750398199fb10e196a8d92fbf7a062dbe42ed88fdSteve Naroff * CXEntity Operations. 16850398199fb10e196a8d92fbf7a062dbe42ed88fdSteve Naroff */ 169600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroffconst char *clang_getDeclarationName(CXEntity); 170600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroffconst char *clang_getURI(CXEntity); 171600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve NaroffCXEntity clang_getEntity(const char *URI); 17250398199fb10e196a8d92fbf7a062dbe42ed88fdSteve Naroff/* 17350398199fb10e196a8d92fbf7a062dbe42ed88fdSteve Naroff * CXDecl Operations. 17450398199fb10e196a8d92fbf7a062dbe42ed88fdSteve Naroff */ 175600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve NaroffCXCursor clang_getCursorFromDecl(CXDecl); 176600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve NaroffCXEntity clang_getEntityFromDecl(CXDecl); 177600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroffconst char *clang_getDeclSpelling(CXDecl); 17850398199fb10e196a8d92fbf7a062dbe42ed88fdSteve Naroff/* 17950398199fb10e196a8d92fbf7a062dbe42ed88fdSteve Naroff * CXCursor Operations. 18050398199fb10e196a8d92fbf7a062dbe42ed88fdSteve Naroff */ 181600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve NaroffCXCursor clang_getCursor(CXTranslationUnit, const char *source_name, 182600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff unsigned line, unsigned column); 183600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff 18450398199fb10e196a8d92fbf7a062dbe42ed88fdSteve Naroffenum CXCursorKind clang_getCursorKind(CXCursor); 18589922f86f4e7da383af2a62ef04ad8b93b941220Steve Naroffunsigned clang_isDeclaration(enum CXCursorKind); 186f334b4e3eda5a39f041fe13f805dbb53535daa2fSteve Naroffunsigned clang_isReference(enum CXCursorKind); 187f334b4e3eda5a39f041fe13f805dbb53535daa2fSteve Naroffunsigned clang_isDefinition(enum CXCursorKind); 18877128ddd3077fc045751a55bb3226802b15d5510Steve Naroffunsigned clang_isInvalid(enum CXCursorKind); 189600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff 190600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroffunsigned clang_getCursorLine(CXCursor); 191600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroffunsigned clang_getCursorColumn(CXCursor); 192600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroffconst char *clang_getCursorSource(CXCursor); 193f334b4e3eda5a39f041fe13f805dbb53535daa2fSteve Naroffconst char *clang_getCursorSpelling(CXCursor); 194f334b4e3eda5a39f041fe13f805dbb53535daa2fSteve Naroff 1954ade6d6eae934f796ca43c81a5aa185e456dde9bSteve Naroff/* for debug/testing */ 1964ade6d6eae934f796ca43c81a5aa185e456dde9bSteve Naroffconst char *clang_getCursorKindSpelling(enum CXCursorKind Kind); 1974ade6d6eae934f796ca43c81a5aa185e456dde9bSteve Naroffvoid clang_getDefinitionSpellingAndExtent(CXCursor, 1984ade6d6eae934f796ca43c81a5aa185e456dde9bSteve Naroff const char **startBuf, 1994ade6d6eae934f796ca43c81a5aa185e456dde9bSteve Naroff const char **endBuf, 2004ade6d6eae934f796ca43c81a5aa185e456dde9bSteve Naroff unsigned *startLine, 2014ade6d6eae934f796ca43c81a5aa185e456dde9bSteve Naroff unsigned *startColumn, 2024ade6d6eae934f796ca43c81a5aa185e456dde9bSteve Naroff unsigned *endLine, 2034ade6d6eae934f796ca43c81a5aa185e456dde9bSteve Naroff unsigned *endColumn); 204600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve Naroff 20550398199fb10e196a8d92fbf7a062dbe42ed88fdSteve Naroff/* 206459789b8d2e3235e2f3342c393b7a78bd73c1347Chris Lattner * If CXCursorKind == Cursor_Reference, then this will return the referenced 207459789b8d2e3235e2f3342c393b7a78bd73c1347Chris Lattner * declaration. 20850398199fb10e196a8d92fbf7a062dbe42ed88fdSteve Naroff * If CXCursorKind == Cursor_Declaration, then this will return the declaration. 20950398199fb10e196a8d92fbf7a062dbe42ed88fdSteve Naroff */ 210600866cc7d6d9ec2e27d4b6d6ec461f6463b5ab6Steve NaroffCXDecl clang_getCursorDecl(CXCursor); 211d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek 212d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek#ifdef __cplusplus 213d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek} 214d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek#endif 215d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek#endif 216d2fa56687f8bd5ac6ebf9d9468d0efd714986a54Ted Kremenek 217