Re: Call for testers: Const status accessors
Andrea Canciani <[email protected]>
| Newsgroups | gmane.comp.lib.cairo |
|---|---|
| Message-ID | <CAN_5=BB=Otfy4nKG+sf3KCPCXpXajzf3ZtvY-mLUWN29xF+38w@mail.gmail.com> |
On Fri, Aug 5, 2011 at 10:34 AM, M Joonas Pihlaja <[email protected]> wrote: > > On Fri, 5 Aug 2011, Andrea Canciani wrote: > >> The attached patch modifies cairo status accessors to accept a const >> argument. This should be ok with C, but other languages might have >> different issues. > > Cairo shouldn't be exporting const opaque pointer types since it's > none of the callers business what happens inside an opaque object. I agree. Unfortunately we're already exporting cairo_region_status(). > Const correctness in APIs isn't relevant in C unless the caller has > full visibility into the structure and layout of an object. IMHO > using constness of an opaque pointer to reflect an operation's > mutation-freeness of the underlying object, as seems to be the case in > this patch, is an abuse of a perfectly fine qualifier, especially in > C. C++ in particular is a different case all together as it has much > more support for this kind of semantic tagging using the const > qualifier. In this case the patch does not aim at tagging the functions with additional information, but just at making the interface consistent with cairo_region_status(). An alternative patch (which I would prefer, if it didn't possibly cause new warnings in existing software) would just remove const from cairo_region_status(). Would such a patch be preferred? Andrea -- cairo mailing list [email protected] http://lists.cairographics.org/mailman/listinfo/cairo