diff options
Diffstat (limited to 'include/lldb/DataFormatters/TypeValidator.h')
-rw-r--r-- | include/lldb/DataFormatters/TypeValidator.h | 418 |
1 files changed, 160 insertions, 258 deletions
diff --git a/include/lldb/DataFormatters/TypeValidator.h b/include/lldb/DataFormatters/TypeValidator.h index f1f9a11049db..3c414e39353f 100644 --- a/include/lldb/DataFormatters/TypeValidator.h +++ b/include/lldb/DataFormatters/TypeValidator.h @@ -1,4 +1,5 @@ -//===-- TypeValidator.h ------------------------------------------*- C++ -*-===// +//===-- TypeValidator.h ------------------------------------------*- C++ +//-*-===// // // The LLVM Compiler Infrastructure // @@ -19,287 +20,188 @@ // Other libraries and framework includes // Project includes -#include "lldb/lldb-public.h" #include "lldb/lldb-enumerations.h" #include "lldb/lldb-private-enumerations.h" +#include "lldb/lldb-public.h" namespace lldb_private { - -class TypeValidatorImpl -{ + +class TypeValidatorImpl { public: - class Flags - { - public: - - Flags () : - m_flags (lldb::eTypeOptionCascade) - {} - - Flags (const Flags& other) : - m_flags (other.m_flags) - {} - - Flags (uint32_t value) : - m_flags (value) - {} - - Flags& - operator = (const Flags& rhs) - { - if (&rhs != this) - m_flags = rhs.m_flags; - - return *this; - } - - Flags& - operator = (const uint32_t& rhs) - { - m_flags = rhs; - return *this; - } - - Flags& - Clear() - { - m_flags = 0; - return *this; - } - - bool - GetCascades () const - { - return (m_flags & lldb::eTypeOptionCascade) == lldb::eTypeOptionCascade; - } - - Flags& - SetCascades (bool value = true) - { - if (value) - m_flags |= lldb::eTypeOptionCascade; - else - m_flags &= ~lldb::eTypeOptionCascade; - return *this; - } - - bool - GetSkipPointers () const - { - return (m_flags & lldb::eTypeOptionSkipPointers) == lldb::eTypeOptionSkipPointers; - } - - Flags& - SetSkipPointers (bool value = true) - { - if (value) - m_flags |= lldb::eTypeOptionSkipPointers; - else - m_flags &= ~lldb::eTypeOptionSkipPointers; - return *this; - } - - bool - GetSkipReferences () const - { - return (m_flags & lldb::eTypeOptionSkipReferences) == lldb::eTypeOptionSkipReferences; - } - - Flags& - SetSkipReferences (bool value = true) - { - if (value) - m_flags |= lldb::eTypeOptionSkipReferences; - else - m_flags &= ~lldb::eTypeOptionSkipReferences; - return *this; - } - - bool - GetNonCacheable () const - { - return (m_flags & lldb::eTypeOptionNonCacheable) == lldb::eTypeOptionNonCacheable; - } - - Flags& - SetNonCacheable (bool value = true) - { - if (value) - m_flags |= lldb::eTypeOptionNonCacheable; - else - m_flags &= ~lldb::eTypeOptionNonCacheable; - return *this; - } - - uint32_t - GetValue () - { - return m_flags; - } - - void - SetValue (uint32_t value) - { - m_flags = value; - } - - private: - uint32_t m_flags; - }; - - TypeValidatorImpl (const Flags& flags = Flags()); - - typedef std::shared_ptr<TypeValidatorImpl> SharedPointer; - - virtual ~TypeValidatorImpl (); - - bool - Cascades () const - { - return m_flags.GetCascades(); - } - bool - SkipsPointers () const - { - return m_flags.GetSkipPointers(); + class Flags { + public: + Flags() : m_flags(lldb::eTypeOptionCascade) {} + + Flags(const Flags &other) : m_flags(other.m_flags) {} + + Flags(uint32_t value) : m_flags(value) {} + + Flags &operator=(const Flags &rhs) { + if (&rhs != this) + m_flags = rhs.m_flags; + + return *this; } - bool - SkipsReferences () const - { - return m_flags.GetSkipReferences(); + + Flags &operator=(const uint32_t &rhs) { + m_flags = rhs; + return *this; } - bool - NonCacheable () const - { - return m_flags.GetNonCacheable(); + + Flags &Clear() { + m_flags = 0; + return *this; } - - void - SetCascades (bool value) - { - m_flags.SetCascades(value); + + bool GetCascades() const { + return (m_flags & lldb::eTypeOptionCascade) == lldb::eTypeOptionCascade; } - - void - SetSkipsPointers (bool value) - { - m_flags.SetSkipPointers(value); + + Flags &SetCascades(bool value = true) { + if (value) + m_flags |= lldb::eTypeOptionCascade; + else + m_flags &= ~lldb::eTypeOptionCascade; + return *this; } - - void - SetSkipsReferences (bool value) - { - m_flags.SetSkipReferences(value); + + bool GetSkipPointers() const { + return (m_flags & lldb::eTypeOptionSkipPointers) == + lldb::eTypeOptionSkipPointers; } - - void - SetNonCacheable (bool value) - { - m_flags.SetNonCacheable(value); + + Flags &SetSkipPointers(bool value = true) { + if (value) + m_flags |= lldb::eTypeOptionSkipPointers; + else + m_flags &= ~lldb::eTypeOptionSkipPointers; + return *this; } - - uint32_t - GetOptions () - { - return m_flags.GetValue(); + + bool GetSkipReferences() const { + return (m_flags & lldb::eTypeOptionSkipReferences) == + lldb::eTypeOptionSkipReferences; } - - void - SetOptions (uint32_t value) - { - m_flags.SetValue(value); + + Flags &SetSkipReferences(bool value = true) { + if (value) + m_flags |= lldb::eTypeOptionSkipReferences; + else + m_flags &= ~lldb::eTypeOptionSkipReferences; + return *this; } - - uint32_t& - GetRevision () - { - return m_my_revision; + + bool GetNonCacheable() const { + return (m_flags & lldb::eTypeOptionNonCacheable) == + lldb::eTypeOptionNonCacheable; } - - enum class Type - { - eTypeUnknown, - eTypeCXX - }; - - struct ValidationResult { - TypeValidatorResult m_result; - std::string m_message; - }; - - virtual Type - GetType () - { - return Type::eTypeUnknown; + + Flags &SetNonCacheable(bool value = true) { + if (value) + m_flags |= lldb::eTypeOptionNonCacheable; + else + m_flags &= ~lldb::eTypeOptionNonCacheable; + return *this; } - - // we are using a ValueObject* instead of a ValueObjectSP because we do not need to hold on to this for - // extended periods of time and we trust the ValueObject to stay around for as long as it is required - // for us to generate its value - virtual ValidationResult - FormatObject (ValueObject *valobj) const = 0; - - virtual std::string - GetDescription() = 0; - - static ValidationResult - Success (); - - static ValidationResult - Failure (std::string message); - + + uint32_t GetValue() { return m_flags; } + + void SetValue(uint32_t value) { m_flags = value; } + + private: + uint32_t m_flags; + }; + + TypeValidatorImpl(const Flags &flags = Flags()); + + typedef std::shared_ptr<TypeValidatorImpl> SharedPointer; + + virtual ~TypeValidatorImpl(); + + bool Cascades() const { return m_flags.GetCascades(); } + bool SkipsPointers() const { return m_flags.GetSkipPointers(); } + bool SkipsReferences() const { return m_flags.GetSkipReferences(); } + bool NonCacheable() const { return m_flags.GetNonCacheable(); } + + void SetCascades(bool value) { m_flags.SetCascades(value); } + + void SetSkipsPointers(bool value) { m_flags.SetSkipPointers(value); } + + void SetSkipsReferences(bool value) { m_flags.SetSkipReferences(value); } + + void SetNonCacheable(bool value) { m_flags.SetNonCacheable(value); } + + uint32_t GetOptions() { return m_flags.GetValue(); } + + void SetOptions(uint32_t value) { m_flags.SetValue(value); } + + uint32_t &GetRevision() { return m_my_revision; } + + enum class Type { eTypeUnknown, eTypeCXX }; + + struct ValidationResult { + TypeValidatorResult m_result; + std::string m_message; + }; + + virtual Type GetType() { return Type::eTypeUnknown; } + + // we are using a ValueObject* instead of a ValueObjectSP because we do not + // need to hold on to this for + // extended periods of time and we trust the ValueObject to stay around for as + // long as it is required + // for us to generate its value + virtual ValidationResult FormatObject(ValueObject *valobj) const = 0; + + virtual std::string GetDescription() = 0; + + static ValidationResult Success(); + + static ValidationResult Failure(std::string message); + protected: - Flags m_flags; - uint32_t m_my_revision; - + Flags m_flags; + uint32_t m_my_revision; + private: - DISALLOW_COPY_AND_ASSIGN(TypeValidatorImpl); + DISALLOW_COPY_AND_ASSIGN(TypeValidatorImpl); }; - -class TypeValidatorImpl_CXX : public TypeValidatorImpl -{ + +class TypeValidatorImpl_CXX : public TypeValidatorImpl { public: - typedef std::function<TypeValidatorImpl::ValidationResult(ValueObject* valobj)> ValidatorFunction; - - TypeValidatorImpl_CXX (ValidatorFunction f, std::string d, const TypeValidatorImpl::Flags& flags = Flags()); - - typedef std::shared_ptr<TypeValidatorImpl_CXX> SharedPointer; - - ~TypeValidatorImpl_CXX() override; - - ValidatorFunction - GetValidatorFunction () const - { - return m_validator_function; - } - - void - SetValidatorFunction (ValidatorFunction f) - { - m_validator_function = f; - } - - TypeValidatorImpl::Type - GetType() override - { - return TypeValidatorImpl::Type::eTypeCXX; - } - - ValidationResult - FormatObject(ValueObject *valobj) const override; - - std::string - GetDescription() override; - + typedef std::function<TypeValidatorImpl::ValidationResult( + ValueObject *valobj)> + ValidatorFunction; + + TypeValidatorImpl_CXX(ValidatorFunction f, std::string d, + const TypeValidatorImpl::Flags &flags = Flags()); + + typedef std::shared_ptr<TypeValidatorImpl_CXX> SharedPointer; + + ~TypeValidatorImpl_CXX() override; + + ValidatorFunction GetValidatorFunction() const { + return m_validator_function; + } + + void SetValidatorFunction(ValidatorFunction f) { m_validator_function = f; } + + TypeValidatorImpl::Type GetType() override { + return TypeValidatorImpl::Type::eTypeCXX; + } + + ValidationResult FormatObject(ValueObject *valobj) const override; + + std::string GetDescription() override; + protected: - std::string m_description; - ValidatorFunction m_validator_function; - + std::string m_description; + ValidatorFunction m_validator_function; + private: - DISALLOW_COPY_AND_ASSIGN(TypeValidatorImpl_CXX); + DISALLOW_COPY_AND_ASSIGN(TypeValidatorImpl_CXX); }; - } // namespace lldb_private #endif // lldb_TypeValidator_h_ |