[Paraview-developers] addrofthis to give Python the address of a vtkObject

Gerstenberger, Axel Axel.Gerstenberger at Rolls-Royce.com
Thu Aug 18 12:11:45 EDT 2016


Hi Cory,

Just to confirm: We use both variants at various places (maybe copied from different sources) and also for us either version seems to work.
But I have some parallel crashes in our python code that I try to understand and I stumbled of this address issue and wanted to make sure that this is not the reason for that.

A statement from a wrapper expert (or a static method that encodes the advice) would make us more confident that we use the right version.

Regards,
Axel

-----Original Message-----
From: Cory Quammen [mailto:cory.quammen at kitware.com]
Sent: Thursday, August 18, 2016 5:59 PM
To: Gerstenberger, Axel
Cc: ParaView Developers
Subject: Re: [Paraview-developers] addrofthis to give Python the address of a vtkObject

HI Axel,

> When looking through the source code of Paraview (from which we learn all the time for our own code), I found that to get the address of a vtkObject for Python interaction you use code like this:
>
>   // Set self to point to this
>   char addrofthis[1024];
>   sprintf(addrofthis, "%p", somepointer);
>   char *aplus = addrofthis;
>   if ((addrofthis[0] == '0') && ((addrofthis[1] == 'x') || addrofthis[1] == 'X'))
>     {
>     aplus += 2; //skip over "0x"
>     }
>   return std::string(aplus);
>
> However, sometimes you use aplus for referencing the address (e.g. in vtkPythonAnnotationFilter), but sometimes you use directly addrofthis, but still execute the part to compute aplus. This happens for example in vtkPythonView.cxx, line 142 ff.
>
> Since the first version is used a lot, is the second version in vtkPythonView.cxx a bug or does it serve a different purpose?

Hmm, you are right, that is different from other examples where the
object address is passed to Python, and is not intended. It seems to
work, though, or at least it did when I wrote the code.

My hunch is that the Python wrapping handles either case of passing
"0xffffffff" or "ffffffff" to the constructor to create a Python
object from an existing VTK object, but I don't know the Python
wrapping facilities well enough to verify that. Perhaps Python
wrapping guru David Gobbi can answer affirmatively.

> Also, this code snippet appears to be copied to quite a few places, but it is crucial for vtk Python interaction. Maybe a little static method in VTK could be created for that?

If the wrappers in fact do not handle both address formats, then yes
it would make sense to have a static member function that would do
this, probably in vtkPythonUtils.

Thanks,
Cory

> Thanks,
> Axel
>
>
> --
> Dr. Axel Gerstenberger
> Aero Methods and Design Systems Engineering (ET-DSE)
>
> Rolls-Royce Deutschland Ltd & Co KG
> Eschenweg 11, Dahlewitz, 15827 Blankenfelde-Mahlow, Germany
>
> Tel: +49(0)33708-6-3101
> E-Mail: axel.gerstenberger at rolls-royce.com
>
> Absence pending: 14.06.2016
>
> Rolls-Royce Deutschland Ltd & Co KG Sitz/Registered Office: Blankenfelde-Mahlow, Deutschland, Registergericht/Court of Register: Amtsgericht Potsdam, HRA 2731 P, Persönlich haftende Gesellschafterin/General Partner: Rolls-Royce General Partner Limited, Sitz/Registered Office: Derby, United Kingdom, Register: Registry of Companies Wales and England, 4066556, Directors/Geschäftsführer: Paul O’Neil, Alastair McIntosh, Nicole Fehr, Dr. Holger Cartsburg Confidentiality Notice: This email and any attachments are confidential to the intended recipient and may also be privileged. If you are not the intended recipient please delete it from your system and notify the sender. You should not copy it or use it for any purpose nor disclose or distribute its contents to any other person.
> The data contained in, or attached to, this e-mail, may contain confidential information. If you have received it in error you should notify the sender immediately by reply e-mail, delete the message from your system and contact +44 (0) 3301235850 (Security Operations Centre) if you need assistance. Please do not copy it for any purpose, or disclose its contents to any other person.
>
> An e-mail response to this address may be subject to interception or monitoring for operational reasons or for lawful business practices.
>
> (c) 2016 Rolls-Royce plc
>
> Registered office: 62 Buckingham Gate, London SW1E 6AT Company number: 1003142. Registered in England.
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Search the list archives at: http://markmail.org/search/?q=Paraview-developers
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/paraview-developers



--
Cory Quammen
R&D Engineer
Kitware, Inc.
Rolls-Royce Deutschland Ltd & Co KG Sitz/Registered Office: Blankenfelde-Mahlow, Deutschland, Registergericht/Court of Register: Amtsgericht Potsdam, HRA 2731 P, Persönlich haftende Gesellschafterin/General Partner: Rolls-Royce General Partner Limited, Sitz/Registered Office: Derby, United Kingdom, Register: Registry of Companies Wales and England, 4066556, Directors/Geschäftsführer: Paul O’Neil, Alastair McIntosh, Nicole Fehr, Dr. Holger Cartsburg Confidentiality Notice: This email and any attachments are confidential to the intended recipient and may also be privileged. If you are not the intended recipient please delete it from your system and notify the sender. You should not copy it or use it for any purpose nor disclose or distribute its contents to any other person.
The data contained in, or attached to, this e-mail, may contain confidential information. If you have received it in error you should notify the sender immediately by reply e-mail, delete the message from your system and contact +44 (0) 3301235850 (Security Operations Centre) if you need assistance. Please do not copy it for any purpose, or disclose its contents to any other person.

An e-mail response to this address may be subject to interception or monitoring for operational reasons or for lawful business practices.

(c) 2016 Rolls-Royce plc

Registered office: 62 Buckingham Gate, London SW1E 6AT Company number: 1003142. Registered in England.


More information about the Paraview-developers mailing list