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 import Interpreter.Lib.Crypto import Interpreter.Lib.FileSystem 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 "getkey") (SomeBuiltin getkey) insertBuiltInWithDoc (SkIdentifier $ Identifier "addkey") (SomeBuiltin addkey) 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) insertBuiltInWithDoc (SkIdentifier $ Identifier "trim") (SomeBuiltin builtInTrim) insertBuiltInWithDoc (SkIdentifier $ Identifier "formatamount") (SomeBuiltin builtInAmountFormat) insertBuiltInWithDoc (SkIdentifier $ Identifier "replace") (SomeBuiltin builtInReplace) insertBuiltInWithDoc (SkIdentifier $ Identifier "tolower") (SomeBuiltin builtInToLower) insertBuiltInWithDoc (SkIdentifier $ Identifier "toupper") (SomeBuiltin builtInToUpper) -- Keyboard insertBuiltInWithDoc (SkIdentifier $ Identifier "waitforkey") (SomeBuiltin waitForKey) -- Files insertBuiltInWithDoc (SkIdentifier $ Identifier "readfile") (SomeBuiltin builtInReadFile) insertBuiltInWithDoc (SkIdentifier $ Identifier "readtextfile") (SomeBuiltin builtInReadTextFile) insertBuiltInWithDoc (SkIdentifier $ Identifier "writefile") (SomeBuiltin builtInWriteFile) insertBuiltInWithDoc (SkIdentifier $ Identifier "opendir") (SomeBuiltin builtInOpenDir) insertBuiltInWithDoc (SkIdentifier $ Identifier "getcurrentdir") (SomeBuiltin builtInGetCurrentDir) insertBuiltInWithDoc (SkIdentifier $ Identifier "takefilename") (SomeBuiltin builtInTakeFilename) insertBuiltInWithDoc (SkIdentifier $ Identifier "takedirectory") (SomeBuiltin builtInTakeDirectory) insertBuiltInWithDoc (SkIdentifier $ Identifier "takeextension") (SomeBuiltin builtInTakeExtension) insertBuiltInWithDoc (SkIdentifier $ Identifier "dropextension") (SomeBuiltin builtInDropExtension) insertBuiltInWithDoc (SkIdentifier $ Identifier "takebasename") (SomeBuiltin builtInTakeBaseName) insertBuiltInWithDoc (SkIdentifier $ Identifier "joinpaths") (SomeBuiltin builtInJoinPaths) insertBuiltInWithDoc (SkIdentifier $ Identifier "openfilehandle") (SomeBuiltin builtInOpenFileHandle) insertBuiltInWithDoc (SkIdentifier $ Identifier "readfilehandle") (SomeBuiltin builtInReadFileHandle) insertBuiltInWithDoc (SkIdentifier $ Identifier "writefilehandle") (SomeBuiltin builtInWriteFileHandle) insertBuiltInWithDoc (SkIdentifier $ Identifier "gethandlesize") (SomeBuiltin builtInGetFileSize) insertBuiltInWithDoc (SkIdentifier $ Identifier "isfile") (SomeBuiltin builtInIsFile) insertBuiltInWithDoc (SkIdentifier $ Identifier "isdirectory") (SomeBuiltin builtInIsDir) insertBuiltInWithDoc (SkIdentifier $ Identifier "renamefile") (SomeBuiltin builtInRenameFile) -- 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) insertBuiltInWithDoc (SkIdentifier $ Identifier "repeat") (SomeBuiltin builtInRepeat) -- Misc insertBuiltInWithDoc (SkIdentifier $ Identifier "try") (SomeBuiltin builtInTry) insertBuiltInWithDoc (SkIdentifier $ Identifier "error") (SomeBuiltin builtInError) insertBuiltInWithDoc (SkIdentifier $ Identifier "iserror") (SomeBuiltin builtInIsError) insertBuiltInWithDoc (SkIdentifier $ Identifier "jsondecode") (SomeBuiltin builtInJSONParse) insertBuiltInWithDoc (SkIdentifier $ Identifier "jsonencode") (SomeBuiltin builtInJSONSerialize) insertBuiltInWithDoc (SkIdentifier $ Identifier "hexencode") (SomeBuiltin builtinEncodeBytes) insertBuiltInWithDoc (SkIdentifier $ Identifier "hexdecode") (SomeBuiltin builtinDecodeBytes) 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) insertBuiltInWithDoc (SkIdentifier $ Identifier "tostring") (SomeBuiltin builtInToString) insertBuiltInWithDoc (SkIdentifier $ Identifier "csinit") (SomeBuiltin initCharScreen) insertBuiltInWithDoc (SkIdentifier $ Identifier "csgoto") (SomeBuiltin charScreenGoto) insertBuiltInWithDoc (SkIdentifier $ Identifier "csget") (SomeBuiltin charScreenGet) insertBuiltInWithDoc (SkIdentifier $ Identifier "csmove") (SomeBuiltin charScreenMove) insertBuiltInWithDoc (SkIdentifier $ Identifier "csprint") (SomeBuiltin charScreenPrint) insertBuiltInWithDoc (SkIdentifier $ Identifier "csprintln") (SomeBuiltin charScreenPrintLn) insertBuiltInWithDoc (SkIdentifier $ Identifier "csinputline") (SomeBuiltin charScreenInputLine) insertBuiltInWithDoc (SkIdentifier $ Identifier "csclear") (SomeBuiltin charScreenClear) insertBuiltInWithDoc (SkIdentifier $ Identifier "csclearline") (SomeBuiltin charScreenClearLine) insertBuiltInWithDoc (SkIdentifier $ Identifier "csdraw") (SomeBuiltin charScreenDraw) insertBuiltInWithDoc (SkIdentifier $ Identifier "csscreensize") (SomeBuiltin charGetDimensions) -- Widgets insertBuiltInWithDoc (SkIdentifier $ Identifier "resizinglayout") (SomeBuiltin builtInLayoutWidget) insertBuiltInWithDoc (SkIdentifier $ Identifier "layout") (SomeBuiltin builtInLayoutWidgetSimple) insertBuiltInWithDoc (SkIdentifier $ Identifier "borderbox") (SomeBuiltin builtInBorderBox) insertBuiltInWithDoc (SkIdentifier $ Identifier "text") (SomeBuiltin builtInTextContainerWidget) insertBuiltInWithDoc (SkIdentifier $ Identifier "multilineinput") (SomeBuiltin builtInInputWidget) insertBuiltInWithDoc (SkIdentifier $ Identifier "input") (SomeBuiltin builtInSingleLineInputWidget) insertBuiltInWithDoc (SkIdentifier $ Identifier "label") (SomeBuiltin builtInTextLabelWidget) insertBuiltInWithDoc (SkIdentifier $ Identifier "selector") (SomeBuiltin builtInSelectorWidget) insertBuiltInWithDoc (SkIdentifier $ Identifier "button") (SomeBuiltin builtInButtonWidget) insertBuiltInWithDoc (SkIdentifier $ Identifier "setoptions") (SomeBuiltin builtInSetOptions) insertBuiltInWithDoc (SkIdentifier $ Identifier "getoptions") (SomeBuiltin builtInGetOptions) insertBuiltInWithDoc (SkIdentifier $ Identifier "getselection") (SomeBuiltin builtInGetSelection) insertBuiltInWithDoc (SkIdentifier $ Identifier "attach") (SomeBuiltin builtInAddWidget) insertBuiltInWithDoc (SkIdentifier $ Identifier "attachat") (SomeBuiltin builtInAddWidgetAt) insertBuiltInWithDoc (SkIdentifier $ Identifier "handle") (SomeBuiltin builtInHandleInput) insertBuiltInWithDoc (SkIdentifier $ Identifier "draw") (SomeBuiltin builtInDrawWidget) insertBuiltInWithDoc (SkIdentifier $ Identifier "setsize") (SomeBuiltin builtInSetWidgetSize) insertBuiltInWithDoc (SkIdentifier $ Identifier "settext") (SomeBuiltin builtInSetTextWidgetContent) insertBuiltInWithDoc (SkIdentifier $ Identifier "setfocus") (SomeBuiltin builtInSetFocus) -- 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 "arc") (SomeBuiltin drawArc) insertBuiltInWithDoc (SkIdentifier $ Identifier "circle") (SomeBuiltin drawCircle) insertBuiltInWithDoc (SkIdentifier $ Identifier "polygon") (SomeBuiltin drawPoly) insertBuiltInWithDoc (SkIdentifier $ Identifier "box") (SomeBuiltin drawBox) insertBuiltInWithDoc (SkIdentifier $ Identifier "render") (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) insertBuiltInWithDoc (SkIdentifier $ Identifier "loadtexture") (SomeBuiltin loadTexture) insertBuiltInWithDoc (SkIdentifier $ Identifier "destroytexture") (SomeBuiltin destroyTexture) insertBuiltInWithDoc (SkIdentifier $ Identifier "copytexture") (SomeBuiltin copyTexture) insertBuiltInWithDoc (SkIdentifier $ Identifier "copytexturepart") (SomeBuiltin copyTexturePart) insertBuiltInWithDoc (SkIdentifier $ Identifier "copytexturerotated") (SomeBuiltin copyTextureRotated) insertBuiltInWithDoc (SkIdentifier $ Identifier "textureinfo") (SomeBuiltin textureInfo) -- 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) -- Crypto insertBuiltInWithDoc (SkIdentifier $ Identifier "hash") (SomeBuiltin builtInHash) insertBuiltInWithDoc (SkIdentifier $ Identifier "hashinit") (SomeBuiltin builtInHashInit) insertBuiltInWithDoc (SkIdentifier $ Identifier "hashupdate") (SomeBuiltin builtInHashUpdate) insertBuiltInWithDoc (SkIdentifier $ Identifier "hashfinalize") (SomeBuiltin builtInHashFinalize) -- Constants insertBuiltInVal (SkIdentifier $ Identifier "keycodes") keycodes insertBuiltInVal (SkIdentifier $ Identifier "scancodes") scancodes