Commit Graph

47 Commits (f4b8d077bb894f4fb06ed6e764a127c0521eaa3b)

Author SHA1 Message Date
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
Daniel Kolesa 1def48cf76 redo alias_stack for robustness (guarantee order of push/pop) 2021-03-30 20:37:50 +02:00
Daniel Kolesa 970e37f318 make alias pushing separate from setting value 2021-03-30 20:24:46 +02:00
Daniel Kolesa d1243c5cc3 add better api to deal with alias stack 2021-03-30 03:57:43 +02:00
Daniel Kolesa 4154944726 remove fixed-size argument stacks and reliance on argument ids 2021-03-30 00:28:06 +02:00
Daniel Kolesa 9e82dc0d2f get rid of cycle check from push_arg 2021-03-29 23:42:08 +02:00
Daniel Kolesa 8385ab01e7 use bitset to store usedargs and increase argcount to 32 2021-03-28 23:46:08 +02:00
Daniel Kolesa 064a7ea99b document the instructions and drop more now useless vm code 2021-03-28 17:07:29 +02:00
Daniel Kolesa a37eb25d1c move public state methods where they belong 2021-03-27 00:26:59 +01:00
Daniel Kolesa 0b2c4c7038 pass thread_state in more places 2021-03-26 02:29:54 +01:00
Daniel Kolesa 468c3a07d4 get rid of some indirections 2021-03-25 01:52:03 +01:00
Daniel Kolesa 00b8312ad5 move most thread state into an internal structure 2021-03-24 20:33:20 +01:00
Daniel Kolesa d774db675a separate cs_gen.hh, various refactors 2021-03-24 02:21:32 +01:00
Daniel Kolesa 21aec59ad3 rename namespace to cubescript 2021-03-23 23:32:25 +01:00
Daniel Kolesa b9b344cba6 remove cs_ namespace in all API 2021-03-23 23:29:32 +01:00
Daniel Kolesa 7139370990 move belonging stuff into cs_ident 2021-03-23 21:57:38 +01:00
Daniel Kolesa 87e141ab36 move public ident interfaces to cs_ident.cc 2021-03-23 02:35:31 +01:00
Daniel Kolesa 702dca0809 separate ident and error impls into their own files 2021-03-22 22:33:15 +01:00