[Plplot-devel] RE : Removed dynamic casts from Qt driver

2009-07-20 Thread Rochel, Alban
Hello Andrew,

Here is a version of the same patch based on R10166. There were indeed 
conflicts with your changes.
There should be about 5 versions for the callbacks:
- rasterqt (for png, bmp...), sometimes specialised as pngqt, bmpqt... where 
needed
- svgqt
- epspdfqt (sometimes epsqt and pdfqt)
- qtwidget
- extqt

I`m afraid I cannot help a lot with the Python bindings as I have absolutely no 
experience with them (or with Python more generally). But if you have ideas of 
what should be changed in the C++ aspects of the driver, feel free to ask.

Alban


De : an.r...@virgin.net [an.r...@virgin.net] de la part de Andrew Ross 
[andrewr...@users.sourceforge.net]
Date d'envoi : lundi 20 juillet 2009 15:55
À : Rochel, Alban
Cc : PLplot development list
Objet : Re: [Plplot-devel] Removed dynamic casts from Qt driver

On Mon, Jul 20, 2009 at 03:29:56PM +0100, Rochel, Alban wrote:
 Hello all,

 Due to the issues related to dynamic_casts, and as those were only used to 
 make the code compacter, I`ve changed the way the driver works as follows:
 - Before: 1 callback function common to all Qt devices (e.g. plD_line_qt), 
 calling the proper implementations making tests on the results of 
 dynamic_casts
 - After: 1 callback function for every Qt device (e.g. plD_line_svgqt), using 
 simple C-style casts. If you prefer C++ reinterpret_casts, just ask.
 This is by far the simplest solution I can think about.

 If this suits your needs, I will then proceed with other updates later.

 While I`m working on this, Dmitri Gribenko complained about the fact that all 
 the class definitions were bulked in one header, which is not conventional in 
 C++, but is functional and avoids having many header files for a single 
 driver. I can change that of course, I just want an official green light for 
 this, as it remained as the state of a discussion.

Dear Alban,

As an aside, make sure you get the latest update. I've been looking at
fixing the qt visibility issues today and have made a few changes as
a result.

Looking at the code I only see 2 versions of all the callback functions
a standard one and an extended one for extqt and qtwidget. Is this
correct? If so, then it is not a large increase in code size to
remove the dynamic casting if it is problematic.

In terms of splitting up qt.h into lots of class specific files, I know
this is the normal C++ way of doing things, but this will generate a
lot of extra headers for just 1 driver. I think the clutter this
makes will outway any C++ elegance benefits. That's my opinion. Others
may disagree.

Slightly off topic - I've now got gcc -fvisibility=hidden working with
the qt driver and with the C++ qt_example.cpp. It does not work with
the pyqt4 bindings yet. There are a couple of issues here (I think).
1) The sip generated code does not export the symbols that python
requires. It should be possible to massage the source code if required.
2) The moc generated code for qt also is not visibility aware and I
think this is what is leading to the missing symbols in plplot_pyqt4.so
at the moment. I've not yet worked out how (or indeed even if it is
possible) to massage the code by hand to fix this.

Andrew


qt_patch
Description: qt_patch
--
Enter the BlackBerry Developer Challenge  
This is your chance to win up to $100,000 in prizes! For a limited time, 
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize  
details at: http://p.sf.net/sfu/Challenge___
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel


Re: [Plplot-devel] RE : Removed dynamic casts from Qt driver

2009-07-20 Thread Alan W. Irwin
On 2009-07-20 16:46+0100 Rochel, Alban wrote:

 Hello Andrew,

 Here is a version of the same patch based on R10166. There were indeed 
 conflicts with your changes.
 There should be about 5 versions for the callbacks:
 - rasterqt (for png, bmp...), sometimes specialised as pngqt, bmpqt... where 
 needed
 - svgqt
 - epspdfqt (sometimes epsqt and pdfqt)
 - qtwidget
 - extqt

This patch only makes the code 20 per cent larger, and I think that is a
completely acceptable price to pay for peace of mind about issues with how
dynamic casting is implemented on Linux.  Furthermore, qt.so built without
issues and make test_noninteractive in the installed examples tree generated
epsqt, pdfqt, bmpqt, jpgqt, pngqt, ppmqt, tiffqt, and svgqt results without
issues.  Also, c++/qt_example (which exercises extqt) worked fine.
Therefore, I have committed this as revision 10168.

Thanks, Alban!

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); PLplot scientific plotting software
package (plplot.org); 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
__

--
Enter the BlackBerry Developer Challenge  
This is your chance to win up to $100,000 in prizes! For a limited time, 
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize  
details at: http://p.sf.net/sfu/Challenge
___
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel