<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
JC,
<div class=""><br class="">
</div>
<div class=""><br class="">
<div>
<blockquote type="cite" class="">
<div class="">On Nov 14, 2016, at 2:30 PM, Jean-Christophe Fillion-Robin <<a href="mailto:jchris.fillionr@kitware.com" class="">jchris.fillionr@kitware.com</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div dir="ltr" class="">Hi Brad, <br class="">
<div class="gmail_extra"><br class="">
> Make an explicit instantiation library with the ITK classes part of the shared libraries' interfaces.<br class="">
<br class="">
My understanding is that we have been working on this for the past year without much success. Getting this right across compiler is difficult and hard to maintain<br class="">
</div>
</div>
</div>
</blockquote>
<div><br class="">
</div>
<div>It is a potential solutions for smaller projects which have a couple well defined ITK classes in the API. Yes is certainly is hard to maintain. SimpleITK did this and were are seeing some portabilities to this solution today. But SimpleITK’s motivation
 was for library size reduction and compilation efficiency.</div>
<div><br class="">
</div>
<div>This is why there is a additional suggestion of restoring ITK’s wrapping infrastructure to do explicit instantiation. With the terrific advancements of class_xml and the general infrastructure, it would be ideal to enable the option to instantiate the
 templated itk::Objects based on the CMake parameters used for languages wrapping. On a large scale I don’t see an alternative to automate the explicit instantiation.</div>
<br class="">
<blockquote type="cite" class="">
<div class="">
<div dir="ltr" class="">
<div class="gmail_extra"><br class="">
</div>
<div class="gmail_quote"><br class="">
<blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote">
Does Slicer use ITK objects any where in it’s public API’s?</blockquote>
</div>
<div class="gmail_extra"><br class="">
</div>
<div class="gmail_extra">Yes, in few places:<br class="">
<br class="">
</div>
</div>
</div>
</blockquote>
<div><br class="">
</div>
<div>Do these really produce itk::Objects? Here is my quick view.</div>
<br class="">
<blockquote type="cite" class="">
<div class="">
<div dir="ltr" class="">
<div class="gmail_extra"> Base/CLI/itkPluginUtilities.h<br class="">
</div>
</div>
</div>
</blockquote>
<div><br class="">
</div>
<div>I see some template functions and an itk::ProcessObject in the interface. That does not look like the problematic pattern.</div>
<br class="">
<blockquote type="cite" class="">
<div class="">
<div dir="ltr" class="">
<div class="gmail_extra"> Libs/vtkITK/*<br class="">
</div>
</div>
</div>
</blockquote>
<div><br class="">
</div>
<div>The vtkITK infrastructure is an example of the proposed solution #4</div>
<br class="">
<blockquote type="cite" class="">
<div class="">
<div dir="ltr" class="">
<div class="gmail_extra"> Libs/MRML/IDImageIO/*<br class="">
</div>
</div>
</div>
</blockquote>
<div><br class="">
</div>
<div>This appears to be an ITK ImageIO Factory. This pattern should be correctly exports specified and not an issue with the templated ImageFileReader.</div>
<br class="">
<blockquote type="cite" class="">
<div class="">
<div dir="ltr" class="">
<div class="gmail_extra"> Libs/MRML/Core/vtkITKTransformInverse.h<br class="">
</div>
</div>
</div>
</blockquote>
<div><br class="">
</div>
<div>OK, this one could have issues ITK BSplines with ITK Images. Would need a close look.</div>
<div><br class="">
</div>
<div><br class="">
</div>
<div>I was hoping that after the ITK Transform factory most of the dynamic_cast issues would be gone. What is remaining?</div>
<br class="">
<blockquote type="cite" class="">
<div class="">
<div dir="ltr" class="">
<div class="gmail_extra"><br class="">
<br class="">
</div>
<div class="gmail_extra">Thanks<br class="">
</div>
<div class="gmail_extra">Jc<br class="">
</div>
<div class="gmail_extra"><br clear="all" class="">
<br class="">
-- <br class="">
<div class="gmail_signature">+1 919 869 8849<br class="">
</div>
</div>
</div>
</div>
</blockquote>
</div>
<br class="">
</div>
</body>
</html>