swig problem

  • Thread starter dominic sisneros
  • Start date
D

dominic sisneros

I am trying to wrap a function that either takes a char * or NULL
How would I wrap this in swig?

The c version accepts a conts char * or NULL

librdf_node* librdf_new_node_from_blank_identifier(librdf_world *world,
const char * identifier);

I do a typemap as follows

I tried this but am still getting a TypeError converting Nil to String

%typemap(ruby,in) const char *identifier {
if $input == Qnil{
$1 == NULL;
else
$1 = STR2CSTR($input);
}
}
 
T

Tobias Peters

dominic said:
I do a typemap as follows

I tried this but am still getting a TypeError converting Nil to String

%typemap(ruby,in) const char *identifier {
if $input == Qnil{
$1 == NULL;
else
$1 = STR2CSTR($input);
}
}

Rerun swig and recompile your extension before trying again ;)

I can see you didn't because there are 2 syntax errors (and 1 semantic
error) in your typemap. Your compiler would have caught the 2 syntax
ones. Or maybe you just didn't notice the error messages.

- C requires that you parenthesize the test expression after the "if"
- Your "else" has no previous "if" (removing the inner braces will help)
- "$1 == NULL" doesn't do anything.

Apart from these errors, your typemap is correct and your code will work
once you correct them.

Tobias
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top