[pulseaudio-discuss] [patches] constification round #3
Tanu Kaskinen
tanuk at iki.fi
Fri Jun 15 11:15:27 UTC 2018
On Thu, 2018-06-07 at 05:01 +0100, jnqnfe at gmail.com wrote:
> API constification set #3
>
> Some API functions perform validation routines which may modify the
> 'error' attribute of a context object. For API functions where the
> "primary" object is not a context object, and the object holds a non-
> const context pointer, this internal mechanism could be successfully
> hidden - such functions were constified in my previous two patch sets.
>
> However, some functions, namely those related directly to context
> objects, had to be passed over previously. These could not be
> constified because the validation routines accessed the context object
> directly to change the error attribute.
>
> This patch set addresses this shortcoming.
>
> Firstly the patch set moves the context's error attribute behind a
> pointer. The validation routines are then changed to store the error
> value via this pointer. That then allows a collection of further API
> functions to be constified.
>
> (actually pa_context_errno and the two rttime ones could have been done
> previously on second inspection)
>
> Although the indirection of the error attribute is obviously ever so
> slightly worse off for efficiency, it is surely worth the price. After
> all, the error setting of the validation checks is just an artifact of
> an internal mechanism and should not be allowed to influence the public
> API like it currently does.
Thanks! I applied patches 1 and 4. Patches 2 and 3 seem unnecessarily
complicated, wouldn't it be better to just constify
pa_context_set_error()?
I altered the commit message of patch 1, because "See email discussion"
seemed like something that could be very annoying to read in the commit
message e.g. ten years from now. I replaced it with a short summary of
the justification for the change.
--
Tanu
https://liberapay.com/tanuk
https://www.patreon.com/tanuk
More information about the pulseaudio-discuss
mailing list