Expose the ability to retrieve the result of a type validator via the SB API. To keep it simple, do not expose the pair, but just return a NULL string for success, and a non-NULL string for error; If we were to decide to expose the pair, we would need an SBTypeValidatorResult, which is fine, but it should come as part of exposing type validators through the SB API rather than as a one-off thing. So, KISS for now

llvm-svn: 217299
This commit is contained in:
Enrico Granata 2014-09-06 01:30:04 +00:00
parent 728894340f
commit edc4414094
3 changed files with 36 additions and 0 deletions

View File

@ -93,6 +93,9 @@ public:
const char *
GetObjectDescription ();
const char *
GetTypeValidatorResult ();
lldb::SBValue
GetDynamicValue (lldb::DynamicValueType use_dynamic);

View File

@ -123,6 +123,9 @@ public:
const char *
GetObjectDescription ();
const char *
GetTypeValidatorResult ();
lldb::SBValue
GetDynamicValue (lldb::DynamicValueType use_dynamic);

View File

@ -543,6 +543,36 @@ SBValue::GetObjectDescription ()
return cstr;
}
const char *
SBValue::GetTypeValidatorResult ()
{
Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
const char *cstr = NULL;
ValueLocker locker;
lldb::ValueObjectSP value_sp(GetSP(locker));
if (value_sp)
{
const auto& validation(value_sp->GetValidationStatus());
if (TypeValidatorResult::Failure == validation.first)
{
if (validation.second.empty())
cstr = "unknown error";
else
cstr = validation.second.c_str();
}
}
if (log)
{
if (cstr)
log->Printf ("SBValue(%p)::GetTypeValidatorResult() => \"%s\"",
static_cast<void*>(value_sp.get()), cstr);
else
log->Printf ("SBValue(%p)::GetTypeValidatorResult() => NULL",
static_cast<void*>(value_sp.get()));
}
return cstr;
}
SBType
SBValue::GetType()
{