[Insight-developers] MRCImageIO & Visual Studio 6.0
Bill Lorensen
bill.lorensen at gmail.com
Tue Jun 15 10:21:35 EDT 2010
Have not had a chance to try with my VS6.
Bill
On Tue, Jun 15, 2010 at 10:03 AM, Karthik Krishnan
<karthik.krishnan at kitware.com> wrote:
> I think what we've done before to help VS6 is also declare one of the
> methods with a slightly different signature by adding const.. something like
>
> template< typename T > foo( const T * );
>
> and
>
> void foo( const void * ) const;
>
> By making the second a const method, the m_MRCHeader iVar would need to be
> mutable. Not sure if this will work, but it may be worth a try if all else
> fails.
>
>
>
>
>
> On Tue, Jun 15, 2010 at 7:27 PM, Bradley Lowekamp <blowekamp at mail.nih.gov>
> wrote:
>>
>> Bill did volunteer to look into this issue by using his version of the
>> compiler.
>> It would not surprise me if VS6 was unable to compile any of the three
>> suggested issues.
>> If the methods needs to be renamed I would suggest something along the
>> lines:
>> UpdateHeaderWIthMinMaxCaller
>> UpdateHeaderWIthMinMaxDispatcher
>> But I am not able to think of how this convention is done else where,
>> where a void argument is casted to it's specific type and another methods is
>> called. So I don't know what we should really follow here.
>> Brad
>>
>> On Jun 15, 2010, at 9:38 AM, Karthik Krishnan wrote:
>>
>> My understanding is that function templates must be inlined. Shouldn't the
>> body of the method be moved from the CXX to the .H file ?
>>
>>
>> On Tue, Jun 15, 2010 at 6:59 PM, Luis Ibanez <luis.ibanez at kitware.com>
>> wrote:
>>>
>>> mm, I'll take that back...
>>>
>>> The method already is a templated member of the class.
>>>
>>> Maybe the problem is the presence of the other non-templated
>>> function with the same name and with a (void *) as an argument.
>>>
>>> template<typename TPixelType>
>>> void UpdateHeaderWithMinMaxMean( const TPixelType * bufferBegin );
>>>
>>> void UpdateHeaderWithMinMaxMean( const void *buffer );
>>>
>>> Would it make sense to rename the second one as something like:
>>>
>>> void UpdateHeaderWithMinMaxMeanGeneric( const void *buffer );
>>>
>>>
>>> for example?
>>>
>>>
>>> Luis
>>>
>>>
>>>
>>> --------------------------------------------------------
>>> On Tue, Jun 15, 2010 at 9:26 AM, Luis Ibanez <luis.ibanez at kitware.com>
>>> wrote:
>>>>
>>>> Hi Brad,
>>>>
>>>> VS 6.0 seems to be unhappy with the attempt of
>>>> using the template argument to the function:
>>>>
>>>> C:\Dashboards\My
>>>> Tests\InsightContinuous\Code\Review\itkMRCImageIO.cxx(516) : error C2062:
>>>> type 'unsigned char' unexpected
>>>>
>>>>
>>>>
>>>>
>>>> http://public.kitware.com/cgi-bin/viewcvs.cgi/Code/Review/itkMRCImageIO.cxx?root=Insight&r1=1.1&r2=1.2
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> It looks like the next best option is to make that function
>>>> become a templated member method of a class.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> Luis
>>>>
>>>>
>>>> -------------------------------------------
>>>> On Mon, Jun 14, 2010 at 2:34 PM, Bill Lorensen <bill.lorensen at gmail.com>
>>>> wrote:
>>>>>
>>>>> I have VS6. I'll give it a go later today,
>>>>>
>>>>> Bill
>>>>>
>>>>> On Mon, Jun 14, 2010 at 2:15 PM, Bradley Lowekamp
>>>>> <blowekamp at mail.nih.gov> wrote:
>>>>> > Bill,
>>>>> > I have already committed a:
>>>>> >
>>>>> > http://public.kitware.com/cgi-bin/viewcvs.cgi/Code/Review/itkMRCImageIO.cxx?root=Insight&r1=1.1&r2=1.2
>>>>> > but unfortunately we are still getting related errors ( different but
>>>>> > related ):
>>>>> > http://www.cdash.org/CDash/viewBuildError.php?buildid=635501
>>>>> > It is likely the overloading of the method which is confusing the
>>>>> > poor VS6
>>>>> > compiler:
>>>>> >
>>>>> > // internal methods to update the min and max in the header based
>>>>> > on
>>>>> > // the data, in the image buffer to be written
>>>>> > template<typename TPixelType>
>>>>> > void UpdateHeaderWithMinMaxMean( const TPixelType * bufferBegin
>>>>> > );
>>>>> > void UpdateHeaderWithMinMaxMean( const void *buffer );
>>>>> > My suggestion would be to rename the second non-templated method.
>>>>> > Perhaps I
>>>>> > should let some one with the VS6 compiler check to see if this is a
>>>>> > working
>>>>> > solution instead of my prior shooting in the dark, which didn't solve
>>>>> > the
>>>>> > issue.
>>>>> > Brad
>>>>> >
>>>>> >
>>>>> > On Jun 14, 2010, at 2:08 PM, Bill Lorensen wrote:
>>>>> >
>>>>> > I think we have done a) in the past.
>>>>> >
>>>>> > On Mon, Jun 14, 2010 at 1:11 PM, Luis Ibanez
>>>>> > <luis.ibanez at kitware.com>
>>>>> > wrote:
>>>>> >
>>>>> > Hi Brad,
>>>>> >
>>>>> >
>>>>> > Visual Studio 6.0 seems to be having trouble with
>>>>> >
>>>>> > the template instantiations from itkMRCImageIO:
>>>>> >
>>>>> > http://www.cdash.org/CDash/viewBuildError.php?buildid=635480
>>>>> >
>>>>> >
>>>>> >
>>>>> > :\Dashboards\My
>>>>> > Tests\InsightContinuous\Code\Review\itkMRCImageIO.cxx(516) :
>>>>> >
>>>>> > error C2893: Failed to specialize function template 'void __thiscall
>>>>> >
>>>>> > itk::Local::MRCImageIO::UpdateHeaderWithMinMaxMean(const TPixelType
>>>>> > *)'
>>>>> >
>>>>> > With the following template arguments:
>>>>> >
>>>>> > 'unsigned char'
>>>>> >
>>>>> >
>>>>> >
>>>>> > I believe that VS6 can't resolve templated functions
>>>>> >
>>>>> > just based on the type of the function argument.
>>>>> >
>>>>> >
>>>>> >
>>>>> > Options to consider are:
>>>>> >
>>>>> >
>>>>> > A) instantiating it as:
>>>>> >
>>>>> > f<T>( T arg )
>>>>> >
>>>>> > or
>>>>> >
>>>>> >
>>>>> > B) Making that function to be a
>>>>> >
>>>>> > templated method member of a class.
>>>>> >
>>>>> >
>>>>> > Do you have any preferences between these two options ?
>>>>> >
>>>>> > (or maybe other options...?)
>>>>> >
>>>>> >
>>>>> >
>>>>> > Thanks
>>>>> >
>>>>> >
>>>>> > Luis
>>>>> >
>>>>> >
>>>>> > _______________________________________________
>>>>> >
>>>>> > Powered by www.kitware.com
>>>>> >
>>>>> > Visit other Kitware open-source projects at
>>>>> >
>>>>> > http://www.kitware.com/opensource/opensource.html
>>>>> >
>>>>> > Kitware offers ITK Training Courses, for more information visit:
>>>>> >
>>>>> > http://kitware.com/products/protraining.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
>>>>> >
>>>>> >
>>>>> >
>>>>> > ========================================================
>>>>> >
>>>>> > Bradley Lowekamp
>>>>> >
>>>>> > Lockheed Martin Contractor for
>>>>> >
>>>>> > Office of High Performance Computing and Communications
>>>>> >
>>>>> > National Library of Medicine
>>>>> >
>>>>> > blowekamp at mail.nih.gov
>>>>> >
>>>>> >
>>>>
>>>
>>>
>>> _______________________________________________
>>> Powered by www.kitware.com
>>>
>>> Visit other Kitware open-source projects at
>>> http://www.kitware.com/opensource/opensource.html
>>>
>>> Kitware offers ITK Training Courses, for more information visit:
>>> http://kitware.com/products/protraining.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
>>>
>>
>>
>> ========================================================
>>
>> Bradley Lowekamp
>>
>> Lockheed Martin Contractor for
>>
>> Office of High Performance Computing and Communications
>>
>> National Library of Medicine
>>
>> blowekamp at mail.nih.gov
>>
>
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Kitware offers ITK Training Courses, for more information visit:
> http://kitware.com/products/protraining.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
>
>
More information about the Insight-developers
mailing list