Mapping betwing a standard type and a user defined type with SWIG

Hello!

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

thank you

Lyes A. wrote:

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

On Wed, Aug 20, 2008 at 4:51 PM, Alex F.
[email protected]wrote:

it to the finction), it returned me this:

to have another look at the manual. It is dense but quite comprehensive. In
particular:

SWIG and Ruby
SWIG and Ruby

alex

Hello

Thank you for your help, I will try this.