Christian Kaiser wrote: > Well in C you only get VALUE. > > To get a char*, you use rb_str2cstr() to get the string and its length: > > myfunc(VALUE v) > { > char* pc = rb_str2cstr(v,NULL); > } > > To get a char*[], you need to walk the array (passed in VALUE) and get the > strings using the above function. I guess using rb_ary_each(), you can walk > the array. > > To get a BYTE*, you also use rb_str2cstr() - remember, a string may contain > any character, including '\0': > > myfunc(VALUE v) > { > long len; > BYTE* data = rb_str2cstr(v,&len); > } > > > (There are newer APIs like StringValue() and StringValuePtr(), you might > check those also...) > > Christian > > "Randy Lawrence" <jm / zzzzzzzzzzzz.com> schrieb im Newsbeitrag > news:F_ztc.15523$eH1.6931874 / newssvr28.news.prodigy.com... > >>I'm having trouble calling a c function from ruby and haven't been able >>to find a solution using google. >> >>Specifically, I'd like to call functions that receive these three > > datatypes: > >>char* >>char*[] >>byte[] >> >>Swig 1.3 has been great in helping me call a c++ function that uses a >>std::string parameter but the 3 c datatypes mentioned above are eluding > > me. > >>Thanks. > > > Many thanks!!!