spade-0.1.0.9: src/Interpreter/Initialize.hs
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 "mkdir") (SomeBuiltin builtInReadFile)
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 "mkdir") (SomeBuiltin builtinCreateDirectory)
insertBuiltInWithDoc (SkIdentifier $ Identifier "exec") (SomeBuiltin builtinExec)
insertBuiltInWithDoc (SkIdentifier $ Identifier "log") (SomeBuiltin builtinConsoleLog)
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)
insertBuiltInWithDoc (SkIdentifier $ Identifier "import") (SomeBuiltin builtinImport)
-- 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 "smoothcircle") (SomeBuiltin drawSmoothCircle)
insertBuiltInWithDoc (SkIdentifier $ Identifier "ellipse") (SomeBuiltin drawEllipse)
insertBuiltInWithDoc (SkIdentifier $ Identifier "smoothellipse") (SomeBuiltin drawSmoothEllipse)
insertBuiltInWithDoc (SkIdentifier $ Identifier "pie") (SomeBuiltin drawPie)
insertBuiltInWithDoc (SkIdentifier $ Identifier "polygon") (SomeBuiltin drawPoly)
insertBuiltInWithDoc (SkIdentifier $ Identifier "smoothpolygon") (SomeBuiltin drawPolySmooth)
insertBuiltInWithDoc (SkIdentifier $ Identifier "box") (SomeBuiltin drawBox)
insertBuiltInWithDoc (SkIdentifier $ Identifier "render") (SomeBuiltin draw)
insertBuiltInWithDoc (SkIdentifier $ Identifier "setcolor") (SomeBuiltin setDrawColor)
insertBuiltInWithDoc (SkIdentifier $ Identifier "setbgcolor") (SomeBuiltin setBgColor)
insertBuiltInWithDoc (SkIdentifier $ Identifier "setcolora") (SomeBuiltin setDrawColorAlpha)
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)
insertBuiltInWithDoc (SkIdentifier $ Identifier "texttotexture") (SomeBuiltin createTextTexture)
insertBuiltInWithDoc (SkIdentifier $ Identifier "drawtextat") (SomeBuiltin drawTextAt)
insertBuiltInWithDoc (SkIdentifier $ Identifier "drawtextrotatedat") (SomeBuiltin drawTextAtRotated)
insertBuiltInWithDoc (SkIdentifier $ Identifier "setfont") (SomeBuiltin setFont)
insertBuiltInWithDoc (SkIdentifier $ Identifier "loadfont") (SomeBuiltin loadFont)
-- SDL Keyboard
insertBuiltInWithDoc (SkIdentifier $ Identifier "getkeypresses") (SomeBuiltin getKeys)
insertBuiltInWithDoc (SkIdentifier $ Identifier "gwaitforkey") (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)
insertBuiltInWithDoc (SkIdentifier $ Identifier "next") (SomeBuiltin builtInGeneratorNext)
-- 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