| //===-- TypeValidator.cpp ---------------------------------------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| // C Includes |
| |
| // C++ Includes |
| |
| // Other libraries and framework includes |
| |
| // Project includes |
| #include "lldb/DataFormatters/TypeValidator.h" |
| #include "lldb/Utility/StreamString.h" |
| |
| using namespace lldb; |
| using namespace lldb_private; |
| |
| TypeValidatorImpl::TypeValidatorImpl(const Flags &flags) |
| : m_flags(flags), m_my_revision(0) {} |
| |
| TypeValidatorImpl::~TypeValidatorImpl() {} |
| |
| TypeValidatorImpl::ValidationResult TypeValidatorImpl::Success() { |
| return ValidationResult{TypeValidatorResult::Success, ""}; |
| } |
| |
| TypeValidatorImpl::ValidationResult |
| TypeValidatorImpl::Failure(std::string message) { |
| return ValidationResult{TypeValidatorResult::Failure, message}; |
| } |
| |
| TypeValidatorImpl_CXX::TypeValidatorImpl_CXX( |
| ValidatorFunction f, std::string d, const TypeValidatorImpl::Flags &flags) |
| : TypeValidatorImpl(flags), m_description(d), m_validator_function(f) {} |
| |
| TypeValidatorImpl_CXX::~TypeValidatorImpl_CXX() {} |
| |
| TypeValidatorImpl::ValidationResult |
| TypeValidatorImpl_CXX::FormatObject(ValueObject *valobj) const { |
| if (!valobj) |
| return Success(); // I guess there's nothing wrong with a null valueobject.. |
| |
| return m_validator_function(valobj); |
| } |
| |
| std::string TypeValidatorImpl_CXX::GetDescription() { |
| StreamString sstr; |
| sstr.Printf("%s%s%s%s", m_description.c_str(), |
| Cascades() ? "" : " (not cascading)", |
| SkipsPointers() ? " (skip pointers)" : "", |
| SkipsReferences() ? " (skip references)" : ""); |
| return sstr.GetString(); |
| } |