[cairo] const usage in API

Hakki Dogusan dogusanh at tr.net
Fri Nov 9 14:33:38 PST 2007


Jonathon Jongsma wrote:

Thanks for reply.

> On 11/9/07, Hakki Dogusan <dogusanh at tr.net> wrote:
>> Hi,
>> Some functions use const for parameters, but some not. Is there a rule?
>> ex:
>> cairo_public void
>> cairo_scaled_font_extents (cairo_scaled_font_t  *scaled_font,
>>         cairo_font_extents_t *extents);
>> cairo_public void
>> cairo_set_matrix (cairo_t *cr,
>>         const cairo_matrix_t *matrix);
> Well, in these particular examples, there is a good reason for the
> difference.  cairo_scaled_font_extents() is an accessor function.  The
> 'extents' parameter is an output parameter, so it can't be const.
> In cairo_set_matrix(), the matrix param is an input-only parameter
> that won't be changed so it can be const.
> There might be other functions that don't use const consistently, but
> in this specific case there's a good reason for the difference.

But, why "scaled_font" parameter doesn't use const?

ps. seeing a const helps me to generate/check lua binding without 
consulting to the docs. Since lua has not pointers, I'm emulating them 
with returned values.ie:

C:    void a(int *p1, int *p2, const int *p3);
Lua: p1,p2 = a(p1, p2, p3)

Hakki Dogusan

More information about the cairo mailing list