|
From: Barry S. <ba...@ba...> - 2008-12-28 11:01:08
|
On 24 Dec 2008, at 00:15, William Newbery wrote:
> > Cannot be done. Python can only call C code that meets its API
> > specification. C++ loses on two counts its not C and its not
> python API.
>
> I think you missed what I meant. I dont want python to touch that
> stuff, I want it only for other c++ objects in the same project ie:
>
> class Direct3D : public Py::ExtensionObject<Direct3D>
> {
> ...
> Py::Object Render(const Py::Tuple &args);//--- method for use by
> python
> ...
> IDirect3DDevice9* GetDevice();//--- ONLY used by other c++
> objects in this project, like say the sprite class that needs to do:
> "d3d->GetDevice()->DrawPrimitive(D3DPT_TRIANGLEFAN, 0, 2)" etc
> };
>
> So basicly what I'm saying is that within the c++ code can I use the
> Direct3D* object directly, and ignore the python stuff all together
> except for maintaining the refrence count so it cant get deleted
> while its still used by c++ objects. I dont want python to even know
> about the GetDevice method and IDirect3DDevice9 interface, thats
> soley for internal use by my c++ project.
The error you made was not letting Python handle the ref counting. Fix
that as I suggested and you will be good.
If you have private objects that Python does not need to see manage
them in C++ way.
Barry
|