[Insight-developers] Re: Integrating WrapITK into ITK CVS

Gaetan Lehmann gaetan.lehmann at jouy.inra.fr
Thu Nov 2 12:46:37 EST 2006


Here is a new version able to read the .idx files.

Do you know how to build all the generated c++ files in a single shared  
object, as is it currently done ?


On Thu, 02 Nov 2006 16:37:43 +0100, Gaetan Lehmann  
<gaetan.lehmann at jouy.inra.fr> wrote:

> On Thu, 02 Nov 2006 16:11:58 +0100, Bill Hoffman  
> <bill.hoffman at kitware.com> wrote:
>
>> Gaetan Lehmann wrote:
>>> On Tue, 29 Aug 2006 00:01:12 +0200, Bill Hoffman
>>> <bill.hoffman at kitware.com> wrote:
>>>
>>>> OK, so it sounds like the next step would be to investigate the  
>>>> generation
>>>> of swig .i files from gccxml.  I agree it would solve a bunch of  
>>>> problems
>>>> if it can be made to work.    It would be better to get this working,
>>>> than to do another swig update in CableSwig.  Now, we just need the  
>>>> time
>>>> to do it....
>>>>
>>>> As far as the investigation goes, I would say hand wrapping a few
>>>> classes in itk that cross wrapper library boundaries would be the
>>>> first step.   Any takers?
>>>>
>>>
>>> yes, I've done it, and it seem to work :-))
>>>
>>> I have used (the very good) pygccxml to parse the output of gccxml for  
>>> the
>>> wrap_itkImage.cxx file, and generated an output which compile and run
>>> without problem.
>>> The generator program is attached.
>>>
>>> The program takes 2 arguments:
>>>
>>>    igenerator.py wrap_XXX.xml wrap_XXX.cxx
>>>
>>> wrap_XXX.cxx is required to be included in the generated c++ file
>>> It currently display the result on the standard output - that's only a
>>> test program which should be recoded in c.
>>>
>>> The next step is to define how to organize things in a consistent way,  
>>> so
>>> it can scale with the whole wrapping process. For example, a wrapper  
>>> must
>>> know that a superclass is wrapped in another file. Any Idea ?
>>>
>>> Regards,
>>>
>>> Gaetan
>> Another issue is this:
>>  ::itk::ImageRegion<2> const & GetBufferedRegion() const;
>>
>> That is going to have to use the typedef name for ImageRegion and not  
>> the template name.
>
> The problem here is that the ImageRegion wrapper will be defined in  
> another file. If we define it in the same file, the full c++ name is  
> replaced by the wrapped name, and there is no problem anymore.
>
>> Also, you really have not done it....   We need a few classes that  
>> cross a library boundary
>> that work with .i files.
>>
>> Basically, for each class that is referenced in a class that is being  
>> wrapped you need to know:
>> (by referenced, I mean return value, function argument, or parent class)
>>
>> -  is this class wrapped
>> -  if it is wrapped, what is its typedef name
>> -  if it is wrapped what is the name of the module that it is wrapped  
>> in.
>>
>> The .i files will have to do the correct swig import , include stuff to  
>> get all of this to work.
>> Currently, the .idx files do this step.   I do not think there is a way  
>> around the .idx files,
>> but maybe there is.   Somehow we have to answer the above questions.   
>> Also, a small example
>> done by hand that does something like this would be a good starting  
>> place:
>>
>> class A  -- in module A
>> class B -- in module B    //
>> class C -- in module C
>>
>>
>> class A
>> {
>> public:
>> virtual A* foo();
>> };
>>
>> class B : public A
>> {
>> public:
>> virtual A* foo();
>> };
>>
>> class C : public B
>> {
>> virtual A* foo();
>> };
>>
>
> Yes that's what I mean by "The next step is to define how to organize  
> things in a consistent way, so it can scale with the whole wrapping  
> process" - I must say your explanation is much clear :-)
>
> The small program I wrote is only there to show that it can work -  
> that's the "next step" you have defined last august. There is still many  
> problems to solve, and surely most of the solutions to those problems  
> are already there in the current wrapping system.
>
> Someone want to take the next step ?
>
> Gaetan
>
>



-- 
Gaëtan Lehmann
Biologie du Développement et de la Reproduction
INRA de Jouy-en-Josas (France)
tel: +33 1 34 65 29 66    fax: 01 34 65 29 09
http://voxel.jouy.inra.fr
-------------- next part --------------
A non-text attachment was scrubbed...
Name: igenerator.py
Type: application/octet-stream
Size: 6748 bytes
Desc: not available
Url : http://www.itk.org/mailman/private/insight-developers/attachments/20061102/e4c6939d/igenerator.obj


More information about the Insight-developers mailing list