ITK/Release 4/Wrapping/Tasks: Difference between revisions

From KitwarePublic
< ITK‎ | Release 4‎ | Wrapping
Jump to navigationJump to search
No edit summary
 
(13 intermediate revisions by 2 users not shown)
Line 1: Line 1:
= Current Tasks =
= Done =
 
==Build WrapITK with ccache==
==Build WrapITK with ccache==
* measure the build speedup
* Documentation: [http://itk.org/Wiki/ITK_Release_4/Wrapping/ccache Using CCache for WrapITK]
* write documentation on the wiki
** Documentation: [http://itk.org/Wiki/ITK_Release_4/Wrapping/ccache Using CCache for WrapITK]
 
included in ITK v4.alpha


==Build WrapITK with WRAP_ITK_EXPLICIT ==
==Build WrapITK with WRAP_ITK_EXPLICIT ==
* Result: [http://itk.org/Wiki/ITK_Release_4/Wrapping/WrapITK_Installation/Wrap_ITK_EXPLICIT WRAP_ITK_EXPLICIT]
included in ITK v4.alpha


== Move the customization code from python's main CMakeLists.txt to swig macros in pyBase.i==
== Move the customization code from python's main CMakeLists.txt to swig macros in pyBase.i==
* GitHub Commits
** [https://github.com/ComplexSystemsModeling/ITK/commit/dd04a6e26d46a890c52ed314e554a22b6932d670 dd04a6e] ENH: Code cleanup in CMakeLists.txt. Swig customization for python is now moved to the file pyBase.i
** [https://github.com/ComplexSystemsModeling/ITK/commit/c1526cb6e1525a8cff1bf98ccccb669343372679 c1526cb] ENH: Code cleanup for python customization
** [https://github.com/ComplexSystemsModeling/ITK/commit/5c1ef5fca053b5eeffdae4f34fb540951c3e3a5b 5c1ef5f] ENH: Cleanup for python customization in CMakeLists.txt
** [https://github.com/ComplexSystemsModeling/ITK/commit/6772f8314b698ba1628030e4f879adfae111a538 6772f83] ENH: Cleanup of CMakeLists.txt, fix for a warning in ITKMetaDataObject.wrap
** [https://github.com/ComplexSystemsModeling/ITK/commit/c1d4b4cd21a23db3ce516478fa4aa464ebb2d03a c1d4b4c] BUG: Fixes for Python customization cleanup
* pushed to gerrit [http://review.source.kitware.com/#change,1664 here]
included in ITK v4.alpha


== Warning messages for TCL, Ruby, Perl support in WrapITK ==
== Warning messages for TCL, Ruby, Perl support in WrapITK ==
** [https://github.com/ComplexSystemsModeling/ITK/commit/9d9215cdafe4ed3adf07652ef24d7617efc1cd07 9d9215c] DOC: Shorten the message for TCL support in WrapITK
** [https://github.com/ComplexSystemsModeling/ITK/commit/d9bc5a25cb57bf073297f062684d7b204301cb7b d9bc5a2] ENH: TCL support in WrapITK is marked as unstable
* pushed to gerrit [http://review.source.kitware.com/#change,1690 here]
Included in ITK v4.alpha


==MetadataDictionary access from target languages==
==MetadataDictionary access from target languages==
* modify itkMetaDataDictionary.h to add those methods:
* modify itkMetaDataDictionary.h to add those methods:
   + MetaDataObjectBase::Pointer & Get(const std::string &) const;
   + MetaDataObjectBase::Pointer & Get(const std::string &) const;
   + void Set(const std::string &, MetaDataObjectBase * );
   + void Set(const std::string &, MetaDataObjectBase * );
   + std::vector< std::string > Keys() const;
   + std::vector< std::string > Keys() const;
* add a specific language customization for python, to make the metadata accessible in a more usual way.
* add a specific language customization for python, to make the metadata accessible in a more usual way.
   + a __setitem__() method to add/modify a metadata in the dictionary
   + a __setitem__() method to add/modify a metadata in the dictionary
Line 45: Line 21:
   + a __iter__() method to return every elements in the dictionary one by one
   + a __iter__() method to return every elements in the dictionary one by one


* github commits
== Fix Installation ==
** [https://github.com/ComplexSystemsModeling/ITK/commit/a6ac0eecabeab6480824f2b99ffe2254b616f1ab a6ac0ee]  ENH: Throw an itkGenericException if the key does not exist
* Option ${CMAKE_INSTALL_PREFIX}/lib/ITK-4.0/ accepted in the ITK developers list
** [https://github.com/ComplexSystemsModeling/ITK/commit/627088b7195b2878636784be340f1ddaec081a83 627088b] ENH: Throw an itkGenericException if the key does not exist
** Put all wrapITK libraries here along with libraries of other packages. We won't require versioned names.
** [https://github.com/ComplexSystemsModeling/ITK/commit/f20d82fffd9b9a7bb8343cb71a5733cf8b7b8d85 f20d82f] ENH: Changes to the itkMetaDataDictionary Get function
** [https://github.com/ComplexSystemsModeling/ITK/commit/fc86b99b93eb12670808172b1bad66ab1c48d530 fc86b99] ENH: Added more types that can be held in MetaDataDictionary
** [https://github.com/ComplexSystemsModeling/ITK/commit/6348f2d97f4dc9cd5efb4b0948ff7d5ad501b966 6348f2d] ENH: Put the Get function call for an inavid key inside the try/catch block
** [https://github.com/ComplexSystemsModeling/ITK/commit/3632b44e8fbb342be76bc3ccf1e399e06b8a2dff 3632b44] ENH: Changes for adding default types in the ITKMetaDataObject.wrap and CMakeLists.txt for new test in Python to check the MetaDataDictionary
** [https://github.com/ComplexSystemsModeling/ITK/commit/6d0736769a9552d139a21a63f7f9a394961dec28 6d07367] ENH: Added new python test for MetaDataDictionary
** [https://github.com/ComplexSystemsModeling/ITK/commit/9a3fe08d1508632d075f3e2b1b40495797c87644 9a3fe08] ENH: Suppress sswig warning for %extend directive
** [https://github.com/ComplexSystemsModeling/ITK/commit/a101ed366abe8c66cf0feecf93192e6ac6458222 a101ed3] ENH: Added functions __str__, __itr__, __setitem__ and __len__ to make the metadata accessible in a more usual way
** [https://github.com/ComplexSystemsModeling/ITK/commit/ec3eb487260e3e7e4116bc8f417b416ce02f203a ec3eb48] BUG: Fixed the spurious comma which generated the incorrect code
** [https://github.com/ComplexSystemsModeling/ITK/commit/ce6ecfb56978e2f57096977bdda2ca5e6bc3eb23 ce6ecfb] ENH: Modified the setitem function to support the array notation at the python interface, and, added code to the test file for MetaDataDictionary


included in ITK v4.alpha
= In Progress =


==Tcl SmartPointers==
==Tcl SmartPointers==
Look at how SmartPointers are replaced by swig proxy objects in python and java and explore the possibility to do the same in Tcl to decrease the build time of WrapITK.
Look at how SmartPointers are replaced by swig proxy objects in python and java and explore the possibility to do the same in Tcl to decrease the build time of WrapITK.
not ready for beta.
== Fix Installation ==
* They are currenly in /usr/local/lib/cmake/ITK-4.0/WrapITK -- that's not good
* Option ${CMAKE_INSTALL_PREFIX}/lib/ITK-4.0/ accepted in the ITK developers list
** Put all wrapITK libraries here along with libraries of other packages. We won't require versioned names.
* [http://review.source.kitware.com/#change,1833 Gerrit-Push]
Ready for Beta


== Remove the USE_WRAP_ITK option ==
== Remove the USE_WRAP_ITK option ==
* Enabling a language in cmake should be enough.
* Enabling a language in cmake should be enough.
Not for Beta.


== Build swig as an external project ==
== Build swig as an external project ==
* As it's done for gccxml.  
* As it's done for gccxml.  
* If you look in the gerrit abandoned patch, you will find a change proposed by Kent Williams which can be partially reused.
* If you look in the gerrit abandoned patch, you will find a change proposed by Kent Williams which can be partially reused.
* ONGOING
Ready for Beta


== Integrate WrapITK in the ITK modularization ==
== Integrate WrapITK in the ITK modularization ==
* First step - Restructure the WrapITK Libraries directory to look it similar to the Modules directory [http://itk.org/Wiki/ITK_Release_4/Wrapping/Tasks/WrapITKModular here]
* First step - Restructure the WrapITK Libraries directory to look it similar to the Modules directory [http://itk.org/Wiki/ITK_Release_4/Wrapping/Tasks/WrapITKModular here]
* ONGOING
* remove the USE_WRAP_ITK
 
=Pending Tasks =
 
== Ongoing ==
* (*)[GL-05a] [ITK-2528] - [95%] - Redefine the WrapITK libraries, (follow modular, no need monolithic anymore) (gaetan)
* [GL-05b] [??] - [--%] - Move the wrapitk wrapping files (.wrap) directly in the corresponding modules
* [GL-05c] [??] - [--?] - Use the module mechanism to trigger wrapping.
 
 
 
 
 
 
 
 
 
 
 
==Oraganisation==
SWIG is a tool for making it easy to expose C/C++ code for use from a variety of high level programming languages. The idea is to feed C/C++ header files into SWIG and SWIG then generates the 'glue' code so that your C/C++ library can be used from another language such as Python, Java, C#, Ruby, Perl etc.  Currently, there are implementations for supporting over 20 different target languages. Please visit SWIG's home page at http://www.swig.org.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


Ready for Beta


=Pending Tasks =


== Ready for Alpha ==


* [GL-01] - [100%] - migrating to WrapITK 0.3
* [GL-06] - [100%] - Default wrapped types [...],
* [GL-08] - [40%] - Wrapping coverage,
** metadata dictionary
** macro moved to swig


== ready for Beta ==
* [GL-05] - [75%] - Redefine the WrapITK libraries, (follow modular, no need monolithic anymore)
* [GL-14] - [--%] - Automatic type selection in Python,


== Ready for Meeting MICCAI ==
== Ready for Beta / Meeting MICCAI / 15th September ==
* [GL-03] - [--%] - Port the SWIG interface gen. to C++,
* [GL-03] [ITK-2530] - [--%] - Port the SWIG interface gen. to C++, (alex)
* [GL-09] - [--%] - Binary distribution,
* [GL-09] [ITK-2531] - [33%] - Binary distribution, (alex)
** one full build, sub package ( python, java, tcl, dev (cmake, swig interfaces, ...) ) independently installable, possible to distribute
** one full build, sub package ( python, java, tcl, dev (cmake, swig interfaces, ...) ) independently installable, possible to distribute
** generation with CPack
** generation with CPack
* [GL-07] [ITK-2539] – [75%] - Extend support to more types, (unsigned long for win 64 ) (Alex)
== Ready for 15 october ==
* (*)[GL-02] [ITK-2532] - [--%] - Add support for C#, (gaethan)
* [GL-04] [ITK-2533] - [--%] - Add support for Python 3, (gaetan)
== Ready for 15 November ==
* [GL-10] [ITK-2534] – [--%] - language specific array conversion, (NOTE: simple itk did it for C# and java, we have it in python) (python almost done, java and C# is being worked out in simpleITK, wait for them) (gaethan) (depends on C#)
* [GL-13] [ITK-2536] - [--%] - Target language inheritance, swig expertise, all languages (gaethan) (need C# and python3)
* [GL-14] [ITK-2529] - [--%] - Automatic type selection in Python, (gaetan)
* [GL-12] [ITK-2535] - [--%] - Automatic Inline documentation, done in python, prototype existing in Java. all is done in python, so we need to port it to C++ (see GL-03) (alex?)
* [GL-17] [ITK-2537] – [--%] - Documentation (user guide) (all)
* [GL-18] [ITK-2538] – [--%] - Documentation (dev. Guide) (all)


== Ready for Dec - end of contract ==
== NOTE ==
* [GL-02] - [--%] - Add support for C#, => ashish
* gcc-xml => does not work under MSVC 2008 and 2010 !!
* [GL-04] - [--%] - Add support for Python 3, => gaetan
* [GL-07] – [--%] - Extend support to more types, (unsigned long for win 64 ) => Alex, replace all unsigned long by SizeValueType (done in ITK but not WrapITK)
* [GL-10] – [--%] - language specific array conversion, (NOTE: simple itk did it for C# and java, we have it in python) => gaetan (python almost done, java and C# is being worked out in simpleITK, wait for them)
* [GL-12] - [--%] - Automatic Inline documentation, done in python, prototype existing in Java. all is done in python, so we need to port it to C++ (see GL-03)
* [GL-13] - [--%] - Target language inheritance, swig expertise, all languages => ashish
* [GL-17] – [--%] - Documentation (user guide)
* [GL-18] – [--%] - Documentation (dev. Guide)

Latest revision as of 07:55, 9 March 2012

Done

Build WrapITK with ccache

Build WrapITK with WRAP_ITK_EXPLICIT

Move the customization code from python's main CMakeLists.txt to swig macros in pyBase.i

Warning messages for TCL, Ruby, Perl support in WrapITK

MetadataDictionary access from target languages

  • modify itkMetaDataDictionary.h to add those methods:
 + MetaDataObjectBase::Pointer & Get(const std::string &) const;
 + void Set(const std::string &, MetaDataObjectBase * );
 + std::vector< std::string > Keys() const;
  • add a specific language customization for python, to make the metadata accessible in a more usual way.
 + a __setitem__() method to add/modify a metadata in the dictionary
 + a __len__() method to return the number of metadata in the dictionary
 + a __getitem__() method - this one should take care to down cast the object to its real type
 + a __str__() method to print the content of the dictionary
 + a __iter__() method to return every elements in the dictionary one by one

Fix Installation

  • Option ${CMAKE_INSTALL_PREFIX}/lib/ITK-4.0/ accepted in the ITK developers list
    • Put all wrapITK libraries here along with libraries of other packages. We won't require versioned names.

In Progress

Tcl SmartPointers

Look at how SmartPointers are replaced by swig proxy objects in python and java and explore the possibility to do the same in Tcl to decrease the build time of WrapITK.

Remove the USE_WRAP_ITK option

  • Enabling a language in cmake should be enough.

Build swig as an external project

  • As it's done for gccxml.
  • If you look in the gerrit abandoned patch, you will find a change proposed by Kent Williams which can be partially reused.

Integrate WrapITK in the ITK modularization

  • First step - Restructure the WrapITK Libraries directory to look it similar to the Modules directory here
  • remove the USE_WRAP_ITK

Pending Tasks

Ongoing

  • (*)[GL-05a] [ITK-2528] - [95%] - Redefine the WrapITK libraries, (follow modular, no need monolithic anymore) (gaetan)
  • [GL-05b] [??] - [--%] - Move the wrapitk wrapping files (.wrap) directly in the corresponding modules
  • [GL-05c] [??] - [--?] - Use the module mechanism to trigger wrapping.






Oraganisation

SWIG is a tool for making it easy to expose C/C++ code for use from a variety of high level programming languages. The idea is to feed C/C++ header files into SWIG and SWIG then generates the 'glue' code so that your C/C++ library can be used from another language such as Python, Java, C#, Ruby, Perl etc. Currently, there are implementations for supporting over 20 different target languages. Please visit SWIG's home page at http://www.swig.org.













Ready for Beta / Meeting MICCAI / 15th September

  • [GL-03] [ITK-2530] - [--%] - Port the SWIG interface gen. to C++, (alex)
  • [GL-09] [ITK-2531] - [33%] - Binary distribution, (alex)
    • one full build, sub package ( python, java, tcl, dev (cmake, swig interfaces, ...) ) independently installable, possible to distribute
    • generation with CPack
  • [GL-07] [ITK-2539] – [75%] - Extend support to more types, (unsigned long for win 64 ) (Alex)

Ready for 15 october

  • (*)[GL-02] [ITK-2532] - [--%] - Add support for C#, (gaethan)
  • [GL-04] [ITK-2533] - [--%] - Add support for Python 3, (gaetan)

Ready for 15 November

  • [GL-10] [ITK-2534] – [--%] - language specific array conversion, (NOTE: simple itk did it for C# and java, we have it in python) (python almost done, java and C# is being worked out in simpleITK, wait for them) (gaethan) (depends on C#)
  • [GL-13] [ITK-2536] - [--%] - Target language inheritance, swig expertise, all languages (gaethan) (need C# and python3)
  • [GL-14] [ITK-2529] - [--%] - Automatic type selection in Python, (gaetan)
  • [GL-12] [ITK-2535] - [--%] - Automatic Inline documentation, done in python, prototype existing in Java. all is done in python, so we need to port it to C++ (see GL-03) (alex?)
  • [GL-17] [ITK-2537] – [--%] - Documentation (user guide) (all)
  • [GL-18] [ITK-2538] – [--%] - Documentation (dev. Guide) (all)

NOTE

  • gcc-xml => does not work under MSVC 2008 and 2010 !!