mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-06-11 06:12:34 -06:00
ide: PDB debugger BiVector/BiArray support
git-svn-id: svn://ultimatepp.org/upp/trunk@13708 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
e2e408b333
commit
047e0811e9
3 changed files with 26 additions and 0 deletions
|
|
@ -390,6 +390,8 @@ struct Pdb : Debugger, ParentCtrl {
|
|||
void PrettyWString(Val val, const Vector<String>& tparam, int64 from, int count, Pretty& p);
|
||||
void PrettyVector(Val val, const Vector<String>& tparam, int64 from, int count, Pretty& p);
|
||||
void PrettyArray(Val val, const Vector<String>& tparam, int64 from, int count, Pretty& p);
|
||||
void PrettyBiVector(Pdb::Val val, const Vector<String>& tparam, int64 from, int count, Pdb::Pretty& p);
|
||||
void PrettyBiArray(Pdb::Val val, const Vector<String>& tparam, int64 from, int count, Pdb::Pretty& p);
|
||||
void PrettyIndex(Val val, const Vector<String>& tparam, int64 from, int count, Pretty& p);
|
||||
void PrettyMap(Pretty& p, Pretty& key, Pretty& value);
|
||||
void PrettyVectorMap(Val val, const Vector<String>& tparam, int64 from, int count, Pretty& p);
|
||||
|
|
|
|||
|
|
@ -36,6 +36,19 @@ void Pdb::PrettyVector(Pdb::Val val, const Vector<String>& tparam, int64 from, i
|
|||
p.data_ptr.Add(item.address + (i + from) * sz);
|
||||
}
|
||||
|
||||
void Pdb::PrettyBiVector(Pdb::Val val, const Vector<String>& tparam, int64 from, int count, Pdb::Pretty& p)
|
||||
{
|
||||
p.data_count = GetInt64(GetAttr(val, "items"));
|
||||
int start = GetInt(GetAttr(val, "items"));
|
||||
int alloc = GetInt(GetAttr(val, "alloc"));
|
||||
Val item = DeRef(GetAttr(val, "vector"));
|
||||
int sz = SizeOfType(tparam[0]);
|
||||
for(int i = 0; i < count; i++) {
|
||||
int ii = i + start < alloc ? i + start : i + start - alloc;
|
||||
p.data_ptr.Add(item.address + (ii + from) * sz);
|
||||
}
|
||||
}
|
||||
|
||||
void Pdb::PrettyIndex(Pdb::Val val, const Vector<String>& tparam, int64 from, int count, Pdb::Pretty& p)
|
||||
{
|
||||
return PrettyVector(GetAttr(val, "key"), tparam, from, count, p);
|
||||
|
|
@ -48,6 +61,13 @@ void Pdb::PrettyArray(Pdb::Val val, const Vector<String>& tparam, int64 from, in
|
|||
a = PeekPtr(a);
|
||||
}
|
||||
|
||||
void Pdb::PrettyBiArray(Pdb::Val val, const Vector<String>& tparam, int64 from, int count, Pdb::Pretty& p)
|
||||
{
|
||||
PrettyBiVector(GetAttr(val, "bv"), { "int *" }, from, count, p);
|
||||
for(adr_t& a : p.data_ptr)
|
||||
a = PeekPtr(a);
|
||||
}
|
||||
|
||||
void Pdb::PrettyMap(Pdb::Pretty& p, Pdb::Pretty& key, Pdb::Pretty& value)
|
||||
{
|
||||
p.data_count = min(key.data_count, value.data_count);
|
||||
|
|
@ -234,7 +254,9 @@ bool Pdb::PrettyData(Visual& result, Pdb::Val val, dword flags)
|
|||
pretty.Add("Upp::String", { 0, THISFN(PrettyString) });
|
||||
pretty.Add("Upp::WString", { 0, THISFN(PrettyWString) });
|
||||
pretty.Add("Upp::Vector", { 1, THISFN(PrettyVector) });
|
||||
pretty.Add("Upp::BiVector", { 1, THISFN(PrettyBiVector) });
|
||||
pretty.Add("Upp::Array", { 1, THISFN(PrettyArray) });
|
||||
pretty.Add("Upp::BiArray", { 1, THISFN(PrettyBiArray) });
|
||||
pretty.Add("Upp::Index", { 1, THISFN(PrettyIndex) });
|
||||
pretty.Add("Upp::VectorMap", { 2, THISFN(PrettyVectorMap) });
|
||||
pretty.Add("Upp::ArrayMap", { 2, THISFN(PrettyArrayMap) });
|
||||
|
|
|
|||
|
|
@ -297,6 +297,8 @@ int Pdb::GetTypeIndex(adr_t modbase, dword typeindex)
|
|||
|
||||
const Pdb::Type& Pdb::GetType(int ti)
|
||||
{
|
||||
if(ti < 0 || ti >= type.GetCount())
|
||||
ThrowError("Invalid type");
|
||||
Type& t = type[ti];
|
||||
int typeindex = type.GetKey(ti);
|
||||
if(t.size < 0) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue