[Insight-developers] compilation errors in MapContainer, CellInterface and AutoPointer

Gaëtan Lehmann gaetan.lehmann at jouy.inra.fr
Sat Jul 18 06:40:12 EDT 2009


I have to move on, and feel very uncomfortable with all those  
uncommited changes in my repositories.
Without much replies, I'll begin to commit my not so good fixes next  
week.

Gaëtan


Le 28 juin 09 à 20:36, Gaëtan Lehmann a écrit :

>
> Dear developers,
>
> I need some advices on the best way to fix the errors below!
> I'm quite sure that the fix I would make by myself in that part of  
> the toolkit wouldn't be good enough.
>
> I've made a clean wrapping of the basic classes for QuadEdgeMesh. I  
> just need to fix ITK before commiting that work to WrapITK, to avoid  
> reporting the errors on the dashboard.
>
> Thanks,
>
> Gaëtan
>
>
> Le 16 mai 09 à 12:30, Gaëtan Lehmann a écrit :
>
>>
>> Hi,
>>
>> Alex was in my lab last wednesday, and we began to wrap the  
>> QuadEdgeMesh stuff in WrapITK. This is a quite complex set of  
>> classes, which is highlighting some problems both in WrapITK and  
>> ITK. I'm taking the WrapITK's problem — here are the other ones:
>>
>> * I get an error in the method void  
>> itk::MapContainer::Reserve(ElementIdentifier):
>>
>> /Users/glehmann/src/Insight/Code/Common/itkMapContainer.txx: In  
>> member function ‘void itk::MapContainer<TElementIdentifier,  
>> TElement>::Reserve(TElementIdentifier) [with TElementIdentifier =  
>> itk::Mesh<double, 3u, itk::QuadEdgeMeshTraits<double, 3u, bool,  
>> bool, float, float> >::BoundaryAssignmentIdentifier, TElement =  
>> long unsigned int]’:
>> /Users/glehmann/src/contrib-itk/quadmesh/build/Wrapping/ 
>> wrap_itkBinaryMask3DMeshSourcePython.cpp:22596:   instantiated from  
>> here
>> /Users/glehmann/src/Insight/Code/Common/itkMapContainer.txx:248:  
>> error: conversion from ‘long unsigned int’ to non-scalar type  
>> ‘itk::Mesh<double, 3u, itk::QuadEdgeMeshTraits<double, 3u, bool,  
>> bool, float, float> >::BoundaryAssignmentIdentifier’ requested
>>
>> The problematic code is:
>>
>> template <typename TElementIdentifier, typename TElement>
>> void
>> MapContainer< TElementIdentifier , TElement >
>> ::Reserve(ElementIdentifier sz)
>> {
>>   ElementIdentifier curSize = this->Size();
>>   while ( curSize < sz )
>>     {
>>     this->CreateIndex(curSize);
>>     curSize = this->Size();
>>     }
>> }
>>
>> Either that code, which tries to convert a number to a class, or  
>> the type used for TElementIdentifier (itk::Mesh<double, 3u,  
>> itk::QuadEdgeMeshTraits<double, 3u, bool, bool, float, float>  
>> >::BoundaryAssignmentIdentifier), is wrong here.
>> Any idea about how to fix that?
>>
>>
>>
>> * The macro itkCellCommonTypedefs( celltype ) in itkCellInterface.h  
>> provides some common typedefs for the cell types, but also a New()  
>> method, which makes swig generate invalid code.
>>
>>        SelfAutoPointer   New(void) {                 \
>>               SelfAutoPointer ptr( new celltype );   \
>>               ptr.TakeOwnership();                   \
>>               return ptr;                            \
>>               }                                      \
>>
>> This New() method looks quite strange to me, because it is not  
>> static, and thus already require an object to be used. Also, I  
>> tried to simply comment that method in the macro (and in  
>> itkQuadEdgeMeshLineCell.h/txx), and it works - no code seems to use  
>> it.
>> So, is it a good fix to simply drop that method?
>>
>>
>>
>> * The method itk::AutoPointer::Print produce an error when built
>>
>> /usr/local/include/InsightToolkit/Common/itkAutoPointer.h: In  
>> member function ‘TObjectType*  
>> itk::AutoPointer<TObjectType>::Print(std::ostream&) const [with  
>> TObjectType = itk::CellInterface<double,  
>> itk::QuadEdgeMeshCellTraitsInfo<3, float, float, long unsigned int,  
>> long unsigned int, unsigned char, itk::QuadEdgeMeshPoint<float, 3u,  
>> itk::GeometricalQuadEdge<long unsigned int, long unsigned int,  
>> bool, bool, true> >, itk::MapContainer<long unsigned int,  
>> itk::QuadEdgeMeshPoint<float, 3u, itk::GeometricalQuadEdge<long  
>> unsigned int, long unsigned int, bool, bool, true> > >,  
>> std::set<long unsigned int, std::less<long unsigned int>,  
>> std::allocator<std::_Bit_type> >, itk::GeometricalQuadEdge<long  
>> unsigned int, long unsigned int, bool, bool, true> > >]’:
>> /usr/local/include/InsightToolkit/Common/itkAutoPointer.h:189:  
>> error: ‘class itk::CellInterface<double,  
>> itk::QuadEdgeMeshCellTraitsInfo<3, float, float, long unsigned int,  
>> long unsigned int, unsigned char, itk::QuadEdgeMeshPoint<float, 3u,  
>> itk::GeometricalQuadEdge<long unsigned int, long unsigned int,  
>> bool, bool, true> >, itk::MapContainer<long unsigned int,  
>> itk::QuadEdgeMeshPoint<float, 3u, itk::GeometricalQuadEdge<long  
>> unsigned int, long unsigned int, bool, bool, true> > >,  
>> std::set<long unsigned int, std::less<long unsigned int>,  
>> std::allocator<std::_Bit_type> >, itk::GeometricalQuadEdge<long  
>> unsigned int, long unsigned int, bool, bool, true> > >’ has no  
>> member named ‘Print’
>>
>> ObjectType *Print (std::ostream& os) const
>>   {
>>   // This prints the object pointed to by the pointer
>>   (*m_Pointer).Print(os);
>>   os << "Owner: " << m_IsOwner << std::endl;
>>   return m_Pointer;
>>   }
>>
>> the itk::CellInterface class doesn't define a Print method, so the  
>> Print method in AutoPointer seems to be wrong. What is the better  
>> fix - drop the Print method in itk::AutoPointer, or adding a Print  
>> method in all the cell classes?
>>
>> * The template are very complex to instantiate. There is a lot of  
>> template parameters to give. It would be great to simplify the  
>> instantiation by providing good enough default values.
>>
>> Thanks again Alex for your presentation. My colleagues were very  
>> impressed by your project and your work :-)
>>
>> Gaëtan
>>
>>
>> -- 
>> 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  http://www.mandriva.org
>> http://www.itk.org  http://www.clavier-dvorak.org
>>
>> _______________________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>>
>> Please keep messages on-topic and check the ITK FAQ at: http://www.itk.org/Wiki/ITK_FAQ
>>
>> Follow this link to subscribe/unsubscribe:
>> http://www.itk.org/mailman/listinfo/insight-developers
>
> -- 
> 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  http://www.itk.org
> http://www.mandriva.org  http://www.bepo.fr
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the ITK FAQ at: http://www.itk.org/Wiki/ITK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.itk.org/mailman/listinfo/insight-developers

-- 
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  http://www.itk.org
http://www.mandriva.org  http://www.bepo.fr

-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 203 bytes
Desc: Ceci est une signature ?lectronique PGP
URL: <http://www.itk.org/mailman/private/insight-developers/attachments/20090718/ffeaa1c9/attachment.pgp>


More information about the Insight-developers mailing list