summaryrefslogtreecommitdiffstats
path: root/clang/tools/libclang/CXCursor.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-09-09 21:42:20 +0000
committerDouglas Gregor <dgregor@apple.com>2010-09-09 21:42:20 +0000
commitf3af3113822378576ec9501243df7469b9b3b23c (patch)
treecace468e163bf34862b2ff0bc534d566a6d5d984 /clang/tools/libclang/CXCursor.cpp
parent7ce46869586141f3087a6b6460dfe8773d02c17a (diff)
downloadbcm5719-llvm-f3af3113822378576ec9501243df7469b9b3b23c.tar.gz
bcm5719-llvm-f3af3113822378576ec9501243df7469b9b3b23c.zip
Teach libclang to walk the base and member initializers of a
constructor, in source order. Also introduces a new reference kind for class members, which is used here (for member initializers) and will also be used for designated initializers and offsetof. llvm-svn: 113545
Diffstat (limited to 'clang/tools/libclang/CXCursor.cpp')
-rw-r--r--clang/tools/libclang/CXCursor.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/clang/tools/libclang/CXCursor.cpp b/clang/tools/libclang/CXCursor.cpp
index 9b3ecbf0d93..53145a67194 100644
--- a/clang/tools/libclang/CXCursor.cpp
+++ b/clang/tools/libclang/CXCursor.cpp
@@ -291,6 +291,23 @@ cxcursor::getCursorNamespaceRef(CXCursor C) {
reinterpret_cast<uintptr_t>(C.data[1])));
}
+CXCursor cxcursor::MakeCursorMemberRef(FieldDecl *Field, SourceLocation Loc,
+ ASTUnit *TU) {
+
+ assert(Field && TU && "Invalid arguments!");
+ void *RawLoc = reinterpret_cast<void *>(Loc.getRawEncoding());
+ CXCursor C = { CXCursor_MemberRef, { Field, RawLoc, TU } };
+ return C;
+}
+
+std::pair<FieldDecl *, SourceLocation>
+cxcursor::getCursorMemberRef(CXCursor C) {
+ assert(C.kind == CXCursor_MemberRef);
+ return std::make_pair(static_cast<FieldDecl *>(C.data[0]),
+ SourceLocation::getFromRawEncoding(
+ reinterpret_cast<uintptr_t>(C.data[1])));
+}
+
CXCursor cxcursor::MakeCursorCXXBaseSpecifier(CXXBaseSpecifier *B, ASTUnit *TU){
CXCursor C = { CXCursor_CXXBaseSpecifier, { B, 0, TU } };
return C;
OpenPOWER on IntegriCloud