From: William S F. <ws...@fu...> - 2007-05-04 09:20:19
|
Daniele Romagnoli <dany.geotools <at> gmail.com> writes: > > Hi list.I need some assistance on SWIG usage.The > GDAL library has the "CreateCopy" method which allows to call a > progress function during writing operations, in order to check the > percentage of the written image. > One of the parameter of "CreateCopy" is indeed a function pointer > which allows to specify which progress function need to be called.When SWIG > generates java binding for this method, there is no way to exploit > progress functions by the java method (since there is no concept of > pointers in java, and thus, no function pointers). The Java "CreateCopy" method has no parameters related to the management of the writing progress.I propose my idea and I would let to know if it may be accomplished: > ---I should patch the cpp source code using a MyProgressFunction as a parameter of the "CreateCopy". > Within MyProgressFunction I should call a virtual method like, as an instance, MyProgress().With SWIG, I can activate Directors and adding a java director method which will be called by MyProgressFunction. > ---Is this a reasonable way to solve my problem or there is another one?But now I have some questions:Directors operates on a specific class (and/or methods) while the MyProgressFunction is a global method. > > How can I call the virtual method of the specific class from MyProgressFunction?What should be the correct sequence of steps to achieve my task?I'm not really experienced on > SWIG directors capabilities and usage. Write a C++ global progress function and pass this as the the callback for CreateCopy. Then in the progress function you call a virtual method on a director class you previously instantiaged. William |