Daniel Kolesa
b5127c52bf
simplify exec_alias more
2021-05-14 23:31:27 +02:00
Daniel Kolesa
72c3ecedb1
move cs thread call stack off real thread call stack
2021-05-14 23:14:48 +02:00
Daniel Kolesa
203e0bd5e4
exec_alias cleanups
2021-05-14 22:42:19 +02:00
Daniel Kolesa
6ffdc7fa91
various vm cleanups
2021-05-14 19:18:11 +02:00
Daniel Kolesa
8b04bd1488
refactor vm scope guard
2021-05-14 02:36:16 +02:00
Daniel Kolesa
54a7b4b7f1
add assert in lib_base, remove formatting public error api
2021-05-08 17:20:56 +02:00
Daniel Kolesa
1c56ea36ff
remove save_val
2021-05-07 01:13:02 +02:00
Daniel Kolesa
9437e0951b
eliminate type separation between IVAR/FVAR/SVAR
2021-05-07 00:07:13 +02:00
Daniel Kolesa
6218adb78a
remove public type specializations for vars
2021-05-06 23:13:48 +02:00
Daniel Kolesa
6fede13b97
remove set_value() specialization per-vartype
2021-05-06 04:13:11 +02:00
Daniel Kolesa
fa5e38afad
remove the call() specializations per-vartype
2021-05-06 04:07:45 +02:00
Daniel Kolesa
6a892b4b2c
move set_raw_value to builtin_var
2021-05-06 04:01:29 +02:00
Daniel Kolesa
74f437f851
s/global_var/builtin_var/
2021-05-06 03:47:38 +02:00
Daniel Kolesa
a57072fb73
use any_value for var storage and return it from value()
2021-05-06 03:34:25 +02:00
Daniel Kolesa
344bba07f3
remove is_ helpers for ident types (except is_var)
2021-05-05 03:24:41 +02:00
Daniel Kolesa
bd1e7825d8
be consistent with usage of get_/set_ prefixes
2021-05-05 03:16:32 +02:00
Daniel Kolesa
03325af1e6
pass old and new values to var_changed
2021-05-05 00:37:12 +02:00
Daniel Kolesa
5b54c74f2a
remove call() methods from state
2021-05-02 22:44:38 +02:00
Daniel Kolesa
43e6dc9341
remove get_ utilities from ident
...
this is not a good api (it prevents extensibility, requires
handling errors twice to be safe - once on user side, once
internally - and so on); just cast it
2021-04-25 00:44:45 +02:00
Daniel Kolesa
f19fd57549
get rid of some more pointers in API
2021-04-24 23:50:06 +02:00
Daniel Kolesa
f4b8d077bb
alias_local and get_ident() memory safety (always return refs)
2021-04-24 23:34:44 +02:00
Daniel Kolesa
e7578f7e17
document error, ident
2021-04-20 02:52:27 +02:00
Daniel Kolesa
84f6d1f0d6
make std::span user replaceable
...
this will allow usage on some older compilers for those who want it
2021-04-15 20:27:24 +02:00
Daniel Kolesa
d358dd83e7
halve the size of any_value by removing state pointer from it
...
this brings more advantages too like actually being default
constructible, so it can be used more easily in data structures etc
2021-04-11 03:32:33 +02:00
Daniel Kolesa
ccb0c09d59
rename codegen_state to parser_state and move it
...
later commits will rewrite the parser and separate the codegen
bits into their own API
2021-04-08 23:35:30 +02:00
Daniel Kolesa
2de2c9b46c
remove get_raw_type from public interface
...
users of the library never need to know this
2021-04-07 00:30:39 +02:00
Daniel Kolesa
e531ab3434
clean up any_value APIs for consistency
2021-04-06 00:54:46 +02:00
Daniel Kolesa
f64df83dd8
add getter/setter api on alias, drop old broken api
2021-04-05 18:20:07 +02:00
Daniel Kolesa
06b1661afd
hide thread_state, remove state::thread_pointer()
2021-04-05 04:10:39 +02:00
Daniel Kolesa
59c0d16d50
make threads work
...
this means ensuring all required fields are set when creating
new threads. as well as respecting the "global" ident flags when
an alias is not pushed (in order to erase the UNKNOWN flag for
all threads)
2021-04-05 00:55:31 +02:00
Daniel Kolesa
e65e141741
sanitize var names, provide cached builtins for var handlers
2021-04-04 06:47:17 +02:00
Daniel Kolesa
a789659387
minor cleanups
2021-04-04 05:36:19 +02:00
Daniel Kolesa
529e34d268
add a variable value change trigger callback
2021-04-04 04:30:36 +02:00
Daniel Kolesa
bab8633a05
add proper var value setting helpers
2021-04-04 02:58:04 +02:00
Daniel Kolesa
e9fc023daa
implement override value saving
2021-04-04 02:44:35 +02:00
Daniel Kolesa
6777eb73d5
re-add some support for persistent/overridable flags + fix unknown
2021-04-04 01:08:30 +02:00
Daniel Kolesa
238e5a6ac5
unexpose get_flags from ident, replace with specific methods
2021-04-03 05:39:19 +02:00
Daniel Kolesa
2a8d2103b8
allow alias_local for arg aliases
2021-04-03 05:26:59 +02:00
Daniel Kolesa
b2b83a8e5b
clean up some leftover cruft
2021-04-03 03:40:19 +02:00
Daniel Kolesa
b00a08ea88
remove most variable code and leave it to user-defined handlers
...
the user can now define commands '//ivar', '//fvar' and '//svar'
which take identity (which is the variable) as the first argument
followed by any number of user defined arguments with types (one
can use the N argument type to check argument count, and when no
value arguments are provided, print the variable); this allows us
to implement different styles of variable setting without the
interpreter itself knowing about it, as well as ditch all the
stuff with overridden vars and hex vars and whatnot since this is
all specific to the engine and has no place in here
there is still leftover code remaining, which will get cleaned up
afterwards...
2021-04-03 03:16:57 +02:00
Daniel Kolesa
95e7ae320c
simplify alias_stack push/pop a bit
2021-04-02 23:50:35 +02:00
Daniel Kolesa
52b305954f
per-thread alias stack (the vm should be mostly resumable now)
2021-04-02 19:13:34 +02:00
Daniel Kolesa
881ba4bce9
prepare codebase for per-thread alias stack
2021-04-02 05:47:49 +02:00
Daniel Kolesa
e8856f8f9d
rename alias_stack to alias_local
2021-04-02 04:43:57 +02:00
Daniel Kolesa
99ec1a8583
make push_alias/alias_stack responsible for unsetting unknown flag
2021-04-02 04:34:14 +02:00
Daniel Kolesa
9d7853a840
store cached compiled code on alias stack
...
this will reduce needless discards on push and simplify the code
2021-04-02 02:12:31 +02:00
Daniel Kolesa
2b0392e27e
remove some more raw bcode usage
2021-04-01 05:25:21 +02:00
Daniel Kolesa
e2b65000d5
hide value getter from public alias interface
...
since this will become thread-specific, this API makes no sense
2021-04-01 04:19:00 +02:00
Daniel Kolesa
6bb3dc2a57
avoid recompiling code when undo/redoing arguments
2021-04-01 03:54:34 +02:00
Daniel Kolesa
d8736a059b
greatly simplify internal alias stack handling
...
this should be more efficient too (no value moves)
2021-04-01 03:41:40 +02:00