module Interpreter.Initialize where import Prelude hiding (map) import Compiler.Lexer import Interpreter.Common import Interpreter.Interpreter import Interpreter.Lib.Math import Interpreter.Lib.Misc import Interpreter.Lib.String import Interpreter.Lib.Concurrency import Interpreter.Lib.SDL loadBuiltIns :: InterpretM () loadBuiltIns = do insertBuiltIn (SkOperator OpStar) multiplication insertBuiltIn (SkOperator OpPlus) addition insertBuiltIn (SkOperator OpMinus) substraction insertBuiltIn (SkOperator OpDivide) division insertBuiltIn (SkOperator OpEquality) (comparison (==)) insertBuiltIn (SkOperator OpLT) (comparison (<)) insertBuiltIn (SkOperator OpGT) (comparison (>)) insertBuiltIn (SkOperator OpLTE) (comparison (<=)) insertBuiltIn (SkOperator OpGTE) (comparison (>=)) insertBuiltIn (SkOperator OpNotEquality) (comparison (/=)) insertBuiltIn (SkOperator OpAnd) (boolean (&&)) insertBuiltIn (SkOperator OpOr) (boolean (||)) -- Containers insertBuiltInWithDoc (SkIdentifier $ Identifier "size") (SomeBuiltin valueSize) insertBuiltInWithDoc (SkIdentifier $ Identifier "contains") (SomeBuiltin contains) insertBuiltInWithDoc (SkIdentifier $ Identifier "haskey") (SomeBuiltin haskey) insertBuiltInWithDoc (SkIdentifier $ Identifier "filter") (SomeBuiltin filter_) insertBuiltInWithDoc (SkIdentifier $ Identifier "drop") (SomeBuiltin builtInDrop) insertBuiltInWithDoc (SkIdentifier $ Identifier "take") (SomeBuiltin builtInTake) -- Time insertBuiltInWithDoc (SkIdentifier $ Identifier "timestamp") (SomeBuiltin builtInTimestamp) insertBuiltInWithDoc (SkIdentifier $ Identifier "wait") (SomeBuiltin waitMillisec) -- Strings insertBuiltInWithDoc (SkIdentifier $ Identifier "decodeutf8") (SomeBuiltin builtInDecodeUTF8Bytes) insertBuiltInWithDoc (SkIdentifier $ Identifier "encodeutf8") (SomeBuiltin builtInEncodeUTF8Bytes) insertBuiltInWithDoc (SkIdentifier $ Identifier "concat") (SomeBuiltin builtInConcat) insertBuiltInWithDoc (SkIdentifier $ Identifier "join") (SomeBuiltin builtInJoin) insertBuiltInWithDoc (SkIdentifier $ Identifier "split") (SomeBuiltin builtInSplit) -- Keyboard insertBuiltInWithDoc (SkIdentifier $ Identifier "getkey") (SomeBuiltin waitForKey) -- Files insertBuiltInWithDoc (SkIdentifier $ Identifier "readfile") (SomeBuiltin builtInReadFile) insertBuiltInWithDoc (SkIdentifier $ Identifier "readtextfile") (SomeBuiltin builtInReadTextFile) insertBuiltInWithDoc (SkIdentifier $ Identifier "writefile") (SomeBuiltin builtInWriteFile) -- Math insertBuiltInWithDoc (SkIdentifier $ Identifier "pow") (SomeBuiltin builtInPow) insertBuiltInWithDoc (SkIdentifier $ Identifier "mod") (SomeBuiltin builtInMod) insertBuiltInWithDoc (SkIdentifier $ Identifier "random") (SomeBuiltin builtInRandom) insertBuiltInWithDoc (SkIdentifier $ Identifier "sin") (SomeBuiltin builtInSin) insertBuiltInWithDoc (SkIdentifier $ Identifier "cos") (SomeBuiltin builtInCos) insertBuiltInWithDoc (SkIdentifier $ Identifier "tan") (SomeBuiltin builtInTan) insertBuiltInWithDoc (SkIdentifier $ Identifier "asin") (SomeBuiltin builtInASin) insertBuiltInWithDoc (SkIdentifier $ Identifier "acos") (SomeBuiltin builtInACos) insertBuiltInWithDoc (SkIdentifier $ Identifier "atan") (SomeBuiltin builtInATan) insertBuiltInWithDoc (SkIdentifier $ Identifier "sum") (SomeBuiltin builtInSum) insertBuiltInWithDoc (SkIdentifier $ Identifier "round") (SomeBuiltin builtInRound) -- List/Map insertBuiltInWithDoc (SkIdentifier $ Identifier "insertleft") (SomeBuiltin builtInArrayInsertLeft) insertBuiltInWithDoc (SkIdentifier $ Identifier "insertright") (SomeBuiltin builtInArrayInsertRight) insertBuiltInWithDoc (SkIdentifier $ Identifier "head") (SomeBuiltin builtInHead) -- Misc insertBuiltInWithDoc (SkIdentifier $ Identifier "try") (SomeBuiltin builtInTry) insertBuiltInWithDoc (SkIdentifier $ Identifier "jsondecode") (SomeBuiltin builtInJSONParse) insertBuiltInWithDoc (SkIdentifier $ Identifier "jsonencode") (SomeBuiltin builtInJSONSerialize) insertBuiltInWithDoc (SkIdentifier $ Identifier "not") (SomeBuiltin not') insertBuiltInWithDoc (SkIdentifier $ Identifier "debug") (SomeBuiltin builtInDebug) insertBuiltInWithDoc (SkIdentifier $ Identifier "inspect") (SomeBuiltin builtInInspect) insertBuiltInWithDoc (SkIdentifier $ Identifier "println") (SomeBuiltin printValLn) insertBuiltInWithDoc (SkIdentifier $ Identifier "print") (SomeBuiltin printVal) insertBuiltInWithDoc (SkIdentifier $ Identifier "inputline") (SomeBuiltin builtinInputLine) insertBuiltInWithDoc (SkIdentifier $ Identifier "stringtonum") (SomeBuiltin numberFromString) -- SDL Sound insertBuiltInWithDoc (SkIdentifier $ Identifier "maketone") (SomeBuiltin builtInMakeTone) insertBuiltInWithDoc (SkIdentifier $ Identifier "makesound") (SomeBuiltin builtInMakeSoundSample) insertBuiltInWithDoc (SkIdentifier $ Identifier "loadsound") (SomeBuiltin builtInMakeSoundSampleFromFile) insertBuiltInWithDoc (SkIdentifier $ Identifier "playsound") (SomeBuiltin builtInPlaySoundSample) insertBuiltInWithDoc (SkIdentifier $ Identifier "setvolume") (SomeBuiltin builtInSetSampleVolume) insertBuiltInWithDoc (SkIdentifier $ Identifier "setvolumelr") (SomeBuiltin builtInSetSampleLRVolume) -- SDL Graphics insertBuiltInWithDoc (SkIdentifier $ Identifier "graphicswindow") (SomeBuiltin createGraphicsWindow) insertBuiltInWithDoc (SkIdentifier $ Identifier "graphics") (SomeBuiltin createGraphicsFullscreen) insertBuiltInWithDoc (SkIdentifier $ Identifier "point") (SomeBuiltin drawPoint) insertBuiltInWithDoc (SkIdentifier $ Identifier "points") (SomeBuiltin drawPoints) insertBuiltInWithDoc (SkIdentifier $ Identifier "line") (SomeBuiltin drawLine) insertBuiltInWithDoc (SkIdentifier $ Identifier "lines") (SomeBuiltin drawLines) insertBuiltInWithDoc (SkIdentifier $ Identifier "circle") (SomeBuiltin drawCircle) insertBuiltInWithDoc (SkIdentifier $ Identifier "box") (SomeBuiltin drawBox) insertBuiltInWithDoc (SkIdentifier $ Identifier "drawscreen") (SomeBuiltin draw) insertBuiltInWithDoc (SkIdentifier $ Identifier "setcolor") (SomeBuiltin setDrawColor) insertBuiltInWithDoc (SkIdentifier $ Identifier "clearscreen") (SomeBuiltin clear) insertBuiltInWithDoc (SkIdentifier $ Identifier "getwindowsize") (SomeBuiltin getWindowSize) insertBuiltInWithDoc (SkIdentifier $ Identifier "setlogicalsize") (SomeBuiltin setLogicalSize) -- SDL Keyboard insertBuiltInWithDoc (SkIdentifier $ Identifier "getkeypresses") (SomeBuiltin getKeys) insertBuiltInWithDoc (SkIdentifier $ Identifier "waitforkey") (SomeBuiltin waitForSDLKey) insertBuiltInWithDoc (SkIdentifier $ Identifier "getkeystate") (SomeBuiltin getKeyboardState) insertBuiltInWithDoc (SkIdentifier $ Identifier "inkeystate") (SomeBuiltin wasKeyDownIn) -- Concurrency insertBuiltInWithDoc (SkIdentifier $ Identifier "startthread") (SomeBuiltin builtInLaunchThread) insertBuiltInWithDoc (SkIdentifier $ Identifier "killthread") (SomeBuiltin builtInKillThread) insertBuiltInWithDoc (SkIdentifier $ Identifier "await") (SomeBuiltin builtInAwait) insertBuiltInWithDoc (SkIdentifier $ Identifier "awaitresult") (SomeBuiltin builtInAwaitResult) insertBuiltInWithDoc (SkIdentifier $ Identifier "newchannel") (SomeBuiltin builtInNewChannel) insertBuiltInWithDoc (SkIdentifier $ Identifier "writechannel") (SomeBuiltin builtInWriteChannel) insertBuiltInWithDoc (SkIdentifier $ Identifier "readchannel") (SomeBuiltin builtInReadChannel) insertBuiltInWithDoc (SkIdentifier $ Identifier "newref") (SomeBuiltin builtInNewRef) insertBuiltInWithDoc (SkIdentifier $ Identifier "readref") (SomeBuiltin builtInReadRef) insertBuiltInWithDoc (SkIdentifier $ Identifier "writeref") (SomeBuiltin builtInWriteRef) insertBuiltInWithDoc (SkIdentifier $ Identifier "modifyref") (SomeBuiltin builtInModifyRef) -- Constants insertBuiltInVal (SkIdentifier $ Identifier "keycodes") keycodes insertBuiltInVal (SkIdentifier $ Identifier "scancodes") scancodes