aboutsummaryrefslogtreecommitdiff
path: root/include/lldb/DataFormatters/FormattersContainer.h
diff options
context:
space:
mode:
authorEd Maste <emaste@FreeBSD.org>2015-02-06 21:38:51 +0000
committerEd Maste <emaste@FreeBSD.org>2015-02-06 21:38:51 +0000
commit205afe679855a4ce8149cdaa94d3f0868ce796dc (patch)
tree09bc83f73246ee3c7a779605cd0122093d2a8a19 /include/lldb/DataFormatters/FormattersContainer.h
parent0cac4ca3916ac24ab6139d03cbfd18db9e715bfe (diff)
downloadsrc-205afe679855a4ce8149cdaa94d3f0868ce796dc.tar.gz
src-205afe679855a4ce8149cdaa94d3f0868ce796dc.zip
Import LLDB as of upstream SVN r225923 (git 2b588ecd)vendor/lldb/lldb-r225923
This corresponds with the branchpoint for the 3.6 release. A number of files not required for the FreeBSD build have been removed. Sponsored by: DARPA, AFRL
Notes
Notes: svn path=/vendor/lldb/dist/; revision=278332 svn path=/vendor/lldb/lldb-r225923/; revision=278333; tag=vendor/lldb/lldb-r225923
Diffstat (limited to 'include/lldb/DataFormatters/FormattersContainer.h')
-rw-r--r--include/lldb/DataFormatters/FormattersContainer.h51
1 files changed, 14 insertions, 37 deletions
diff --git a/include/lldb/DataFormatters/FormattersContainer.h b/include/lldb/DataFormatters/FormattersContainer.h
index de838d1ab9c1..daf2f24ae3e5 100644
--- a/include/lldb/DataFormatters/FormattersContainer.h
+++ b/include/lldb/DataFormatters/FormattersContainer.h
@@ -29,6 +29,7 @@
#include "lldb/DataFormatters/TypeFormat.h"
#include "lldb/DataFormatters/TypeSummary.h"
#include "lldb/DataFormatters/TypeSynthetic.h"
+#include "lldb/DataFormatters/TypeValidator.h"
#include "lldb/Symbol/ClangASTContext.h"
#include "lldb/Symbol/ClangASTType.h"
@@ -38,6 +39,8 @@
#include "lldb/Target/StackFrame.h"
#include "lldb/Target/TargetList.h"
+#include "lldb/Utility/StringLexer.h"
+
namespace lldb_private {
// this file (and its. cpp) contain the low-level implementation of LLDB Data Visualization
@@ -58,18 +61,6 @@ public:
};
-static inline bool
-IsWhitespace (char c)
-{
- return ( (c == ' ') || (c == '\t') || (c == '\v') || (c == '\f') );
-}
-
-static inline bool
-HasPrefix (const char* str1, const char* str2)
-{
- return ( ::strstr(str1, str2) == str1 );
-}
-
// if the user tries to add formatters for, say, "struct Foo"
// those will not match any type because of the way we strip qualifiers from typenames
// this method looks for the case where the user is adding a "class","struct","enum" or "union" Foo
@@ -77,32 +68,23 @@ HasPrefix (const char* str1, const char* str2)
static inline ConstString
GetValidTypeName_Impl (const ConstString& type)
{
- int strip_len = 0;
-
- if ((bool)type == false)
+ if (type.IsEmpty())
return type;
- const char* type_cstr = type.AsCString();
-
- if ( HasPrefix(type_cstr, "class ") )
- strip_len = 6;
- else if ( HasPrefix(type_cstr, "enum ") )
- strip_len = 5;
- else if ( HasPrefix(type_cstr, "struct ") )
- strip_len = 7;
- else if ( HasPrefix(type_cstr, "union ") )
- strip_len = 6;
+ std::string type_cstr(type.AsCString());
+ lldb_utility::StringLexer type_lexer(type_cstr);
- if (strip_len == 0)
- return type;
+ type_lexer.AdvanceIf("class ");
+ type_lexer.AdvanceIf("enum ");
+ type_lexer.AdvanceIf("struct ");
+ type_lexer.AdvanceIf("union ");
- type_cstr += strip_len;
- while (IsWhitespace(*type_cstr) && ++type_cstr)
+ while (type_lexer.NextIf({' ','\t','\v','\f'}).first)
;
- return ConstString(type_cstr);
+ return ConstString(type_lexer.GetUnlexed());
}
-
+
template<typename KeyType, typename ValueType>
class FormattersContainer;
@@ -267,8 +249,7 @@ public:
FormattersContainer(std::string name,
IFormatChangeListener* lst) :
m_format_map(lst),
- m_name(name),
- m_id_cs(ConstString("id"))
+ m_name(name)
{
}
@@ -345,15 +326,11 @@ public:
}
protected:
-
BackEndType m_format_map;
-
std::string m_name;
DISALLOW_COPY_AND_ASSIGN(FormattersContainer);
- ConstString m_id_cs;
-
void
Add_Impl (const MapKeyType &type, const MapValueType& entry, lldb::RegularExpressionSP *dummy)
{