[slang-users] push array structure into slang

Michael Noble mnoble at space.mit.edu
Thu Aug 25 10:50:06 EDT 2005


Hi Joe,

>    for (int ww = 0; ww < arg2; ww++){
>    SLang_push_cstruct((VOID_STAR)&cp[ww], SLANG_XY);
>    SLang_pop_anytype (&any);

Have you tried popping the structure off as a structure,
instead of an anytype?  E.g. defining at the top

	SLang_Struct_Type *st = NULL;

and then having your loop do

	if (-1 == SLang_pop_struct(&st))
		return -1;

In S-Lang1 the struct pop function is quasi-public (not declared
statically, but is not in the public api), so when I needed to
use it I wound up doing something like

	#define SLang_pop_struct        _SLang_pop_struct

and prototyping it myself.  In SLang2 the SLang_pop_struct()
function is public, so you don't need to play those games.

For array creation it would be nice if one could create instances
of SLang_Struct_Type* directly in the C api (roughly analogous to
what SLang_create_mmt does for MMT types).  Then arrays of structs
could be created w/out resorting to using push/pop for each element,
but this was not supported in SLang1, nor does it appear to be
present in the SLang2 api.  I doubt the push/pop method, though,
is a big performance hit.

HTH,
-Mike




More information about the slang-users-l mailing list