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