Just for fun I changed the extension of my SPI function and trigger
source file from .c to .C and tried to compile it:

> g++ -g -Wall -I /usr/include/postgresql -fPIC -pedantic    -c -o bid_control.o bid_control.C
> In file included from /usr/include/postgresql/nodes/relation.h:18,
>                  from /usr/include/postgresql/executor/spi.h:18,
>                  from bid_control.h:31,
>                  from bid_control.C:21:
> /usr/include/postgresql/nodes/parsenodes.h:871: parse error before `typename'

It seems the "typename" word used in the following structure is a
reserved word in C++. (and is appears colored like a type in Vim)

> /*
>  * ParamNo - specifies a parameter reference
>  */
> typedef struct ParamNo
> {
>     NodeTag     type;
>     int         number;         /* the number of the parameter */
>     TypeName   *typename;       /* the typecast */
                  ^^^^^^^^^
>     List       *indirection;    /* array references */
> } ParamNo;

Is it totally unreasonable try C++ in SPI programming?

Cheers,


-- 
Louis-David Mitterrand - ldm@apartia.org - http://www.apartia.org

Isn't vi that text editor with two modes... one that beeps and one
that corrupts your file?" -- Dan Jocabson, on comp.os.linux.advocacy

Sun, 1 Oct 2000 10:11:02 +0200
Louis-David Mitterrand <cunctator@apartia.ch>
failed to compile a C++ SPI function
I am willing to change it to typname.  Any comments?

> Just for fun I changed the extension of my SPI function and trigger
> source file from .c to .C and tried to compile it:
> 
> > g++ -g -Wall -I /usr/include/postgresql -fPIC -pedantic    -c -o bid_control.o bid_control.C
> > In file included from /usr/include/postgresql/nodes/relation.h:18,
> >                  from /usr/include/postgresql/executor/spi.h:18,
> >                  from bid_control.h:31,
> >                  from bid_control.C:21:
> > /usr/include/postgresql/nodes/parsenodes.h:871: parse error before `typename'
> 
> It seems the "typename" word used in the following structure is a
> reserved word in C++. (and is appears colored like a type in Vim)
> 
> > /*
> >  * ParamNo - specifies a parameter reference
> >  */
> > typedef struct ParamNo
> > {
> >     NodeTag     type;
> >     int         number;         /* the number of the parameter */
> >     TypeName   *typename;       /* the typecast */
>                   ^^^^^^^^^
> >     List       *indirection;    /* array references */
> > } ParamNo;
> 
> Is it totally unreasonable try C++ in SPI programming?
> 
> Cheers,
> 
> 
> -- 
> Louis-David Mitterrand - ldm@apartia.org - http://www.apartia.org
> 
> Isn't vi that text editor with two modes... one that beeps and one
> that corrupts your file?" -- Dan Jocabson, on comp.os.linux.advocacy
> 


-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

Sat, 7 Oct 2000 23:14:27 -0400 (EDT)
Bruce Momjian <pgman@candle.pha.pa.us>
Re: failed to compile a C++ SPI function
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> I am willing to change it to typname.  Any comments?

That's hardly the only change you will have to make to get the headers
to pass through a C++ compiler without complaint.  How many existing
applications do you want to risk breaking?

ParamNo probably isn't a widely used node type, but there are four
structs with fields named 'typename' and one with a field named 'class'
just in parsenodes.h.

I think that before we start making changes with C++ cleanness as a
goal, we should try to get a precise idea of the extent of the changes
that would be needed, and then estimate how much user code might
reference the fields we'd need to rename.

			regards, tom lane

Sat, 07 Oct 2000 23:57:12 -0400
Tom Lane <tgl@sss.pgh.pa.us>
Re: failed to compile a C++ SPI function 
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > I am willing to change it to typname.  Any comments?
> 
> That's hardly the only change you will have to make to get the headers
> to pass through a C++ compiler without complaint.  How many existing
> applications do you want to risk breaking?
> 
> ParamNo probably isn't a widely used node type, but there are four
> structs with fields named 'typename' and one with a field named 'class'
> just in parsenodes.h.
> 
> I think that before we start making changes with C++ cleanness as a
> goal, we should try to get a precise idea of the extent of the changes
> that would be needed, and then estimate how much user code might
> reference the fields we'd need to rename.

Agreed.

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

Sun, 8 Oct 2000 00:02:57 -0400 (EDT)
Bruce Momjian <pgman@candle.pha.pa.us>
Re: failed to compile a C++ SPI function