[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Help-smalltalk] Re: Using Smalltalk as a scripting language
From: |
Roland Plüss |
Subject: |
Re: [Help-smalltalk] Re: Using Smalltalk as a scripting language |
Date: |
Sat, 31 Oct 2009 00:18:55 +0100 |
User-agent: |
Thunderbird 2.0.0.23 (X11/20090926) |
>> 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.
>
> No. Even if it is a singleton, *never* place singleton methods on the
> class side. Add a #uniqueInstance class method cCall and use
> gst_register_oop to ensure that the singleton instance is not garbage
> collected.
>
>> 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)> ]
>> ]
>> ]
>
> I answered above, but probably you want "returning: #smalltalk args:
> #(#selfSmalltalk)" in general.
Okay, this looks a bit more tricky then. I tried now the following but
without any luck so far.
Object subclass: DEEngine [
DEEngine class [
| uniqueInstance |
uniqueInstance [ ^uniqueInstance ]
]
quit [ <cCall: 'stClassEngine.ccQuit' returning: #void args: #(#self)> ]
]
The idea I had is to assign the uniqueInstance instance variable of the
class side from within the c code upon creation time. Doing so the
uniqueInstance would work without having to cCall ( which is a problem
since I would not have an engine pointer at that time ). I did hence the
following:
struct csEngineClass{
OBJ_HEADER;
OOP uniqueInstance;
};
// in the creation function
OOP oopClass = gst_class_name_to_oop( "DEEngine" );
csEngineClass *csdata = ( csEngineClass* )OOP_TO_OBJ( oopClass );
csdata->uniqueInstance = pST->CreateNewObject( oopClass );
With CreateNewObject simply creating a new instance of the class. I can
printf csdata->uniqueInstance and it has a proper OOP. When I do though
"DEEngine uniqueInstance printNl" in my script I get nil. Something I
didn't understand on the way you manipulate ST data from C?
--
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
- Re: [Help-smalltalk] Using Smalltalk as a scripting language, (continued)
- Re: [Help-smalltalk] Using Smalltalk as a scripting language, Paolo Bonzini, 2009/10/29
- Re: [Help-smalltalk] Using Smalltalk as a scripting language, Roland Plüss, 2009/10/29
- Re: [Help-smalltalk] Using Smalltalk as a scripting language, Paolo Bonzini, 2009/10/29
- Re: [Help-smalltalk] Using Smalltalk as a scripting language, Roland Plüss, 2009/10/29
- Re: [Help-smalltalk] Using Smalltalk as a scripting language, Paolo Bonzini, 2009/10/29
- Re: [Help-smalltalk] Using Smalltalk as a scripting language, Roland Plüss, 2009/10/30
- Re: [Help-smalltalk] Using Smalltalk as a scripting language, Paolo Bonzini, 2009/10/30
- [Help-smalltalk] Re: Using Smalltalk as a scripting language, Paolo Bonzini, 2009/10/30
- Re: [Help-smalltalk] Re: Using Smalltalk as a scripting language, Roland Plüss, 2009/10/30
- Re: [Help-smalltalk] Re: Using Smalltalk as a scripting language, Paolo Bonzini, 2009/10/30
- Re: [Help-smalltalk] Re: Using Smalltalk as a scripting language,
Roland Plüss <=
- Re: [Help-smalltalk] Re: Using Smalltalk as a scripting language, Paolo Bonzini, 2009/10/30
- Re: [Help-smalltalk] Re: Using Smalltalk as a scripting language, Roland Plüss, 2009/10/30
- Re: [Help-smalltalk] Re: Using Smalltalk as a scripting language, Paolo Bonzini, 2009/10/31
- Re: [Help-smalltalk] Re: Using Smalltalk as a scripting language, Roland Plüss, 2009/10/31
- Re: [Help-smalltalk] Re: Using Smalltalk as a scripting language, Paolo Bonzini, 2009/10/31
- Re: [Help-smalltalk] Re: Using Smalltalk as a scripting language, Roland Plüss, 2009/10/31
- Re: [Help-smalltalk] Re: Using Smalltalk as a scripting language, Paolo Bonzini, 2009/10/31
- Re: [Help-smalltalk] Re: Using Smalltalk as a scripting language, Roland Plüss, 2009/10/31
- Re: [Help-smalltalk] Re: Using Smalltalk as a scripting language, Paolo Bonzini, 2009/10/31
- Re: [Help-smalltalk] Re: Using Smalltalk as a scripting language, Roland Plüss, 2009/10/31