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