[Proj] [MS Windows] PVALUE causes problems with mingw64compilers
sisyphus1 at optusnet.com.au
sisyphus1 at optusnet.com.au
Mon May 25 18:59:30 EST 2015
-----Original Message-----
From: Howard Butler
Sent: Thursday, May 21, 2015 10:43 PM
To: PROJ.4 and general Projections Discussions
Subject: Re: [Proj] [MS Windows] PVALUE causes problems with
mingw64compilers
>> On May 21, 2015, at 5:04 AM, sisyphus1 at optusnet.com.au wrote:
>>
>>
>> Is it worth going to the trouble of changing the PVALUE symbol to (say)
>> PROJVALUE for mingw compilers only - but letting the PVALUE symbol stand
>> with non-mingw compilers:
>
> I don’t think so. I think it should just be changed. The folks using
> projects.h have known it was a bit sketchy to be using (we tried to take
> it away once already). The next windows person using proj.4 with an
> interesting include scenario will run into again if we monkey patch the
> mingw case only.
>
> Let’s just rename it, unless someone has a strong objection.
Renaming it is *definitely* my preferred option.
However, following on from an idea presented by David Mertens on the
pdl-devel mailing list, I do have a slight refinement to the above idea of
allowing 2 symbols.
Change:
typedef union { double f; int i; char *s; } PVALUE;
to something like:
typedef union { double f; int i; char *s; } PROJVALUE;
and then insert:
/* The following is for backwards compatibility. */
/* PVALUE is deprecated - use PROJVALUE */
#ifndef _WINREG_ /* _WINREG_ is defined by winreg.h */
#define PVALUE PROJVALUE
#endif
And then, in the proj source, replace all other instances of PVALUE with
PROJVALUE.
Also document PVALUE as being deprecated and will be removed in a future
release.
The only problem is that it still enables someone to write source code that
uses PVALUE - and that source code therefore does not run on Windows if
winreg.h is included.
But, if PVALUE is documented as being deprecated, we presumably open the
door to being able to remove it at a future date (without being accused of
doing something we shouldn't do).
In the meantime it's unlikely that anyone will be inconvenienced.
Cheers,
Rob
More information about the Proj
mailing list