Bill Currie
b46cff08aa
handle param name changes between prototype and declaration gracefully
...
This is an imperfect revision of history.
2004-11-02 23:54:00 +00:00
Bill Currie
9f52181e34
fixes for methods in categories or not in an interface
...
This is an imperfect revision of history.
2004-11-02 11:56:00 +00:00
Bill Currie
181df01add
initialize the function tables properly when "converting" a qfo, fix a buffer overflow in file loading and remove the now unnecessary hunk initialization.
...
This is an imperfect revision of history.
2004-11-02 07:15:00 +00:00
Bill Currie
a3a2dd62e3
fix type of "self"
...
This is an imperfect revision of history.
2004-11-02 07:13:00 +00:00
Bill Currie
a4dbdb4d06
whitespace
...
This is an imperfect revision of history.
2004-11-02 07:08:00 +00:00
Bill Currie
fff41d664a
detect re-declaring identifiers as different types (typedef, enum, var, etc)
...
This is an imperfect revision of history.
2004-11-02 07:02:00 +00:00
Bill Currie
a2e05dbe83
make bison output a state file
...
This is an imperfect revision of history.
2004-11-02 05:19:00 +00:00
Bill Currie
ca46503607
add -Wsign-compare (default for -Wall only in C++) and fix up the warnings
2004-07-13 19:14:01 +00:00
Bill Currie
8c10e2e355
this should fix the string case errors on sparc64
2004-05-15 01:00:47 +00:00
Bill Currie
3483b3b2b6
handle #pragma gracefully (ie, ignore it)
2004-05-09 02:12:49 +00:00
Jeff Teunissen
b057b6cb26
Some signed/unsigned formatting stuff found by lint.
2004-04-27 23:17:41 +00:00
Bill Currie
14900bb82e
fast-float code option (defaults to on). kills almost 3000 statements from
...
prozac
2004-04-27 20:24:37 +00:00
Bill Currie
8a7bb9c4a0
fix a silly that messed up type mismatch errors
2004-04-12 23:46:21 +00:00
Bill Currie
9a3acc8035
get the field offset correctly
2004-04-09 04:30:19 +00:00
Bill Currie
7b28c555ba
quaternion field access now works
2004-04-09 04:12:44 +00:00
Bill Currie
332ec82495
update the scope of local defs to the parent scope when the creation scope
...
goes away (doesn't get updated to the global scope). fixes a bug where
local defs would be miscounted (and sometimes lost)
2004-04-09 03:47:41 +00:00
Bill Currie
0b61dae402
allow .imm fields (need a better test, I think)
2004-04-09 03:45:55 +00:00
Bill Currie
50dc955652
fix a couple out-by-one errors highlighted by quaternions
2004-04-09 02:20:47 +00:00
Bill Currie
0e47ee96f8
spelling fixes
2004-04-08 18:53:46 +00:00
Bill Currie
4c4f40f137
fix a few bugs. basics seem to be working
2004-04-08 05:13:24 +00:00
Bill Currie
5869cb693e
oops
2004-04-08 05:04:50 +00:00
Bill Currie
a7103c6732
quaternion conjugate
2004-04-08 04:59:10 +00:00
Bill Currie
fc2413ff72
more quaternion work (should be working, haven't come up with tests yet)
2004-04-08 03:32:14 +00:00
Bill Currie
4882005a49
compile fixes (oops) and start working on quaternion support in qfcc
2004-04-08 02:33:20 +00:00
Bill Currie
25ac9cb07b
fix "for (;;)" etc
2004-03-30 02:31:02 +00:00
Bill Currie
f1c9a8d24b
remove a mostly unused field
2004-02-21 05:58:01 +00:00
Bill Currie
14e8bfe94b
auto-init for uninitialized locals in traditional mode as requested by
...
Grievre
2004-02-21 05:52:05 +00:00
Bill Currie
0360859a0f
all warnings (except for @self and self) are now fully controllable
2004-02-17 00:39:21 +00:00
Bill Currie
efb52dc9f9
don't seg on null field names
2004-02-13 23:08:22 +00:00
Bill Currie
865b31caac
make sure messages generated by issues within a function don't get
...
"At top level"
2004-02-13 04:57:15 +00:00
Bill Currie
b6c2320d5d
change --include FILE to pre-include a file rather than add a directory search
...
path. Maps to -include FILE on the cpp command line.
2004-02-13 04:46:50 +00:00
Bill Currie
69730cae8b
fix some type classes in older bison
2004-02-12 01:37:27 +00:00
Bill Currie
02d89ee7d5
allow computed functions for "think" in state expressions
2004-02-11 08:09:10 +00:00
Bill Currie
1c090c38a3
allow non-const expressions for the frame number and make sure the time
...
step is a float (for state expressions)
2004-02-11 04:00:11 +00:00
Bill Currie
0fe4c2a600
catch redefined functions
2004-02-11 01:53:17 +00:00
Bill Currie
c3f41e3e69
new opcode: state.f. same as state, but takes a 3rd float operand to
...
specify the step for calculating nextthink. accessed using
[frame, think, step] (state is [frame, think])
2004-02-11 01:43:33 +00:00
Bill Currie
1fc517f7db
C style functions can now (optionally) be used (void foo ();)
2004-02-11 00:36:34 +00:00
Bill Currie
e2602bc9d5
fix misparse of void () foo;
2004-02-10 23:49:45 +00:00
Bill Currie
7af8f8a6f6
; at the end of a function is no longer required. void () foo = {} and
...
void () foo = {}; are both valid now.
2004-02-10 23:20:44 +00:00
Bill Currie
6e4c6478a1
getting closer to optional ; at the end of functions. also gets rid of the
...
need for the context-sensitivity hack used for distinquishing frunction
inits from struct/array inits
2004-02-10 03:25:24 +00:00
Bill Currie
ddc44f33da
compress the 4 method building rules into 2
2004-02-09 07:35:19 +00:00
Bill Currie
3f27042e8d
forgot to look after current_storage with methods
2004-02-09 07:17:44 +00:00
Bill Currie
1181fb267b
don't seg when constants are involved in && or || expressions
2004-02-09 02:23:37 +00:00
Bill Currie
499dac6bb1
step one towards more flexible function declarations
2004-02-08 23:46:40 +00:00
Bill Currie
f70605f5f7
ensure a op= b treats b as if it was (b)
2004-02-08 05:28:30 +00:00
Bill Currie
bf592412f8
give temp defs a name, making it easier to read disassembly output (.tmpN)
2004-02-06 08:58:19 +00:00
Bill Currie
1d800caab7
make autoconvertion work for return
2004-02-06 08:40:28 +00:00
Chris Ison
6ec1cfe389
win32 fix for over-compliant getopt
2004-02-05 03:27:35 +00:00
Bill Currie
8a14e30896
cast block expressions
2004-02-04 06:41:07 +00:00
Bill Currie
d02b0686b1
don't seg if the method can't be found
2004-02-04 06:31:12 +00:00
Bill Currie
61da478188
these changes from earlier seem to be ok
2004-02-04 06:00:45 +00:00
Bill Currie
c43950abd8
autoconvert for function parameters now works :)
2004-02-04 05:49:54 +00:00
Bill Currie
892e80938b
that made a royal mess :(
2004-02-04 04:49:46 +00:00
Bill Currie
b2474a2b97
better auto-conversion of function parameters (ugh, this is getting messy
...
:( )
2004-02-04 04:33:08 +00:00
Bill Currie
f79e34628b
broke returning NIL
2004-02-04 02:30:18 +00:00
Bill Currie
ab4f0e7ca9
warn on return foo (); where foo returns void
2004-02-04 01:30:12 +00:00
Bill Currie
f748b6582a
need to do relocs separately from ddef creation due to pr_globals needing
...
to be allocated first
2004-02-04 00:36:15 +00:00
Bill Currie
e8a9060219
oops, messed up things like float = int
2004-02-04 00:30:42 +00:00
Bill Currie
3cd806fdcc
fix some over-conversions
2004-02-04 00:27:42 +00:00
Bill Currie
1068032f1b
make implementation methods not in the interface work properly when
...
-Winterface-check isn't specified and make sure classes don't clash with
defs or enums
2004-02-03 07:48:23 +00:00
Bill Currie
0f94dd95d2
make @class foo work when foo is already defined
2004-02-03 07:29:20 +00:00
Bill Currie
389ff5be1c
finally found the correct way to handle generated source
2004-02-03 05:30:11 +00:00
Bill Currie
9df4a7948e
make dist fixes
2004-02-03 03:22:48 +00:00
Bill Currie
c16fc91328
update with qfprogs
2004-02-03 02:40:00 +00:00
Bill Currie
24294c8778
make printing of global contents in PR_PrintStatement optional so
...
disassembly output is cleaner
2004-01-31 04:26:01 +00:00
Bill Currie
f05be31cae
fix for perc = itof (perc_val) / (100 / itof (size));
...
ie, better detection of function calls in binary expressions
2004-01-31 04:11:45 +00:00
Bill Currie
fb49b06c2c
remove debug info
2004-01-30 07:29:04 +00:00
Bill Currie
394e83e419
perform relocations so disassembly dumps of qfo files make sense
2004-01-30 07:17:28 +00:00
Bill Currie
f87a5d14e2
convert the debug info, too. seems to work
2004-01-30 05:35:30 +00:00
Bill Currie
a2e8080a03
init entity info
2004-01-29 08:22:59 +00:00
Bill Currie
2e87490f3b
pr_stringsize hasn't reflected static strings size for a while...
2004-01-29 08:11:04 +00:00
Bill Currie
206a15ef14
while not yet perfect, qfprogs now works with qfo files
2004-01-29 07:43:05 +00:00
Bill Currie
b2ccb50b81
move qfpreqcc in with qfcc for relationship reasons
2004-01-28 05:34:23 +00:00
Bill Currie
d3018dd79b
move qfprogs in with qfcc (it's going to need to share code)
2004-01-28 05:23:43 +00:00
Bill Currie
ba901863d2
fix a missing ;
2004-01-27 04:41:20 +00:00
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
Bill Currie
93169e1b91
rename two PR_* functions
2002-06-07 17:46:58 +00:00
Bill Currie
dc0e31916f
fix a minor oopsie with the relocations
2002-06-07 17:39:57 +00:00
Bill Currie
00a54ad918
redo relocations
2002-06-07 17:29:30 +00:00
Bill Currie
8aa98c0d20
fix several silly mistakes
2002-06-06 21:51:47 +00:00
Bill Currie
f31705380f
call malloc a little less often
2002-06-05 21:13:29 +00:00
Bill Currie
38d3a15413
d'oh, forgot to compile test :P
2002-06-05 19:31:43 +00:00
Bill Currie
cb395c5469
misc def improvments
2002-06-05 19:03:51 +00:00
Bill Currie
9474765e75
remove some direct usages of pr.globals
2002-06-05 17:45:44 +00:00
Bill Currie
e17604f9c2
remove all arbitrary limits except for globals. they'll need a little more
...
work. Once they're done, it should take quite a big mod to crash qfcc due
to too many strings/statements/etc :)
2002-06-05 17:12:55 +00:00
Bill Currie
32215b1296
prepare functions and pr_globals for relocatability
2002-06-05 05:39:20 +00:00
Bill Currie
935f1e8c5e
prepare the string hash table for relocatable strings space and fix a bug
...
causing more string space to be allocated than necessary
2002-06-05 05:24:42 +00:00
Bill Currie
69605d0b19
even more cleanup
2002-06-04 21:23:39 +00:00
Bill Currie
2d21e0e2fb
idstuff is a better name for precache
2002-06-04 18:45:45 +00:00
Bill Currie
06bddd3ee6
more cleanup
2002-06-04 18:44:03 +00:00
Bill Currie
77d244220b
more qfcc cleanup. split out some functions and kill some dead code
2002-06-04 05:25:37 +00:00
Bill Currie
be28957dff
kill USE_CPP (and --enable-cpp) it's not needed any more
2002-06-04 04:48:21 +00:00
Bill Currie
328b591aa0
some qfcc.c cleanup
2002-06-04 04:36:57 +00:00
Bill Currie
e1d66fdfb8
make sure qc-parse.h gets built before files that depend on it
2002-06-03 03:45:24 +00:00
Bill Currie
c13e94db78
must be more careful with the return value of va
2002-06-02 01:10:31 +00:00
Bill Currie
84b46d720e
slowly killing cmdlib
2002-06-01 06:59:02 +00:00
Bill Currie
12cfe6190b
do some file renaming
2002-06-01 05:37:18 +00:00
Bill Currie
7b993f97d2
more cleanups
2002-06-01 05:30:16 +00:00
Bill Currie
c4d0c574ee
clean up qfcc.h a bit
2002-06-01 05:06:19 +00:00
Bill Currie
8f2d1fa2d9
more cmdlib cleanup
2002-06-01 04:41:25 +00:00
Bill Currie
b3adadc347
@this will provide an id field named ".this" (ie, .id .this (if .this would
...
parse in the first place:))
also kill build_type now that a field_type function is available in type.c
2002-05-31 16:58:42 +00:00
Bill Currie
4d267abd2a
make things a little quieter
2002-05-31 07:24:54 +00:00
Bill Currie
24e7a88719
fix some method list emission bugs
2002-05-31 06:00:11 +00:00
Bill Currie
ccf2a0b34a
allocate defs using the correct size from the type
2002-05-31 05:04:16 +00:00
Bill Currie
3c7fb6a312
fix some missing ;s
2002-05-30 21:18:58 +00:00
Bill Currie
34ec521198
vararg functions can now be imlemented in qc using @argc (number of params
...
passed through ...) and @argv (array of vectors, one for each ... param)
2002-05-22 20:43:29 +00:00
Bill Currie
60457ee7b8
clean up some expr creaion
2002-05-22 17:18:48 +00:00
Bill Currie
5b590c9301
that seems to have got the type parsing right. (void []) () foo will work
...
and .float () foo works too
2002-05-22 17:13:52 +00:00
Bill Currie
ddcaef5b0b
that didn't work so well :/
...
back it out for now till I figure out how to get it parsing .float () foo
correctly
2002-05-22 16:38:29 +00:00
Bill Currie
51fbbb7c5c
qc-parse.y:
...
allow complex types for function return values
type.c:
fix a missing break and an unneeded printout
2002-05-22 16:29:24 +00:00
Bill Currie
3967f5cf95
type.h:
...
*type_method to type_Method
emit.c:
support casting between pointers
expr.c:
support casting between pointers
method.c:
correct the type for _cmd
type_method to type_Method.aux_type
qc-lex.l:
Method type is a poniter to a method
qc-parse.y:
support , args to messages (not fully implemented yet)
type.c:
*type_method to type_Method and make type_Method a pointer to a method
2002-05-22 05:03:36 +00:00
Bill Currie
a1fe5efd27
initialize class_Class.super_class iff @keywords are seen (ie, compiling
...
obj code).
2002-05-22 01:39:07 +00:00
Bill Currie
4697ce281e
define Protocol type correctly
2002-05-21 23:38:40 +00:00
Bill Currie
4315707008
class.c:
...
avoid possible segfault
expr.c:
correct the return value type checking to handle super classes
2002-05-21 23:29:21 +00:00
Bill Currie
3a99ab8cea
trim off the trailing _ from method def names
2002-05-21 23:02:56 +00:00
Bill Currie
2a73235d35
fix some method bugs
2002-05-21 22:51:46 +00:00
Bill Currie
9f06f89d57
write out the module data needed for the obj runtime
2002-05-21 21:28:40 +00:00
Bill Currie
e11e2f3718
SELF -> @self (looks better (IMO:)) and make sure the .self def gets
...
generatoed and used when @self is seen
2002-05-18 00:30:14 +00:00
Bill Currie
5be384da63
create a `SELF' keyword so the global self entity can be handled sanely.
...
Not fully implemented yet.
2002-05-17 20:25:46 +00:00
Bill Currie
dc5cd8460e
`super' is now a keyword
2002-05-17 19:47:15 +00:00
Bill Currie
451bfbddfe
fix a snafu with current_class and get ivar access working properly (cross
...
fingers:)
2002-05-17 19:35:26 +00:00
Bill Currie
d8c66aef76
don't seg if strct is null
2002-05-17 19:34:40 +00:00
Bill Currie
2e8c18f8b6
handle unimplemented classes a little better (will do for now till I sort
...
out some sort of resolution for them)
2002-05-17 18:46:11 +00:00
Bill Currie
b1d1159ae2
allow methods to be builtins
2002-05-17 18:35:54 +00:00
Bill Currie
97170e97b5
setup the default visibility properly
2002-05-17 17:58:57 +00:00
Bill Currie
ef9f9cda2f
pr_obj.h:
...
define the class info stuff
expr.h pr_def.c:
fix a FIXME
class.c expr.c type.c:
make id ev_pointer.ev_object rather than ev_pointer.ev_class
2002-05-17 17:37:44 +00:00
Bill Currie
6965642030
get ivars working better (need to get rid of self.) and [super ...] now
...
works.
2002-05-17 06:20:27 +00:00
Bill Currie
372c391737
initialize the string hash table with ""
2002-05-16 23:32:25 +00:00
Bill Currie
04d76ce1cf
build the method_list struct with the correct type
2002-05-16 23:32:03 +00:00
Bill Currie
7cdbef2b11
make class_def return a correct def
2002-05-16 22:33:11 +00:00
Bill Currie
4908b3cf10
`initialize' the defs for the obj constructs
2002-05-16 21:57:03 +00:00
Bill Currie
eba5e68726
check whether the method is an instance or class method when comparing
2002-05-16 20:48:41 +00:00
Bill Currie
779174cb33
get object pointer assignmets working and some static typing as well
2002-05-16 20:20:23 +00:00
Bill Currie
73f4cb4c03
it seems object info emition works (needs more testing)
2002-05-15 23:24:19 +00:00
Bill Currie
308fa78fc6
lots of obj work
2002-05-15 19:10:23 +00:00
Bill Currie
6a5bbf6f0a
memory allocation checking cleanup
2002-05-14 06:37:28 +00:00
Bill Currie
44dcf74627
strip the \n from all(?) of the Sys_Error calls (Sys_Error itself will be
...
adding \n).
2002-05-14 06:12:29 +00:00
Bill Currie
2c0a20a887
fix the mis-generation of code for state-functions
2002-05-13 20:11:33 +00:00
Bill Currie
9b516ff84f
mild namespace cleanup
2002-05-11 03:37:36 +00:00
Bill Currie
73e6cf062c
implement type encoding
2002-05-10 23:19:57 +00:00
Bill Currie
b418701637
missing ;
2002-05-10 02:11:23 +00:00
Bill Currie
2cd716176a
more progress
2002-05-10 00:00:23 +00:00
Bill Currie
f2b8dc7e7e
more progress
2002-05-09 20:12:28 +00:00
Bill Currie
55e54bd9f9
move the type and def externs to type.h
2002-05-09 17:11:14 +00:00
Bill Currie
f4fee3d7b2
add id as a type
2002-05-09 06:37:40 +00:00
Bill Currie
961d84e569
clean up of qfcc.h and shuffle around the predefined types
2002-05-09 06:34:48 +00:00
Bill Currie
1b875c8b06
work on getting obj expressions going
2002-05-08 23:12:49 +00:00
Bill Currie
7f47447492
getting closer to emiting ObjQC code
2002-05-08 21:24:24 +00:00
Bill Currie
de86019d4b
reverse the param order before building the function type and type check
...
varargs functions with specified params.
2002-05-08 17:33:28 +00:00
Bill Currie
b03bfa7a6e
start working on the code generation for the Obj stuff
2002-05-08 05:55:57 +00:00
Bill Currie
b226d24b52
rework the param parsing to make selectors easier to handle
2002-05-08 05:15:19 +00:00
Bill Currie
d5b637ae06
first stab at implementing ObjC like features. The parser doesn't generate
...
any code for the new features yet (I need to learn more about how objc
/works/) but nothing seems to have been broken.
2002-05-07 16:55:54 +00:00
Bill Currie
54fb180fad
expr.h:
...
__attribute__((const)) has rather nasty results when it's not true
expr.c:
fix up some mis-timed ex_error checks
2002-05-02 05:03:57 +00:00
Bill Currie
05788e55e5
don't generate useless expression warnings when that expression was caused
...
by an error
2002-05-01 22:08:59 +00:00
Bill Currie
067359b39d
d'oh, missed a ;
2002-05-01 21:42:29 +00:00
Bill Currie
962dc8e46e
rewrite the type and def parsing to allow more flexible types
2002-05-01 21:35:39 +00:00
Bill Currie
4725a44098
print out field types correctly
2002-05-01 21:33:59 +00:00
Bill Currie
98fea9ff55
remove some debug code and fix some missing ;s
2002-04-27 02:51:00 +00:00
Bill Currie
fc6fb804d7
support all but \b, \< and \> of qccx' character escapes.
2002-04-26 22:23:28 +00:00
Bill Currie
1f468e2508
fix a silly parse snafu
2002-04-26 21:49:35 +00:00
Bill Currie
aa006ecf64
qfcc now supports implicit string constant concatentation.
2002-04-26 21:42:50 +00:00
Bill Currie
4f7245d634
allow type (parm, parm, ...) to compile (the parms aren't type checked yet)
2002-04-26 21:28:06 +00:00
Bill Currie
313c82efef
use dstring_new instead of dstring_newstr to avoid allocating memory that's
...
only going to be reallocated immediatly anyway.
2002-04-15 22:24:47 +00:00
Bill Currie
03ab75704f
-p N or --strip-path N will strip up to N leading path elements for a
...
source file's path.
2002-04-10 19:52:48 +00:00
Bill Currie
c71ce480ad
fix a seg when trying to print a null type
2002-04-09 21:37:46 +00:00
Bill Currie
b29c0d70b7
more signed char indeces
2002-04-07 05:44:34 +00:00
Bill Currie
0f198f118e
%d and pid_t don't mix on solaris, so use %ld and cast to long
2002-04-07 05:40:27 +00:00
Bill Currie
655fe17e18
fix handling of pointers in function params and local vars for qc functions
2002-03-18 07:30:21 +00:00
Bill Currie
b97ac96204
fix the win32 side of pre-preocessing
2002-03-14 00:05:04 +00:00
Bill Currie
5a2538faaf
dstring.[ch]:
...
create dsprintf and dvsprintf to do formated prints to dynamic strings.
rest
Use the new functions :)
2002-03-08 23:11:42 +00:00
Bill Currie
d3870a1ec4
fix a missing dstring_adjust call (I guess I need to make a dsprintf:)
2002-03-08 20:56:22 +00:00
Bill Currie
de60a142ef
break out the preprocessing code into a function so I can later preprocess
...
the progs.src file. also use snax's new dynamic strings for the tempname.
2002-03-07 18:36:48 +00:00
Bill Currie
860e3ebb1d
make unsigned arrays/pointers more useful by allowing them to be used as
...
unbounded arrays
2002-02-24 01:11:34 +00:00
Bill Currie
80723fdec7
o don't ice when ex_name or ex_nil expressions show up in emit_expr.
...
instead, treat as useless epxression.
o mark rvalue expressions as such
o increment the users of a managed temp def when in an rvalue expr
2002-02-21 20:34:04 +00:00
Bill Currie
e38259e01f
warn when a top-level local shadows a parameter
2002-02-19 00:16:56 +00:00
Bill Currie
d1fcfd1939
Implement --traditional so qfcc can be a nicer qcc. This disables several
...
keywords (quaternion integer function for break continue switch case default
NIL struct enum typedef) and converts some errors to warnings (assignment to
constants, insufficient function arguments, return; from non-void function,
anal function `pointer' type checks)
2002-02-18 06:23:59 +00:00
Bill Currie
b4000200e3
move the getopt files from qfcc/source to libs/util, link qw-master against
...
libQFutil and enable the option parsting in qw-master for win32.
2002-02-12 17:44:41 +00:00
Bill Currie
4f6e61d68b
win32 compile fix
2002-02-05 22:56:21 +00:00
Bill Currie
16298914f0
default sourcedir to "" rather than "./" and strip leading paths from the
...
tempname when preserving temps
2002-02-05 22:08:19 +00:00
Bill Currie
cb0db8b8d1
disable debug putout and allow the cpp command line to be specified.
2002-02-05 19:35:45 +00:00
Bill Currie
f2a8f8ff28
make cpp command line selection more intelligent. This should take care of
...
the stuck cpp problem on openbsd.
2002-02-05 18:40:47 +00:00
Ragnvald Maartmann-Moe IV
a3c699a921
Fix three gitignores.
2002-01-31 07:49:29 +00:00
Bill Currie
ad6d847728
fix qfcc's incorrect allocation/initialization for pointers (eg, float [] foo)
2002-01-30 22:57:48 +00:00
Bill Currie
3d9c8a9a60
get nil conversions working fully and things like !pointer
2002-01-30 22:17:55 +00:00
Bill Currie
6a393d175e
implement typedef
2002-01-23 20:50:25 +00:00
Bill Currie
3f958ae29b
more make dist fixes
2002-01-22 18:04:03 +00:00
Bill Currie
8a24b28d97
scary, but the only changes qfcc needed to build as part of quakeforge was
...
to auto-substitued the libs and headers.
o unconditionally build qfcc (for now, anyway) when building quakeforge
(needed for cs-code compilation)
o when built as part of quakeforge (qfcc should still be buildable
independently) always enable cpp
o autoconfiscate the client-side code
o build the client-side code using the built qfcc
o install the client-side code in $(datadir)/quakeforge/id1
2002-01-22 05:48:03 +00:00
Bill Currie
f1f2dd713d
generate progdefs.h only for v6only
...
generate files.dat only if -F or --files is given on the command line
2002-01-21 23:30:54 +00:00
Bill Currie
7775dab7bb
remove debug
2002-01-21 19:19:07 +00:00
Bill Currie
f2d097c013
resolve the case value before checking its type
2002-01-21 19:18:41 +00:00
Bill Currie
2ce5a91373
allow enum {...} name; but ignore name (eases C <-> QC header compat)
2002-01-21 19:09:23 +00:00
Bill Currie
64c5983742
enum support
2002-01-21 19:03:29 +00:00
Bill Currie
cef918df83
get array initialisation worrking
2002-01-18 08:26:37 +00:00
Bill Currie
d69762facd
integer() and float() casts seem to work
2002-01-17 19:32:04 +00:00
Bill Currie
08c1d57c53
fix a param scoping error
2002-01-17 16:59:00 +00:00
Bill Currie
7227ab4363
qfcc.c:
...
add -P,--progs-src so you can specify the name of the progs.src file
rest:
add/use print_type
2002-01-17 08:19:53 +00:00
Jeff Teunissen
8c2d3f65c3
Add a couple symbols to qfcc's preprocessor lines
2002-01-05 19:18:27 +00:00
Jeff Teunissen
9f6dcec9dd
--save-temps support for qfcc. It'll leave files with the same filenames
...
they're generated from, with the exception that they will have an
extension of .p. Obviously, depends on cpp support.
2002-01-05 19:13:20 +00:00
Bill Currie
f591b27532
set the result of the block used for self.maxs = obj.origin; type expressions
2002-01-04 18:43:55 +00:00
Bill Currie
718a64343b
more old-code cleanup. move PR_LexString into make_string
2002-01-04 18:27:01 +00:00
Bill Currie
12d2338d1b
handle dos line endings a little better
2002-01-04 17:13:13 +00:00
Forest Hale
184ff4a216
made qfcc compile again, by renaming com_token to qfcc_com_token so it does not conflict with QFutil
2002-01-04 11:12:52 +00:00
Bill Currie
9d2739598a
character constants
2002-01-04 08:45:24 +00:00
Bill Currie
f392c395df
fix some uninitialized warnings my gcc missed, but misty's got
2001-12-13 16:40:46 +00:00
Bill Currie
112f74a357
make integer constant division warnings optional
2001-12-12 22:00:42 +00:00
Bill Currie
195dd1032e
clean up some dead code
2001-12-12 21:52:07 +00:00
Bill Currie
2b458dd13d
clean up line/file management
2001-12-12 21:50:11 +00:00
Bill Currie
6d65fe853d
spontaneous temp defs need to have their users incremented when an
...
assignment is part of a sub expression
2001-12-12 21:29:04 +00:00
Bill Currie
7e38a8d9a0
clean up the return def selection for emit_assign_expr
2001-12-12 20:55:55 +00:00
Bill Currie
8ddce20949
pr_*: add storep.p so pointers can be stored into entities
...
emit.c: convert & (address) to . in unary .
rewrite emit_assign_expr
expr.c: remove debug code and make unary . less agressive on address calcs
also convert & (address) to . for lvals
2001-12-12 20:35:58 +00:00
Bill Currie
b56d7f3248
emit.c:
...
fix a missing else (should convert to switch)
expr.c:
fix address_expr for binary expressions
fix unary .
2001-12-12 18:34:41 +00:00
Bill Currie
f9149a0d6c
finally get around to renaming type_name to pr_type_name
2001-12-12 17:15:09 +00:00
Bill Currie
cc34e5954f
lots of work on better array/pointer/struct handline. doesn't quite work yet
2001-12-12 08:39:47 +00:00
Bill Currie
835468bcfb
beginnings of breaking out the type code
2001-12-11 19:58:12 +00:00
Bill Currie
e976211faf
header block fixes
2001-12-08 20:40:50 +00:00
Bill Currie
00b2a45ecd
change the operator for "address" from "." to "&" so load.p can be implement.
...
this makes it so pointers in entities work.
2001-12-08 20:17:20 +00:00
Bill Currie
a184199146
get arrays of structures working
2001-12-08 17:36:58 +00:00
Bill Currie
b03a1bee42
ok, structures seem to generate correct code now
2001-12-08 08:19:48 +00:00
Bill Currie
3293c5e85f
beginnings of structure code. committed because cvs diff doesn't work on
...
new files
2001-12-08 00:09:11 +00:00
Bill Currie
1767ad435f
use the new immediate indeces to make small array indeces not use a global
2001-12-07 20:10:30 +00:00
Bill Currie
0c2f36f9a3
some dead code cleanup
2001-12-06 20:05:49 +00:00
Bill Currie
3c2c4aa9e6
indent whitespace cleanup. not perfect, but a bit more consistent now
2001-12-06 19:49:40 +00:00
Bill Currie
61786182d2
whitespace
2001-12-06 18:14:44 +00:00
Bill Currie
12a0a10d33
more alpha portability fixes
2001-11-29 19:35:25 +00:00
Bill Currie
3f7c4f146e
allocate space for field arrays and report entity size
2001-11-15 05:31:15 +00:00
Bill Currie
e45bb62f23
ok, correct code seems to be getting generated for both array access and
...
entity field access
2001-11-15 04:32:50 +00:00
Bill Currie
40d47e91cb
win32 portability fixes
2001-11-15 03:54:35 +00:00
Bill Currie
7d9266a3f0
beginnings of array support. no array initialization yet and foo[i] = bar is
...
broken.
2001-11-15 00:46:36 +00:00
Bill Currie
8aa83d04f3
oops, that's not how that works :)
2001-11-15 00:25:15 +00:00
Bill Currie
cf37275def
add -g option (shortcut for --code=debug)
2001-11-14 23:17:20 +00:00
Bill Currie
ed331517b3
more grammar re-work preparing for arrays and structs
2001-11-14 22:31:57 +00:00
Bill Currie
a2bfff5dc4
simplify the type rule
2001-11-14 07:16:58 +00:00
Bill Currie
3fe67eecd2
expr.c:
...
it helps if one understands /why/ something is done. I think this
might be it for the reference count tweeks
switch.c:
o better control over whether case ranges are built
o /always/ append the temp = test expression and use temp instead of
test for the != check
o only ever build case ranges if the switch expression is integer
2001-11-14 06:45:31 +00:00
Bill Currie
dc80f51d89
fix a missed immediate type missmatch case
2001-11-14 05:08:37 +00:00
Bill Currie
da36feff7f
oops, failed to notice that relocs on temp defs weren't being done correctly
...
memset wasn't such a good idea :P
2001-11-13 23:21:23 +00:00
Bill Currie
cfa47717c6
expr.c:
...
once again, temp def ref counts seem to be correct
pr_def.c:
reset recycled temp defs
2001-11-13 23:17:32 +00:00
Bill Currie
3874d78697
slightly better code, but the temp isn't getting ref-counted correctly
2001-11-13 22:11:45 +00:00
Bill Currie
68fb0a1147
clean out a bunch of unneeded code. this should take care of static linking
2001-11-13 20:34:21 +00:00
Bill Currie
645c400802
rearrange default jump for slightly better code generation
2001-11-13 20:27:05 +00:00
Bill Currie
4291f9c711
create new_bind_expr and more tweeks to temp def ref counting
2001-11-13 18:49:27 +00:00
Bill Currie
f2f8e096f3
qfcc.h:
...
o add a "freed" marker to def_t to prevent double freeing of
temp def offsets
emit.c:
o break out the bind code into emit_bind_expr (doesn't /really/
emit code, but still:)
o make bind work with disparate types (forces def_t->freed 1)
pr_def.c:
o mark array pointers as initialized and constant.
o don't free the offset for already freed temp defs
pr_imm.c
o fix a bug in uinteger support
o support disparate types for immediates
switch:
o fix a bug where gt.i was being used instead of gt.ui
o remove some debug code
2001-11-13 18:11:19 +00:00
Bill Currie
3d5447c71f
seems gcc3 drops the missed enum in switch warning :/
2001-11-13 16:08:50 +00:00
Bill Currie
07b59d2f07
pr_comp.h:
...
o add OP_JUMPB
o OP_JUMPB renumberd some opcodes, so up PROG_VERSION
pr_edict.c:
o make the version error reporting more informative
pr_exec.c:
o implement OP_JUMPB (goto *(ptr + index))
pr_opcode.c: (libs/gamecode/engine)
o add OP_JUMPB to the table
expr.h:
o ex_uinteger support
o some const correctness
o prototype new_label_expr
qfcc.h:
o uinteger ussport
o add pointers for op_jump and op_jumpb
o prototype PR_GetArray
emit.c:
o general uinteger support
o new reference/reloc type 3: absolute statement address
o jumpb support (binary goto)
expr.c:
o uinteger support
o break the label name creation out of new_label_expr into
new_label_name
o some const correctness
pr_def.c:
o add PR_GetArray to allocate an array in global space
o factor out some code common to PR_GetDef and PR_GetArray that would
otherwise be duplicated
pr_imm.c:
o some const correctness
o uinteger support
pr_lex.c:
o uinteger support
pr_opcode.c: (tools/qfcc/source)
o support jump and jumpb
switch.c:
o rewrite the binary search code to support ranges.
2001-11-13 08:58:54 +00:00
Bill Currie
d27cd9cc21
s/type_size/pr_type_size/
...
remove the redundant type_size from qfcc
2001-11-12 23:56:46 +00:00
Bill Currie
dcfea9796e
strings now work in switch statements
2001-11-12 21:13:55 +00:00
Bill Currie
928d343295
pr_comp.h:
...
o add ev_uniteger to the types enum
o add opcodes for ifbe, ifb, ifae, ifa, jump, lt.ui, gt.ui, le.ui, ge.ui
progs.h:
o add uinteger accessors
pr_exec.c:
o implement ifbe, ifb, ifae, ifa, jump, lt.ui, gt.ui, le.ui, ge.ui
pr_opcode.c:
o add opcodes for ifbe, ifb, ifae, ifa, jump, lt.ui, gt.ui, le.ui, ge.ui
expr.h:
o prototype inc_users
qfcc.h:
o add externs for op_ifbe, op_ifb, op_ifae and op_ifa
emit.c:
o don't bother emiting an assignment to a temp def that's only used once
(ie, it's never read, only written to)
o support the new if* instructions
expr.c:
o support the new if* insructions
o dectect expression loops in append_expr
o support unsigned integers
o re-work temp def usage counting
pr_def.c
o debugging for temp def usage counts
pr_opcode.c:
o support the new if* instructions
qc-parse.y:
o provide defines for IFBE IFB IFAE IFA
switch.c:
o do binary searches for strings, floats and ints if there are more than
8 cases in a switch. Strings need more testing.
2001-11-09 00:58:16 +00:00
Bill Currie
cb4ce6a634
remove the default label from the switch label table while fetching it.
2001-11-06 20:39:42 +00:00
Bill Currie
13a177f217
use 'b' (bind) instead of '=' (assign) for switch's test temp def so simple
...
expressions (ie, just a def) don't generated wasted assignments and clean up
switch's debug info so you get the switch line rather than the line for the
closing }
2001-11-05 19:12:33 +00:00
Bill Currie
9b784e331b
remove '(' (never used, don't remember what it was intended for) and add
...
'b' (bind), 's' (state) and 'c' (call) to get_op_string.
2001-11-05 19:11:03 +00:00
Bill Currie
5f5060cbf0
move the users and used setting code from emit_statement to
...
PR_AddStatementRef. This removes essentially duplicate code and 3 ifs :)
2001-10-31 18:40:02 +00:00
Bill Currie
b499d7e1e8
I've decided that shuffling the `sections' like that doesn't really gain
...
anything, so I'm reverting that change.
2001-10-31 17:55:35 +00:00
Bill Currie
3b2d2a1c88
re-arrange the order of the `sections' of a .dat file to match the header
...
order. this also `happens' to put the strings section just before the globals
section (both at the end) which will make pointer bounds checking easier.
2001-10-30 19:41:27 +00:00
Bill Currie
09f19fd9c9
remove some redundant data
2001-10-28 04:42:44 +00:00
Bill Currie
3f45a8305c
*taniwha inflicts more carnage on extern
2001-10-28 04:29:30 +00:00
Jeff Teunissen
b07d60f6d6
add getopt.c and getopt1.c to the makefile. There is preprocessor
...
stuff in these files to detect when they need to be compiled, so they
don't need anything in configure.
2001-10-26 23:53:36 +00:00
Jeff Teunissen
5502558bb9
qfcc: Argument passing for cpp, shuffling the verbosity levels around a
...
bit.
2001-10-26 22:07:35 +00:00
Bill Currie
5eba9f155e
clean up some duplicate symbols
2001-10-26 17:49:23 +00:00
Bill Currie
d8e6bf9cb6
fix the verbosity levels to what they were
...
--no-cpp is now cpp or no-cpp in code
add cpp to code_options_t
2001-10-26 16:04:38 +00:00
Jeff Teunissen
c5d0d45edf
qfcc: Remove some debug info from taniwha's last commit -- I thought
...
*I*'d done that! :)
2001-10-26 08:55:24 +00:00
Jeff Teunissen
46c4174024
qfcc: forgot a newline in -V output
2001-10-26 08:17:04 +00:00
Jeff Teunissen
89c7e0df1a
qfcc: getopt support. Yes, it exists, and it works, and it's fun! :)
2001-10-26 08:14:05 +00:00
Bill Currie
5cbd50d835
count the number of digits needed rather than relying on -lm (now it's not
...
needed:)
2001-10-26 06:53:02 +00:00
Jeff Teunissen
581411e9e2
qfcc: Preparation for getopt.
2001-10-26 06:43:56 +00:00
Timothy C. McGrath
04e4da654a
Changes taniwha did to make qfcc work with statically compiled libs.
...
This is what was bugging me all night long with qfcc ><;;
Tim McGrath (Misty-chan)
2001-10-26 02:32:40 +00:00
Bill Currie
70bedc149f
allow returning NIL
2001-10-25 21:15:48 +00:00
Bill Currie
bc44f950af
enable passing NIL into a function
2001-10-25 20:51:56 +00:00
Bill Currie
f8a41cb1bc
completely nuke the concept of "priority" from opcodes and use get_op_string
...
in emit_sub_expr instead of a redundant switch.
2001-10-25 17:48:35 +00:00
Bill Currie
f029687ff0
switch statement. could do with lots of improvements, but this should be a
...
good start.
2001-10-25 06:41:52 +00:00
Bill Currie
09405469f6
throw PR_BeginCompilation's arguments out the nearest airlock
2001-10-24 22:53:27 +00:00
Adam Olsen
3bba5398ba
- audit malloc usage. now everything checks the return value :)
2001-10-24 22:50:06 +00:00
Bill Currie
133ce647fb
implement break and continue. only loops covered for now, but that's because
...
switch isn't implemented yet
2001-10-24 18:57:29 +00:00
Bill Currie
743bc5178b
fix uninitialized variable detection for nested scopes
2001-10-24 15:21:21 +00:00
Bill Currie
6553c81a41
proper scoping for QC ala C.
2001-10-24 06:39:49 +00:00
Bill Currie
2ef8adea09
handle more conditional code and check for unitied vars in the test of if ()
...
etc
2001-10-19 05:16:24 +00:00
Bill Currie
16c334b6b9
uninit var detection seems to work for if and if else
2001-10-19 03:22:04 +00:00
Bill Currie
3572a6be28
change def_list from def_t ** to hashtab_t * and comment out some debug code
2001-10-19 00:45:56 +00:00
Bill Currie
237d238a65
beginnings of "if" uninitialized variable support. doesn't make any
...
difference yet
2001-10-18 23:06:39 +00:00
Bill Currie
5ca785e7e8
uninitialized variable detection. not perfect (lots of false negatives, but
...
fewer than before;) but prozac isn't giving any false positives.
2001-10-18 20:05:26 +00:00
Bill Currie
96e4e1a232
the beginning of unititialized var detection. first victim: functions.
...
--undefined-function-warning is now --no-undefined-function-warning and
the default is to detect called but undefined functions.
2001-10-18 17:41:22 +00:00
Bill Currie
952f029e6d
rename def_t.initialized to def_t.constant
2001-10-18 17:15:05 +00:00
Bill Currie
85834ab8c3
handle a couple of missed ex_nil cases
2001-10-17 18:36:19 +00:00
Bill Currie
79ac85b54f
type checking now works much better and there is now a NIL builtin constant
...
which can be assigned (/only/) to anything.
2001-10-17 07:45:37 +00:00
Bill Currie
2d068c0745
massive windows.h and WIN32 cleanup.
2001-10-16 21:40:45 +00:00
Bill Currie
c8e1e7942a
correct type error checking for vectors vs floats
2001-10-12 03:58:22 +00:00
Bill Currie
356492f683
don't convert float test epxressions for --id and fix a typo in an error
...
message for !expr
2001-10-06 04:48:52 +00:00
Bill Currie
67635e9dd0
fix a d'oh in the param/return type checking
2001-10-02 19:03:28 +00:00
Bill Currie
dcb51dc586
expr.h:
...
get_type and extract_type prototypes and add extern for type_names
emit.c:
use extract_type instead of get_type
expr.c:
get_type now returns the type pointer rather than the qc type enum.
extract_type uses get_type to return the qc type enum.
make type_names global
use get_type instead of ex_expr/ex_def to cover more cases
clean up function call/return processing as a result of get_type
pr_opcode.c:
use opcode_priority_type_table_ab when var_c is null and a minor
cleanup in PR_Opcode_Find
2001-10-02 18:55:52 +00:00
Bill Currie
7407e4f1b7
and some more
2001-09-28 07:09:38 +00:00
Bill Currie
c74fc1c0df
make the unused var warning like gcc's
2001-09-24 17:51:15 +00:00
Bill Currie
789a11d2d8
don't print the file or line number for "warnings treated as errors"
2001-09-23 04:08:28 +00:00
Bill Currie
2054ec016a
fix a slew of false positives with unused var checking
2001-09-23 04:08:03 +00:00
Bill Currie
7aec6e253a
unused local variable detection
2001-09-22 23:41:47 +00:00
Bill Currie
9f715ae9f8
more small old-parser cleanups
2001-09-15 20:31:17 +00:00
Bill Currie
d7675ada7a
move the particle count multiplication out of the renderer and into the clien
...
(for blood and gunshot, anyway).
2001-09-06 05:41:15 +00:00
Bill Currie
805c1bd242
foo (snafu, bar (baz)) no longer uses a temp for bar's return value
2001-08-24 23:22:02 +00:00
Bill Currie
f16886b7f1
missed a need to increment the users of the temp for chained functions
2001-08-24 22:29:06 +00:00
Bill Currie
cee850e499
remove debug
2001-08-24 22:03:50 +00:00
Bill Currie
8166ee7bfb
fix a whitespace snafu (gee, vim can be a pain somethings)
2001-08-24 21:57:07 +00:00
Bill Currie
ea451ab02d
Remove unnecessary temps from function return values. This has one
...
*/CRITICAL/* implication: DO NOT /EVER/ RELY ON EVALUATION ORDER. This
isn't /really/ that bad: evaluation order will be consistent for similar
expressions, but for (eg) foo() + bar()*2, bar will be called first.
2001-08-24 21:47:52 +00:00
Bill Currie
08f73bed78
better code generation for foo(bar(baz)). foo(snafu,bar(baz)) isn't optimal
...
yet, but the code is at least correct
2001-08-24 21:14:04 +00:00
Bill Currie
eeec89e6ba
don't put function args in temps when not needed. still need to take care
...
of the return value, but that can possibly be taken care of in an optimiser
pass.
2001-08-24 05:40:48 +00:00
Bill Currie
0eda635483
fix temp reference counting on function call args
2001-08-22 23:21:47 +00:00
Bill Currie
4c48851096
fix a buffer overflow in new_label_expr
...
use reference counting for temp defs and call PR_FreeTempDefs at the end
of emit_sub_expr as well as emit_expr.
fix a (relatively harmless) bug in type processesing of foo.bar =
2001-08-22 21:55:01 +00:00
Bill Currie
a32384f16c
report the name of the function using the most locals
2001-08-21 18:23:21 +00:00
Bill Currie
8d29efe552
remove a debug print
2001-08-21 17:22:55 +00:00
Bill Currie
2af74aedca
fix a segfault due to type mangling for ... functions
2001-08-20 18:23:47 +00:00
Bill Currie
cf4ca286f0
implement pre and post increment operators (++ and --)
2001-08-20 06:22:28 +00:00
Bill Currie
cd59628199
move the chained funcion support out of emit_function_expr into funciton_expr
2001-08-20 04:56:00 +00:00
Bill Currie
9ee3450265
extend the hash api to more easily support general cases
2001-08-16 02:51:53 +00:00
Bill Currie
d55199bece
re-arrange the types of store and storep so things make a little more sense
2001-08-13 23:00:17 +00:00
Bill Currie
c103adc17d
clean up the code generated for a = b ? c : d
2001-08-12 02:38:12 +00:00
Bill Currie
79ce6c56ca
fix assignops with entity fields by cloning e1 rather than just re-using it
2001-08-11 22:02:59 +00:00
Bill Currie
248de6858d
hopefully take care of freebsd
2001-08-11 21:46:02 +00:00
Bill Currie
c2d3d8f3ab
temp def expressions and ?:
...
seems to work :)
2001-08-11 21:15:24 +00:00
Bill Currie
a8e858f77d
fix a bug where every 2nd(?) arg was being skipped when setting up a function
...
call
2001-08-10 21:31:48 +00:00
Adam Olsen
caeb31e6ca
start of the support for chained function calls. Actually, they
...
should work fine now, there's just some extra temp vars we want to
remove before we can consider it "done" :)
2001-08-10 20:35:42 +00:00
Bill Currie
b44fd6ab91
move a var
2001-08-10 18:42:13 +00:00
Bill Currie
4388bf0519
good bye, old parser
2001-08-10 18:35:55 +00:00
Bill Currie
9e46265046
fix a silly error causing integer constants to not be re-used
2001-08-10 17:41:08 +00:00
Bill Currie
a33c834a39
move SHL and SHR down in expr
2001-08-10 17:00:53 +00:00
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
27ccfa67c5
fix the efficiency of unary expressions as args to a function
2001-08-09 17:05:30 +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
Bill Currie
b341529fce
more --id support
2001-08-07 16:50:22 +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
Bill Currie
1e1cb06a1f
disable integers for --id. probably not thorough enough yet :/
2001-08-03 07:47:15 +00:00
Bill Currie
d89cd91e4b
make the expressions in for (a;b;c) optional
2001-08-01 06:29:09 +00:00
Bill Currie
bfb8eff2f0
signed_const isn't needed any more
2001-07-27 21:01:01 +00:00
Bill Currie
ecc71c4a60
local var = expr; now works (globals must still be consants)
2001-07-27 20:55:14 +00:00
Bill Currie
28b1598e7e
break the emit_* functions out of expr.c into emit.c
2001-07-26 05:15:34 +00:00
Bill Currie
7718ca4c96
various little cleanups
2001-07-26 05:08:27 +00:00
Bill Currie
d44f60f17c
drasticly simplify emit_assign_expr now that I have a much better
...
understanding of when an explicit assigment is needed. seems to work for
everything I throw at it.
Also, fix ! unary ops (caused by the - unary op fix:/)
2001-07-25 21:47:05 +00:00
Bill Currie
0c2cd8633c
fix -expr handling. generates sucky code atm, but at least it's generating
...
code now:P
2001-07-25 18:36:36 +00:00
Bill Currie
620063628c
typecheck values for [frame, think] on thost functions and fix some misplaced
...
immediate defs
2001-07-24 23:53:35 +00:00
Bill Currie
9ad075b02e
make if/while/for use test_expr, make test_expr fix the new exp line/file,
...
fix some string const issues
2001-07-24 22:30:31 +00:00
Bill Currie
576123060a
warn on passing integer constants into ... functions. Again, this will need
...
an option later
2001-07-24 20:43:18 +00:00
Bill Currie
d9cde786b3
use ev_type_count instead of ev_void for bad types so things like void
...
functions being used in expressions don't cause ICEs
2001-07-24 19:51:44 +00:00
Bill Currie
6d1671950a
expr.c:
...
warn for int const / int const. this will probably want an option for newer
games
qfcc.c:
clean up temp files when errors have occured
2001-07-24 04:45:53 +00:00
Bill Currie
a47a4d8038
make print_expr's output readable by mere mortals
2001-07-23 06:15:33 +00:00
Bill Currie
d2c266775c
fix a seg on return type mismatch
2001-07-23 05:46:00 +00:00
Bill Currie
4b744b6be5
fix numberous integer <-> float errors
...
type check function args in the correct order
2001-07-23 05:31:49 +00:00
Bill Currie
b8874cab1c
function return checking
2001-07-23 02:27:46 +00:00
Bill Currie
50fadb6866
function arg type checking with int->float /constant/ cooecion.
2001-07-23 01:56:49 +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
55ac55c7ac
rename ev_int and ex_int to ev_integer and ex_integer. create type_integer
...
and def_integer (do I need that?), clean up and or coment on XXX and FIXME
2001-07-22 06:59:12 +00:00
Bill Currie
7c16afe7e9
add a --no-cpp command line option so that cpp enabled qfcc can still compile
...
qfpreqcc progs
2001-07-20 05:22:44 +00:00
Bill Currie
00d409e80c
fix constant folding for |
2001-07-19 03:00:35 +00:00
Bill Currie
47a6f2c9b5
pr_debug.c:
...
capitolise CRC and add a \n to the message
sv_progs.c (both nq and qw):
don't bother checking the progdefs.h crc: it's just not needed any more
pr_imm.c:
use r instead of rep when checking the hash tables.
main.c (quaq):
make developer work and set com_filesize (otherwise, progs crc doesn't
get set properly (com_filesize, not developer:))
2001-07-18 21:28:41 +00:00
Bill Currie
5c31fbf366
fix debug crc generation
2001-07-18 20:31:55 +00:00
Bill Currie
10ad8bebbd
Make files.dat actually useful. I really dislike the hardcoding, but it /is/
...
useful. Also, fix a bug in PrecacheModel where it was checking MAX_SOUNDS and
numsounds instead of models.
2001-07-18 17:23:42 +00:00
Bill Currie
c9af1575d3
fix emit_assign_expr to emit an explicit assignment statement whenever
...
emit_sub_expr returns a temporary def. this fixes a = b = c; expressions when
entities are involved.
2001-07-18 16:33:31 +00:00
Bill Currie
098305d649
fix (expr_type1 && expr_type2). this involed type completing expressions :/
2001-07-18 06:37:14 +00:00
Jeff Teunissen
af366764de
C preprocessor support for qfcc. Depends on the new parser. --enable-cpp
...
to activate.
2001-07-17 05:02:34 +00:00
Bill Currie
5d5d3f1416
well, that explains the loss of line number onfo on return statements :P
2001-07-16 03:53:45 +00:00
Bill Currie
cb80800732
fix debug line numbers for if and while. still `losing' them for return for
...
some reason.
2001-07-15 01:51:01 +00:00
Bill Currie
a0ba8e534c
s/IMMEDIATE/.imm/ for name of immediate defs. the latter is both shorter and
...
impossible to generate from qc
2001-07-15 01:50:10 +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
ae9ee57666
change the type of opcode->type to etype_t, clean up the resulting mess, and
...
rename all of the opcodes to (eg) mul.f instead of MUL_F
2001-07-14 01:52:05 +00:00
Bill Currie
6c91ee29f0
fix a missed debug test
2001-07-14 01:47:45 +00:00
Bill Currie
7acbb3a0ea
helps if I remember this :/
2001-07-14 01:16:07 +00:00
Bill Currie
64e50e1ebd
Basic debug info generation, just line numbers and local defs for each
...
function.
2001-07-14 01:15:40 +00:00
Bill Currie
8bbef35197
fix `a = b = b + c;' (probably d + c, too). Caused by forgetting to emit
...
an assignment for `a ='.
2001-07-12 18:56:43 +00:00
Bill Currie
8000c86e35
/much/ better type mismatch error reporting
...
eg:
./main.qc:55: type mismatch: float == entity
2001-07-09 18:17:04 +00:00
Bill Currie
1db6225ae7
make - - - - -2 work
2001-07-06 04:54:08 +00:00
Bill Currie
4673d701c9
fix the conflicts caused by -ve constants
2001-07-06 04:29:12 +00:00
Jeff Teunissen
35f5118803
warning/error message cleanups. Well, at least *I* think they make more
...
sense. :)
2001-07-06 02:43:39 +00:00
Bill Currie
b1f264b203
using qfpreqcc is now vewy vewy qwiet ('e's 'unting wabbits)
2001-07-03 21:17:02 +00:00
Bill Currie
1edf1e0b39
format checking for error and warning + needed fixes
...
try to give name of object when calling non-function
2001-07-03 20:53:49 +00:00
Bill Currie
ccc00b0608
fix segs on ondeclared identifiers
2001-07-03 20:42:07 +00:00
Bill Currie
f2bb7ace41
add an option (--warn=error) to treat warnings as errors
2001-06-28 23:15:10 +00:00
Bill Currie
9c2398d923
stop processing files after errors have occured
2001-06-28 23:08:52 +00:00
Bill Currie
6dfee9968b
/much/ better error handling
2001-06-28 21:26:40 +00:00
Bill Currie
eef9e8e2dc
be more accurate about the operator involved
2001-06-28 17:44:50 +00:00
Bill Currie
0271afbb10
warn about the dangers of (!foo & bar)
2001-06-28 15:20:31 +00:00
Bill Currie
01a9372add
fix the corrupted locals problem (df->locals was getting set too early)
2001-06-28 02:58:45 +00:00
Bill Currie
daf5fc96ea
reset temps after emitting a function. it helps :) (fixes the wierd entity
...
errors)
2001-06-27 23:36:03 +00:00
Bill Currie
59ff35558f
create empty defs for vertex and quaternion compontents
2001-06-27 22:24:28 +00:00
Bill Currie
768c4a49d3
fix . type checking
2001-06-27 21:43:10 +00:00
Bill Currie
774a1fe6cd
fix // comments at end of file (ie, no trailing \n)
2001-06-27 20:47:41 +00:00
Bill Currie
9c30c0c455
make simple assignments (a = b;) generate code
2001-06-27 20:32:27 +00:00
Bill Currie
1eef491c1c
handle -ve constants
2001-06-27 19:40:43 +00:00
Bill Currie
1fd4590212
report file as well
2001-06-27 18:15:24 +00:00
Bill Currie
febb139a41
free temp defs at the end of each expr block. CustomTF has gone from 64 to 25
...
locals.
2001-06-27 17:11:21 +00:00
Bill Currie
9d2bf8df19
better function argument code generation
2001-06-27 16:43:56 +00:00
Bill Currie
504d03a21a
expr.c:
...
fix a silly stanfu with goto
qc-parse.y:
suffle the debug code
2001-06-27 05:45:20 +00:00
Bill Currie
673e6e66b7
turns out qcc wasn't so stupid about = vs ||/&& precedence after all (just
...
my interpretation of the code was:/) why oh why didn't John use bison or yacc
in the first place? :/
2001-06-27 00:10:34 +00:00
Bill Currie
ff42e81127
remove some debug info
2001-06-26 23:51:15 +00:00
Bill Currie
c629de9b3b
function calls work now
2001-06-26 23:42:11 +00:00
Bill Currie
50ae388caa
initialisations now seem to work, including cows (mooOOoo:)
2001-06-26 22:43:28 +00:00
Bill Currie
c32bcb7262
immediates now seem to work
2001-06-26 22:07:09 +00:00
Bill Currie
ce2f26f0b9
lables are working, but immediates and function return values are borked
2001-06-26 21:32:22 +00:00
Bill Currie
5785b93107
implement branches and top level call
2001-06-26 20:06:56 +00:00
Bill Currie
19a7285f6c
implement state
2001-06-26 19:54:50 +00:00
Bill Currie
aee129ca7d
assignments now seem to work in that they no longer seg qfcc
2001-06-26 19:48:03 +00:00
Bill Currie
63ad87db68
return defs of the correct type
2001-06-26 17:34:21 +00:00
Bill Currie
69f869087b
oops
2001-06-26 16:24:11 +00:00
Bill Currie
d783a024b3
record an expression's line number and file and sort of handle state
...
expressions
2001-06-26 16:23:21 +00:00
Bill Currie
3242c04798
fix the redef error
2001-06-26 16:12:01 +00:00
Bill Currie
c1753046a9
start on actually generating code. doesn't work yet (getting a weird type
...
redeclaration error and not all expressions are handled yet).
2001-06-26 07:21:20 +00:00
Bill Currie
e99796c4cf
new expression type: ex_block. forms a linked list of expressions for fast
...
appending and ease of manipulation.
2001-06-26 03:33:01 +00:00
Bill Currie
749d460041
duplicate code cleanup
2001-06-26 02:46:02 +00:00
Bill Currie
3fa3ab59a9
clean up error reporting a little
2001-06-25 23:42:49 +00:00
Bill Currie
625915288c
hopefully make line directives work
2001-06-25 23:38:32 +00:00
Bill Currie
90b5c57266
fix lost initial char of string constants
...
make expression strings char * instead of string_t (don't put them into
pr_strings prematurely);
2001-06-25 22:53:15 +00:00
Bill Currie
53b66ef2e0
better label handling and strings are now completely parsed (including escapes)
2001-06-25 22:11:20 +00:00
Bill Currie
1779a124c5
expr.h:
...
nuke the ex_statement and estatement_[st] stuff
add label_expr prototype
expr.c:
ex_statement nukage
correct new_expr's decl
add label_expr to ease label creation
don't crash when printing a null expression (bare return)
qc-parse.y:
estatement_t nukage
statement statements and statement_block are type expr
generate `expressions' for statements
a full parse tree for each function is now generated. there are several
special expression opcodes for statements:
d done \
r return -> unary: expression to return or null
i if binary: evaluated expression, destination label
n ifnot binary: evaluated expression, destination label
c call binary: function def, args (expr list, rev order)
s state binary: frame const, function def
g goto unary: destination label
l label unary: label number
in a top level expression, l (label) defines the label, otherwise it is a
reference.
2001-06-25 20:52:04 +00:00
Bill Currie
2d87eeb57d
functions are now initialized, but no code is yet generated
2001-06-25 18:23:29 +00:00
Bill Currie
df897255ff
make usage of the new parser easier to configure
2001-06-25 18:22:53 +00:00
Bill Currie
ab051248e8
expr.h:
...
add prototype for print_expr
expr.c:
add print_expr
correct string accessors
currect the result type for unary operators
qc-lex.l:
correct string, vector and quaternion parsing
qc-parse.y:
precedence corrections and more function scope work
CustomTF gets through the parsing again.
2001-06-25 17:15:56 +00:00
Bill Currie
c12ac3278e
a little progress on functions
2001-06-21 07:08:34 +00:00
Bill Currie
ae98ed8603
field types are parsed correctly, but parameters have been lost for the
...
moment
2001-06-20 23:32:13 +00:00
Bill Currie
aac91d8cd6
more expression handling. turns out I'm mis-parsing field types, so that's next
2001-06-20 21:18:04 +00:00
Jeff Teunissen
ba17807833
whitespace.
2001-06-20 19:53:37 +00:00
Bill Currie
226b40483d
beginnings of expression and statement processing
2001-06-20 07:02:36 +00:00
Bill Currie
56aafce20c
qfcc.h:
...
rearrange def_t a little and add def_next (leaving next free for other
uses)
pr_def.c:
use def_next instead of next to link /all/ of the named defs
qfcc.c:
ditto
2001-06-20 03:05:50 +00:00
Bill Currie
327e95a3c8
gcc 3.0 fixes
2001-06-20 02:07:20 +00:00
Bill Currie
90a0cdfedf
now seems to get through CustomTF properly, but better def handling is needed
2001-06-19 23:35:09 +00:00
Adam Olsen
67e4fa85bf
add support for \<, \>, and \^ to qfcc. \< bolds all characters (toggles bold really) until \>, and \^ bolds (toggles) the next character.
2001-06-19 23:27:07 +00:00
Bill Currie
20bf698330
fix \x handling for 0-9
2001-06-19 22:26:16 +00:00
Bill Currie
f50ce04ccb
d'oh, forgot to add 10 for a-f and A-F
2001-06-19 22:13:35 +00:00
Bill Currie
af701d74cd
fix infinite loop for \x...
2001-06-19 21:45:57 +00:00
Bill Currie
2647e63810
finally fix the tupe corruption.
2001-06-19 16:01:38 +00:00
Bill Currie
bdc0ba32ca
pr_lex.c:
...
add PR_PrintType (and lotsa debug to PR_FindType)
qc-parse.y:
fix up one bit of type corruption, only to find another :/
2001-06-19 07:28:50 +00:00
Bill Currie
89fecd7cee
slowly getting there with defs processing. still borked
2001-06-18 22:51:49 +00:00
Bill Currie
7254dc0052
rename filelength to FileLength to avoid a name clash in windows
2001-06-16 04:27:22 +00:00
Bill Currie
b595f0122f
got function params scope sort of sorted out
2001-06-15 20:38:57 +00:00
Bill Currie
eeaab95be5
beginnings of expression and def handling.
2001-06-15 19:38:43 +00:00
Bill Currie
373ea8132a
more work on the code generation and make generally usable again by disabling
...
the new stuff
2001-06-15 07:16:18 +00:00
Bill Currie
f9baacd440
beginnings of code generation. hangs :)
2001-06-14 21:49:47 +00:00
Bill Currie
d7ebba6a74
parses CustomTF now, but no code generation
2001-06-13 18:35:41 +00:00
Bill Currie
c89da89b69
almost parses CustomTF ($macro junk next)
2001-06-13 07:16:39 +00:00
Bill Currie
2c26de2c2b
oops
2001-06-12 22:26:52 +00:00
Bill Currie
72b93d0062
more stuff
2001-06-12 22:26:10 +00:00
Bill Currie
489ddbc7a7
getting closer. soon timie to start putting real code in there
2001-06-12 21:06:28 +00:00
Bill Currie
7d52f12248
clean up C warnings
2001-06-12 20:24:02 +00:00
Bill Currie
3be018e1f9
beginnings of a bison grammar for qc
2001-06-12 19:44:26 +00:00
Bill Currie
c0654f3541
miss tagged string != string
2001-06-12 15:29:05 +00:00
Bill Currie
aa825853bf
full \ handling in strings (including \e for escape (why C doesn't have that
...
is beyond me))
2001-06-11 23:37:01 +00:00
Bill Currie
dfb6062f9d
fix an out-by-one for line directives at the beginning of the file
2001-06-11 17:51:09 +00:00
Bill Currie
c732d098f4
add '# 1 "foo.qcc" ...' (flags ignored) processing to qfcc so preprocessed
...
output can make sense.
2001-06-11 15:43:06 +00:00
Bill Currie
bbc97079e0
pr_comp.h:
...
define PROG_ID_VERSION as 6 and redefine PROG_VERSION as 0x00fff001
(0.fff.001) for the new qc features.
pr_edict.c:
support version 6 and version 0.fff.001 progs
qfcc.h:
add version field to options_t
add min_version field to opcode_t
pr_opcode.c:
set the minumum version of each opcode (gee, that table is getting ugly)
filter out opcodes with too high a min_version when initializing the opcode
hash tables.
qfcc.c:
update help output.
accept --id to limit code generation to id compatable (ver 6) progs.
default progs generation to 0.fff.001
2001-06-09 06:25:33 +00:00
Bill Currie
0186732130
make initialized local variables work /properly/
...
local float urk = 0;
STORE_F 46(IMMEDIATE) 0.0 55(?)
2001-06-08 20:13:10 +00:00
Bill Currie
7ef4c2776e
Immidiate sharing now /works/ (shaved off two pr_globals from CustomTF, too:).
...
Detect assignments to initialized globals and give an error, unless the --cow
(copy on write) option is given, and then allocate a new global for the var,
clear its initialized flag.
Relocate all globals.
2001-06-08 06:32:15 +00:00
Bill Currie
867260d27d
report the size of the locals pool
2001-06-06 00:34:35 +00:00
Bill Currie
c3cdfce12b
don't bother writing out local defs as they mess up progs dumping now that
...
they overlap
2001-06-06 00:12:10 +00:00
Bill Currie
d86ed9a3b9
relocate the locals defs as well as their references
2001-06-05 23:52:34 +00:00
Bill Currie
bbb37d0080
customTF is now down to 4989 pr_globals. all parameters, local veriables and
...
termporary variables sit in one pool of memory (at the end of the globals)
thus drasticly reducing globals requirements. This works because the whole
lot is declared to be in the function's local variable space which is copied
to the locals stack in the progs engine.
2001-06-05 08:09:12 +00:00
Bill Currie
a26f799de4
allocate temps based on size rather than type (get better re-usage this way)
...
put temps onto the local scope.
2001-06-05 05:22:11 +00:00
Bill Currie
17e19f3892
regain about 5000 globals for customTF, but this fixes possible breakage with
...
premature temp var re-usage (ie, it puts the temps back into the locals space).
2001-06-04 22:35:54 +00:00
Bill Currie
e090f3c9e3
do proper temp def handling so we don'e use any where near as many defs for
...
temporary variables (customTF went from 35941 to 12587 pr_globals).
2001-06-04 17:52:50 +00:00
Bill Currie
53e9fb65d1
prepare PR_Statement for proper temporary usage
2001-06-04 05:45:51 +00:00
Bill Currie
e339e82c01
hash.h is now const correct as is a lot of qfcc
2001-06-04 04:52:14 +00:00
Bill Currie
4aa47d728a
use the correct STORE_ op for function arges, rather than STORE_V. Should
...
speed up progs in general.
2001-06-04 03:57:15 +00:00
Bill Currie
275e74161b
string comparison operators
2001-06-04 03:36:35 +00:00
Bill Currie
7178824ee6
put ADD_S up where it belongs :)
2001-06-04 02:49:59 +00:00
Bill Currie
ddcd172a03
re-write the opcode selection to be a hash table lookup and statment generation
...
to get the opcode from the table record rather than the location within the
table (ewww). gives a nice speed boost /and/ makes the opcode table easier to
maintain.
2001-06-04 02:41:45 +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
351e70b3bd
replace a missing / when producing files.dat
2001-05-22 18:23:29 +00:00
Bill Currie
2f2ba28bb7
pr_lex.c:
...
rewrite PR_LexPunctuation to avoid looping. 6x speedup for that function
according to gprof on customTF
configure.in:
--enable-profile
2001-04-03 16:50:31 +00:00
Bill Currie
b7aba0b643
allow named constants to be checked for immediate constants. qfcc now produces
...
the same number of globals etc as it used to
2001-04-02 18:43:10 +00:00
Bill Currie
f517dc6ce6
fix a silly bug and an incorrect interpretation of the old code
2001-04-02 18:10:43 +00:00
Bill Currie
02b09f4e5c
no more redundant strings. costs ~7ms, though, but HALVING the strofs size
...
in frikbot seems worth it.
2001-04-01 06:40:51 +00:00
Bill Currie
59e55834ed
Another massive speadup caused by using hash tables to lookup already
...
generated immediate values. frikbot now compiles in just over 1s on my
machine.
2001-04-01 06:01:02 +00:00
Bill Currie
43ea8f4fc0
Rip out I_FloatTime from cmdlib.
...
Use Sys_DoubleTime instead of I_FloatTime and print out ms for compilation
2001-04-01 03:33:11 +00:00
Bill Currie
ec16ffaa65
move to using hash tables for variable lookups.
...
WARNING: this fixes a scope bug in qcc and thus you WILL get different (but
now correct) code for the following:
float foo;
void () bar =
{
local float foo;
foo = 0;
}
ie, the local foo will, as is correct, now be a separate var to the global
foo.
2001-04-01 02:12:57 +00:00
Bill Currie
1d9791553f
make qfcc use detect and use the installed libs/headers. currently doesn't work
...
due to modularity problems in libQFutil
2001-03-29 21:26:56 +00:00
Bill Currie
8866d86fba
rip out the crc code in favour of libqfutil
2001-03-28 23:40:54 +00:00
Bill Currie
cb5c262ffc
qtypes.h:
...
remove includes of qdefs.h and compat.h
pr_comp.h:
merge pr_comp.h from quake and qfcc, removing the copy in qfcc
cmdlib.[ch]:
nuke the endian code.
qendian.c:
initialise the LittleLong etc pointers at compile time rather than run
time
com.c (both nq and qw):
nuke the LittleLong etc init code
everything else:
fix up after the qtypes.h cleanup
2001-03-28 17:17:56 +00:00
Bill Currie
cea45d19d4
bah, another premature commit
2001-03-27 21:47:44 +00:00
Bill Currie
82b533e1ef
forgot that .S files don't have dependency info :/
2001-03-27 21:46:49 +00:00
Bill Currie
5e993575a4
put a comment in the right place
2001-03-27 00:52:52 +00:00
Bill Currie
c34868c117
attack cmdlib with a chainsaw. All unused functions are gone.
2001-03-26 21:02:18 +00:00
Bill Currie
19b146748a
add .vimrc
2001-03-26 16:36:44 +00:00
Bill Currie
6247233e0e
when checking a token, they type of the token must be taken into account.
2001-03-14 04:14:09 +00:00
Bill Currie
21fa23a747
the crc field in progs.dat is evily generated from the crc of progsdef.h, so
...
change the header to produce a matching crc. This is an interrim fix until a
better solution can be found.
2001-03-12 20:04:22 +00:00
Jeff Teunissen
2dd03876af
QFCC -- the QuakeForge Code Compiler -- an autoconfiscated qcc.
...
It sucks, but it works, and will form the basis for something that Does
Not Suck.
2001-02-24 06:58:54 +00:00