On 2014-10-07 07:56-0700 Greg Jung wrote:

> Hi guys,
>  I have been working on the _WIN32 incarnation of gnudatalanguage (GDL),
> the overall project is in pretty good shape internally - it has most
> aspects of IDL pre-2000 implemented.  For plotting it uses plplot;

For the others here, GDL
<http://en.wikipedia.org/wiki/GNU_Data_Language> is a free (GPLed) alternative
to IDL.  IDL itself is a heavily used (in Astronomy for example) data
analysis language
<http://en.wikipedia.org/wiki/IDL_(programming_language)> so I assume
GDL has lots of users, and I am glad they are getting exposed to
PLplot via that software.

> hence
> I've got a few lines to wingcc.c that should be useful, and one aspect of
> the newer (post-5.10.0) version that I want to argue against.  I began to
> go through git but today I'm on a different computer and git usage was
> hitting
> roadblocks so I'm submitting this old-school.
>
> plplot-5.10.0/drivers/wingcc.c   is the only affected file.
>
> In GDL, plpot is called from C++ via plstream.  It does explicitly use the
> wingcc_dev structure (defined in wingcc.c and copied in gdl code).  So if
> this structure is changed a user will forever have to distinguish between
> pre-5.11 and post-5.10 plplots.  In recent distribution there is an added
> element in the structure, a pointer to a PLgraphicsIn structure. To date
> there has been no use made of this new element, so I want to kill it before
> somebody needs it.  The PLGraphicsIn is instead implemented, here, as an
> externally-based structure passed into the plD_esc function when PLESC_GETC
> is to be invoked.  XWIN.c already implements the gin cursor structure in
> similar fashion to what I'm proposing.

@Greg: your patch does not show your desired change in this regard
(and perhaps other regards as well) because you prepared the patch
against 5.10.0 rather than our latest git master version.  I suggest
if you don't want to use git to access that latest version of
wingcc.c, that you download that version instead from the button you
can see at
http://sourceforge.net/p/plplot/plplot/ci/master/tree/drivers/wingcc.c.
Then prepare your patch against that version the old-fashioned way to
be absolutely clear about what changes you want to make and to make
Arjen's life easier (Arjen is the guy who has worked on wingcc.c the
most.  For example, he is the author of the substantive changes in
that device drive since the 5.10.0 release).

@ Greg: One question I have is what PLplot device does GDL use on the Unix
side?  I assume you would want us to minimize struct change
issues in that case as well.

@Arjen and Greg: Note that we do now (finally) have the
following #defined in the configured file include/plConfig.h which as
of our next release will be configured to read

// PLplot version information.
#define PLPLOT_VERSION_MAJOR    "5"
#define PLPLOT_VERSION_MINOR    "11"
#define PLPLOT_VERSION_PATCH    "0"
#define PLPLOT_VERSION          "5.11.0"

These macros are not available in 5.10.0, but the GDL developers could
use their absence to prove 5.10.0 or before and if those macros were
present, make simple preprocessor tests of PLPLOT_VERSION_MAJOR,
PLPLOT_VERSION_MINOR, and PLPLOT_VERSION_PATCH to determine the exact
PLplot release and adjust their code for any backwards-incompatible
API changes for any release from 5.11.0 on.  We do try to minimize
such changes, but sometimes they are necessary.  For example, if Arjen
decides the backwards-incompatible struct change for wingcc.c is
necessary, then it should be straightforward for GDL programmers to
adjust to that API change using preprocessor directives.

We just went through a similar issue, but from the reverse point of
view with Octave backwards-incompatible API changes that were
affecting SWIG, and therefore PLplot.  The solution there was for
Octave to define version macros which the SWIG developers could
interpret with preprocessor directives.  That incident provided the
motivation for #defining the above version macros for PLplot. Those
may not be needed this time by the GDL developers (if Arjen decides
the struct change in wingcc has a better alternative), but I am sure
the above macros will be useful down the road dealing with other
backward-incompatible API changes we introduce from time to time.

Alan
__________________________
Alan W. Irwin

Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).

Programming affiliations with the FreeEOS equation-of-state
implementation for stellar interiors (freeeos.sf.net); the Time
Ephemerides project (timeephem.sf.net); PLplot scientific plotting
software package (plplot.sf.net); the libLASi project
(unifont.org/lasi); the Loads of Linux Links project (loll.sf.net);
and the Linux Brochure Project (lbproject.sf.net).
__________________________

Linux-powered Science
__________________________

------------------------------------------------------------------------------
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to