------ art_16922_18300586.1219248299378 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline On Wed, Aug 20, 2008 at 4:51 PM, Alex Fenton <alex / deleteme.pressure.to>wrote: > Lyes Amazouz wrote: > > I've wrote a C library where I redefined (with typedef) the "char" and I >> gave it the name "my_char". Every things worked well when I gave constant >> strings to my wrapped functions which takes a "my_char *" as argument >> (then >> it is equivalent to give a char * argument). But when I have given a >> String >> variable to one of my functions (I initialised a variable var " and >> gave >> it to the finction), it returned me this: >> >> Expected argument 3 of type my_char *, but got String "" (TypeError) >> >> How can I do to tell SWIG that the "my_char" type is euivalent to the >> "char" >> type? May I have a solution to make work my functions >> > > You are passing a C function that expects a 'my_char*' a Ruby string, which > in C has the type VALUE. > > You need to apply a typemap that tells SWIG how to translate a ruby object > into my_char*. Something roughly like: > > %typemap(in) my_char* "$1 my_char*)STR2CSTR($input);" > > This is the most basic conversion; a good typemap would probably also > verify the ruby class of the passed-in argument, perhaps using SWIG's > %typemap(check) > > Without wishing to be rude, this is fairly basic SWIG stuff. You might want > to have another look at the manual. It is dense but quite comprehensive. In > particular: > > http://www.swig.org/Doc1.3/Ruby.html#Ruby_nn37 > http://www.swig.org/Doc1.3/Ruby.html#Ruby_nn41 > > alex > > Hello Thank you for your help, I will try this. -- | Lyes Amazouz | USTHB, Algiers ------ art_16922_18300586.1219248299378--