1//===-- TypeValidator.cpp ---------------------------------------*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// C Includes
11
12// C++ Includes
13
14// Other libraries and framework includes
15
16// Project includes
17#include "lldb/DataFormatters/TypeValidator.h"
18#include "lldb/Core/StreamString.h"
19
20using namespace lldb;
21using namespace lldb_private;
22
23TypeValidatorImpl::TypeValidatorImpl(const Flags &flags) :
24    m_flags(flags),
25    m_my_revision(0)
26{
27}
28
29TypeValidatorImpl::~TypeValidatorImpl()
30{
31}
32
33TypeValidatorImpl::ValidationResult
34TypeValidatorImpl::Success ()
35{
36    return ValidationResult { TypeValidatorResult::Success, "" };
37}
38
39TypeValidatorImpl::ValidationResult
40TypeValidatorImpl::Failure (std::string message)
41{
42    return ValidationResult { TypeValidatorResult::Failure, message };
43}
44
45TypeValidatorImpl_CXX::TypeValidatorImpl_CXX (ValidatorFunction f, std::string d, const TypeValidatorImpl::Flags& flags) :
46    TypeValidatorImpl(flags),
47    m_description(d),
48    m_validator_function(f)
49{
50}
51
52TypeValidatorImpl_CXX::~TypeValidatorImpl_CXX()
53{
54}
55
56TypeValidatorImpl::ValidationResult
57TypeValidatorImpl_CXX::FormatObject (ValueObject *valobj) const
58{
59    if (!valobj)
60        return Success(); // I guess there's nothing wrong with a null valueobject..
61
62    return m_validator_function(valobj);
63}
64
65std::string
66TypeValidatorImpl_CXX::GetDescription()
67{
68    StreamString sstr;
69    sstr.Printf ("%s%s%s%s",
70                 m_description.c_str(),
71                 Cascades() ? "" : " (not cascading)",
72                 SkipsPointers() ? " (skip pointers)" : "",
73                 SkipsReferences() ? " (skip references)" : "");
74    return sstr.GetString();
75}
76