Minutes 111706
From KitwarePublic
Jump to navigationJump to search
Minutes from Gaetan email
This text for the minutes was taken from Gaetan's email following the tcon
http://www.itk.org/mailman/private/insight-developers/2006-November/008718.html
Summary
The current wrapping system:
- work on linux and windows with tcl, python and java
- known to have problems on mac os (java, python) and solaris (java)
- the problems detailed in the WrapITK article, including the small coverage, and inconsistency in wrapped types
WrapITK:
- 66% of the filters wrapped
- tcl, python, java
- python typemaps, to be able to use python types rather than simple itk objects, like FixedArray, Index, Size, ...
- no typemaps for tcl and java
- lacks some custom classes from the previous wrapping system in java and tcl
- tested on linux, mac os, and recently, solaris
- still lots of problems with windows (especially with java), even if some users have reported using it on that plateform (msvc 7.1 only I think)
What will be better with swig:
- a lot easier to customize
- build with python 2.5
- should help to fix problems with very long file names
- may help to fix build caused by too big generated c++ files
- no need to maintain a branch of swig
WrapITK with swig status:
- swig is still not able to read ITK headers - they still need to be read by gccxml. The output of gccxml is converted to a swig interface with igenerator.py
- python only
- made on mac os
- all currently wrapped itk classes builds with swig
- no customization from the current wrapitk, like typemaps
- but some other customizations, like vector support
- no cmake configurations support
- based on cableidx and pygccxml, so need python to build
- problems with cmake dependencies
- don't group the groups in a few shared modules
- no template with dict interface
- require pygccxml cvs and swig cvs because some bugs have been fixed while working on wrapping ITK with swig
- only a few changes have been made (to respect the wrapping order imposed by swig) in the WrapITK/Modules directory
- roughly, igenerator.py have took about 2 days of work, modifying WrapITK have took 1 day. The bugs above, and a misunderstanding of pygccxml query interface took me one more day
What need to be done (* mark for what I need help), in the order I think it should be done:
- fix the cmake dependencies *
- add the customizations
- basic types like std::string, std::exception, ...
- typemaps currently in WrapITK
- PyCommand, PyImageToImageFilter
- fix the dict interface for the templates
(at that point, the current python tests should all pass on unix-like systems)
- support cmake configurations
- make it work on all the systems, and submit daily tests for all those systems on the dashboard *
- add support for java (*?)
- add support for tcl and the customizations from the current wrapper (TkImageViewer2D, TclCommand, ...) *
- more python customizations: __getitem__(), __len__(), __str__(), ... like in the current optional patch
- recode igenerator.py in c++ to no more use pygccxml (igenerator.py is attached for the ones who want to have an idea of the work to do) *
(the following items are too be done later)
- better filter coverage *
- support more languages
- ...
What still remain to decide:
- when switch to swig (I think it's clear that the switch is a good thing)
- who can/want to work on the the items marked with a "*" in the "What need to be done" section above (any help is welcome for the other items too :-)
- how to proceed:
- fix WrapITK with cableswig on windows, or switch first to swig, and make sure it builds on windows after that
- create a new cvs branch or a new cvs check out