[Insight-developers] Explicit Instantiation Proposal
Simon Warfield
warfield at crl.med.harvard.edu
Wed Apr 26 09:43:21 EDT 2006
Miller, James V (GE, Research) wrote:
> Brad,
>
> Thanks for putting together this page. I was hanging with it until we got
> to the handling of multiple template arguments. My concern is whether developers
> are going to be able to write the macros like
>
> #define ITK_TEMPLATE_Vector(_, EXPORT, T, D) namespace itk { \
> (2(class EXPORT Vector< T,D >)) \
> (1(EXPORT std::ostream& operator<<(std::ostream&, \
> const Vector< T,D >&))) \
> (1(EXPORT std::istream& operator>>(std::istream&, \
> Vector< T,D >&))) \
> }
>
>
>
Look at it from the point of view of a new student learning medical
imaging, and considering to use ITK.
Weighing the pros and cons of sophisticated C++, with templates and
image processing of N dimensional arbitrary type voxel data.
All the student needs to do is work with macros like that, and it will
save the compiler a lot of time and a lot of disk space too!
> When we get to this level of complexity are we better off simply writing out
> the template instantition? Granted, it would be awfully repetitive (having to put
> in similar lines for each instantiation) but more tractable for a developer.
>
> I am all for macros for simplifying the export/import mayhem. So the question is
> whether this
>
> // Bottom of itkFoo.h
> namespace itk {
> #if (...compiler supports extern instantiation...)
> extern template class ITKCommon_EXPORT Foo<int>;
> #elif (...compiler supports do_not_instantiate...)
> # pragma do_not_instantiate class ITKCommon_EXPORT Foo<int>
> #endif
> }
>
> could be simplified to something like
>
> TEMPLATE_EXPORT(ITKCommon) Foo<int>;
>
> so the Foo<int> or Vector<double, 3> is not passed into the macro.
>
> Jim
>
>
>
>
> -----Original Message-----
> From: insight-developers-bounces+millerjv=crd.ge.com at itk.org
> [mailto:insight-developers-bounces+millerjv=crd.ge.com at itk.org]On Behalf
> Of Brad King
> Sent: Tuesday, April 25, 2006 6:43 PM
> To: Insight Developers
> Cc: Julien Jomier; Zachary Pincus
> Subject: [Insight-developers] Explicit Instantiation Proposal
>
>
> Hello, all:
>
> I've added a proposal entry on the ITK Wiki describing the explicit
> instantiation design. See the page for details:
>
> http://www.itk.org/Wiki/Proposals:Explicit_Instantiation
>
> So far I've completed the basic motivation and implementation of the
> macro-based instantiation syntax. I'll finish the "Writing
> Instantiation Macros" and "Organizing Source Files" sections at the
> bottom later this week.
>
> Also, I'd like help from Julien, Benoit, Gaetan, and Zachary to complete
> the "Generating Instantiations" section. Likely this will overlap alot
> with wrapper generation, and I'd like to take knowledge from the WrapITK
> project. Some of the discussion will have to wait until I've completed
> the section on Organizing Source Files because many of the files
> mentioned in that section will need to be generated. If you look at the
> Code/Common/Templates directory in current ITK CVS you will see examples
> of these files. Take a look also in Code/Common/*.h for places that
> include files from the Templates subdirectory.
>
> Please take a look and post feedback.
>
> Thanks,
> -Brad
> _______________________________________________
> Insight-developers mailing list
> Insight-developers at itk.org
> http://www.itk.org/mailman/listinfo/insight-developers
> _______________________________________________
> Insight-developers mailing list
> Insight-developers at itk.org
> http://www.itk.org/mailman/listinfo/insight-developers
>
--
Simon
More information about the Insight-developers
mailing list