llvm-project/lldb/source/DataFormatters/DumpValueObjectOptions.cpp
Enrico Granata 520a422bd8 Add a --element-count option to the expression command
This option evaluates an expression and, if the result is of pointer type, treats it as if it was an array of that many elements and displays such elements

This has a couple subtle points but is mostly as straightforward as it sounds

Add a parray N <expr> alias for this new mode

Also, extend the --object-description mode to do the moral equivalent of the above but display each element in --object-description mode
Add a poarray N <expr> alias for this

llvm-svn: 267372
2016-04-25 00:52:47 +00:00

252 lines
5.4 KiB
C++

//===-- DumpValueObjectOptions.cpp -----------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include "lldb/DataFormatters/DumpValueObjectOptions.h"
// C Includes
// C++ Includes
// Other libraries and framework includes
// Project includes
#include "lldb/Core/ValueObject.h"
using namespace lldb;
using namespace lldb_private;
DumpValueObjectOptions::DumpValueObjectOptions() :
m_summary_sp(),
m_root_valobj_name(),
m_max_ptr_depth(PointerDepth{PointerDepth::Mode::Default,0}),
m_decl_printing_helper(),
m_use_synthetic(true),
m_scope_already_checked(false),
m_flat_output(false),
m_ignore_cap(false),
m_show_types(false),
m_show_location(false),
m_use_objc(false),
m_hide_root_type(false),
m_hide_name(false),
m_hide_value(false),
m_run_validator(false),
m_use_type_display_name(true),
m_allow_oneliner_mode(true),
m_hide_pointer_value(false),
m_reveal_empty_aggregates(true)
{}
DumpValueObjectOptions::DumpValueObjectOptions (ValueObject& valobj) :
DumpValueObjectOptions()
{
m_use_dynamic = valobj.GetDynamicValueType();
m_use_synthetic = valobj.IsSynthetic();
m_varformat_language = valobj.GetPreferredDisplayLanguage();
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetMaximumPointerDepth(PointerDepth depth)
{
m_max_ptr_depth = depth;
return *this;
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetMaximumDepth(uint32_t depth)
{
m_max_depth = depth;
return *this;
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetDeclPrintingHelper(DeclPrintingHelper helper)
{
m_decl_printing_helper = helper;
return *this;
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetShowTypes(bool show)
{
m_show_types = show;
return *this;
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetShowLocation(bool show)
{
m_show_location = show;
return *this;
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetUseObjectiveC(bool use)
{
m_use_objc = use;
return *this;
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetShowSummary(bool show)
{
if (show == false)
SetOmitSummaryDepth(UINT32_MAX);
else
SetOmitSummaryDepth(0);
return *this;
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetUseDynamicType(lldb::DynamicValueType dyn)
{
m_use_dynamic = dyn;
return *this;
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetUseSyntheticValue(bool use_synthetic)
{
m_use_synthetic = use_synthetic;
return *this;
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetScopeChecked(bool check)
{
m_scope_already_checked = check;
return *this;
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetFlatOutput(bool flat)
{
m_flat_output = flat;
return *this;
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetOmitSummaryDepth(uint32_t depth)
{
m_omit_summary_depth = depth;
return *this;
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetIgnoreCap(bool ignore)
{
m_ignore_cap = ignore;
return *this;
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetRawDisplay()
{
SetUseSyntheticValue(false);
SetOmitSummaryDepth(UINT32_MAX);
SetIgnoreCap(true);
SetHideName(false);
SetHideValue(false);
SetUseTypeDisplayName(false);
SetAllowOnelinerMode(false);
return *this;
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetFormat (lldb::Format format)
{
m_format = format;
return *this;
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetSummary (lldb::TypeSummaryImplSP summary)
{
m_summary_sp = summary;
return *this;
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetRootValueObjectName (const char* name)
{
if (name)
m_root_valobj_name.assign(name);
else
m_root_valobj_name.clear();
return *this;
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetHideRootType (bool hide_root_type)
{
m_hide_root_type = hide_root_type;
return *this;
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetHideName (bool hide_name)
{
m_hide_name = hide_name;
return *this;
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetHideValue (bool hide_value)
{
m_hide_value = hide_value;
return *this;
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetHidePointerValue (bool hide)
{
m_hide_pointer_value = hide;
return *this;
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetVariableFormatDisplayLanguage (lldb::LanguageType lang)
{
m_varformat_language = lang;
return *this;
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetRunValidator (bool run)
{
m_run_validator = run;
return *this;
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetUseTypeDisplayName (bool dis)
{
m_use_type_display_name = dis;
return *this;
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetAllowOnelinerMode (bool oneliner)
{
m_allow_oneliner_mode = oneliner;
return *this;
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetRevealEmptyAggregates (bool reveal)
{
m_reveal_empty_aggregates = reveal;
return *this;
}
DumpValueObjectOptions&
DumpValueObjectOptions::SetElementCount (uint32_t element_count)
{
m_element_count = element_count;
return *this;
}