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