Brad, In an application, by separating the declaration (in a .h file) from the definition (in a .cxx file) solves the problem. But this is a PITA for an application that currently uses itkEventMacro. Upsetting customers is not moving forward.
On Tue, May 26, 2015 at 11:58 AM, Bill Lorensen <[email protected]> wrote: > Brad, > > That is not the problem. The old macro duplicated implementations in > each file that included a common .h file. The new api changes that. > But, is it important. I think not. The old, less elegant form, worked. > > > On Tue, May 26, 2015 at 11:44 AM, Bradley Lowekamp > <[email protected]> wrote: >> >> 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 <[email protected]> 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 >>> <[email protected]> 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 <[email protected]> >>>> 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 <[email protected]> >>>>> 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 >>>>>> <[email protected]> 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 >>>>>>> <[email protected]> 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 >>> [email protected] >>> http://public.kitware.com/mailman/listinfo/community >> > > > > -- > 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
