[pacman-dev] [PATCH v3 2/2] Update the question callback

Allan McRae allan at archlinux.org
Mon Jun 9 06:44:37 EDT 2014


On 08/06/14 00:03, Olivier Brunel wrote:
> On 06/07/14 15:45, Andrew Gregory wrote:
>> On 05/31/14 at 07:28pm, Olivier Brunel wrote:
>>> Much like with events, instead of using a bunch of void* arguments for
>>> all questions, we now send one pointer to an alpm_question_t union.
>>> This contains the type of question that was triggered.
>>>
>>> With this information, a question-specific struct can be accessed in
>>> order to get additional arguments.
>>>
>>> Signed-off-by: Olivier Brunel <jjk at jjacky.com>
>>> ---
>>> This uses for alpm_quesion_t an union with all question-specific struct, I'm
>>> thinking this should resolve the issue reported with clang.
>>>
>>> I don't actually have clang here though, Andrew could you try it and let me
>>> know whether it solves the issue or not, please?
>>>
>>> If it does, I'll do a patch with similar changes for events.
>>>
>>> -j
>>>
>>>  lib/libalpm/alpm.h    | 104 +++++++++++++++++++++++++++++++++++++++++++++--
>>>  lib/libalpm/deps.c    |  38 ++++++++++-------
>>>  lib/libalpm/handle.h  |   4 +-
>>>  lib/libalpm/signing.c |  12 ++++--
>>>  lib/libalpm/sync.c    |  60 +++++++++++++++++----------
>>>  src/pacman/callback.c | 110 +++++++++++++++++++++++++++-----------------------
>>>  src/pacman/callback.h |   3 +-
>>>  7 files changed, 234 insertions(+), 97 deletions(-)
>>
>> This does silence Clang's warnings about casting.  I don't have much
>> occasion to use unions personally; is it safe to read the question
>> type directly from the union and to cast the union to the various
>> question types rather than accessing them as fields?
> 
> I believe it is, yes. In fact it's something done frequently when
> dealing with e.g. XEvent or GdkEvent, both are union working similarly,
> where one can use the union field or typecast the pointer to the
> event-specific struct.
> Though I could change things to access union fields instead of
> typecasting if it is preferred?
> 

I looked at GdkEvent:
http://www.gtk-server.org/gtk1/gdk/gdk-event-structures.html

I would lean to union member access rather than typecasting, but not
strongly.  Any other opinions here?

A


More information about the pacman-dev mailing list