[ITK-dev] [ITK] ITK API Change (was ITKApps failing after recent commit)

Bradley Lowekamp blowekamp at mail.nih.gov
Tue May 26 11:44:15 EDT 2015


Lets try to keep moving forward.

The itkEventMacro is not really used in ITK. It should not be hard to revert it to the old behavior.

All that is likely needed is to improve the usage of the ITKEvent_EXPORT define [1]. It looks like the re-write of these macros was only intended for internal ITK usage as it's defined an ITKCommom_EXPORT.

Brad



[1] https://github.com/InsightSoftwareConsortium/ITK/blob/master/Modules/Core/Common/include/itkEventObject.h#L108

On May 26, 2015, at 11:37 AM, Bill Lorensen <bill.lorensen at gmail.com> wrote:

> I agree. I will soon have a patch to the ITKApps that works for both
> versions of ITK. This will illustrate how much work is required to
> support both API's. The current ITK makes itkEventMacro dangerous and
> worthless.
> 
> On Tue, May 26, 2015 at 11:31 AM, Matt McCormick
> <matt.mccormick at kitware.com> wrote:
>> Hi Bill,
>> 
>> Thanks for bringing attention to this.  If we cannot find a way for
>> external Event code to work without modification, I thing we should
>> revert the change before we release 4.8.
>> 
>> 2 cents,
>> Matt
>> 
>> On Tue, May 26, 2015 at 11:26 AM, Bill Lorensen <bill.lorensen at gmail.com> wrote:
>>> itkEventMacro no longer works the way it used to. Applications that used
>>> itkEventMacro(myEvent, itk::UserEvent);
>>> must break up the statement into two statements and two files:
>>> in the .h file
>>> itkEventMacroDeclaration(myEvent,itk::UserEvent);
>>> in the .cxx file
>>> itkEventMacroDefinition(myEvent,itk::UserEvent);
>>> 
>>> The problems occurs when an application has multiple source files that
>>> include the file with itkEventMacro. Duplicate symbols are created
>>> now. Prior to the API-break this was fine.
>>> 
>>> Application code that uses itkEventMacro that wants to support ITK
>>> pre-the-API-break and post-the-API-break will need further statements.
>>> 
>>> I am working on getting the ITKApps to work with both pre and post
>>> API-break versions.
>>> 
>>> The unintended consequences of this API break are troublesome.
>>> 
>>> On Mon, May 25, 2015 at 3:10 PM, Bill Lorensen <bill.lorensen at gmail.com> wrote:
>>>> itksnap also has issues with the API change. I'll try to make a small
>>>> example that illustrates the problem.
>>>> 
>>>> 
>>>> 
>>>> On Mon, May 25, 2015 at 12:08 PM, Bill Lorensen <bill.lorensen at gmail.com> wrote:
>>>>> Looks to me that the API for itkEventMacro has changed. This is bad.
>>>>> In ITKApps there are several definitions like this. How must these be
>>>>> changed?
>>>>> 
>>>>> namespace fltk {
>>>>> 
>>>>> /**
>>>>> *  List of the events expected in this domain
>>>>> */
>>>>> itkEventMacro( RedrawEvent,            itk::UserEvent );
>>>>> itkEventMacro( GlDrawEvent,            itk::UserEvent );
>>>>> itkEventMacro( VolumeReslicedEvent,    itk::UserEvent );
>>>>> itkEventMacro( ClippingPlaneEvent,     itk::UserEvent );
>>>>> 
>>>>> 
>>>>> 
>>>>> } // end namespace fltk
>>>>> 
>>>>> 
>>>>> On Mon, May 25, 2015 at 11:59 AM, Bill Lorensen <bill.lorensen at gmail.com> wrote:
>>>>>> Since this topic was merged, ITKApps failk to build. I narrowed it
>>>>>> down using git commit.
>>>>>> 
>>>>>> http://review.source.kitware.com/#/c/19729/
>>>>>> 
>>>>>> Here is the failing dashboard entry:
>>>>>> https://open.cdash.org/viewBuildError.php?buildid=3828894
>>>>>> 
>>>>>> I'll take a lot to see if I can fix it.
>>>>>> 
>>>>>> Bill
>>>>> 
>>>>> 
>>>>> 
>>>>> --
>>>>> Unpaid intern in BillsBasement at noware dot com
>>>> 
>>>> 
>>>> 
>>>> --
>>>> Unpaid intern in BillsBasement at noware dot com
>>> 
>>> 
>>> 
>>> --
>>> Unpaid intern in BillsBasement at noware dot com
>>> _______________________________________________
>>> 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.php
>>> 
>>> 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://public.kitware.com/mailman/listinfo/insight-developers
> 
> 
> 
> -- 
> Unpaid intern in BillsBasement at noware dot com
> _______________________________________________
> 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.php
> 
> 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://public.kitware.com/mailman/listinfo/insight-developers
> _______________________________________________
> Community mailing list
> Community at itk.org
> http://public.kitware.com/mailman/listinfo/community



More information about the Insight-developers mailing list