Daniel Kolesa
63023f8c5e
remove parser_state::gen_main
2021-04-10 00:54:28 +02:00
Daniel Kolesa
c0fc1aa452
abstract away ugly bcode reference creation
2021-04-09 01:12:52 +02:00
Daniel Kolesa
dcd5f61748
fewer direct accesses to code vector
2021-04-09 01:03:29 +02:00
Daniel Kolesa
e5a05a3199
remove parser_state::done()
2021-04-09 00:56:58 +02:00
Daniel Kolesa
5f67b205df
initial bits for separation of codegen from parser
2021-04-09 00:41:55 +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
4da0cb54a8
use format contants in default ivar/fvar/svar handlers
2021-04-06 21:23:17 +02:00
Daniel Kolesa
f93042d7b9
add more utility methods for string_ref
2021-04-06 01:10:49 +02:00
Daniel Kolesa
e531ab3434
clean up any_value APIs for consistency
2021-04-06 00:54:46 +02:00
Daniel Kolesa
3d06157dbc
guarantee valid result from new_command
2021-04-05 20:05:41 +02:00
Daniel Kolesa
8c8aa26c20
return refs for new_*var and new_ident (guarantee valid result)
2021-04-05 19:52:13 +02:00
Daniel Kolesa
194d5f960b
drop ret-by-reference run APIs
2021-04-05 18:32:45 +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
c2de63be25
re-expose new_ident in a restricted way
2021-04-04 19:53:59 +02:00
Daniel Kolesa
1624938c0b
remove public is_in_loop api
2021-04-04 19:43:28 +02:00
Daniel Kolesa
7158a6979b
wipe thread state on destroy to prevent dangling pointer use
2021-04-04 19:40:15 +02:00
Daniel Kolesa
04441f206d
remove the 255 run-depth limitation
...
also add optional per-thread API that sets the maximum run depth
(0 means no limit, default) if you want it; since we no longer
store stuff on the stack it should not be necessary though
2021-04-04 19:31:29 +02:00
Daniel Kolesa
c177013ea2
remove reliance on hardcoded indexes entirely
2021-04-04 06:52:02 +02:00
Daniel Kolesa
e65e141741
sanitize var names, provide cached builtins for var handlers
2021-04-04 06:47:17 +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
3d91cf2ee7
rea-add proper handling of variable overrides
2021-04-04 02:33:28 +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
f0bb6b1410
make more api private
2021-04-03 06:16:43 +02:00
Daniel Kolesa
238e5a6ac5
unexpose get_flags from ident, replace with specific methods
2021-04-03 05:39:19 +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
881ba4bce9
prepare codebase for per-thread alias stack
2021-04-02 05:47:49 +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
b2caade276
remove all raw bcode passing in public api
2021-04-01 05:06:26 +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
b9c74d86b5
msvc warning fixes
2021-03-31 02:21:32 +02:00
Daniel Kolesa
eddbf64c87
get rid of call_with_cleanup
2021-03-30 23:49:50 +02:00
Daniel Kolesa
3dc6ad866f
make command argcount unlimited, remove maxargs checks from codegen
...
also adjust the bytecode appropriately, now you can call commands
with an unlimited number of args and aliases with max 32 args,
extra args will be ignored
2021-03-30 02:08:25 +02:00
Daniel Kolesa
71f45b2f07
fix up usage of IDENT_FLAG_UNKNOWN
2021-03-28 00:38:41 +01:00
Daniel Kolesa
d1e131dbf6
don't rely on MAX_ARGUMENTS where not necessary
2021-03-27 23:43:55 +01:00
Daniel Kolesa
54c0f2ae20
remove more dead bits
2021-03-27 00:35:20 +01:00
Daniel Kolesa
a37eb25d1c
move public state methods where they belong
2021-03-27 00:26:59 +01:00
Daniel Kolesa
b27d4fa7e6
make p_tstate actually private
2021-03-26 03:05:14 +01:00
Daniel Kolesa
0b2c4c7038
pass thread_state in more places
2021-03-26 02:29:54 +01:00
Daniel Kolesa
c854e9d189
move the owner tag inside
2021-03-25 01:55:47 +01:00
Daniel Kolesa
d80af7b159
hide internal_state from public state struct
2021-03-25 01:37:42 +01:00
Daniel Kolesa
3d37ea22c3
put force_ident and force_code in any_value
2021-03-24 21:01:01 +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