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