quakeforge/tools/qfcc/source
Bill Currie 1ce026d168 [qfcc] Implement bounced return pointer calls
This is achieved by marking a void function with the void_return
attribute and then calling that function in an @return expression.
@return can be used only inside a void function and only with void
functions marked with the void_return attribute. As this is intended for
Objective-QC message forwarding, it is deliberately "difficult" to use
as returning a larger than expected value is unlikely to end well for
the calling function.

However, as a convenience, "@return nil" is allowed (in a void
function). It always returns an integer (which, of course,can be
interpreted as a pointer). This is safe because if the return value is
ignored, it will go into the progs return buffer, and if it is not
ignored, it is the smallest value that can be returned.
2022-02-05 19:30:08 +09:00
..
.indent.pro indent whitespace cleanup. not perfect, but a bit more consistent now 2001-12-06 19:49:40 +00:00
attribute.c [qfcc] Add a very basic attribute system 2022-02-02 23:51:37 +09:00
class.c [qfcc] Use a union to manage function attributes 2022-02-05 19:30:08 +09:00
codespace.c [gamecode] Move progs auxiliary headers into a subdirectory 2022-01-09 00:26:52 +09:00
constfold.c [qfcc] Implement vector scaling for Ruamoko 2022-01-30 14:48:49 +09:00
cpp.c Get QF cross-compiling using MXE/mingw32 2021-03-27 20:09:37 +09:00
dags.c [qfcc] Ensure ops on globals occur before return 2022-02-03 16:33:42 +09:00
debug.c [gamecode] Rename ev_integer to ev_int 2022-01-18 13:27:19 +09:00
def.c [qfcc] Update sizes and alignments for dvec4 and friends 2022-02-04 08:46:58 +09:00
defspace.c [qfcc] Allow 0 sized highwater allocations in defspaces 2022-01-21 10:16:54 +09:00
diagnostic.c [gamecode] Clean up string_t and pointer_t 2022-01-18 12:11:14 +09:00
disassemble.c [gamecode] Rename parm to param 2022-01-27 10:55:06 +09:00
dot.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
dot_dag.c [qfcc] Keep track of reachable dag nodes 2021-06-29 09:41:03 +09:00
dot_expr.c [qfcc] Handle vector scaling by ints 2022-02-04 21:57:41 +09:00
dot_flow.c [util] Make va thread-safe 2021-01-31 16:05:48 +09:00
dot_sblock.c [qfcc] Make it a little easier to see extra info 2021-12-27 14:15:51 +09:00
dot_type.c [gamecode] Rename ev_pointer to ev_ptr 2022-01-18 14:36:06 +09:00
dump_globals.c [qfcc] Encode the new vector types 2022-01-30 16:00:49 +09:00
dump_lines.c [gamecode] Use a struct for offset/count pairs 2022-01-26 19:30:25 +09:00
dump_modules.c [gamecode] Use a struct for offset/count pairs 2022-01-26 19:30:25 +09:00
dump_strings.c [gamecode] Use a struct for offset/count pairs 2022-01-26 19:30:25 +09:00
emit.c [qfcc] "Use" the correct operands 2022-01-23 00:59:38 +09:00
expr.c [qfcc] Implement bounced return pointer calls 2022-02-05 19:30:08 +09:00
expr_assign.c [qfcc] Add support for horizontal vector ops 2022-01-30 10:56:15 +09:00
expr_binary.c [qfcc] Handle vector scaling by ints 2022-02-04 21:57:41 +09:00
expr_bool.c [gamecode] Add ev_ushort and partial support 2022-01-18 22:08:37 +09:00
expr_compound.c [qfcc] Implement some basics for the vector types 2022-02-04 00:25:31 +09:00
expr_obj.c [qfcc] Make is_function_call a little more useful 2022-02-05 19:30:08 +09:00
flow.c [qfcc] Give lea its own statement type 2022-02-02 18:55:01 +09:00
function.c [qfcc] Update sizes and alignments for dvec4 and friends 2022-02-04 08:46:58 +09:00
grab.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
idstuff.c [gamecode] Use a struct for offset/count pairs 2022-01-26 19:30:25 +09:00
linker.c [gamecode] Clean up string_t and pointer_t 2022-01-18 12:11:14 +09:00
Makemodule.am [qfcc] Add a very basic attribute system 2022-02-02 23:51:37 +09:00
method.c [gamecode] Rename MAX_PARMS to PR_MAXPARAMS 2022-01-23 14:17:25 +09:00
obj_file.c [qfcc] Remove the def sorting (reverts 9a08a51ebd) 2022-01-27 16:43:43 +09:00
obj_type.c [qfcc] Encode the new vector types 2022-01-30 16:00:49 +09:00
opcodes.c [qfcc] Check load/store operand type before mangling 2022-02-02 19:14:22 +09:00
options.c [qfcc] Make ruamoko the default and update the docs 2022-02-04 10:46:31 +09:00
pragma.c [qfcc] Add --ruamoko command line option and pragma 2022-02-04 09:27:07 +09:00
qc-lex.l [qfcc] Implement bounced return pointer calls 2022-02-05 19:30:08 +09:00
qc-parse.y [qfcc] Implement bounced return pointer calls 2022-02-05 19:30:08 +09:00
qfcc.c [gamecode] Rename parm to param 2022-01-27 10:55:06 +09:00
qfpreqcc Better handling of progs.dat and line numbers. 2012-11-15 15:04:51 +09:00
qfprogs.c [gamecode] Use a struct for offset/count pairs 2022-01-26 19:30:25 +09:00
qp-lex.l [gamecode] Rename ev_integer to ev_int 2022-01-18 13:27:19 +09:00
qp-parse.y [qfcc] Use a hidden local variable for pascal functions 2022-02-01 16:08:58 +09:00
reloc.c [gamecode] Rename ev_integer to ev_int 2022-01-18 13:27:19 +09:00
shared.c [gamecode] Rename ev_integer to ev_int 2022-01-18 13:27:19 +09:00
statements.c [qfcc] Implement bounced return pointer calls 2022-02-05 19:30:08 +09:00
strpool.c [build] Move to non-recursive make 2020-06-25 11:35:37 +09:00
struct.c [qfcc] Add types for ivec3/4 and vec3/4 2022-01-30 10:54:07 +09:00
stub.c [gamecode] Clean up string_t and pointer_t 2022-01-18 12:11:14 +09:00
switch.c [qfcc] Rework the functionality of address expressions 2022-01-25 23:39:17 +09:00
symtab.c [qfcc] Improve handling of type names as variables 2022-01-19 23:17:49 +09:00
type.c [qfcc] Use a union to manage function attributes 2022-02-05 19:30:08 +09:00
value.c [qfcc] Shorten type_function and type_pointer names 2022-01-18 22:34:52 +09:00