Commit graph

794 commits

Author SHA1 Message Date
Bill Currie
4a680bf981 grovel around for the source file and line of an undefined def to give
better diagnostics
2003-08-06 21:36:07 +00:00
Bill Currie
448b6f24be make the useless expression warning more interesting 2003-08-05 21:41:48 +00:00
Bill Currie
329c91fce4 expr.c:
qcc actually had the precedence of "!x && y" correct, so don't invert
	the logic for it in traditional code.
qfcc.c:
	allow the .debug_file def to be emitted in traditional mode.
2003-08-05 17:48:16 +00:00
Bill Currie
3e3b316891 blah, double ; 2003-08-01 21:26:36 +00:00
Bill Currie
dd9ab1e050 get unsigned mostly working 2003-08-01 21:20:04 +00:00
Bill Currie
8e21ecd4d9 make private methods work properly and put overided methods into the
correct class
2003-08-01 16:24:44 +00:00
Bill Currie
1b5bf9d176 make methods showing up only in the implementation work when overiding an
inherited method
2003-08-01 05:08:15 +00:00
Bill Currie
24f4bcfebf initialize the new field properly 2003-08-01 02:43:51 +00:00
Bill Currie
0361cb261f fix an incorrect inherited attribute access caused by my "no ivars" fix
(part of the struct re-work)
2003-08-01 02:43:11 +00:00
Bill Currie
ae8e7553ce fix struct parsing and printing 2003-07-31 06:17:49 +00:00
Bill Currie
9f0d4cc746 must use save_string when source of string is unknown :P 2003-07-31 06:14:26 +00:00
Bill Currie
cc0d8b364d fix a couple "value computed is not used" not used warnings 2003-07-31 02:16:26 +00:00
Bill Currie
ab94498503 heh, that was a symptom. forget &void :) 2003-07-30 21:55:32 +00:00
Bill Currie
8099f0d8f2 handle addresses of void defs 2003-07-30 20:57:50 +00:00
Bill Currie
e957dc798f oops, initialize type_param properly (D'OH:) 2003-07-30 17:59:34 +00:00
Bill Currie
6ecb707257 revamp the struct system so "struct foo;" does the right thing (ala C) 2003-07-30 04:11:45 +00:00
Jeff Teunissen
5c1875ba28 Update the interface-check warning to be more descriptive. 2003-07-29 18:53:13 +00:00
Bill Currie
5e6b25c917 add interface-check warning option. defaults off 2003-07-29 18:31:12 +00:00
Bill Currie
5b9b11241b make method lookup work with id 2003-07-29 17:38:29 +00:00
Bill Currie
8966b0a533 get -/+ into selector name for "does not respond to" warning. 2003-07-27 19:47:14 +00:00
Bill Currie
f0c5a374d2 get selector naming (and method name mangline) right 2003-07-27 19:13:13 +00:00
Bill Currie
411bddb0d8 whitespace 2003-07-27 18:50:17 +00:00
Jeff Teunissen
c9858f4f65 Preliminary "unsigned" support for qfcc and the gamecode engine. Should still
be compatible.
2003-07-26 21:07:51 +00:00
Bill Currie
1366ad4661 fix <protocol_list> 2003-07-25 20:34:24 +00:00
Bill Currie
34df024e34 make sure protocol_hash exists 2003-07-24 19:41:59 +00:00
Bill Currie
5962900e25 allow rel_def_op relocs to point just past the end of the code. needed for
jump tables.
2003-07-24 17:51:24 +00:00
Bill Currie
378c477b8e setup vector fields properly 2003-07-23 18:40:09 +00:00
Bill Currie
778cd78c35 fix some namespace issues with names both being a field and an ivar 2003-07-23 18:28:31 +00:00
Bill Currie
37f660801b QNX's printf doesn't like null pointers 2003-07-17 20:04:07 +00:00
Bill Currie
9bd839e309 correct a couple of typos 2003-05-15 18:55:57 +00:00
Bill Currie
a2243e8936 update the --help docs with all the options 2003-05-15 17:48:59 +00:00
Bill Currie
dedb2fa6bf get [super ...] working correctly 2003-05-15 05:58:31 +00:00
Bill Currie
bfaa07c726 better type mismatch error reporting 2003-05-15 05:19:05 +00:00
Bill Currie
5fac3e6f3a fix a buffer underflow 2003-05-15 05:10:28 +00:00
Bill Currie
094c9c5cdb make derefencing a pointer without an offset more efficient 2003-05-13 19:49:23 +00:00
Bill Currie
f59f766af1 use the correct type when taking the address of a pointer derefernece 2003-05-13 19:42:14 +00:00
Bill Currie
1ea1a2f529 don't bother checking access restrictions in class_ivar_expr as
class_find_ivar will catch them when the generated self.ivar is `parsed'.
2003-05-13 01:30:01 +00:00
Bill Currie
0ebf9d6afc more inline avoidance 2003-05-07 15:00:17 +00:00
Bill Currie
6fb5acc868 more auto-inline avoidance 2003-05-07 02:45:17 +00:00
Bill Currie
b6b5089ccc add a "nosave" flag to defs making it easier to make defs that don't get
saved automaticly
2003-04-25 17:00:22 +00:00
Bill Currie
19980964d7 don't create defs for the components of vector or quaternion defs 2003-04-23 19:50:16 +00:00
Bill Currie
8f4308c86a get .param_size and .debug_file linked in properly 2003-04-23 18:25:09 +00:00
Bill Currie
57254e5d33 fix a double ; 2003-04-23 06:17:36 +00:00
Bill Currie
8b24578547 print the operator for the precedence notice properly 2003-04-23 01:56:44 +00:00
Bill Currie
f7d806e8d5 can now handle > vector sized parameters 2003-04-22 20:11:16 +00:00
Bill Currie
a21054fdfc handle def aliases properly in emit_move_expr 2003-04-22 17:26:49 +00:00
Bill Currie
6a0b74ca10 detect type mismatches in method declarations and definitions 2003-04-22 15:48:39 +00:00
Bill Currie
2f6fc5d80c general revamp so params and the return value use proper defs rather than
hardcoded locations. this will allow use of quaternions in the future.
2003-04-22 15:29:32 +00:00
Bill Currie
9a40bf2956 get the fix right 2003-04-17 00:25:55 +00:00
Bill Currie
5cb8429f04 bah, cleanup for flex versions :P 2003-04-17 00:14:13 +00:00
Bill Currie
eb099ae0d3 make qf gcc 3.3 clean 2003-04-17 00:01:48 +00:00
Bill Currie
7ca2aae6f0 fixes for latest flex 2003-04-16 19:41:52 +00:00
Bill Currie
a9fb183d19 fix another struct type parsing bug 2003-04-07 22:24:15 +00:00
Bill Currie
b7d7e7e87f allow assignment from void pointer to any pointer type 2003-04-07 21:57:26 +00:00
Bill Currie
55eb6c3ab1 plug a memory leak 2003-04-07 18:30:47 +00:00
Bill Currie
66ff0cfd4d fix some type parsing errors for structs and arrays 2003-04-07 18:17:43 +00:00
Bill Currie
ee821705cc implement nested (and struct) block initializers 2003-04-07 17:44:18 +00:00
Bill Currie
87a31439e4 don't warn for ! precedence 2003-03-25 17:47:52 +00:00
Bill Currie
0550741fb9 catch ! == bogosity 2003-03-25 17:18:58 +00:00
Bill Currie
eb5f2137b4 don't create temp files when only preprocessing 2003-03-24 17:40:27 +00:00
Bill Currie
1e423b9645 make certain classes get referenced when inheriting from them 2003-03-13 19:16:45 +00:00
Bill Currie
6a79ee57c4 the correct fix for overzealous linking: preemptively turf unused externs 2003-03-13 03:18:34 +00:00
Bill Currie
bb1b7c481c don't pull in a lib object file due to an /unused/ undefined def. 2003-03-13 01:50:49 +00:00
Bill Currie
15781b2f19 make vector.x work in classes work and don't give an uninitialized warning
for vec.x = 0;
2003-03-12 21:58:24 +00:00
Bill Currie
627c6f70f5 allow casting between function types 2003-03-10 21:23:05 +00:00
Bill Currie
e3ad60f142 add WildCode's error checking for win32 cpp handling 2003-03-10 21:00:48 +00:00
Bill Currie
6b20862865 disable some debug 2003-03-04 21:13:10 +00:00
Bill Currie
4de6a20856 fix a bug with \\ handling just before the end of a string constant 2003-03-04 17:03:49 +00:00
Bill Currie
1c774bc10c remove some debug code :P 2003-03-03 21:10:29 +00:00
Bill Currie
4c5c711ff5 fix a nasty bug where immediates would get aliased. (eg, 2 and 1073741824). 2003-03-03 21:09:41 +00:00
Bill Currie
90752b33fe make TYPE (void) NAME valid (no args) 2003-02-28 23:36:56 +00:00
Bill Currie
a45223da6c d'oh, forgot about "default" 2003-02-28 05:18:49 +00:00
Bill Currie
ef762e21eb allow initialized globals (since they're constant) to be used in most places
constants are required (switch, initializing globals, enums)
2003-02-28 04:54:07 +00:00
Bill Currie
05fb5fe08b make syntax errors a little easier to understand 2003-02-25 07:48:12 +00:00
Bill Currie
2ba8e871f3 convert \ to / in paths in windows 2003-02-24 21:51:08 +00:00
Bill Currie
b928f94440 produce a warning if both @self and self are used in the same progs 2003-02-24 20:10:33 +00:00
Bill Currie
5a58c58e7a don't initialize external defs. this broke source line/file tracking for
@extern defs in headers.
2003-02-24 19:13:56 +00:00
Bill Currie
5f75aa024a don't relocate a null function constant 2003-02-24 15:33:57 +00:00
Bill Currie
44285ba5de speed up qfo writing by about 12.5:1 (for large object files, anyway) by
making compression optional (compressed qfo files will still be handled
transparently)
2003-02-23 23:43:43 +00:00
Bill Currie
599ae15490 give the hash functions more unique names 2003-02-22 22:38:55 +00:00
Bill Currie
af44b129d6 don't store pointers to defs in the hash table as the defs can move around
due to realloc. can now link large progs
2003-02-21 22:31:40 +00:00
Bill Currie
132bd4ac8d remove some incorrect comments 2003-02-21 22:30:49 +00:00
Bill Currie
2d766710b6 detect multiple initializations of globals 2003-01-29 22:29:37 +00:00
Bill Currie
761a7546dd re-arrange things so __attribute__ and __builtin_expect are properly
autoconfiscated so rcsid will continue to work with gcc 3.3
2003-01-15 15:31:36 +00:00
Bill Currie
a4dfef63c3 make all files with rcsid include config.h 2003-01-14 20:18:29 +00:00
Bill Currie
71196fedf6 make gcc more anal about prototypes, string constants and function
visibility (ie, global functions must have a prototype)
2003-01-06 18:28:13 +00:00
Bill Currie
2a5ac8c42d returning value for void function now a warning for traditional 2002-12-13 23:21:09 +00:00
Bill Currie
64a9a8199c allow if (void expr) (with warning) in traditional mode 2002-12-13 23:16:42 +00:00
Bill Currie
aec0c9eea1 make return type missmatch a warning for --traditional 2002-12-13 23:05:24 +00:00
Bill Currie
ee30860cef fix a bunch of ;; typos 2002-11-20 21:44:04 +00:00
Bill Currie
cb81f17697 bah, bloody bison inconsistencies 2002-11-15 17:12:16 +00:00
Bill Currie
3c215ce13f getting closer to working categories 2002-11-14 18:17:43 +00:00
Bill Currie
da334413b8 re-write category handling so it has a better chance of working (category
using code now compiles)
2002-11-12 19:52:43 +00:00
Bill Currie
498bdcc406 compile fixes for alpha linux 2002-11-10 02:50:42 +00:00
Bill Currie
749b56aae7 forgot to fix these when I did the copyrights 2002-11-06 16:32:28 +00:00
Bill Currie
ca4b3acd6c big protototype cleanup. Now, except for a few cases, all non-static
prototypes are in headers files.
2002-11-05 19:12:51 +00:00
Bill Currie
43fa6a4002 inherited attributes rock :) (thanks, aho, ulman and sethi:) 2002-11-04 17:54:31 +00:00
Bill Currie
1cba65f6ce fix a gcc 2.95 warning 2002-11-04 02:24:28 +00:00
Bill Currie
7f69f593d3 configure.ac:
define default include and lib paths for qfcc
ruamoko:
	{cl_menu,game}/Makefile.am:
		conform to the new qfcc library linking rules
	lib/Makefile.am:
		install the libs to ${prefix}/lib/ruamoko
qfcc:
	linker.[ch]:
		support path searching for -llib and make linker_add_lib search for
		libfoo.a for -lfoo in the paths, or just a single dir search for the
		libname otherwise.
	options.c:
		support -L libpath and setup the default include and lib paths
		also change most strdup calls to save_string
	qfcc.c:
		check for foo.a as well as -lfoo when deciding whether the file is
		an object file or lib file.
2002-11-01 18:05:12 +00:00
Bill Currie
7af99f422f expr.c:
fix a braino that caused only sizeof expr to work
linker.c:
	print an error message if unable to open the lib
qc-parse.y:
	revamp expression parsing so casting is done via (type)expr rather than
	type(expr)
	make it so pointers to pointers don't need ()s
2002-10-31 22:58:59 +00:00
Bill Currie
9a1223cae2 need 14, not 4 for precache_sound 2002-10-30 05:06:03 +00:00
Bill Currie
912db0336e clean out the cmdlib crap from quakefs.c and nuke qfcc's last dependency
on cmdlib.h (and nuke qfcc's cmdlib.h itself:)
2002-10-30 02:31:29 +00:00
Bill Currie
d2cedecfb0 make -t shortcut for --traditional work as pointed out by Dmitry Antipov
(dmitry.antipov@mail.ru)
2002-10-29 15:24:17 +00:00
Bill Currie
4ad8ed1fc2 *sigh* twice now forgot to remove that test code :P 2002-10-26 03:41:34 +00:00
Bill Currie
2679ade8cd forgot 0X0 was just as valid as 0x0 2002-10-26 03:41:10 +00:00
Bill Currie
99cdcc9bd7 support hex numbers 2002-10-26 03:23:19 +00:00
Bill Currie
567b905590 copyright block work 2002-10-22 14:53:18 +00:00
Bill Currie
4ee013c5ba don't seg on null strings 2002-10-20 03:43:14 +00:00
Bill Currie
9f8d7fbca7 re-write the hashing so pointers get merged only if they point to the same
def
2002-10-20 03:31:49 +00:00
Bill Currie
262baccd0e remove debug code :P 2002-10-20 03:31:08 +00:00
Bill Currie
7bb6dd7197 make chained structure assignments (mostly) work. found a bug in the
handling of pointer immediates which needs fixing before this will work in
general
2002-10-20 02:35:12 +00:00
Bill Currie
6ece3bc481 don't use move for non-structs. it wasn't an optimisation anyway. this
fixes the internal error when compiling the quake1 progs
2002-10-20 01:25:15 +00:00
Bill Currie
54564a4726 structure copies now seem to work 2002-10-16 17:07:01 +00:00
Bill Currie
0c0e4b23de d'oh, temps are never global 2002-10-16 06:39:49 +00:00
Bill Currie
5a182b7cd4 turns out that flags == 0 is quite valid (d'oh) 2002-10-16 06:33:14 +00:00
Bill Currie
5eeb8bbda2 bah, bison decided to re-arange my tokens! 2002-10-16 06:31:00 +00:00
Bill Currie
7542a2457f replace @argc and @argv with @args.count and @args.list. @args is of type
@va_list making it possible (though not yet: need to implement structure
copy) to pass ... params around.
2002-10-16 02:28:08 +00:00
Bill Currie
27effb5075 make struct_t and enum_t globally visible, re-do how enum info is stored
and make it possible to create a structure using a pre-existing type
2002-10-16 02:05:39 +00:00
Bill Currie
6af57049d5 make pointers work a bit better 2002-10-16 02:04:06 +00:00
Bill Currie
3b3b90ef4a fix for new bison 2002-10-16 01:53:56 +00:00
Bill Currie
f95510bd46 make vector.x work for structure fields (which actually makes vectors more
useful in structures:)
2002-10-09 20:35:25 +00:00
Bill Currie
7e4e1a1f96 partial support for accessing vector components as .x .y and .z rather than
_x _y and _z
2002-10-09 19:30:43 +00:00
Bill Currie
22d3cf9664 rename the def_void and dev_function defs 2002-10-09 19:17:45 +00:00
Bill Currie
823822301f support emitting bind sub-expressions 2002-10-09 19:16:55 +00:00
Bill Currie
a20bb946f6 type.[ch]:
provide a vector structure def so vector.[xyz] can be implemented
def.c:
	record the return address in get_temp to aid debugging
2002-10-08 22:35:37 +00:00
Bill Currie
bca275944c record the type of the result of a bind expr 2002-10-08 18:20:09 +00:00
Bill Currie
f992090b18 don't do extra manipulations for unnamed defs 2002-10-08 18:03:23 +00:00
Bill Currie
9d8d570269 using Qseek on a pak sub-file should work better. this should make oggs in
paks work.
2002-09-27 04:27:19 +00:00
Bill Currie
d8a38ae648 don't fuss with function defs that aren't initialized 2002-09-19 06:01:06 +00:00
Bill Currie
317c02539b macro-ize --with-{clients,servers} and implement --with-tools using the new
macro
2002-09-17 22:19:14 +00:00
Bill Currie
ece9660099 get @system working (Closes: #52). I'm not happy with the name of this
operator and I'm very open to suggestions, but it seems to work. What
@system does is to mark a def in such a way that the linker will allow it
to be redefined /once/ giving the programmer control over where and when
a def is defined, but initializing it elsewhere. This is most useful when
working with v6 progs and separate compliation as the `system' defs need to
be in a certain order in certain locations or the resuting progs.dat file
will be incompatable with non-qf 0.5 servers.
2002-09-17 18:42:35 +00:00
Bill Currie
b94077200f make it so id can be assigned to any class or object pointer 2002-09-16 20:32:32 +00:00
Bill Currie
4a34960d95 a bit of code cleanup 2002-09-16 17:37:22 +00:00
Bill Currie
412db7e27d "for example" is more appropriate than "that is" 2002-09-16 15:42:11 +00:00
Bill Currie
eb4aa7ccec produce better code for v6 % 2002-09-13 17:38:19 +00:00
Bill Currie
308ff7163f emit.c:
implement % for v6 code. hacky, but it works :) (Closes: #29)
expr.c:
	emit the body of a block expresion before emitting its result (needed
	for v6 %)
2002-09-13 17:12:26 +00:00
Bill Currie
1e5402a30a Closes: #50
idstuff.c:
	don't write the defs at offset 0 to progdefs.h
qfcc.c:
	generate progdefs.h and the crc for v6 code when linking object files
	to the progs.dat
2002-09-13 15:42:07 +00:00
Bill Currie
090e65bc09 mark allocated fields constant 2002-09-12 18:34:17 +00:00
Bill Currie
d7eea11c91 static defs are initialized too 2002-09-12 18:30:24 +00:00
Bill Currie
842a9d2eb0 linker.c:
don't seg on uninitialized fields
qc-parse.y:
	support @extern and @static blocks (eg, @extern { ... };)
2002-09-12 17:13:19 +00:00
Bill Currie
aae378c0a2 delete temporary .qfo files for (eg) qfcc -o test.dat test.qc 2002-09-11 18:17:45 +00:00
Bill Currie
324b89696a create new_*_expr functions for all basic expression types except ex_poitner
and use them instead of new_expr and setting the fields each time. Serious
code cleanup :)
2002-09-11 16:21:26 +00:00
Bill Currie
e5227076e0 put in some error checking on the Qopen calls 2002-09-10 15:46:50 +00:00
Bill Currie
867f964740 * taniwha salutes while taps is played 2002-09-10 15:36:32 +00:00
Bill Currie
05d437a3c1 make @extern and @static available to v6 progs 2002-09-10 04:07:34 +00:00
Bill Currie
f6cdbdf63c make sure an initialized def has the correct source file and line info 2002-09-07 06:45:51 +00:00
Bill Currie
2ba3585d06 fix a braino with ~float const 2002-09-05 17:40:14 +00:00
Bill Currie
27b0314e2e don't do the ObjQC types if --traditional is used 2002-09-04 21:47:27 +00:00
Bill Currie
1d35f4dd9e make ~ work for v6 progs by implementing ~x as -1 - x (will give bogus
results if x has fractional bits, but it's better than it was:)
2002-09-04 16:18:52 +00:00
Bill Currie
882d0f25ce the code memory block can move around so take the address of a statement
after statments have been emitted, not before.
2002-08-30 05:33:34 +00:00