Commit Graph

86 Commits

Author SHA1 Message Date
Adam Olsen 6414897dae got a few new operators for qc :)
<< >> % which all act like their C counterparts
+= -= *= /= &= ^= |= <<= >>= %= which just expand into the obvious,
also like the C versions.
2001-08-10 16:17:00 +00:00
Bill Currie 081d8f3c47 ^ and ~ operators for qc (^ from Rhamphoryncus) and clean up the punctuation
line in qc-lex.l (why didn't I think to do that in the first place?!?)
2001-08-09 16:34:46 +00:00
Adam Olsen c218ede288 Add support for checkfunction, which is a builtin that searches for
another builtin by name, and returns it.

Soon I'll change all our new builtins to by allocated dynamically, as
well as changing the number checkfunction uses, and happily break
everything that uses them :D
2001-08-04 09:11:50 +00:00
Adam Olsen ae133d0a90 Modify progs to add builtins at runtime. It should be trivial to
lookup functions by name, and make all our new QC builtins allocate
numbers automatically.
2001-08-03 06:40:28 +00:00
Bill Currie c248372e20 Initial integer type support. qfcc /is/ partially broken when it comes to
integer constants and float function args/return values.

pr_comp.h:
	o  add the integer opcodes to pr_opcode_e
pr_edict.c:
	o  add "quaternion" and "integer" to type_name[]
	o  support quatnernion and integers types when printing values
	o  support the integer opcodes when bounds checking
pr_exec.c
	o  enable the integer opcodes
pr_opcode:
	o  add the integer opcodes to the opcode table
	o  logical operators all result in an integer rather than a value
expr.h:
	o  rename int_val to integer_val
qfcc.h:
	o  kill another magic number
expr.c:
	o  move the opcode to string conversion out of type_mismatch and into
	   get_op_string
	o  rename int_val to integer_val
	o  general integer type support.
	o  generate an internal comipiler error for null opcodes rather than
	   segging.
pr_imm.c:
	o  rename int_val to integer_val
	o  support integer constants, converting to float when needed.
pr_lex.c:
	o  magic number death and support quaternions and integers in type_size[]
qc-lex.l
	o  rename int_val to integer_val
	o  support quaternion and integer type keywords
qc-parse.y:
	o  rename int_val to integer_val
	o  use binary_expr instead of new_binary_expr for local initialized
	   variables
builtins.c:
	o  rename int_val to integer_val
	o  fix most (all?) of the INT related FIXMEs
defs.qc:
	o  use integer instead of float where it makes sense
main.c:
	o  read_result is now integer rather than float
main.qc:
	o  float -> integer where appropriate
	o  new test for int const to float arg
2001-07-23 01:31:22 +00:00
Bill Currie 22c9716b56 rename int_var to integer_var 2001-07-22 20:20:46 +00:00
Bill Currie bad184b11b change the results of the test instructions from float to int. 2001-07-22 19:58:17 +00:00
Bill Currie 67d20e0b70 remove all the _IF, _FI, _IV and _VI instructions (none yet enabled) as I don't
want to implement implicit integer <-> float `conversions'
2001-07-22 19:27:17 +00:00
Bill Currie edcc313501 debug info for local variables is now used. only works when tracing atm:/ 2001-07-19 07:27:14 +00:00
Bill Currie 33e506e943 make PR_RunError back up to the preceding source line if debug is availalbe 2001-07-18 20:52:12 +00:00
Bill Currie 1c9e1b176f fear the mighty const correct patch 2001-07-15 07:04:17 +00:00
Bill Currie 66c8f00dc7 print out source line numbers when available 2001-07-14 23:53:59 +00:00
Bill Currie 2818d720c2 move the full info opcocde table from qfcc to gamecode (<KURGON>There can be
only one!</KURGON>:) and use the table in PR_PrintStatement. This means that
qfcc now links against libQFgamecode as well as libQFutil
2001-07-14 02:34:16 +00:00
Bill Currie 14ce770714 report statment addresses for current statement and branch destinations when
printing statements
2001-06-28 23:58:01 +00:00
Bill Currie 3009d0e0c8 fix up some overzelous s/// 2001-06-07 22:15:37 +00:00
Bill Currie 521b86f56a Massive clean up of progs accessors. Just the cleanup of the casts fixed the
CustomTF doors issue.
2001-06-07 21:59:24 +00:00
Bill Currie 2bc94ea66f progs.h:
add no_exec_limit field. Set to 1 to disable the runaway loop check
	for unlimited runs (eg, in qwaq)
pr_exec.c:
	don't bother checking the profile counter if pr->no_exec_limit is set
pr_strings.c:
	free unreferenced dynamic strings rather than referenced.
2001-06-06 18:10:47 +00:00
Bill Currie ce014fc5c7 use memcpy instead of ugly casts to transfer locals 2001-06-05 23:57:51 +00:00
Bill Currie 275e74161b string comparison operators 2001-06-04 03:36:35 +00:00
Bill Currie 09118bc01e pr_comp.h:
add OP_ADD_S. WARNING!!! this /will/ move.
progs.h:
	add prototype for PR_PrintStatement
pr_edict.c:
	add OP_ADD_S support in the progs checker
pr_exec.c:
	implement OP_ADD_S
tools/qfcc/include/.gitignore:
	add config.h.in
qfcc.h:
	nuke PR_NameImmediate and change PR_ParseImmediate's prototype (see
	pr_imm.c)
pr_comp.c:
	add ADD_S, adjust for PR_ParseImmediate's prototype, make
	PR_ParseExpression work with non-sequential opcodes (slow, will work on
	that next). Fix up initialised global parsing.
pr_imm.c:
	nuke PR_NameImmediate. didn't work well and wasn't such a good idea anyway.
	PR_ParseImmediate now accepts a def_t * arg. if null, will allocate a
	new global def, otherwise it will initialize the def passed in.
qwaq/main.c:
	sports some debugging code (dumps info about the progs it's running)
qwaq/main.qc:
	better ADD_S testing
2001-06-03 17:36:49 +00:00
Bill Currie 323015b11a include/QF header cleanup. including config.h (or any file from include) is
a nono because headers in include/QF get installed, but include don't and thus
would break quakeforge-dev.
2001-05-31 05:33:13 +00:00
Bill Currie dfbfd9463c mingw cross compile fixes. qw-server (only, so far) compiles but does not
yet link due to Sys_Error :/
2001-04-10 20:07:11 +00:00
Bill Currie 067db089a2 make edict pruning, field parsing and the builtins part of progs_t like they
should have been
2001-03-27 22:39:21 +00:00
Bill Currie f78b973978 move the api headers into include/QF and clean up (most of) the resulting mess.
target specific files that I don't build won't compile yet. just put QF/
infront of the offending headers.

Also move ver_check into libqfutils
2001-03-27 20:33:07 +00:00
Bill Currie 4489319298 first step towards garbage collected dynamic strings in qc. All strings
external to the progs file are now malloced and then freed at progs reload.
All that needs to be implementd for gc to work is the scanner and deallocator.
2001-03-06 04:22:33 +00:00
Bill Currie f40b361fb3 hash.[ch]:
slight api change: the getkey and free functions now take a user data
	parameter (which is an aditional parameter to Hash_New.
cmd.c, cvar.c, quakefs.c:
	clean up the resulting errors.
pr_edict.c:
	use hash tables for lookups of function, global and field definitions.
	should speed things up a bit, ESPECIALLY when type checking is enabled.
2001-03-05 05:11:26 +00:00
Bill Currie aad21e3c00 put the pointer comparison back in so dynamic strings don't cause blowouts 2001-03-05 04:15:59 +00:00
Bill Currie 234dcb4cc9 better(?) string sharing. e1m3 died a sad death in nq due to running out of
strings, but that was because only the address of the string was checked for
similarity. Now strequal is used.
2001-03-05 04:08:08 +00:00
Bill Currie 8e52f7dc39 more nq fixes, not there yet 2001-03-03 09:09:39 +00:00
Bill Currie 6c9de8061b fix the silly OP_STATE bug. also erradicate pr_offs.c and its contents (the
source of the bug)
2001-03-02 19:18:04 +00:00
Bill Currie ffc5838599 more debug changes. not there yet 2001-03-02 00:32:10 +00:00
Bill Currie be8f1cef7c just some temporary debug info 2001-03-01 23:30:55 +00:00
Bill Currie 6f590ff9d0 forgot to change ev_function to ev_func in pr_edict and pr_exec was using the
wrong time. weaponframe still not fixed, but static entities were fixed in the
previous checkin
2001-03-01 23:03:40 +00:00
Bill Currie ad18afaa3c really clean up global and function access. Unfortunatly, frames are still
borked, at least for the view entity.
2001-03-01 08:34:30 +00:00
Bill Currie dfaf767890 libqfgamecode now builds. Now for the fun part: getting qw and nq to work using
the new setup.
2001-02-28 09:12:01 +00:00
Bill Currie e5543eb0a6 next step of the progs merge done. just need to sort out interdependencies,
fix PR_SetString, and a few other things.
2001-02-28 00:56:03 +00:00
Renamed from qw/source/pr_exec.c (Browse further)