Bill Currie
897b49140a
initialized locals are a little trickier...
2004-01-25 22:08:08 +00:00
Bill Currie
f8ed454547
warn on if (a = b)
2004-01-25 21:45:07 +00:00
Bill Currie
7423ee389d
better timing for constant folding
2004-01-25 21:36:44 +00:00
Bill Currie
39c7ff1e90
disable debug output
2004-01-25 08:59:55 +00:00
Bill Currie
51b0a66ac7
better constant folding with auto-conversion between scalar types (might
...
make that optional for non-constants)
2004-01-25 08:55:03 +00:00
Bill Currie
3e5a103e55
proper error checking when openning progs.src
2004-01-22 04:16:19 +00:00
Bill Currie
8f440c7911
linker.c:
...
I think I found the real reason doxygen gets confused
expr.c:
add a check for x & y == 2 (or similar) doesn't work for constant y at
the moment.
2004-01-22 01:04:48 +00:00
Bill Currie
2f21926568
more constant folding
2004-01-21 21:58:34 +00:00
Bill Currie
e63b205fd2
don't seg when in traditional mode and @ is seen
2004-01-21 21:43:31 +00:00
Bill Currie
1ddd7da5ec
remove redundant cast
2004-01-13 03:07:36 +00:00
Chris Ison
34f98e5a88
fix incompatable pointer type
2004-01-12 05:36:23 +00:00
Bill Currie
41106a1f01
hopefully shut doxygen up about a "const char" function
2004-01-11 05:52:19 +00:00
Bill Currie
802aacfaf4
allow constant expressions to be used for builtin numbers
2004-01-07 00:03:05 +00:00
Bill Currie
35d690c701
give an error message instead of segging for the following code:
...
@class foo;
@interface bar : foo
@end
2003-12-19 04:59:34 +00:00
Bill Currie
bb4e9de0db
fix a real oopsie with if (const)
2003-11-16 07:17:18 +00:00
Bill Currie
834ab26be5
remove some buggy debug code :P
2003-10-27 21:48:13 +00:00
Bill Currie
63414ea836
more gccisms in the error reporting (In function ...)
2003-10-25 04:35:47 +00:00
Bill Currie
58d0f188f1
recover from errors in bool expressions (ie, don't segfault)
2003-10-24 22:23:56 +00:00
Bill Currie
8e030089a7
only one define/undefine/include per option
2003-10-24 21:23:03 +00:00
Bill Currie
7ef80d1da2
mske sure .self and .this are defined in progs.src mode (ie, @self and
...
@this)
2003-10-22 21:49:47 +00:00
Bill Currie
c76282c668
fix bools in function calls
2003-10-22 16:49:57 +00:00
Bill Currie
5f97de56d1
fix a few bugs
2003-10-22 09:14:53 +00:00
Bill Currie
969dad87eb
fix a secfault in return_expr
2003-10-22 08:30:54 +00:00
Bill Currie
72ae59f882
short circuit logic can now be controlled (see man page)
2003-10-22 08:27:38 +00:00
Bill Currie
945006494f
short circuit logic for && and || (as per C). forces standard precedence
...
(ie, breaks --traditional) when enabled (no choice at the moment, next fix)
2003-10-22 08:05:17 +00:00
Bill Currie
99034fef27
initialized locals aren't constant
2003-09-25 02:05:43 +00:00
Bill Currie
4ce81b28d7
remove nested scopes for traditional mode
2003-09-23 17:59:46 +00:00
Bill Currie
91207c0180
make void functions actually return float in traditional mode (qcc allowed
...
things like foo = void_function)
2003-09-23 16:57:53 +00:00
Bill Currie
387464a27c
mangle precedence of = relative to && and || for --traditional (bletch).
...
also make noise when assigning to bad lvalues (eg !x = y)
2003-09-23 16:42:03 +00:00
Bill Currie
ba26628b80
--traditional now "fixes" (ie, breaks) operator precedence to match qcc
...
except for the relationship between "=" and "&&" and "||": not sure I want
to go that far towards bug compatability.
2003-09-22 22:15:31 +00:00
Bill Currie
9027648721
kill -t for --traditional, add --advanced, default to --traditional for
...
progs.src mode and --advanced otherwise
2003-09-20 04:13:32 +00:00
Bill Currie
651fa8ca12
correct the operator precendece to match C. hopefully won't cause any
...
problems :)
2003-09-19 20:50:05 +00:00
Bill Currie
11538d4745
access arrays in structs more efficiently (especially when using constant
...
indeces)
2003-09-02 17:41:16 +00:00
Bill Currie
f10829206a
use a cast expression rather than and bind expression to do the unsigned
...
comparison for switches. clears the notice (bind seems to be correct in
general) and is more correct conceptually anyway.
2003-09-02 16:53:45 +00:00
Bill Currie
23b525059f
cast between integer and unsigned just by changing access method
...
effectively deprecating conv.ui and conv.iu (they'll die eventually:)
2003-09-02 16:45:36 +00:00
Bill Currie
3a6c8b8b16
wrong place to decrement uses. now have a problem in switch :/
2003-09-02 06:23:57 +00:00
Bill Currie
ef4ca0c798
some doxygen tweaks
2003-08-31 05:24:24 +00:00
Bill Currie
b01d4d4589
get the type for the destination from the right place (hope that wasn't
...
a bugfix for something else:)
2003-08-24 20:38:32 +00:00
Bill Currie
7cffeb27bf
correct the temp def counting when casting
2003-08-24 08:17:31 +00:00
Bill Currie
6086aa2b99
allow casts between pointers and integers
2003-08-24 08:03:25 +00:00
Bill Currie
a08efafb7a
make sure __VERSION6__ is defined when it should be
2003-08-24 07:26:02 +00:00
Bill Currie
385a90e8fb
correct pr_symtab_t to include the pointer to the array of selectors used
...
in the module. Unfortunatly, this requires a version bump on both qfo and
progs files due to the changes structure layout.
2003-08-23 06:15:19 +00:00
Bill Currie
b38486d405
make rel_def_op work properly
2003-08-22 19:48:14 +00:00
Bill Currie
e9ca03416a
create the temp def for bound defs properly
2003-08-22 18:16:30 +00:00
Bill Currie
d20b8bf0c1
pass NIL though ... safely
2003-08-22 06:04:31 +00:00
Bill Currie
303287dc11
don't seg on undefined vars
2003-08-22 05:48:19 +00:00
Bill Currie
204243fe95
better message type checking
2003-08-22 05:26:47 +00:00
Bill Currie
febc57e71b
typecheck message params when possible
2003-08-22 04:08:33 +00:00
Bill Currie
7d09105740
remove debug code
2003-08-21 02:24:11 +00:00
Bill Currie
11c7c27f70
better relocations: pointers to structure members now work
2003-08-21 02:21:30 +00:00
Bill Currie
a2300387de
fix a bunch of segfaults
2003-08-20 22:36:02 +00:00
Bill Currie
93cafe878a
convert NIL properly in function calls
2003-08-20 20:28:28 +00:00
Bill Currie
7d830ffc1f
make @defs work properly and don't do uninitialized checks on structs
2003-08-20 19:58:41 +00:00
Bill Currie
aa712c0169
make [super foo] work in category methods
2003-08-18 06:11:41 +00:00
Bill Currie
aa4f81b6da
class.c:
...
whitespace
switch.c:
set up the relocations for the switch jump table properly
2003-08-18 02:57:21 +00:00
Bill Currie
515dbaccc0
make qc-lex.c and qc-parse.[ch] part of the distribution (two less
...
requirements for the average user)
2003-08-12 18:22:11 +00:00
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
Bill Currie
5da6fbe59c
check for uninitialized variables used in function args
2002-08-29 03:06:00 +00:00
Bill Currie
ec47e08e1c
go back to using QFile, quakeio.h and quakefs.h
2002-08-27 07:16:28 +00:00
Bill Currie
2658c3098f
use the LoadFile in libQFutil
2002-08-26 00:31:07 +00:00
Bill Currie
aaab480676
fix a bunch of potential malloc (0) calls
2002-08-25 23:16:07 +00:00
Bill Currie
3e87e3ecdf
allow ';' after @class ...
2002-08-20 21:13:18 +00:00
Bill Currie
371e92c448
finally fix chained function calls /properly/. need to make sure /all/ args
...
get their user count incremented, not just the head of the chain
2002-08-20 17:21:32 +00:00
Bill Currie
c927b2e834
quakefs.c:
...
allow . and .. in a path so long as the result doesn't escape from the
game directory
cl_menu/Makefile.am:
don't strip source paths
optoins.qc:
use InputLine object
def.c:
use notice to show stray temps
emit.c:
make sure expression args get emitted for function calls
expr.c:
'C' is a cast
rewrite cast_expr to handle casted pointere derefs
2002-08-20 06:11:10 +00:00
Bill Currie
5d7135600e
gah, that /did/ work, dunno what happend. must have done a tweak before
...
committing again :/ This currently produces some pseudo warnings about
dangling temps, but that's better than producing broken code
2002-08-20 02:52:04 +00:00
Bill Currie
b99a72e876
pr_obj.c:
...
call obj_find_message with super instead of class when doing a super
lookup
client_menu.[ch]:
use the InputLine object instead of directly using the api
InputLine.r:
builint functions are = #0 , not = 0 :P
function.[ch]:
provide copy_params
method.[ch]
provide copy_keywordargs
expr.c:
call inc_users for the parm temp if it's a bind expression
revers a copy of the selector when building the selector name so the
selector doesn't get mangled
qc-parse.y:
catch erronous func = const inintializers (should be func = #const)
2002-08-20 02:09:34 +00:00
Bill Currie
a94bdb199f
@sizeof (foo) should work now
2002-08-18 04:08:02 +00:00
Bill Currie
c1c6c05cf5
pr_obj.c:
...
delay class fixups so order doesn't matter
class.c:
write out the class and category diffs properly
2002-08-16 22:53:37 +00:00
Bill Currie
932ac624bd
more error checking fixes
2002-08-16 20:49:32 +00:00
Bill Currie
8a431570b8
generate the selector name in the correct order for selector expressions
2002-08-16 19:50:16 +00:00
Bill Currie
cab813c559
check the scope when checking for duplicate vector sub-defs
2002-08-16 16:51:00 +00:00
Bill Currie
45a1ef2140
allow assignment of any pointer type to void pointers
2002-08-15 20:13:18 +00:00
Bill Currie
36ca7b55bd
fix several problems caused by insufficient error checking and some double
...
Qclose calls
2002-08-15 18:53:03 +00:00
Bill Currie
09ce2b0662
make sure a class' super class gets referenced when the class is implemented
...
to ensure the super class' object file gets linked in when it's in a library
2002-08-14 03:55:23 +00:00
Bill Currie
fabaf84745
fix a missing reloc ref for .this
2002-08-14 03:44:41 +00:00
Bill Currie
53b257c918
preprocessising fixes, including detecting when to stop at the preprocessing
...
stage.
2002-08-13 22:02:07 +00:00
Bill Currie
8474f145d1
remove debug print
2002-08-13 21:54:10 +00:00
Bill Currie
0840678465
handle extern -> defined transition properly for vectors
2002-08-13 21:19:30 +00:00
Bill Currie
2f4094344b
don't change the hidden parm type for protocol methods until they're used in a class
2002-08-13 21:18:17 +00:00
Bill Currie
fa6f3cb09d
loop over the method list correctly
2002-08-13 21:17:20 +00:00
Bill Currie
3971786ee1
clean up a follow on error for calling an undefined function
2002-08-13 21:16:42 +00:00
Bill Currie
cd6f82c2c9
fix Class mangling when compiling multipe source files to objects
2002-08-13 17:03:26 +00:00
Bill Currie
a431a2783c
byteswap the reloc def field too (fixes the qfcc seg on big-endian systems)
2002-08-09 04:06:50 +00:00
Bill Currie
ff8ea15c09
solaris compile fixes
2002-08-09 04:06:17 +00:00
Bill Currie
8de4d28238
print cpp invocation for win32 too
2002-08-02 19:09:02 +00:00
Brian Koropoff
439f9838d3
Whoops, missed some stuff that needed to be in idparse.h
2002-07-31 22:13:15 +00:00
Bill Currie
7c26fa28dc
another cmdlib function dies
2002-07-31 16:42:21 +00:00
Bill Currie
5f65a53e81
fix a bug with obj_msgSend and obj_msgSend_super when more than one file is
...
compiled
2002-07-23 18:51:47 +00:00
Bill Currie
1e49f0d0c3
fix a segfault (what was I thinking when I wrote that line?)
2002-07-23 05:44:45 +00:00
Bill Currie
c2a7564d55
implement -l, but -L isn't supported yet and the full lib name must be given
2002-07-21 07:12:17 +00:00
Bill Currie
f1423cb0b3
print the cpp command line if verbosity is high enough
2002-07-20 05:20:40 +00:00
Ragnvald Maartmann-Moe IV
e6ea44a9ad
? tools/qfcc/source/qfodump
...
Not anymore.
2002-07-19 14:13:37 +00:00
Bill Currie
60520e7981
allow things like pointer == pointer for different pointer types that are in
...
the same heirarchy
2002-07-18 05:16:12 +00:00
Bill Currie
95bbb6803d
be a little clearer about cpp errors
2002-07-17 19:56:30 +00:00
Bill Currie
fb4ef47af6
make the filename output high verbosity
2002-07-17 19:00:16 +00:00
Bill Currie
e72b25144e
relocate the strings in an initialized array/struct
2002-07-17 18:49:58 +00:00
Bill Currie
8d6c491390
fix branches (been broken for a while :/)
2002-07-17 18:45:17 +00:00
Bill Currie
90fa657a5f
fix array type string parsing
2002-07-17 17:59:42 +00:00
Bill Currie
2c94688e87
default options.outputfile to "progs.dat" if not specified when linking
2002-07-17 17:49:17 +00:00
Bill Currie
5ea3042eec
fix -c -o ...
2002-07-17 17:43:51 +00:00
Bill Currie
7fcdef1943
make sure current_type is set properly for struct fields
2002-07-17 17:17:05 +00:00
Bill Currie
b0d568d85f
local defs for debug info now work
2002-07-17 15:40:08 +00:00
Bill Currie
17cd41883e
get the source line for the function from a more reliable location
2002-07-17 14:39:54 +00:00
Bill Currie
980be66c0e
bah, missed this file
2002-07-17 14:21:52 +00:00
Bill Currie
34da93f251
get line numbers working on link and fix a bug in the creation of aux
...
functions
2002-07-17 14:19:30 +00:00
Bill Currie
8a96b5bbbc
oops, forgot to remove the debug print :)
2002-07-16 22:00:55 +00:00
Bill Currie
678a45cfe2
entity fields seem to work. I guess this means separate compilation is now
...
useful :)
2002-07-16 21:59:47 +00:00
Bill Currie
c36b7e36d2
fix external vectors and only complain about undefined externals that are
...
actually used
2002-07-16 20:09:14 +00:00
Bill Currie
ac1392eb74
object.r:
...
define __obj_exec_class, obj_msgSend and obj_msgSend_super for the way
qfcc now handles these defs
pr_edict.c:
PR_ValueString now checks that the function is valid before trying to
print its name.
class.c:
__obj_exec_class is now extern
linker.c:
fix more mangled relocs
method.c:
obj_msgSend and obj_msgSend_super are now extern
qfcc.c:
fixes so obj_module_t doesn't get zapped
type.c:
fixes so obj_module_t doesn't get zapped
2002-07-16 19:03:56 +00:00
Bill Currie
3b1825b692
fix the mangled relocs. oo hello world works again
2002-07-16 17:35:40 +00:00
Bill Currie
17c2def821
def merging seems to mostly work (have some problems with method lists)
2002-07-16 06:40:34 +00:00
Bill Currie
4d214bfea1
more hacks
2002-07-16 04:38:17 +00:00
Bill Currie
4d69deb205
class.c:
...
use the correct type when creating the class def
struct.c:
save the name
2002-07-16 04:37:51 +00:00
Bill Currie
bf858856b8
fix a /really/ silly error that broke def relocations
2002-07-15 22:10:03 +00:00
Bill Currie
a4ad662b63
make a little more robust
2002-07-15 21:58:39 +00:00
Bill Currie
295a9c1115
move external defs from the external table to the global table when they
...
get defined
2002-07-15 21:49:46 +00:00
Bill Currie
463c5724db
clean up some duplicated code by using some template macros
2002-07-15 21:45:32 +00:00
Bill Currie
b9a237b13d
rename qfo_function_t to qfo_func_t and similar for other qfo *function* in
...
obj_file.[ch]
2002-07-15 21:37:52 +00:00
Bill Currie
8539d7987f
make @self and @this work for separate compilation
2002-07-14 05:40:38 +00:00
Bill Currie
06390e10e6
more relocs fixups. my little OO hello world progs works now :)
2002-07-14 03:41:13 +00:00
Bill Currie
e550ad670a
more linking fixes, including seting up relocations. not quite working yet
2002-07-13 06:09:03 +00:00
Bill Currie
9b6980ac7b
fix an off by one error that was mangling functions
2002-07-13 03:21:27 +00:00
Bill Currie
58ecbd1171
new_struct doesn't like "" names
2002-07-13 03:20:45 +00:00
Bill Currie
c0880a94a9
print the name of the duplicate struct
2002-07-13 03:20:17 +00:00
Bill Currie
c6ad0ff819
fixup_relocs doesn't need qfo any more
2002-07-13 02:24:06 +00:00
Bill Currie
b48d71fdcc
make qfo functions 0 based. now having weird def problems :/
2002-07-12 22:27:40 +00:00
Bill Currie
e6fc66aaa9
grr, and another one :P
2002-07-12 21:44:04 +00:00
Bill Currie
b1b3c148e7
fix a bug in the parsing of structures
2002-07-12 21:43:27 +00:00
Bill Currie
d80b448281
select the correct function when fixing its def
2002-07-12 21:14:46 +00:00
Bill Currie
2a121d000f
fix a couple of dumb bugs and update the function number calculation
2002-07-12 20:43:11 +00:00
Bill Currie
06c03dd074
make local defs always come after global defs in linked qfo files and make
...
function relocations work better
2002-07-12 20:26:51 +00:00
Bill Currie
5a6907d969
some minor improvements
2002-07-12 20:22:06 +00:00
Bill Currie
b9b9f03e82
keep short defs out too
2002-07-12 16:01:40 +00:00
Bill Currie
3cf754db30
keep the return def out of .qfo files (for now, anyway)
2002-07-12 15:54:46 +00:00
Bill Currie
ddd7d82bcf
quick and dirty util to dump the defs in a .qfo file
2002-07-12 06:19:02 +00:00
Bill Currie
24d473c386
more linking fixes
2002-07-12 06:17:24 +00:00
Bill Currie
ce8f071b7c
implement partial linking (doesn't work any better than full, though :P)
2002-07-12 04:50:31 +00:00
Bill Currie
33b3fd1887
fix some misc linking bugs
2002-07-12 03:26:47 +00:00
Bill Currie
0f5f68623f
it's as broken as all-get-out, but object files can now be linked
2002-07-11 22:38:23 +00:00
Bill Currie
a9899087d3
fix a bunch of silly bugs and get the linked output written (hangs, though)
2002-07-11 21:04:09 +00:00
Bill Currie
4d1dbc8cc1
re-write qfo writing from progs, make qfo creation easier, (mostly) finish
...
the linker. now for testing :)
2002-07-11 20:17:26 +00:00
Bill Currie
de89733c5b
fix a missing & that was causing problems with writing function refs
2002-07-11 20:14:45 +00:00
Bill Currie
bc5beea311
getting closer to being able to link
2002-07-11 17:06:15 +00:00
Bill Currie
2df43ef941
make data handling a little easier
2002-07-11 15:42:20 +00:00
Bill Currie
1db26eea86
can't call pointer_type untill after the types are chained
2002-07-09 19:00:52 +00:00
Bill Currie
2cb6138f2b
fix a silly segfault and make statement allocation saner
2002-07-08 20:31:59 +00:00
Bill Currie
c1894db59f
split the emit stuf out of expr.h into emit.h
2002-07-08 18:53:07 +00:00
Bill Currie
e815669b7a
finish (for now:/) qfo_to_progs
2002-07-08 16:13:06 +00:00
Bill Currie
24e242ed35
move the type strings into their own string pool so the progs strings don't
...
get cluttered
2002-07-08 05:26:50 +00:00
Bill Currie
598edb26fd
parse a type back from its encoding (some info will be lost)
2002-07-08 05:10:05 +00:00
Bill Currie
4c8e157db2
nuke pr.statement_linenums as it was redundant and the info never used anyway
2002-07-08 03:05:44 +00:00
Bill Currie
5b98893003
bah, getting my "last changes vs last compile" backwards again :/
2002-07-05 20:19:13 +00:00
Bill Currie
8a402381e6
redo how progs strings are stored so multiple pools can exist
2002-07-05 20:02:10 +00:00
Bill Currie
7132e67f60
type encoding improvements
2002-07-05 16:59:25 +00:00
Bill Currie
0ef4a7513d
d'oh, I thought I tested with those lines in :/
2002-07-03 21:38:14 +00:00
Bill Currie
46bad45c7a
move s_file, pr_source_line and pr_error_count into pr, make the linker
...
errors more meaningful, and fix a blasted string.h issue (damn old gcc;P)
2002-07-03 21:32:03 +00:00
Bill Currie
102eab0d84
linker.[ch]:
...
start working on the linker.
class.[ch]:
redo class defs so the pointer works (needs relocs still)
obj_file.h:
add prototype for read_obj_file, QFO_* data access macros and include
pr_debug.h
type.[ch]:
separate type system initialisation and recording of the standard types
so find_type works properly in multiple compilation
def.c:
don't mark static defs as initialized
expr.c:
proper class pointer def stuff
immediate.c:
clean out dead vars/code
obj_file.c:
allocate space for the line info and bail if the file can't be opened.
qfcc.c:
register the standard types for each compile pass and start linking the
files
2002-07-03 20:16:32 +00:00
Bill Currie
9332ea30bc
oops, forgot to copy the string again when I went from strdup to save_string
2002-07-03 19:12:29 +00:00
Bill Currie
b81f77803c
make extern more of a no-op when the def alread exists
2002-07-03 06:42:54 +00:00
Ragnvald Maartmann-Moe IV
4bd03bfff3
Hack to make error-on-warnings happy. *pokes taniwha*
2002-07-03 00:36:44 +00:00
Bill Currie
211b11c8ae
some storage and obj file fixes
2002-07-02 23:08:44 +00:00
Bill Currie
e6c4e0b576
some more storage class work
2002-07-02 21:34:40 +00:00
Bill Currie
66aa36b73f
start implementing storage classes (extern, static, etc)
2002-06-28 17:59:32 +00:00
Bill Currie
8e2dbc1947
gzwrite doesn't like 0 bytes
2002-06-28 16:52:41 +00:00
Bill Currie
1a0b69e1d9
"qfcc *.qc" can now get through the prozac source withtout crashing (oodles
...
of compile errors, though:)
2002-06-28 16:38:05 +00:00
Bill Currie
8415db2d84
clear out the hash tables for compiling multiple object files
2002-06-28 16:00:01 +00:00
Bill Currie
001571e25a
various memory saving tricks. seems to have not broken anything
2002-06-27 22:48:28 +00:00
Bill Currie
be50d0e15a
sometimes, gcc 2.95 can be such a pain
2002-06-27 15:13:43 +00:00
Bill Currie
26dce371d9
clean up type allocation a little and also reloc allocation
2002-06-26 22:10:59 +00:00
Bill Currie
362ec2a23a
do some freeing
2002-06-26 16:27:23 +00:00
Bill Currie
78a626066e
get command line parsing working in an appropriate manner for separate
...
compilation
2002-06-25 21:36:10 +00:00
Bill Currie
ecdb5a5cb4
allow the output file to be specified on the command line
2002-06-24 22:53:21 +00:00
Bill Currie
4d496a2cd6
more endianess corrections and read/write line numbers
2002-06-24 22:36:04 +00:00
Bill Currie
29d679154f
forgot to byteswap the code and data
2002-06-24 21:41:05 +00:00
Bill Currie
f77bb44df3
load a qfo back into memory. next step is to figure out linking
2002-06-22 05:10:34 +00:00
Bill Currie
9fee1d07dd
initial work on actually writing .qfo files. seems to work, but only test.qfo
...
is ever writtin :)
2002-06-21 20:46:56 +00:00
Bill Currie
f8dee80355
add unions
2002-06-20 20:28:01 +00:00
Bill Currie
f8e4215ba9
implement compiler "notices": potentially important information that isn't
...
really a warning (unless requested) and can be silenced.
2002-06-20 19:29:06 +00:00
Bill Currie
3476138988
make --tradiontial cause "!foo & bar" evaluate as "!(foo & bar)" as per
...
qfcc's broken behaviour.
2002-06-20 18:51:46 +00:00
Bill Currie
37d3fecd5d
remove an unneeded field
2002-06-17 05:28:43 +00:00
Bill Currie
cbffb4b140
clean up the vector def setup
2002-06-17 02:43:38 +00:00
Bill Currie
b519c0b7cd
fix a silly typo that was causing the _y of vectors to get pointed to the
...
wrong place
2002-06-17 01:22:45 +00:00
Bill Currie
2264c28310
pr_strings:
...
remove a bogus 0x which caused confusion in an error message
def.c:
vector fields still need an extra 3 globals for their component fields
2002-06-16 05:24:58 +00:00
Bill Currie
e774943f24
va.[ch]:
...
new va function: nva which returns a strduped buffer
expr.c options.c:
use nva instead of strdup (va (...
struct.c type.c:
make type encoding work properly for structs
2002-06-13 16:39:33 +00:00
Bill Currie
fb0318621d
and for my next amazing feat, I'll remove the debug code :P
2002-06-13 07:22:53 +00:00
Bill Currie
5bbcbe0185
arrays seem to be working nicely now (menus work:)
2002-06-13 07:20:15 +00:00
Bill Currie
71c9cdcc08
create pointer types correctly
2002-06-13 04:40:09 +00:00
Bill Currie
88fc0be127
arrays are /almost/ working again
2002-06-12 22:37:18 +00:00
Bill Currie
331df31f6a
get the function number early so things don't get mixed up when new functions
...
get created while parsing a function
2002-06-11 06:54:32 +00:00
Bill Currie
f7d8c2968f
better global (and other space) def re-use
2002-06-10 23:14:32 +00:00
Bill Currie
1f67ea412d
add a global flag to def_t to make checking easier
...
rename pr.globals to pr.near_data and add pr.far_data
2002-06-10 20:54:22 +00:00
Bill Currie
7a13e6b362
find the rest (I hope!) of the mis-tested scopes
2002-06-10 19:26:54 +00:00
Bill Currie
a771beed74
qfcc.c:
...
def->scope is always non-0
qc-parse.y:
link defs from child scopes correctly
2002-06-10 19:07:32 +00:00
Bill Currie
0747bcb099
set the debug function number correctly
2002-06-10 18:39:06 +00:00
Bill Currie
e47570db69
must remember to test compile in the optimising tree :P
2002-06-09 16:34:50 +00:00
Bill Currie
58782333a9
give scopes types (static, params, locals for now)
2002-06-09 05:19:13 +00:00
Bill Currie
1e57351be1
there, no more PR_* functions or pr_* files :)
2002-06-09 04:30:02 +00:00
Bill Currie
943c2eefb3
redo def allocation to come from configurable `spaces' (locals, globals, far
...
globals, etc).
2002-06-09 03:57:20 +00:00
Bill Currie
426dc07e53
fix a goof with the number of global defs
2002-06-09 03:41:11 +00:00
Bill Currie
541f7ed1b8
some def stuff shuffling
2002-06-07 21:17:51 +00:00
Bill Currie
0477b43f80
get rid of PR_GetArray: it's redundant
2002-06-07 18:14:39 +00:00