Re: server-side extension in c++

From: Mark Cave-Ayland <mark(dot)cave-ayland(at)siriusit(dot)co(dot)uk>
To: David Fetter <david(at)fetter(dot)org>
Cc: Craig Ringer <craig(at)postnewspapers(dot)com(dot)au>, Bruce Momjian <bruce(at)momjian(dot)us>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Igor <igor(at)carcass(dot)ath(dot)cx>, pgsql-general(at)postgresql(dot)org
Subject: Re: server-side extension in c++
Date: 2010-06-02 16:41:10
Message-ID: 4C0689A6.6070405@siriusit.co.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

David Fetter wrote:

> Is PostGIS following these guidelines?

In short, no. Due to various problems in the early days with C++
exceptions generated by the GEOS library causing problems in C (and also
ABI changes forcing a recompile of any GEOS linked library), a thin
intermediate C++ layer called libgeos_c was added to GEOS.

For each public C++ function, libgeos_c declares a similarly-named
wrapper with extern "C" that just executes the underlying C++ function.
If an underlying error such as an exception occurs, the libgeos_c
wrapper returns false, and a simple handler allows the C caller to
retrieve the related error string.

While it does seem quite inelegant, I don't believe any problems linking
between C/C++ have been reported on any compiler/platform since this was
put into place.

HTH,

Mark.

--
Mark Cave-Ayland - Senior Technical Architect
PostgreSQL - PostGIS
Sirius Corporation plc - control through freedom
http://www.siriusit.co.uk
t: +44 870 608 0063

Sirius Labs: http://www.siriusit.co.uk/labs

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Greg Smith 2010-06-02 16:49:02 Re: create index concurrently - duplicate index to reduce time without an index
Previous Message Tom Lane 2010-06-02 16:23:03 Re: libreadline and Debian 5 - not missing just badly named