[vtk-developers] Smart pointer declaration macro?

David Doria daviddoria+vtk at gmail.com
Fri Jan 8 15:58:25 EST 2010


On Fri, Jan 8, 2010 at 3:54 PM, Bill Lorensen <bill.lorensen at gmail.com> wrote:
> And VTK_CREATE? And who knows what others...
>
> On Fri, Jan 8, 2010 at 3:52 PM, David Cole <david.cole at kitware.com> wrote:
>> 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>
>>> 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>
>>> >>> 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.
>>
>> _______________________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html

Ok, so should I remove those types of things from tests as I come across them?

David D.



More information about the vtk-developers mailing list