summaryrefslogtreecommitdiffstats
path: root/clang/tools/CIndex/CIndexUSRs.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2010-03-25 02:00:36 +0000
committerTed Kremenek <kremenek@apple.com>2010-03-25 02:00:36 +0000
commitf64a38907d9eeee00c86d02cdace1bc528a04b00 (patch)
treecca8a47e9c5eaff63b594a0db96a206fb11a51e4 /clang/tools/CIndex/CIndexUSRs.cpp
parent5b07334c0dd182e86cbabbc2f8c5ce24bf20b520 (diff)
downloadbcm5719-llvm-f64a38907d9eeee00c86d02cdace1bc528a04b00.tar.gz
bcm5719-llvm-f64a38907d9eeee00c86d02cdace1bc528a04b00.zip
Require that all Clang-based USRs start with the prefix 'c:' for the "USR space".
llvm-svn: 99475
Diffstat (limited to 'clang/tools/CIndex/CIndexUSRs.cpp')
-rw-r--r--clang/tools/CIndex/CIndexUSRs.cpp21
1 files changed, 15 insertions, 6 deletions
diff --git a/clang/tools/CIndex/CIndexUSRs.cpp b/clang/tools/CIndex/CIndexUSRs.cpp
index 8521971a306..379320c31c8 100644
--- a/clang/tools/CIndex/CIndexUSRs.cpp
+++ b/clang/tools/CIndex/CIndexUSRs.cpp
@@ -79,7 +79,10 @@ private:
USRGenerator UG;
public:
StringUSRGenerator()
- : Out(StrBuf), UG(Out) {}
+ : Out(StrBuf), UG(Out) {
+ // Add the USR space prefix.
+ Out << "c:";
+ }
llvm::StringRef str() {
return Out.str();
@@ -266,16 +269,22 @@ CXString clang_getCursorUSR(CXCursor C) {
StringUSRGenerator SUG;
SUG->Visit(static_cast<Decl*>(D));
- if (SUG->ignoreResults() || SUG.str().empty())
+ if (SUG->ignoreResults())
return createCXString("");
// Return a copy of the string that must be disposed by the caller.
return createCXString(SUG.str(), true);
}
+static inline llvm::StringRef extractUSRSuffix(llvm::StringRef s) {
+ if (!(s.size() >= 2 && s[0] == 'c' && s[1] == ':'))
+ return "";
+ return s.substr(2);
+}
+
CXString clang_constructUSR_ObjCIvar(const char *name, CXString classUSR) {
StringUSRGenerator SUG;
- SUG << clang_getCString(classUSR);
+ SUG << extractUSRSuffix(clang_getCString(classUSR));
SUG->GenObjCIvar(name);
return createCXString(SUG.str(), true);
}
@@ -284,7 +293,7 @@ CXString clang_constructUSR_ObjCMethod(const char *name,
unsigned isInstanceMethod,
CXString classUSR) {
StringUSRGenerator SUG;
- SUG << clang_getCString(classUSR);
+ SUG << extractUSRSuffix(clang_getCString(classUSR));
SUG->GenObjCMethod(name, isInstanceMethod);
return createCXString(SUG.str(), true);
}
@@ -302,7 +311,7 @@ CXString clang_constructUSR_ObjCProtocol(const char *name) {
}
CXString clang_constructUSR_ObjCCategory(const char *class_name,
- const char *category_name) {
+ const char *category_name) {
StringUSRGenerator SUG;
SUG->GenObjCCategory(class_name, category_name);
return createCXString(SUG.str(), true);
@@ -311,7 +320,7 @@ CXString clang_constructUSR_ObjCCategory(const char *class_name,
CXString clang_constructUSR_ObjCProperty(const char *property,
CXString classUSR) {
StringUSRGenerator SUG;
- SUG << clang_getCString(classUSR);
+ SUG << extractUSRSuffix(clang_getCString(classUSR));
SUG->GenObjCProperty(property);
return createCXString(SUG.str(), true);
}
OpenPOWER on IntegriCloud