[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