[redland-dev] raptor_new_term_from_blank() and NULL
Dave Beckett
dave at dajobe.org
Sat Aug 9 18:11:51 EDT 2014
On 8/8/14, 12:10 PM, Victor Porton wrote:
> I am writing thick Ada bindings for Raptor.
>
> Now I work on binding this function:
>
> raptor_term * raptor_new_term_from_blank (raptor_world *world,
> const unsigned char *blank);
>
> The documentation says that its behavior changes when `blank == NULL`.
I can make it also accept blank="" as the same as NULL in the code since
it's meaningless as a blank node ID.
>
> But there is no concept of NULL string in Ada (unless using specific Ada features to interoperate with C, which should not be used in a pure Ada program).
>
> There is certainly empty strings in Ada, but these are not the same as NULL C strings.
>
> As such I propose to make two Ada functions which call raptor_new_term_from_blank (or raptor_new_term_from_counted_blank for better performance):
>
> One Ada function would accept a string which (after conversion to C string) would be passed to raptor_new_term_from_blank.
Sure
>
> The other Ada function would not accept a string but call raptor_new_term_from_blank with `blank` set to NULL.
>
Sure
> I think it (to make two Ada functions, which by the way can have the same name and differ only in arguments) is a good approach for this problem.
>
> However, I doubt because the C library writers decided to make one raptor_new_term_from_blank function, not two functions for `blank != NULL` and `blank == NULL`. I suspect that this design decision was taken not without reason. So I doubt whether I should deviate from this design in Ada bindings.
>
> So: Should I make one or two functions for this?
Sounds good to me.
Dave
More information about the redland-dev
mailing list