[DGD]new arrays in extension kfuncs
Erwin Harte
harte at xs4all.nl
Sat Jan 20 19:21:43 CET 2001
On Sat, Jan 20, 2001 at 05:51:24AM +0100, Erwin Harte wrote:
> On Sat, Jan 20, 2001 at 12:57:35AM +0000, boris wrote:
> > Hello !
> >
> > I'm trying to create an 'string*' (array of strings) in an extension kfunc,
> > but I got lost in all macros in 'dgd_ext.h'. Well, basicly I have a bunch of
> > 'char*' and whant to create an LPC array of them. What is the correct way of
> > creatig new LPC array ?
>
> void
> your_function(DGD_FRAME_T f, int nargs, DGD_VALUE_T *retval)
> {
> /*
> * Assuming you have the 'char *' available in a nice array, and
> * the total elements is known. You know best where you got 'em
> * from anyway so that's a bit vague to me right now:
> */
> int total;
> char **lines;
>
> /*
> * This is where we build the array in, to be returned.
> */
> DGD_ARRAY_T arr;
>
> /*
> * Because we're dealing with an array, it's useful to keep the
> * current dataspace handy.
> */
> DGD_DATA_T dataspace;
>
> /*
> * Loop variable.
> */
> int i;
>
> /*
> * Now, without having tested this, I would try something like
> * this:
> */
>
> dataspace = DGD_FRAME_DATASPACE(f);
> arr = DGD_ARRAY_NEW(dataspace, total);
>
> for (i = 0; i < total; i++) {
> /*
> * Here's the DGD string we're going to create.
> */
> DGD_STRING_T str;
/*
* The string needs to be put into a 'value'.
*/
DGD_VALUE_T val;
>
> /*
> * This is assuming you have 0-terminated strings.
> */
> str = DGD_STRING_NEW(lines[i], strlen(lines[i]));
DGD_STRING_PUTVAL(val, str);
> DGD_ARRAY_ASSIGN(dataspace, arr, i, str);
Change this line to:
DGD_ARRAY_ASSIGN(dataspace, arr, i, val);
> }
>
> DGD_RETVAL_ARRAY(retval, arr);
> }
>
> As said, it's untested, but it might help. :-)
Erwin.
--
Erwin Harte : `Don't mind Erwin, he gets crabby. :)'
harte at xs4all.nl : -- Par Winzell <zell at skotos.net>
List config page: http://list.imaginary.com/mailman/listinfo/dgd
More information about the DGD
mailing list