>>> So with other words no damage is done if I hijack #new for the creation >>> purpose and leaving #initialize to the scripts only for code to setup >>> their smalltalk type parameters. >> >> Yeah, you can even hijack #basicNew (normally a primitive, but a cCall >> is also a "primitive") and do the usual >> >> new [ ^super new initialize ] > > I had a 50% chance of getting it right, and didn't. I obviously meant > > new [ ^self basicNew initialize ] Got stumped :( . I forgot that the class I try to wrap right now is a singleton. With other words in that case I need to assign a c-pointer somehow to the class itself not the instance of it. But the class object is created by smalltalk so I can't mess with it. In fact I need to hack the class itself since using a cCall #new for an object I need to have access to the wrapped engine already. Maybe that's not clear. So let's make an example.
class STSomething which wrapps CSomething.
to create CSomething in c++ land I need a pointer to CEngine in c++
land. But when I assign a cCall for #new in STSomething I do not have
access to the CEngine pointer. For this to work I need the STSomething
class object to store the pointer to the CEngine so that once the cCall
#new is called on STSomething I can create the new object with a brand
new pointer to CSomething.
So basically I need to mess with the STSomething object. Can I do the
same hack you mentioned simply for STSomething like this?
Object subclass: STSomething [
STSomething class [
<shape: #byte>
new [ <cCall: 'CSomething_new' returning: #void args: #(#self)> ]
]
]
Or is GST going to whip my ass for that?
--
Yours sincerely
Plüss Roland
Leader and Head Programmer
- Game: Epsylon ( http://epsylon.rptd.ch/ ,
http://www.moddb.com/games/4057/epsylon )
- Game Engine: Drag(en)gine ( http://dragengine.rptd.ch ,
http://www.moddb.com/engines/9/dragengine )
- Normal Map Generator: DENormGen ( http://epsylon.rptd.ch/denormgen.php )
signature.asc
Description: OpenPGP digital signature
_______________________________________________ help-smalltalk mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-smalltalk
