[vtk-developers] Tcl wrapping and output array arguments
josp.jorge at gmail.com
Mon Mar 30 10:31:34 EDT 2015
I was also studying the vtkWrapTcl.c code, just the part related to the
tasks described in 2).
For instance, regarding to vtkVariant value, the function int
checkFunctionSignature(ClassInfo *data) reject to wrap a method call if the
return value is vtkVariant or expect an argument of type vtkVariant in one
of this checks:
if ((returnType & VTK_PARSE_INDIRECT) != VTK_PARSE_POINTER) // the return
type is value not a pointer
args_ok = 0;
if ((argType & VTK_PARSE_INDIRECT) != VTK_PARSE_POINTER) // the argument is
a value not a pointer
args_ok = 0;
I think that we can wrap (at least manually) some classes (vtkVariant,
vtkBoundingBox, ...) not derived from vtkObject as new Tcl_ObjType and
provide in vtkTclUtil some helper functions to convert from C++ instances
to Tcl_Obj and the other way from Tcl_Obj to C++ instance.
I'm experimenting with this idea: implement new Tcl_ObjType to wrap
vtkVariant and vtkBoundingBox.
By the way the generated C code could be based in Tcl_Obj *objv interface
instead of char *argv
2015-03-30 15:26 GMT+02:00 David Lonie <david.lonie at kitware.com>:
> On Fri, Mar 27, 2015 at 12:00 PM, David Gobbi <david.gobbi at gmail.com>
>> On Fri, Mar 27, 2015 at 9:35 AM, David Lonie <david.lonie at kitware.com>
>>> On Fri, Mar 27, 2015 at 11:21 AM, David Gobbi <david.gobbi at gmail.com>
>>>> On Fri, Mar 27, 2015 at 8:49 AM, David Lonie <david.lonie at kitware.com>
>>> Would you have time to do this? It looks like we're going to need to
>>> bite the bullet and train the wrappers one way or another. No worries, If
>>> you're too busy, I can give it a shot, though I may need to bug you a bit
>>> while going through. But I really wouldn't mind taking some time to learn
>>> how the wrapping mechanisms work.
>> No, I don't have time. Feel free to bug me with specific questions.
> I've started looking into the wrapping code to add support for methods
> returning vtkBoundingBox. I think I see what needs to happen, let me know
> if anything here sounds wrong:
> 1) Teach the parser about vtkBoundingBox: (basically duplicating what I
> see for vtkUnicodeString)
> 1a) Add #define VTK_BOUNDING_BOX to vtkType.h
> 1b) Add VTK_PARSE_BOUNDING_BOX to vtkParseTypeMap in vtkParse.y
> 1c) Add BoundingBox to the type_name definition in vtkParse.y
> 1d) Add BoundingBox detection to the guess_id_type method in vtkParse.y.
> 1e) Add vtkBoundingBox entry in vtkParse.l
> 2) Teach the wrapper about vtkBoundingBox (Tcl as an example, assuming
> others are similar...)
> 2a) Modify CheckFunctionSignature to allow vtkBoundingBox return types.
> 2b) Modify output_temp to declare the vtkBoundingBox temporary variable.
> 2c) Add a special case for vtkBoundingBox return types in outputFunction
> that converts to a bounds array.
> Sound good? Anything I'm missing?
> Thanks a ton!
> Powered by www.kitware.com
> Visit other Kitware open-source projects at
> Search the list archives at: http://markmail.org/search/?q=vtk-developers
> Follow this link to subscribe/unsubscribe:
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the vtk-developers