[lldb-dev] Writing a data formatter for LLDB
Greg Clayton via lldb-dev
lldb-dev at lists.llvm.org
Mon Oct 9 08:49:43 PDT 2017
> On Oct 2, 2017, at 9:25 AM, Francois Fayard via lldb-dev <lldb-dev at lists.llvm.org> wrote:
>
> Hi,
>
> I would like to write a data formatter for LLDB, for a class which is very close to std::array. Here it is:
>
> template <typename T, int n>
> class StaticArray {
> private:
> T data_[n];
> }
>
> I wrote the following data formatter adapted from my own “std::vector” data formatter but I still have blanks to fill :
>
> class StaticArrayProvider:
> def __init__(self, valobj, internal_dict):
> self.valobj = valobj
> self.data = self.valobj.GetChildMemberWithName('data_').GetChildAtIndex(0)
This is wrong, just remove the ".GetChildAtIndex(0)" from the above line otherwise "self.data" has a reference to the first value in the data_ array.
> self.data_type = self.data.GetType()
> self.type_size = self.data_type.GetByteSize()
Don't need the above two lines.
> self.size = #???
Since "data_" is an array, it can already be displayed as is. With this data formatter you are just trying to avoid showing "data_" as an extra level in the variable, so you can just forward all queries to "self.data".
>
> def num_children(self):
> return self.size
Just forward all queries to 'data_':
def num_children(self):
return self.data.GetNumChildren()
>
> def get_child_index(self, name):
> try:
> return int(name.lstrip('[').rstrip(']'))
> except:
> return -1
>
def get_child_index(self, name):
return self.data.etChildMemberWithName(name)
> def get_child_at_index(self, index):
> if index < 0:
> return None
> if index >= self.num_children():
> return None
> try:
> return #???
> except:
> return None
>
def get_child_at_index(self, index):
return self.data.etChildMemberAtIndex(index)
> Could you please give me a hand to fill those blanks?
>
> François Fayard
> Founder & Consultant - +33 (0)6 01 44 06 93
> Inside Loop - Scaling up Computational Science
> Paris - 38 rue Desbordes-Valmore, 75116 Paris
> Lyon/Grenoble - 34 route de Four, 38090 Vaulx-Milieu
>
> _______________________________________________
> lldb-dev mailing list
> lldb-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20171009/d6d51123/attachment.html>
More information about the lldb-dev
mailing list