Thread: VacAttrStatsP vs VacAttrStats * (typedef'ing pointer types)

VacAttrStatsP vs VacAttrStats * (typedef'ing pointer types)

From
Jan Urbański
Date:
While looking around vacuum.h (for my GSoC project) I found:
typedef struct VacAttrStats *VacAttrStatsP;
and then throughout the code sometimes VacAttrStats *foo is used and 
sometimes VacAttrStatsP bar is used.

Call this obsessive-compulsive disorder, but it kind of bothers me. Is 
there a reason for using both notations? If not, then which one is 
preferred and should I write a patch for it or should I just take a pill 
or two and focus on important things?

Regards,
Jan
-- 
Jan Urbanski
GPG key ID: E583D7D2

ouden estin


Re: VacAttrStatsP vs VacAttrStats * (typedef'ing pointer types)

From
Neil Conway
Date:
On Fri, 2008-05-02 at 23:22 +0200, Jan Urbański wrote:
> While looking around vacuum.h (for my GSoC project) I found:
> typedef struct VacAttrStats *VacAttrStatsP;
> and then throughout the code sometimes VacAttrStats *foo is used and 
> sometimes VacAttrStatsP bar is used.

Personally I think we should be consistent about this and just use one
form for a given type.

(I don't really care which variant is preferred. Personally, I think
that hiding pointer types inside a typedef is evil and wrong, but it is
relatively common practice in the source...)

-Neil




Re: VacAttrStatsP vs VacAttrStats * (typedef'ing pointer types)

From
Tom Lane
Date:
Jan Urbański <j.urbanski@students.mimuw.edu.pl> writes:
> While looking around vacuum.h (for my GSoC project) I found:
> typedef struct VacAttrStats *VacAttrStatsP;
> and then throughout the code sometimes VacAttrStats *foo is used and 
> sometimes VacAttrStatsP bar is used.

> Call this obsessive-compulsive disorder, but it kind of bothers me. Is 
> there a reason for using both notations? If not, then which one is 
> preferred and should I write a patch for it or should I just take a pill 
> or two and focus on important things?

Hmm.  We have a fairly widespread convention that pointers to structs
can be separately typedef'd as Foo where the underlying struct is
typedef FooData.  This isn't following that naming convention though,
and right offhand "FooP" doesn't seem an improvement over "Foo *".

I also notice that there are many more uses of VacAttrStats * than
VacAttrStatsP, so the collective vote about which notation is clearer
seems already taken.

If it bugs you, I'd suggest getting rid of typedef VacAttrStatsP
altogether and using VacAttrStats * everywhere.  It's surely not
too important though...
        regards, tom lane