[gambit-list] list ref counting with c interface
Phil Dawes
pdawes at users.sf.net
Thu Feb 1 05:57:41 EST 2007
Oh - oops. The final argument to ___UTF_8STRING_to_SCMOBJ is arg_num,
not the allocation policy. What should this be?
Thanks,
Phil
Phil Dawes wrote:
> Hi Marc, Hi List,
>
> I need a fast csv parser and so I plan to wrap a the C libcsv[1] code.
> My gambit interface will be doing a lot of consing and so I just wanted
> to check that I've correctly interpreted how the C scheme-object
> refcounting works (from previous posts[2]). Here's an example which
> returns a list of a million elements - have I done all the
> de-referencing right?
> (I'm assuming that everytime I put a scheme object into another one, I
> can release it - correct?)
>
> (define test-return-list
> (c-lambda () scheme-object
> #<<c-lambda-end
> ___SCMOBJ s,list,tmp;
> int i;
> char *p = "hello";
> ___EXT(___UTF_8STRING_to_SCMOBJ)(p,&s,___STILL);
>
> list = ___NUL;
>
> for (i=0; i<1000000; i++){
> tmp = ___EXT(___make_pair) (s,list, ___STILL);
> ___EXT(___release_scmobj) (list);
> list = tmp;
> }
>
> /* deref remaining ref counts */
> ___EXT(___release_scmobj) (list);
> ___EXT(___release_scmobj) (s);
>
> ___result = list;
>
> c-lambda-end
> ))
>
>
> Many thanks,
>
> Phil
>
> [1] http://libcsv.sourceforge.net/
> [2]
> https://webmail.iro.umontreal.ca/pipermail/gambit-list/2005-December/000510.html
> _______________________________________________
> Gambit-list mailing list
> Gambit-list at iro.umontreal.ca
> https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
>
More information about the Gambit-list
mailing list