From: Sohail S. <s.s...@fi...> - 2006-05-28 22:00:20
|
> -----Original Message----- > Now about the shiny_string part, the API expects: (int maxLen,char * > outBuff). I read that there is a cstring_output_maxsize which=20 > works for > (char *outBuff,int maxLen). I'm wondering how I can rewrite=20 > this typemap > to do it for (int maxLen, char * outBuff). My attempts to rewrite this > to work with reversed argument order have been futile, though it works > as I expect if I write helper functions (but there are too many > functions). So I've got it down to this: %typemap(in,fragment=3DSWIG_AsVal_frag(size_t))(int maxLen,char * = outStr) (int res,size_t size, Char * buff=3D0) { // FAFAFAf res =3D SWIG_AsVal(size_t)($input,&size); if(!SWIG_IsOk(res)) { %argument_fail(res,"(SIZE,TYPEMAP)",$symname,$argnum); } buff=3D%new_array(size+1,Char); $1 =3D %numeric_cast(size,$1_ltype); $2 =3D %static_cast(buff,$2_ltype); } %typemap(freearg,noblock=3D1,match=3D"in")(int maxLen,char * outStr) { if(buff$argnum) { %delete_array(buff$argnum); } } %typemap(argout,noblock=3D1,fragment=3D#SWIG_FromCharPtr)(int = maxLen,char * outStr) { %append_output(SWIG_FromCharPtr($2)); } However, I'm getting syntax errors from swig on the line with #SWIG_FromCharPtr... If I remove the fragment=3D... Then its happy... I don't know whats going on, as I have just copied these typemaps from cstrings.swg. Any ideas/suggestions? Thanks! |