quakeforge/tools/qfcc/test
Bill Currie 12c84046f3 [cvar] Make cvars properly typed
This is an extremely extensive patch as it hits every cvar, and every
usage of the cvars. Cvars no longer store the value they control,
instead, they use a cexpr value object to reference the value and
specify the value's type (currently, a null type is used for strings).
Non-string cvars are passed through cexpr, allowing expressions in the
cvars' settings. Also, cvars have returned to an enhanced version of the
original (id quake) registration scheme.

As a minor benefit, relevant code having direct access to the
cvar-controlled variables is probably a slight optimization as it
removed a pointer dereference, and the variables can be located for data
locality.

The static cvar descriptors are made private as an additional safety
layer, though there's nothing stopping external modification via
Cvar_FindVar (which is needed for adding listeners).

While not used yet (partly due to working out the design), cvars can
have a validation function.

Registering a cvar allows a primary listener (and its data) to be
specified: it will always be called first when the cvar is modified. The
combination of proper listeners and direct access to the controlled
variable greatly simplifies the more complex cvar interactions as much
less null checking is required, and there's no need for one cvar's
callback to call another's.

nq-x11 is known to work at least well enough for the demos. More testing
will come.
2022-04-24 19:15:22 +09:00
..
old Fix a pile of double semicolons 2021-01-09 20:42:23 +09:00
.gdbinit v6 modulo test 2010-12-19 11:19:23 +09:00
address-cast.r Add failing global init test too 2020-02-15 23:49:12 +09:00
alignment.r Finish up alignment tests and add address cast 2020-02-15 23:49:12 +09:00
anonstruct.r [qfcc] Make anonstruct test robust against pointer math 2020-03-17 12:16:24 +09:00
assignchain.r [qfcc] Correct some misinformative prints 2020-03-14 01:28:00 +09:00
build-compile-fail-run [qfcc] Catch declarations of arrays of class 2020-03-30 19:02:41 +09:00
build-run [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
chewed-alias.r [qfcc] Add a very basic attribute system 2022-02-02 23:51:37 +09:00
chewed-return.r Don't use the expr type for assignments. 2012-11-30 21:06:08 +09:00
classarray.r [qfcc] Add pragma to control warning promotion 2022-01-25 22:15:28 +09:00
comma-expr.r Implement comma expressions 2019-06-09 16:56:20 +09:00
compound.r [qfcc] Support compound init in assignment and params 2020-03-11 19:48:25 +09:00
const-fold-int.r [qfcc] Fold int constants more aggressively 2022-01-29 15:38:39 +09:00
deadbool.r Implement double constants 2020-02-15 23:49:12 +09:00
dealloc-nowarn.r [qfcc] Add failing test for dealloc warning 2021-12-24 22:45:43 +09:00
dealloc-nowarn2.r [qfcc] Add failing test for multi-path dealloc 2021-12-24 22:45:43 +09:00
dealloc-warn.r [qfcc] Add pragma to control warning promotion 2022-01-25 22:15:28 +09:00
dealloc-warn2.r [qfcc] Add pragma to control warning promotion 2022-01-25 22:15:28 +09:00
dealloc-warn3.r [qfcc] Add pragma to control optimization 2022-02-01 14:57:16 +09:00
double-alias.r [qfcc] Tweak the printf to make more sense 2022-02-02 19:04:43 +09:00
double-demote-float-ainit.r [qfcc] Add pragma to control warning promotion 2022-01-25 22:15:28 +09:00
double-demote-float-ginit.r [qfcc] Add pragma to control warning promotion 2022-01-25 22:15:28 +09:00
double-demote-float-linit.r [qfcc] Add pragma to control warning promotion 2022-01-25 22:15:28 +09:00
double-demote-float.r [qfcc] Add pragma to control warning promotion 2022-01-25 22:15:28 +09:00
double-demote-int-ainit.r [qfcc] Add pragma to control warning promotion 2022-01-25 22:15:28 +09:00
double-demote-int-ginit.r [qfcc] Add pragma to control warning promotion 2022-01-25 22:15:28 +09:00
double-demote-int-linit.r [qfcc] Add pragma to control warning promotion 2022-01-25 22:15:28 +09:00
double-demote-int.r [qfcc] Add pragma to control warning promotion 2022-01-25 22:15:28 +09:00
double-float-compare.r [qfcc] Add pragma to control warning promotion 2022-01-25 22:15:28 +09:00
double-int-compare.r [qfcc] Add pragma to control warning promotion 2022-01-25 22:15:28 +09:00
double.r [qfcc] Map 64-bit load/store/assign instructions 2022-02-02 16:06:15 +09:00
entity-struct.r [qfcc] Handle aliased field types 2021-07-24 18:09:54 +09:00
enum.r Fix assigning int to enum or enum to int 2019-06-10 08:46:40 +09:00
fordecl.r Fix for decl test scope issue 2019-06-09 13:55:07 +09:00
func-expr.r Add a test for functions in binary expressions. 2013-09-27 23:15:57 +09:00
func-expr2.r [qfcc] Add a new failing test 2020-03-26 19:22:41 +09:00
func-static.r Add a test for function local static variables. 2012-12-03 16:27:31 +09:00
gcd.pas [qfcc] Add ExitCode support to quake-pascal 2020-03-20 12:59:25 +09:00
infloop.r Add a test for writes to global vars in a loop. 2012-11-24 14:53:45 +09:00
iterfunc.r [qfcc] Add test for var = func(var) 2022-02-01 21:40:59 +09:00
ivar-struct-return.r [qfcc] Make ivar-struct-return fail 2020-03-17 23:39:17 +09:00
link_order.r [qfcc] Add a test for use/write dependencies 2021-12-27 14:17:12 +09:00
lost-use.r [qfcc] Add failing test for lost var use 2022-01-23 01:31:50 +09:00
Makemodule.am [qfcc] Ensure ops on globals occur before return 2022-02-03 16:33:42 +09:00
methodparams.r [qfcc] Add a very basic attribute system 2022-02-02 23:51:37 +09:00
modulo.r [qfcc] Modify the modulo tests to be compatible with Ruamoko ISA 2022-02-01 14:57:16 +09:00
nilparamret.r [qfcc] Add failing nil return through @param bug 2020-03-27 20:32:52 +09:00
overload.r [qfcc] Add failing function overload test 2020-03-28 18:58:08 +09:00
paramret.r Add a test for returning @param into an array. 2012-12-26 11:49:39 +09:00
postop.r [qfcc] Add dependency edges for moved labels 2021-06-29 14:42:16 +09:00
ptraliasenc.r [qfcc] Correct xdef structures and usage in test 2022-01-18 21:42:53 +09:00
ptrstructcast.r [qfcc] Un-dereference src expression early for movep 2021-06-30 20:05:27 +09:00
quaternion.r Support assigning non-constant vector expressions. 2018-10-12 22:05:17 +09:00
return-ivar.r Force RETURN's operand to be live. 2012-12-20 21:18:27 +09:00
return-postop.r [qfcc] Add pragma to control optimization 2022-02-01 14:57:16 +09:00
sendv.r [qfcc] Update sendv test to use @return 2022-02-05 19:30:08 +09:00
state.r [gamecode] Clean up state imlementations 2021-07-15 16:55:02 +09:00
static-init.r [qfcc] Add failing test for static init 2021-01-13 16:47:49 +09:00
struct-init-param.r [qfcc] Support pointers to temp operands 2020-03-16 14:24:47 +09:00
struct-nil-init.r [qfcc] Treat { } as nil for initializing compound types 2020-02-27 20:30:39 +09:00
structarray.r Implement automatic array sizing from initializer 2019-06-09 23:11:38 +09:00
structlive.r Add a test for struct writes. 2012-12-13 13:44:25 +09:00
structptr.r Make structptr.r a little quieter. 2012-11-22 21:59:01 +09:00
structstruct.r Extend nested struct test to cover struct copy 2019-06-17 22:57:40 +09:00
swap.r Add tests for swapping vars and triangle area. 2018-08-21 16:27:22 +09:00
temp-component.r [qfcc] Add failing test for temp.component 2022-01-30 13:57:41 +09:00
test-bi.c [gamecode] Pass registered data pointer to builtins 2022-02-14 12:28:38 +09:00
test-bi.h Add a test harness for qfcc. 2012-11-22 21:59:01 +09:00
test-defspace.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
test-defspace.h [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
test-harness.c [cvar] Make cvars properly typed 2022-04-24 19:15:22 +09:00
test-harness.h [qfcc] Make ivar-struct-return fail 2020-03-17 23:39:17 +09:00
triangle.r Fix several double-related bug 2020-02-15 23:49:12 +09:00
tw-defspace.c More defspace tests. 2018-10-09 12:45:26 +09:00
tw-diagnostic.c Start work on a unit test for defspace. 2018-09-09 22:37:09 +09:00
tw-strpool.c Start work on a unit test for defspace. 2018-09-09 22:37:09 +09:00
twice-called.r [qfcc] Move .return handling into statements.c 2022-01-21 13:09:23 +09:00
typedef.r [gamecode] Rename ev_pointer to ev_ptr 2022-01-18 14:36:06 +09:00
typelinker.h [qfcc] Add failing aliased type linking test 2020-03-28 23:30:05 +09:00
typelinker_a.r [qfcc] Add failing aliased type linking test 2020-03-28 23:30:05 +09:00
typelinker_b.r [qfcc] Add failing aliased type linking test 2020-03-28 23:30:05 +09:00
unaryminus.r [qfcc] Add failing test for unary minus 2020-04-08 21:12:56 +09:00
vecaddr.r [qfcc] Really get vecaddr.r working on both ISAs 2022-01-30 20:01:32 +09:00
vecexpr.r [qfcc] Rearrange vecexpr.r for easier debugging 2020-03-08 16:50:39 +09:00
vecinit.r Set up temp aliases correctly 2019-06-18 10:38:19 +09:00
voidfor.r Append a new sblock for return when necessary. 2012-12-21 20:11:27 +09:00
while.r Add a test for while (count--) 2012-11-22 21:59:00 +09:00
zerolinker.r [qfcc] Fix missed t enum cleanup 2020-03-30 19:02:54 +09:00