Commit Graph

67 Commits (master)

Author SHA1 Message Date
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