From: William S F. <ws...@fu...> - 2015-08-29 12:19:52
|
On 27 August 2015 at 16:58, Kris Thielemans <kri...@gm...> wrote: > Dear all > > I've been trying to kill a few more errors when running the test-suite for > Matlab. One example that fails is voidtest. The reason for that is that > voidtest_runme.m (an almost-copy of the Octave version) uses the swig_this > function, which we currently don't have. > > Looking at the Octave implementation, it says that swig_this "returns the > underlying C/C++ pointer of a SWIG-wrapped object". When checking > voidtest_runme.py, it corresponds to "object.this" in Python. > > Now we (i.e. Joel!) can probably make such a function for the Matlab > version, but I don't understand why someone would need to have access to > this. It looks quite unsafe to me. > > Can anyone clarify this? > The statically typed languages (Java, C#...) don't provide access to the underlying C pointer by default, but it is possible for a user to get access to it via typemaps that modify the wrapped proxy class. Python makes it available by default. I'm not entirely sure what the other languages do. I don't think it is terribly important what you decide. Access to the underlying pointer could be useful for various reasons such identifying the underlying pointer/object. I doubt this is needed very much though. It could certainly be unsafe to modify, but not necessarily for read only access. SWIG doesn't attempt to stop users doing anything dangerous though, see http://swig.org/Doc3.0/Introduction.html#Introduction_nn13. William |