Re: SWIG/Euphoria

new topic     » goto parent     » topic index » view thread      » older message » newer message

Lee West wrote:

> Forgive MY C++ ignorance and incompetence as
> well... but don't you need to "destroy" the "circle" and
> "square" objects somewhere in the shapes.exw
> demo?

I should, but I just grabbed the code from the SWIG examples. There's no
destructor in the Shapes class. If you added:

   ~Circle();

you would end up with a destructor method in the code. Since SWIG expects
that it will create the objects. This ends up looking like this:

#define delete_Circle(_swigobj) (delete _swigobj)
extern "C" void  __declspec(dllexport) _wrap_swig_delete_Circle(Circle
*self)
    delete_Circle(self);
}

The problem is that SWIG is expecting that the object to be deleted is
supposed to be a SWIG object. SWIG has a bunch of cool stuff that wraps the
pointers, makes them typesafe, and so on. Of course, SWIG/Euphoria uses none
of this.

As a result, there's no delete() behavior defined. At least, I don't think
so. If 'delete' is a legitimate way to destroy C++ objects, then everything
is cool. If not, I'll need to take a look at how SWIG handles it internally,
and see if I can duplicate it without the overhead.

I was naively thinking I could write:

#define delete _swigobj (~_swigobj)

but I *really* doubt this would work.

Anyone want to whack me with a cluestick here?

Thanks!

-- David "I don't know C" Cuny

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu