diff options
Diffstat (limited to 'libacc/tests/runtimeTest.cpp')
| -rw-r--r-- | libacc/tests/runtimeTest.cpp | 118 | 
1 files changed, 0 insertions, 118 deletions
| diff --git a/libacc/tests/runtimeTest.cpp b/libacc/tests/runtimeTest.cpp deleted file mode 100644 index 55bf877..0000000 --- a/libacc/tests/runtimeTest.cpp +++ /dev/null @@ -1,118 +0,0 @@ -/* - * RuntimeTest for ACC compiler. - * - */ - -#include <ctype.h> -#include <dlfcn.h> -#include <stdarg.h> -#include <stdint.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#if defined(__arm__) -#include <unistd.h> -#endif - -#include <acc/acc.h> - - -typedef void (*ScriptPtr)(); - -// This is a separate function so it can easily be set by breakpoint in gdb. -void run(ScriptPtr scriptFn) { -    scriptFn(); -} - -// Private API for development: - -extern "C" -void accDisassemble(ACCscript* script); - -int globalVar; - -void op_int(int a) { -    printf("op_int(%d)\n", a); -} - -void op_float12(float a, float b, float c, float d, -                float e, float f, float g, float h, -                float i, float j, float k, float l) { -    printf("op_float12(%g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g)\n", -           a, b, c, d, e, f, g, h, i, j, k, l); -} - -const char* text = "void op_int(int a);\n" -    "void op_float12(float a, float b, float c, float d,\n" -    "           float e, float f, float g, float h,\n" -    "           float i, float j, float k, float l);\n" -    "void script() {\n" -    "  globalVar += 3;\n" -    "  op_int(123);\n" -    "  op_float12(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0);\n" -    "}\n"; - -ACCvoid* symbolLookup(ACCvoid* pContext, const ACCchar* name) { -    if (strcmp("op_int", name) == 0) { -        return (ACCvoid*) op_int; -    } -    if (strcmp("op_float12", name) == 0) { -        return (ACCvoid*) op_float12; -    } -    if (strcmp("globalVar", name) == 0) { -        return (ACCvoid*) &globalVar; -    } -    return (ACCvoid*) dlsym(RTLD_DEFAULT, name); -} - -int main(int argc, char** argv) { -    ACCscript* script = accCreateScript(); - -    accRegisterSymbolCallback(script, symbolLookup, NULL); - -    const ACCchar* scriptSource[] = {text}; -    accScriptSource(script, 1, scriptSource, NULL); - -    accCompileScript(script); -    int result = accGetError(script); -    ScriptPtr scriptPointer = 0; -    if (result != 0) { -        char buf[1024]; -        accGetScriptInfoLog(script, sizeof(buf), NULL, buf); -        fprintf(stderr, "%s", buf); -        goto exit; -    } - -    { -        ACCsizei numPragmaStrings; -        accGetPragmas(script, &numPragmaStrings, 0, NULL); -        if (numPragmaStrings) { -            char** strings = new char*[numPragmaStrings]; -            accGetPragmas(script, NULL, numPragmaStrings, strings); -            for(ACCsizei i = 0; i < numPragmaStrings; i += 2) { -                fprintf(stderr, "#pragma %s(%s)\n", strings[i], strings[i+1]); -            } -            delete[] strings; -        } -    } - -    accGetScriptLabel(script, "script", (ACCvoid**) & scriptPointer); - -    result = accGetError(script); -    if (result != ACC_NO_ERROR) { -        fprintf(stderr, "Could not find script: %d\n", result); -    } else { -        fprintf(stderr, "Executing script:\n"); -        globalVar = 17; -        run(scriptPointer); -        fprintf(stderr, "After script globalVar = %d\n", globalVar); -    } - - -exit: - -    accDeleteScript(script); - -    return result; -} | 
