Esempio n. 1
0
void BindStringLibrary()
{
    VALUE stringLib = LinkNamespace("string");
    
    VALUE split = CreateFunction(StringSplit);
    AddParameter(split, "string");
    LinkFunction(stringLib, "split", split);
}
Esempio n. 2
0
/* bind the duck standard library */
void BindStandardLibrary()
{
    VALUE duckStdLib = LinkNamespace("duck");

    VALUE print = CreateFunction(DuckPrint);
    AddParameter(print, "output");
    LinkFunction(duckStdLib, "print", print);

    VALUE println = CreateFunction(DuckPrintLn);
    AddParameter(println, "output");
    LinkFunction(duckStdLib, "println", println);

    VALUE prompt = CreateFunction(DuckPrompt);
    AddParameter(prompt, "message");
    LinkFunction(duckStdLib, "prompt", prompt);

    LinkConstString(duckStdLib, "newline", "\n");

    VALUE root;
    root.type = VAL_REFERENCE;
    root.data.reference = gGlobalContext;

    VALUE int_c = CreateFunction(DuckInt);
    AddParameter(int_c, "value");
    LinkFunction(root, "int", int_c);

    VALUE float_c = CreateFunction(DuckFloat);
    AddParameter(float_c, "value");
    LinkFunction(root, "float", float_c);

    VALUE length = CreateFunction(DuckLength);
    AddParameter(length, "array");
    LinkFunction(root, "len", length);

    VALUE type = CreateFunction(DuckType);
    AddParameter(type, "object");
    LinkFunction(root, "Type", type);

    VALUE evalFunc = CreateFunction(DuckEval);
    AddParameter(evalFunc, "source");
    LinkFunction(root, "eval", evalFunc);

    VALUE parsesFunc = CreateFunction(DuckParses);
    AddParameter(parsesFunc, "source");
    LinkFunction(duckStdLib, "parses", parsesFunc);

    VALUE duckQuit = CreateFunction(DuckQuit);
    LinkFunction(root, "quit", duckQuit);
    BindStringLibrary();

    VALUE time = CreateFunction(DuckTime);
    LinkFunction(root, "time", time);

#ifdef WIN32
    start_t = GetTickCount();
#endif
}
Esempio n. 3
0
void BindStandardLibrary()
{
    VALUE duckStdLib = LinkNamespace("duck");

    VALUE print = CreateFunction(DuckPrint);
    AddParameter(print, "output");
    
    LinkFunction(duckStdLib, "print", print);
    LinkFunction(duckStdLib, "println", print);

    VALUE prompt = CreateFunction(DuckPrompt);
    LinkFunction(duckStdLib, "prompt", prompt);
}
Esempio n. 4
0
void BindMathLibrary()
{
    VALUE math_lib = LinkNamespace("Math");

    //Trig and inverse trig functions.
    VALUE dcos = CreateFunction(MathCos);
    AddParameter(dcos, "angle");
    LinkFunction(math_lib, "cos", dcos);

    VALUE dsin = CreateFunction(MathSin);
    AddParameter(dsin, "angle");
    LinkFunction(math_lib, "sin", dsin);

    VALUE dtan = CreateFunction(MathTan);
    AddParameter(dtan, "angle");
    LinkFunction(math_lib, "tan", dtan);

    VALUE dasin = CreateFunction(MathAsin);
    AddParameter(dasin, "num");
    LinkFunction(math_lib, "asin", dasin);

    VALUE dacos = CreateFunction(MathAcos);
    AddParameter(dacos, "num");
    LinkFunction(math_lib, "acos", dacos);

    VALUE datan = CreateFunction(MathAtan);
    AddParameter(datan, "num");
    LinkFunction(math_lib, "atan", datan);


    LinkConstFloatp(math_lib, "pi", 3.14159);

    //Exponentials and logs
    VALUE dexp = CreateFunction(MathExp);
    AddParameter(dexp, "num");
    LinkFunction(math_lib, "exp", dexp);

    VALUE dlog = CreateFunction(MathLog);
    AddParameter(dlog, "num");
    LinkFunction(math_lib, "log", dlog);

    VALUE dlog10 = CreateFunction(MathLog10);
    AddParameter(dlog10, "num");
    LinkFunction(math_lib, "log10", dlog10);

    //Power functions
    VALUE dpow = CreateFunction(MathPow);
    AddParameter(dpow, "base");
    AddParameter(dpow, "exponent");
    LinkFunction(math_lib, "pow", dpow);

    VALUE dsqrt = CreateFunction(MathSqrt);
    AddParameter(dsqrt, "num");
    LinkFunction(math_lib, "sqrt", dsqrt);

    //Misc Functions
    VALUE dceil = CreateFunction(MathCeil);
    AddParameter(dceil, "num");
    LinkFunction(math_lib, "ceil", dceil);

    VALUE dfloor = CreateFunction(MathFloor);
    AddParameter(dfloor, "num");
    LinkFunction(math_lib, "floor", dfloor);

    VALUE dabs = CreateFunction(MathAbs);
    AddParameter(dabs, "num");
    LinkFunction(math_lib, "abs", dabs);
}
Esempio n. 5
0
void BindSDL()
{
    /* SDL NameSpace */
    VALUE duckSDL = LinkNamespace("SDL");
    VALUE makeWindow = CreateFunction(MakeWindow);
    AddParameter(makeWindow, "width");
    AddParameter(makeWindow, "height");
    AddParameter(makeWindow, "name");
    AddParameter(makeWindow, "fullscreen");

    VALUE clearScreen = CreateFunction(ClearScreen);
    VALUE pageFlip = CreateFunction(PageFlip);
    VALUE eventLoop = CreateFunction(EventLoop);
    VALUE isRunning = CreateFunction(StillRunning);
    VALUE waitKey = CreateFunction(WaitKey);
    VALUE quit = CreateFunction(Quit);

    LinkFunction(duckSDL, "MakeWindow", makeWindow);
    LinkFunction(duckSDL, "flip", pageFlip);
    LinkFunction(duckSDL, "event", eventLoop);
    LinkFunction(duckSDL, "clearScreen", clearScreen);
    LinkFunction(duckSDL, "running", isRunning);
    LinkFunction(duckSDL, "waitkey", waitKey);
    LinkFunction(duckSDL, "quit", quit);

    /* OpenGL functions */
    VALUE dglLoadIdentity = CreateFunction(GlLoadIdentity);
    VALUE dglTranslatef = CreateFunction(GlTranslatef);
    AddParameter(dglTranslatef, "x");
    AddParameter(dglTranslatef, "y");
    AddParameter(dglTranslatef, "z");

    VALUE dglRotatef = CreateFunction(GlRotatef);
    AddParameter(dglRotatef, "deg");
    AddParameter(dglRotatef, "x");
    AddParameter(dglRotatef, "y");
    AddParameter(dglRotatef, "z");

    VALUE dglScalef = CreateFunction(GlScalef);
    AddParameter(dglScalef, "x");
    AddParameter(dglScalef, "y");
    AddParameter(dglScalef, "z");

    VALUE dglBegin = CreateFunction(GlBegin);
    AddParameter(dglBegin, "primitive");

    VALUE dglEnd = CreateFunction(GlEnd);
    VALUE dglColor3f = CreateFunction(GlColor3f);
    AddParameter(dglColor3f, "r");
    AddParameter(dglColor3f, "g");
    AddParameter(dglColor3f, "b");

    VALUE dglVertex3f = CreateFunction(GlVertex3f);
    AddParameter(dglVertex3f, "x");
    AddParameter(dglVertex3f, "y");
    AddParameter(dglVertex3f, "z");

    VALUE dglNormal3f = CreateFunction(GlNormal3f);
    AddParameter(dglNormal3f, "x");
    AddParameter(dglNormal3f, "y");
    AddParameter(dglNormal3f, "z");

    LinkConstPrimitive(duckSDL, "GL_TRIANGLES", GL_TRIANGLES);

    LinkFunction(duckSDL, "glLoadIdentity", dglLoadIdentity);
    LinkFunction(duckSDL, "glTranslatef", dglTranslatef);
    LinkFunction(duckSDL, "glRotatef", dglRotatef);
    LinkFunction(duckSDL, "glScalef", dglScalef);
    LinkFunction(duckSDL, "glBegin", dglBegin);
    LinkFunction(duckSDL, "glColor3f", dglColor3f);
    LinkFunction(duckSDL, "glVertex3f", dglVertex3f);
    LinkFunction(duckSDL, "glNormal3f", dglNormal3f);
    LinkFunction(duckSDL, "glEnd", dglEnd);
    return;
}