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;
 }