quakeforge/tools/qfcc/source
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
..
.indent.pro indent whitespace cleanup. not perfect, but a bit more consistent now 2001-12-06 19:49:40 +00:00
attribute.c [qfcc] Add a very basic attribute system 2022-02-02 23:51:37 +09:00
class.c [qfcc] Use a union to manage function attributes 2022-02-05 19:30:08 +09:00
codespace.c [gamecode] Move progs auxiliary headers into a subdirectory 2022-01-09 00:26:52 +09:00
constfold.c [qfcc] Implement vector scaling for Ruamoko 2022-01-30 14:48:49 +09:00
cpp.c Get QF cross-compiling using MXE/mingw32 2021-03-27 20:09:37 +09:00
dags.c [qfcc] Ensure ops on globals occur before return 2022-02-03 16:33:42 +09:00
debug.c [gamecode] Rename ev_integer to ev_int 2022-01-18 13:27:19 +09:00
def.c [qfcc] Remove alias offset from initialize_def 2022-03-31 01:15:59 +09:00
defspace.c [qfcc] Allow 0 sized highwater allocations in defspaces 2022-01-21 10:16:54 +09:00
diagnostic.c [gamecode] Clean up string_t and pointer_t 2022-01-18 12:11:14 +09:00
disassemble.c [gamecode] Rename parm to param 2022-01-27 10:55:06 +09:00
dot.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
dot_dag.c [qfcc] Keep track of reachable dag nodes 2021-06-29 09:41:03 +09:00
dot_expr.c Clean up some enum sanity checks 2022-03-31 00:18:53 +09:00
dot_flow.c [util] Make va thread-safe 2021-01-31 16:05:48 +09:00
dot_sblock.c [qfcc] Make it a little easier to see extra info 2021-12-27 14:15:51 +09:00
dot_type.c [gamecode] Rename ev_pointer to ev_ptr 2022-01-18 14:36:06 +09:00
dump_globals.c Clean up some enum sanity checks 2022-03-31 00:18:53 +09:00
dump_lines.c [gamecode] Use a struct for offset/count pairs 2022-01-26 19:30:25 +09:00
dump_modules.c [gamecode] Use a struct for offset/count pairs 2022-01-26 19:30:25 +09:00
dump_strings.c [gamecode] Use a struct for offset/count pairs 2022-01-26 19:30:25 +09:00
emit.c [qfcc] "Use" the correct operands 2022-01-23 00:59:38 +09:00
expr.c [qfcc] Unify temp def, return value and parameter sizes 2022-02-15 08:39:20 +09:00
expr_assign.c [qfcc] Add support for horizontal vector ops 2022-01-30 10:56:15 +09:00
expr_binary.c [qfcc] Fix some not uninitialized warnings 2022-03-31 00:37:53 +09:00
expr_bool.c [qfcc] Always test float against 0 for Ruamoko 2022-02-06 21:20:00 +09:00
expr_compound.c [qfcc] Implement some basics for the vector types 2022-02-04 00:25:31 +09:00
expr_obj.c [qfcc] Make is_function_call a little more useful 2022-02-05 19:30:08 +09:00
flow.c [qfcc] Give lea its own statement type 2022-02-02 18:55:01 +09:00
function.c [qfcc] Unify temp def, return value and parameter sizes 2022-02-15 08:39:20 +09:00
grab.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
idstuff.c [gamecode] Use a struct for offset/count pairs 2022-01-26 19:30:25 +09:00
linker.c [gamecode] Clean up string_t and pointer_t 2022-01-18 12:11:14 +09:00
Makemodule.am [qfcc] Add a very basic attribute system 2022-02-02 23:51:37 +09:00
method.c [gamecode] Rename MAX_PARMS to PR_MAXPARAMS 2022-01-23 14:17:25 +09:00
obj_file.c [qfcc] Remove the def sorting (reverts 9a08a51ebd) 2022-01-27 16:43:43 +09:00
obj_type.c [qfcc] Encode the new vector types 2022-01-30 16:00:49 +09:00
opcodes.c [qfcc] Check load/store operand type before mangling 2022-02-02 19:14:22 +09:00
options.c [qfcc] Make the meaning of vec * vec selectable 2022-02-06 21:20:00 +09:00
pragma.c [qfcc] Make the meaning of vec * vec selectable 2022-02-06 21:20:00 +09:00
qc-lex.l [qfcc] Make the meaning of vec * vec selectable 2022-02-06 21:20:00 +09:00
qc-parse.y [qfcc] Get reused type names working for local variables 2022-02-07 10:40:26 +09:00
qfcc.c [gamecode] Rename parm to param 2022-01-27 10:55:06 +09:00
qfpreqcc Better handling of progs.dat and line numbers. 2012-11-15 15:04:51 +09:00
qfprogs.c [cvar] Make cvars properly typed 2022-04-24 19:15:22 +09:00
qp-lex.l [gamecode] Rename ev_integer to ev_int 2022-01-18 13:27:19 +09:00
qp-parse.y [qfcc] Use a hidden local variable for pascal functions 2022-02-01 16:08:58 +09:00
reloc.c [gamecode] Rename ev_integer to ev_int 2022-01-18 13:27:19 +09:00
shared.c [gamecode] Rename ev_integer to ev_int 2022-01-18 13:27:19 +09:00
statements.c [qfcc] Record referenced def in pointer dereferences 2022-02-11 19:29:33 +09:00
strpool.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
struct.c [qfcc] Add types for ivec3/4 and vec3/4 2022-01-30 10:54:07 +09:00
stub.c [gamecode] Clean up string_t and pointer_t 2022-01-18 12:11:14 +09:00
switch.c [qfcc] Rework the functionality of address expressions 2022-01-25 23:39:17 +09:00
symtab.c [qfcc] Improve handling of type names as variables 2022-01-19 23:17:49 +09:00
type.c [qfcc] Use a union to manage function attributes 2022-02-05 19:30:08 +09:00
value.c [qfcc] Shorten type_function and type_pointer names 2022-01-18 22:34:52 +09:00