123456789101112131415161718192021222324252627282930313233343536 |
- /**
- * D-specialized raylib functions. These functions help the D experience on
- * raylib.
- */
- module raylib.binding;
- import raylib;
- // stored inside raylib to validate the binding
- // NOTE: should be private, but D doesn't allow private export symbols
- /*private*/ extern(C) extern export __gshared const(char*) raylib_version;
- /**
- * Call this function before using any raylib functions to validate the binding
- * matches what the header information says. If you don't call this, it's
- * possible your binding will fail with such fun issues as memory corruption.
- *
- * If the binding is not valid, then the program will exit with a -1 error code.
- *
- * The function is not included when running raylib unittests, so there are no
- * linker errors. (raylib-d unittests do not test the C binding)
- */
- version(raylib_test) {} else
- void validateRaylibBinding() @nogc nothrow {
- import core.stdc.stdio;
- import core.stdc.stdlib;
- import core.stdc.string;
- auto rlv = raylib_version[0 .. strlen(raylib_version)];
- //if(rlv != RAYLIB_VERSION)
- if(strcmp(raylib_version, RAYLIB_VERSION) != 0)
- {
- printf("FATAL ERROR: Raylib binding expected version %.*s, library version is %.*s\n",
- cast(int)RAYLIB_VERSION.length, RAYLIB_VERSION.ptr,
- cast(int)rlv.length, rlv.ptr);
- exit(-1);
- }
- }
|