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
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:
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: