[vtk-developers] VTK CVS broken: vtkInformationExecutivePortVectorKey and vtkExecutive link error in Debug only

Brad King brad.king at kitware.com
Fri Oct 19 11:30:34 EDT 2007


David C Thompson wrote:
> On Thu, 2007-10-18 at 16:05 -0400, Brad King wrote:
>> The correct split would be to leave "vtkInformation" in Common, and then
>> create a "vtkPipelineInformation" in Filtering that derives from
>> vtkInformation ...
>> this will break way too much code.  I think renaming the class in Common
>> to vtkInformationBase and then leaving vtkInformation in Filtering will
>> work.  ... 
>>
>> I propose the following (radical) solution.  Instead of splitting the
>> *interface* we should split the *implementation*.  All of the offending
>> methods are non-virtual, so they will only be needed by the linker if
>> someone calls them.  Code that links to vtkCommon only cannot possibly
>> need information about vtkExecutive and therefore will not be calling
>> the methods.  So what we need to do is take the implementation of
>> executive-related vtkInformation methods and move it out of
>> Common/vtkInformation.cxx and put it in a new
>> Filtering/vtkInformation.cxx file.  The filtering version of the file
>> would contain something like
> 
> I would much prefer this to having vtkInformationBase. However, I the
> Python/Tcl/Java wrappers would probably then be broken since there isn't
> a way to split the wrapper code across libraries.

We'll just have to BTX/ETX the offending methods.  From wrapper
languages the convenience methods do not add that much convenience
anyway.  The key types can be directly used to extract information about
executives.  Also, I don't think code using the wrapper languages would
ever have to look at these keys.

> Also, I was under the impression that some linkers complain (fail?) when
> some functions (not necessarily just virtual ones) are not implemented.

I don't think so.  Most VTK classes have copy constructors and
assignment operators declared but purposely not implemented.  The linker
will complain only if someone calls the method.

-Brad



More information about the vtk-developers mailing list