diff options
Diffstat (limited to 'lldb/source/Target/CPPLanguageRuntime.cpp')
-rw-r--r-- | lldb/source/Target/CPPLanguageRuntime.cpp | 50 |
1 files changed, 7 insertions, 43 deletions
diff --git a/lldb/source/Target/CPPLanguageRuntime.cpp b/lldb/source/Target/CPPLanguageRuntime.cpp index b020e0af18a..f5b7f7fc41a 100644 --- a/lldb/source/Target/CPPLanguageRuntime.cpp +++ b/lldb/source/Target/CPPLanguageRuntime.cpp @@ -9,6 +9,8 @@ #include "lldb/Target/CPPLanguageRuntime.h" +#include <string.h> + #include "lldb/Core/PluginManager.h" #include "lldb/Core/UniqueCStringMap.h" #include "lldb/Target/ExecutionContext.h" @@ -193,15 +195,7 @@ CPPLanguageRuntime::StripNamespacesFromVariableName (const char *name, const cha if (base_name_end == NULL) base_name_end = name + strlen (name); - const char *last_colon = NULL; - for (const char *ptr = base_name_end; ptr != name; ptr--) - { - if (*ptr == ':') - { - last_colon = ptr; - break; - } - } + const char *last_colon = strrchr (name, ':'); if (last_colon == NULL) { @@ -221,36 +215,6 @@ CPPLanguageRuntime::StripNamespacesFromVariableName (const char *name, const cha return true; } } -bool -CPPLanguageRuntime::IsPossibleCPPCall (const char *name, const char *&base_name_start, const char *&base_name_end) -{ - if (!name) - return false; - // For now, I really can't handle taking template names apart, so if you - // have < or > I'll say "could be CPP but leave the base_name empty which - // means I couldn't figure out what to use for that. - // FIXME: Do I need to do more sanity checking here? - - if (strchr(name, '>') != NULL || strchr (name, '>') != NULL) - return true; - - size_t name_len = strlen (name); - - if (name[name_len - 1] == ')') - { - // We've got arguments. - base_name_end = strchr (name, '('); - if (base_name_end == NULL) - return false; - - // FIXME: should check that this parenthesis isn't a template specialized - // on a function type or something gross like that... - } - else - base_name_end = name + strlen (name); - - return StripNamespacesFromVariableName (name, base_name_start, base_name_end); -} uint32_t CPPLanguageRuntime::FindEquivalentNames(ConstString type_name, std::vector<ConstString>& equivalents) @@ -272,7 +236,7 @@ void CPPLanguageRuntime::MethodName::Clear() { m_full.Clear(); - m_basename.Clear(); + m_basename = llvm::StringRef(); m_context = llvm::StringRef(); m_arguments = llvm::StringRef(); m_qualifiers = llvm::StringRef(); @@ -356,12 +320,12 @@ CPPLanguageRuntime::MethodName::Parse() context_end = full.rfind(':', basename_end); if (context_end == llvm::StringRef::npos) - m_basename.SetString(full.substr(0, basename_end)); + m_basename = full.substr(0, basename_end); else { m_context = full.substr(0, context_end - 1); const size_t basename_begin = context_end + 1; - m_basename.SetString(full.substr(basename_begin, basename_end - basename_begin)); + m_basename = full.substr(basename_begin, basename_end - basename_begin); } m_type = eTypeUnknownMethod; } @@ -388,7 +352,7 @@ CPPLanguageRuntime::MethodName::Parse() } } -const ConstString & +llvm::StringRef CPPLanguageRuntime::MethodName::GetBasename () { if (!m_parsed) |