Commit Graph

106 Commits (master)

Author SHA1 Message Date
Daniel Kolesa 4fb6b9a0bc add ident getter by index, + ident count method on state 2021-05-16 00:50:14 +02:00
Daniel Kolesa 8086c23a77 memory safe error stack state 2021-05-15 23:27:34 +02:00
Daniel Kolesa 3189d87ac9 use a reference for the ident in stack node 2021-05-15 04:23:47 +02:00
Daniel Kolesa a8d2bfc442 don't use print_stack in repl 2021-05-10 01:16:27 +02:00
Daniel Kolesa 1739cbed6e remove separate stack_state 2021-05-09 20:21:35 +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 7f74602b7e add convenience constructors and assignment ops to any_value 2021-05-07 01:56:43 +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 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 4dd1518f6c s/run/call/ 2021-04-30 02:55:20 +02:00
Daniel Kolesa 5d4bcaf797 use an ellipsis for variadics instead of V 2021-04-29 19:56:48 +02:00
Daniel Kolesa e14d5c4aa3 remove automatic concatenating variadics
these were pretty much just pointless sugar for something that
can be better achieved with ordinary variadics and an extra call
(which is what it did, except in VM)
2021-04-29 19:29:51 +02:00
Daniel Kolesa e52720ebb2 rename N in arglist to # 2021-04-29 04:15:16 +02:00
Daniel Kolesa da7548664c remove b and F arg types + renames + set default args to none
setting default args to none rather than whatever default
value allows for easily checking whether the arg was set,
without losing anything (since e.g. calling get_integer on
a none value still returns a 0)

'b' and 'F' were kinda ugly and handled special niches, which
are no longer a thing now that we're defaulting to none
2021-04-29 01:40:55 +02:00
Daniel Kolesa 92281e88c1 remove state::get_alias(), make get_ident() return an optional 2021-04-26 02:42:08 +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 f4b8d077bb alias_local and get_ident() memory safety (always return refs) 2021-04-24 23:34:44 +02:00
Daniel Kolesa 37ad7e7589 update compiler compat note + lowercase windows.h in linenoise 2021-04-15 20:59:30 +02:00
Daniel Kolesa 36bf0e368f drop readline support in repl
this library is bad, and its documentation is even worse

and our linenoise now supports every non-boomer platform already
anyway
2021-04-12 20:43:19 +02:00
Daniel Kolesa a5003678da fix build with libc++, and try using it in CI with clang 2021-04-12 19:53:24 +02:00
Daniel Kolesa 8207ef0ce3 use overloads for new var methods 2021-04-11 20:49:26 +02:00
Daniel Kolesa b26bae3ec5 move standard library init outside state, make it never error 2021-04-11 19:36:41 +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 e531ab3434 clean up any_value APIs for consistency 2021-04-06 00:54:46 +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 9c2d375471 remove overrides for fvar and svar handlers in repl 2021-04-04 19:35:45 +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 3d91cf2ee7 rea-add proper handling of variable overrides 2021-04-04 02:33:28 +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 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 b36ef94b80 update notes on linenoise 2021-03-31 23:55:40 +02:00
Daniel Kolesa 6068a7259b switch to modified cpp-linenoise, use it on windows 2021-03-31 23:48:22 +02:00
Daniel Kolesa b9c74d86b5 msvc warning fixes 2021-03-31 02:21:32 +02:00
Daniel Kolesa 2270d8e41f up the default warning level, turn off rtti by default 2021-03-31 01:35:02 +02:00
Daniel Kolesa 13d46881e8 windows fixes and other correctness/portability stuff 2021-03-31 01:13:35 +02:00
Daniel Kolesa c62dd07adb update linenoise to latest git 2021-03-28 01:05:09 +01:00
Daniel Kolesa 371ef9e912 add build option to disable repl, use feature objects 2021-03-28 00:56:11 +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 3d9f73c7b2 drop removed arg types in repl 2021-03-23 02:23:24 +01:00
Daniel Kolesa 4b766a380f drop the util namespace 2021-03-23 02:02:43 +01:00
Daniel Kolesa 82d366366e drop libostd requirement entirely 2021-03-20 08:23:51 +01:00