[vtk-developers] Smart pointer declaration macro?

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


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.



More information about the vtk-developers mailing list