Commit Graph

157 Commits

Author SHA1 Message Date
cpunch 2e07715a7d Added CMake support
should make integration into visual studio easier for people
2021-02-11 20:34:04 -06:00
cpunch bc43eaaa75 Minor cbaselib.c cleanup 2021-02-11 00:58:12 -06:00
CPunch 43a278e12d
Added error, string.len, and cosmoV_readCString
Commit authored by https://github.com/NeoInversion
2021-02-11 00:27:23 -06:00
Inversion 44f1674b09 Added argument type check to string.len 2021-02-10 22:24:31 -08:00
Inversion 27aedd2969 Updated baselib in accordance with cosmoV_readCString 2021-02-10 22:14:58 -08:00
Inversion 7caa696aa2 Added cosmoV_readCString for convenience 2021-02-10 22:14:31 -08:00
Inversion 2e395065f8 Add string.len to base library 2021-02-10 22:02:35 -08:00
Inversion 5b8dc30bb8 Added error to the base library 2021-02-10 21:48:41 -08:00
cpunch 1539a7e676 Added power operator '^', added OP_POW
- added TOKEN_CARROT to clex.[ch]
2021-02-10 17:26:20 -06:00
cpunch 24bbc22cd4 Minor os.read() fixes 2021-02-10 17:11:52 -06:00
cpunch cfb4df66f9 Added optional os.* library, fixed cosmoB_loadLibrary
- os.time() returns the UNIX Epoch time in seconds
- os.read() reads file and returns the data as a <string> object
2021-02-10 17:10:03 -06:00
cpunch 7db0782991 Added support for multiline comments using '/*' and '*/' 2021-02-10 15:39:36 -06:00
CPunch 78e21a0f28 refactored cosmoV_set & cosmoV_get, renamed COSMO_TOBJ->COSMO_TREF
also changed print() to print raw primitives instead of generating a <string> needlessly. helped performance immensely in scripts like `examples/increment.cosmo`
2021-02-07 14:32:39 -06:00
CPunch 0d344f65df renamed cosmoV_pushObj->cosmoV_pushRef & cosmoV_newObj->cosmoV_newRef 2021-02-07 14:05:53 -06:00
CPunch 8d37f1f243 Renamed cosmoV_readObj to cosmoV_readRef to reduce ambiguity
also fixed several typos
2021-02-07 14:00:00 -06:00
CPunch 5faa40bdef Minor CObj* refactor, added cosmoO_lock and cosmoO_unlock
- cosmoO_getUser* and cosmoO_setUser* no longer take the `CState*` argument
- if a set is performed on a locked object an error is thrown
2021-02-06 18:51:47 -06:00
CPunch 8151cde6f3 Refactored cosmo_pushFString
- remove %t support
- added length specifier to %s
2021-02-06 16:01:59 -06:00
CPunch 2f9ff08cd3 Added object.* library; added cosmoO_isDescendant to cobj.[ch]
The object library includes:
- __proto getter and setter tables (might make an option to lock __proto in the future)
- ischild()

cosmoB_loadDebug was renamed to cosmoB_loadVM and now only loads the VM library
2021-02-03 13:43:26 -06:00
CPunch 88d41d7db8 Fixed minor GC freeze bug in pcall() 2021-02-03 13:03:24 -06:00
CPunch ff1804ca36 Removed .charAt(), added .char() & .byte()
- also minor comment fixes in cobj.[ch]
2021-02-01 21:07:43 -06:00
CPunch 3a28de6b2a Added 'local' support for 'proto', fixed DOS bug in proto parser 2021-01-31 12:06:20 -06:00
CPunch 300ffb89e9 Added basic math.* library, fixed number lexer edgecase
- also added vm.collect() to the vm library
2021-01-29 15:45:24 -06:00
CPunch cff26574bb Fixed table iteration bug, added vm.globals to debug lib 2021-01-25 16:14:51 -06:00
CPunch cd6744ab65 Minor refactor, added vm.* library
- cosmoV_pushObj() has been added
- cbaselib.h has been cleaned up a bit
2021-01-25 15:04:16 -06:00
CPunch 0be6e7dff1 Minor OP_NEWARRAY fix 2021-01-24 20:33:37 -06:00
CPunch 336e57e269 Added basic control.md docs 2021-01-24 20:26:54 -06:00
CPunch e38e8f335f Added operator docs 2021-01-24 12:28:53 -06:00
CPunch c82a01c968 Minor refactoring, fixed 'or' and 'and' logical operators 2021-01-24 12:17:46 -06:00
CPunch e699005a74 Added datatype docs 2021-01-24 12:00:21 -06:00
CPunch fd1481fa43 Minor VM refactor + GC bug fix
The VM now respects metamethods from proto objects connected to tables. Also the CState is frozen while being instantiated.
2021-01-23 17:16:45 -06:00
CPunch 0ad0df5fba Added '__tonumber' metamethod 2021-01-23 15:30:30 -06:00
CPunch 7c92749e0d Added '__count' metamethod to objects 2021-01-22 15:22:30 -06:00
CPunch 6b407534c0 basic docs 2021-01-20 23:29:05 -06:00
CPunch 185e6027e7 whoops 2021-01-19 22:56:52 -06:00
CPunch 71e9331551 Minor baselib.c refactor; added string.charAt() 2021-01-19 22:54:06 -06:00
CPunch d690c3040d Added hex and binary character encoding to strings
Use '\b' and '\x' to encode characters in strings!
2021-01-19 12:22:20 -06:00
CPunch c7116ab752 fix for one digit numbers 2021-01-18 21:54:31 -06:00
CPunch f8884c494c Added Hexadecimal encoding and binary encoding to numbers using '0x' and '0b' 2021-01-18 19:42:15 -06:00
CPunch 85503025dd Added strings.cosmo example 2021-01-17 14:11:05 -06:00
CPunch 3c19079262 Added string.split() & string.find() 2021-01-17 14:07:30 -06:00
CPunch 2864c7be53 Minor refactoring, added OP_GETMETHOD
You can use ':' without invoking. So you can grab a method binding to an object and later call it. Also some GC bugs were fixed.

A new preprocessor macro (VM_DEBUG) has been added. Defining this macro will print each instruction thats being executed in the VM, as
well as print each call.
2021-01-16 15:40:58 -06:00
CPunch e995bb75fb added tonumber() and tostring() to base lib 2021-01-13 14:13:55 -06:00
CPunch 8cd0112c48 fixed __getter and __setter tables 2021-01-12 18:27:29 -06:00
CPunch 32162ce50c Updated examples and README to use proper syntax 2021-01-12 17:49:16 -06:00
CPunch ab86e19cfe Added ':' invoke operator
You're now forced to use ':' when calling a method on an object. Some of Lua's ideas really are just better in practice /shrug
2021-01-12 17:46:22 -06:00
CPunch c510c9aebf Minor table refactor, added cosmoV_compileString and loadstring() to baselib
cosmoV_compileString is recommended since it'll push the result (<error> or <closure>) onto the stack.

also, fixed some GC-related bugs, so yay!
2021-01-10 14:38:53 -06:00
CPunch 8dc8cef7dc better increment test 2021-01-10 13:20:09 -06:00
CPunch f0b666f623 better README 2021-01-08 23:53:02 -06:00
CPunch aaa37c61d0 updated increment.cosmo example 2021-01-08 23:07:44 -06:00
CPunch 75b571c09a Added table support to the parser
a new instruction, OP_NEWARRAY has been added. this instruction will create a table out of the uint16_t values on the stack, with incremental keys [0-(u16-1)]
2021-01-08 22:47:36 -06:00