Re: [PATCH 4/7] [python] API for macros: Add methods to get a gdb.Macro.

Phil Muldoon
2011-08-30T20:58:33Z

Tom Tromey <tromey@redhat.com> writes:

>>>>>> "Phil" == Phil Muldoon <pmuldoon@redhat.com> writes:
>
> Phil> You can use a list, and then convert it to a tuple:
> Phil> PyList_AsTuple
>
> Sure, but that just adds another allocation.
> I don't understand what the benefit is.

There are loads of articles discussing around the old adage: "Tuples are
heterogeneous data structures, lists are homogeneous sequences" yadda
ya. I don't really mind that distinction, and, I am not strongly swayed
one way or the other whether we should return a tuple or a list. My
only distinction is that as a tuple is immutable, n'th element will
always be n'th element, and so can used a key to a dictionary.

So I don't want to bike-shed this, I always return a tuple where the
data won't change. Once we return a list/tuple of macros, that
list/tuple won't change ever. To get a changed list of data, we would
have to make another call to the API. To me, that is a constant list,
and should be a tuple. That's the rule I use. And it sends a
message as part of the API, "this is the data that I have now, it won't
change unless you call me again".

That being said, if the performance/memory usage question is relevant,
then yeah, converting a list to a tuple probably should be avoided.

Cheers,

Phil