libclang: introduce cxstring::{createRef,createDup} for C strings
Also migrate all clients from the old API.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174238 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/libclang/CXString.cpp b/tools/libclang/CXString.cpp
index 73d1e1e..f13a5a0 100644
--- a/tools/libclang/CXString.cpp
+++ b/tools/libclang/CXString.cpp
@@ -54,15 +54,26 @@
return Str;
}
-CXString cxstring::createCXString(const char *String, bool DupString){
+CXString cxstring::createRef(const char *String) {
+ if (String && String[0] == '\0')
+ return cxstring::createEmpty();
+
CXString Str;
- if (DupString) {
- Str.data = strdup(String);
- Str.private_flags = (unsigned) CXS_Malloc;
- } else {
- Str.data = String;
- Str.private_flags = (unsigned) CXS_Unmanaged;
- }
+ Str.data = String;
+ Str.private_flags = CXS_Unmanaged;
+ return Str;
+}
+
+CXString cxstring::createDup(const char *String) {
+ if (!String)
+ return cxstring::createNull();
+
+ if (String[0] == '\0')
+ return cxstring::createEmpty();
+
+ CXString Str;
+ Str.data = strdup(String);
+ Str.private_flags = CXS_Malloc;
return Str;
}