"William Xu" wrote: > Yes, it's more like a smob type pointer. Consider this, > > void bar(unsigned char *s) > { > printf("s = %s\n", s); > } > > One problem is that how i create and pass a `unsigned > char*' parameter to `bar'. If SWIG requires me to write > smob creation myself, that's a pain...
AFAICT you have to write a C constructor: unsigned char * make_one_thing (int dim) { unsigned char * p = malloc(dim); put_something_in(p); return p; } and SWIG will generate the Scheme/C wrapper, something like: static SCM _wrap_make_one_thing (SCM s_0) { unsigned char * result = 0 ; int arg0; SCM gswig_result; arg0 = scm_to_int(s_0); result = (unsigned char *)new_matrix(arg0); gswig_result = SWIG_NewPointerObj (result, SWIGTYPE_p_unsigned_char, 0); return gswig_result; } so you do not have to write the SMOB driver. -- Marco Maggi "They say jump!, you say how high?" Rage Against the Machine - "Bullet in the Head" _______________________________________________ Guile-user mailing list Guile-user@gnu.org http://lists.gnu.org/mailman/listinfo/guile-user