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

Matt Rice
2011-09-01T22:57:05Z

On Tue, Aug 30, 2011 at 1:34 PM, Phil Muldoon <pmuldoon@redhat.com> wrote:
> Phil Muldoon <pmuldoon@redhat.com> writes:
>
>> Tom Tromey <tromey@redhat.com> writes:
>>
>>>>>>>> "Phil" == Phil Muldoon <pmuldoon@redhat.com> writes:
>>>
>>> Phil> I think this should return a Tuple.  Tuples are immutable, and unless
>>> Phil> you for see a use for the user to manipulate the List, we should guard
>>> Phil> against it.  If you agree, please alter stpy_macros too.
>>>
>>> Using a tuple means you have to iterate twice -- once to count the
>>> objects and once to make the tuple.
>>
>> You can use a list, and then convert it to a tuple:
>>
>> PyList_AsTuple
>>
>> We already use the above.
>>
>> If you wanted to, you could use PyTuple_Ruse, as long as there is
>> one reference to the tuple.
>
> Apologies for the typos, but the above should read:
>
>  If you wanted too, you could use PyTuple_Resize, as long as there is
>  only one reference to the tuple.

I will try these out, (convert list->tuple and PyTuple_Resize()),
but PyTuple_Resize is going to use realloc, which could end up moving it...

As Tom mentioned, we create a new list every time, so really its not
going to foul us up if the user does modify it.
What would be preferred is an immutable list with a constant time
append only exposed to the c api.
but python doesn't really have one of these.

I'll give it a shot and see how it performs, but my gut says list.