diff options
author | Francois Pichet <pichet2000@gmail.com> | 2011-07-25 22:00:44 +0000 |
---|---|---|
committer | Francois Pichet <pichet2000@gmail.com> | 2011-07-25 22:00:44 +0000 |
commit | ece689f3360265b8ad05f39ae59d82f263d898df (patch) | |
tree | 3f5cd6fa5f845e53c14bd379d55fb420c070c517 | |
parent | 6099cf16e57d4fd2a8131797186ff70647f38b0d (diff) | |
download | bcm5719-llvm-ece689f3360265b8ad05f39ae59d82f263d898df.tar.gz bcm5719-llvm-ece689f3360265b8ad05f39ae59d82f263d898df.zip |
Fix the MSVC build. 2 problems:
- buildPieces was return a C++ object from inside an extern "C". (MSVC didn't like that)
- clang_getCursorReferenceNameRange was missing a CINDEX_LINKAGE causing a link error.
llvm-svn: 135983
-rw-r--r-- | clang/include/clang-c/Index.h | 3 | ||||
-rw-r--r-- | clang/tools/libclang/CIndex.cpp | 81 |
2 files changed, 43 insertions, 41 deletions
diff --git a/clang/include/clang-c/Index.h b/clang/include/clang-c/Index.h index 8d35419a432..d4fa9a2453e 100644 --- a/clang/include/clang-c/Index.h +++ b/clang/include/clang-c/Index.h @@ -2404,7 +2404,8 @@ CINDEX_LINKAGE CXCursor clang_getSpecializedCursorTemplate(CXCursor C); * \returns The piece of the name pointed to by the given cursor. If there is no * name, or if the PieceIndex is out-of-range, a null-cursor will be returned. */ -CXSourceRange clang_getCursorReferenceNameRange(CXCursor C, unsigned NameFlags, +CINDEX_LINKAGE CXSourceRange clang_getCursorReferenceNameRange(CXCursor C, + unsigned NameFlags, unsigned PieceIndex); enum CXNameRefFlags { diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp index 8104828ecce..017fd0bcfad 100644 --- a/clang/tools/libclang/CIndex.cpp +++ b/clang/tools/libclang/CIndex.cpp @@ -2324,6 +2324,47 @@ bool CursorVisitor::Visit(Stmt *S) { return result; } +namespace { +typedef llvm::SmallVector<SourceRange, 4> RefNamePieces; +RefNamePieces buildPieces(unsigned NameFlags, bool IsMemberRefExpr, + const DeclarationNameInfo &NI, + const SourceRange &QLoc, + const ExplicitTemplateArgumentList *TemplateArgs = 0){ + const bool WantQualifier = NameFlags & CXNameRange_WantQualifier; + const bool WantTemplateArgs = NameFlags & CXNameRange_WantTemplateArgs; + const bool WantSinglePiece = NameFlags & CXNameRange_WantSinglePiece; + + const DeclarationName::NameKind Kind = NI.getName().getNameKind(); + + RefNamePieces Pieces; + + if (WantQualifier && QLoc.isValid()) + Pieces.push_back(QLoc); + + if (Kind != DeclarationName::CXXOperatorName || IsMemberRefExpr) + Pieces.push_back(NI.getLoc()); + + if (WantTemplateArgs && TemplateArgs) + Pieces.push_back(SourceRange(TemplateArgs->LAngleLoc, + TemplateArgs->RAngleLoc)); + + if (Kind == DeclarationName::CXXOperatorName) { + Pieces.push_back(SourceLocation::getFromRawEncoding( + NI.getInfo().CXXOperatorName.BeginOpNameLoc)); + Pieces.push_back(SourceLocation::getFromRawEncoding( + NI.getInfo().CXXOperatorName.EndOpNameLoc)); + } + + if (WantSinglePiece) { + SourceRange R(Pieces.front().getBegin(), Pieces.back().getEnd()); + Pieces.clear(); + Pieces.push_back(R); + } + + return Pieces; +} +} + //===----------------------------------------------------------------------===// // Misc. API hooks. //===----------------------------------------------------------------------===// @@ -4252,46 +4293,6 @@ void clang_getDefinitionSpellingAndExtent(CXCursor C, *endColumn = SM.getSpellingColumnNumber(Body->getRBracLoc()); } -namespace { -typedef llvm::SmallVector<SourceRange, 4> RefNamePieces; -RefNamePieces buildPieces(unsigned NameFlags, bool IsMemberRefExpr, - const DeclarationNameInfo &NI, - const SourceRange &QLoc, - const ExplicitTemplateArgumentList *TemplateArgs = 0){ - const bool WantQualifier = NameFlags & CXNameRange_WantQualifier; - const bool WantTemplateArgs = NameFlags & CXNameRange_WantTemplateArgs; - const bool WantSinglePiece = NameFlags & CXNameRange_WantSinglePiece; - - const DeclarationName::NameKind Kind = NI.getName().getNameKind(); - - RefNamePieces Pieces; - - if (WantQualifier && QLoc.isValid()) - Pieces.push_back(QLoc); - - if (Kind != DeclarationName::CXXOperatorName || IsMemberRefExpr) - Pieces.push_back(NI.getLoc()); - - if (WantTemplateArgs && TemplateArgs) - Pieces.push_back(SourceRange(TemplateArgs->LAngleLoc, - TemplateArgs->RAngleLoc)); - - if (Kind == DeclarationName::CXXOperatorName) { - Pieces.push_back(SourceLocation::getFromRawEncoding( - NI.getInfo().CXXOperatorName.BeginOpNameLoc)); - Pieces.push_back(SourceLocation::getFromRawEncoding( - NI.getInfo().CXXOperatorName.EndOpNameLoc)); - } - - if (WantSinglePiece) { - SourceRange R(Pieces.front().getBegin(), Pieces.back().getEnd()); - Pieces.clear(); - Pieces.push_back(R); - } - - return Pieces; -} -} CXSourceRange clang_getCursorReferenceNameRange(CXCursor C, unsigned NameFlags, unsigned PieceIndex) { |