diff options
author | Dmitri Gribenko <gribozavr@gmail.com> | 2013-02-02 00:02:12 +0000 |
---|---|---|
committer | Dmitri Gribenko <gribozavr@gmail.com> | 2013-02-02 00:02:12 +0000 |
commit | 0c4394c7f63008fbf4d335710b34f71afab362a3 (patch) | |
tree | ffa64a00de093cddebddf7cab99b67866d37992c /tools/libclang/CXString.cpp | |
parent | f5cfc89ea46cf20b4d5b5c42568e9ba6a4bbdd80 (diff) |
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
Diffstat (limited to 'tools/libclang/CXString.cpp')
-rw-r--r-- | tools/libclang/CXString.cpp | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/tools/libclang/CXString.cpp b/tools/libclang/CXString.cpp index 73d1e1e35f..f13a5a0415 100644 --- a/tools/libclang/CXString.cpp +++ b/tools/libclang/CXString.cpp @@ -54,15 +54,26 @@ CXString cxstring::createNull() { 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; } |