Convert "C Function Pointer" to D?

Eric Poggel dnewsgroup at yage3d.net
Thu Jun 3 12:02:43 PDT 2010


On 6/3/2010 2:28 PM, Robert wrote:
> Hi, I have something like this:
>
> struct ext_api {
> int version;
> void *(*make_block)(u32 size);
> void *(*make_string)(u32 size, int uni);
> u32 *(*map_words)(REBSER *ser);
> u32 (*find_word)(u32 *words, u32 word);
> int (*series_info)(REBSER *ser, REBCNT what);
> int (*get_char)(REBSER *ser, u32 index);
> u32 (*set_char)(REBSER *ser, u32 index, u32 chr);
> int (*get_value)(REBSER *ser, u32 index, RXIARG *val);
> int (*set_value)(REBSER *ser, u32 index, RXIARG val, int type);
> int (*get_string)(REBSER *ser, u32 index, void **str);
> }
>
> How do I convert such a struct to D? I will get a ext_api pointer from a
> C compiled program and use this pointer via the struct to call the C
> functions.
>
>

You might take a look at the Derelict project 
(dsource.org/projects/derelict) to see a large amount of C code 
converted to D.  I think 
http://dsource.org/projects/derelict/browser/trunk/DerelictVorbis/derelict/ogg/vorbisfile.d 
had something very similar to this, line 52.


More information about the Digitalmars-d mailing list