Re: const correctness

From: "Kevin Grittner" <Kevin(dot)Grittner(at)wicourts(dot)gov>
To: "Robert Haas" <robertmhaas(at)gmail(dot)com>
Cc: "Thomas Munro" <munro(at)ip9(dot)org>,<pgsql-hackers(at)postgresql(dot)org>, "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Subject: Re: const correctness
Date: 2011-11-09 19:35:55
Message-ID: 4EBA81BB0200002500042C13@gw.wicourts.gov
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Robert Haas <robertmhaas(at)gmail(dot)com> wrote:

> If it doesn't uglify the code, there aren't any negatives. I'm
> just saying we may not be able to get very far before we run up
> against that issue. For example, in the OP, Thomas wrote:
>
> 7. I made a list_head_const function, which can be used used to
> get a pointer to the head cell when you have a pointer to
> const List; I needed that so I could make foreach_const and
> forboth_const; they were needed to be able to make
> list_member, _equalList and various other list-visiting
> functions work with const List objects.
>
> So that's already duplicating list_head, foreach, and forboth.

OK, I failed to pick up on that properly. With that stripped out,
you get the attached patch, which does nothing but add "const" to
661 lines. It still applies cleanly, builds with no warnings, and
passes regression tests.

It is a bit disappointing that without creating two flavors of the
list_head function and the foreach and forboth macros, there are a
number of functions which aren't intended to modify their inputs
which can't be declared with const parameters; but unless there is
some demonstrable performance benefit from those changes, I agree
that the argument for having the two flavors is thin.

-Kevin

Attachment Content-Type Size
constify-1a.patch text/plain 229.4 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Dimitri Fontaine 2011-11-09 20:40:51 Re: a modest improvement to get_object_address()
Previous Message Dimitri Fontaine 2011-11-09 19:14:58 Adding Node support in outfuncs.c and readfuncs.c