Re: Correct way to throw exceptions/errors from C to ST

Roland Plüss <[email protected]>
Newsgroups gmane.comp.lang.smalltalk.gnu.general
Message-ID <[email protected]>

On 04/05/2015 08:06 AM, Paolo Bonzini wrote:
>
> On 04/04/2015 02:50, Roland Plüss wrote:
>> Another something that I could not really figure out using the 
>> documentations. Let's say you have a CCallOut from ST to C. Inside
>> this C function something goes wrong, for example an invalid
>> argument passed. How do you properly raise an exception back to
>> Smalltalk? I tried doing something like this:
>>
>> gst_eval_code( "SystemExceptions.InvalidArgument new signal" );
>>
>> But this causes the VM to call abort since an exception happened
>> outside the bytecode. I assume you need to be more clever in this
>> case. So what is the correct way to throw these kinds of exceptions
>> from inside a C function?
> You return a C-style error and have a Smalltalk wrapper convert it to
> a Smalltalk exception.  Or you do argument checking in Smalltalk and
> the rest in C.
>
> Paolo
What you mean with "C-style error"? A C++ exception (that doesn't work
it looks like)? The cCall is of void return type so I can't return
anything. And smalltalk side can't check the arguments as the
information required to perform the checks is sometimes located deep
inside the engine code base.

-- 
Yours sincerely
Plüss Roland

Leader and Head Programmer
- Game: Epsylon ( http://www.indiedb.com/games/epsylon )
- Game Engine: Drag[en]gine ( http://www.indiedb.com/engines/dragengine
, http://dragengine.rptd.ch/wiki )
- Normal Map Generator: DENormGen ( http://epsylon.rptd.ch/denormgen.php )
- As well as various Blender export scripts und game tools

_______________________________________________
help-smalltalk mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/help-smalltalk
signature.asc (application/pgp-signature, 181 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iEYEARECAAYFAlUhWRUACgkQjKGu9ysRWfrYZgCePMjzSeiaDT/A70PWTNHl93ew
zi0AoKYbUQHoDUsu8RStZnYnmHUBRj6d
=Z59l
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.