[vtk-developers] Smart pointer declaration macro?

David Cole david.cole at kitware.com
Fri Jan 8 15:52:40 EST 2010


On Fri, Jan 8, 2010 at 3:41 PM, David Gobbi <david.gobbi at gmail.com> wrote:

> On Fri, Jan 8, 2010 at 1:38 PM, David Doria <daviddoria+vtk at gmail.com<daviddoria%2Bvtk at gmail.com>>
> wrote:
> > On Fri, Jan 8, 2010 at 3:33 PM, Karthik Krishnan
> > <karthik.krishnan at kitware.com> wrote:
> >> Or have these as typdefs and/or factory methods in a VTK class, as is
> >> done in ITK (that would be internally handled via macros in the
> >> class), so that usage syntax looks like.
> >>
> >>  vtkPoints::SmartPointer = vtkPoints::SmartNew();
> >> or
> >>  vtkPoints::SmartPointer instance(1);
> >>
> >>
> >>
> >>
> >>
> >> On Fri, Jan 8, 2010 at 3:26 PM, David Gobbi <david.gobbi at gmail.com>
> wrote:
> >>> On Fri, Jan 8, 2010 at 1:15 PM, David Doria <daviddoria+vtk at gmail.com<daviddoria%2Bvtk at gmail.com>>
> wrote:
> >>>> I've seen the use of something like this:
> >>>>
> >>>> #define SPNEW(instance, type) \
> >>>> vtkSmartPointer<type> instance = vtkSmartPointer<type>::New();
> >>>>
> >>>> in many of the tests and elsewhere. It seems like a reasonable savings
> >>>> of a whole bunch of characters that appears many many times in most
> >>>> functions. Could we standardize something like this so it can be used
> >>>> universally without having to see this little #define in every file it
> >>>> is used in?
> >>>>
> >>>> Thoughts?
> >>>
> >>> Doesn't VTK have enough macros already? ;)
> >>>
> >>> There are other ways to reduce the repetition, without using macros:
> >>>
> >>> 1) Add a new constructor argument for smart pointers:
> >>>
> >>> vtkSmartPointer<type> instance(1); // create an smart pointer and
> >>> allocate an object at the same time
> >>> vtkSmartPointer<type> instance(0); // create a smart pointer with
> >>> "null" as the initial pointer
> >>>
> >>> 2) Add a non-static "New" method for smart pointers:
> >>>
> >>> vtkSmartPointer<type> instance;
> >>> instance.InstantiateNew();
> >>>
> >>> etc.
> >>>
> >>>   David
> >
> >
> > Sure, I hate macros :)
> >
> > So how do we turn these good suggestions into a final conclusion and
> > course of action?
> >
> > My choice/thought after seeing these initial comments is that it would
> > be nice if ITK and VTK shared a similar style (the ::SmartPointer).
> >
> > Bill - there is plenty of mystery even with the additional typing :)
> >
> > David D.
>
> Actually, I'll give a "+1" to Bill's comment because I do like code to
> be as explicit as possible.
>
>  David G
>
>
Me too. +1.

Which sort of means eliminating all the existing SPNEW macros from test
files, doesn't it...? :-)


David C.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtk-developers/attachments/20100108/bd521935/attachment.html>


More information about the vtk-developers mailing list