This is the mail archive of the guile@cygnus.com mailing list for the guile project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
I think your suggested interface is too complex. One of the goals of the gh interface is that it should be easy to use. The current interface looks like this: - Function: double *gh_scm2doubles (SCM VECTOR, double *RESULT) Copy the numbers in VECTOR to the array pointed to by RESULT and return it. If RESULT is NULL, allocate a double array large enough. Here's how you would solve your three tasks using this interface: SCM example(SCM myvect) { double *mem = NULL; int i, n = gh_length(myvect); mem = gh_scm2doubles(myvect,NULL); some_function(mem,n); for (i = 0; i < n; ++i) SCM_VELTS (myvect)[i] = gh_double2scm (mem[i]); free (mem); return myvect; } SCM example(SCM myvect) { double newvect; double *mem = NULL; mem = gh_scm2doubles(myvect,NULL); some_function(mem,gh_length(myvect)); newvect = gh_doubles2scm(mem); free (mem); return newvect; } SCM example(SCM myvect) { some_function(SCM_VELTS (myvect),gh_length(myvect)); return myvect; } Isn't this pretty OK? (Except maybe that SCM_VELTS isn't part of the gh interface...) Best regards, /mdj