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); }
void BindStringLibrary() { VALUE stringLib = LinkNamespace("string"); VALUE split = CreateFunction(StringSplit); AddParameter(split, "string"); LinkFunction(stringLib, "split", split); }
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); }
/* 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 }
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; }