Bill Currie
21b64421c3
[ruamoko] Copy ALL the params to the args block
...
*sigh*
2020-03-10 03:09:21 +09:00
Bill Currie
4b7d5447bb
[ruamoko] Correct obj_msg_sendv for __obj_forward
...
Until I implemented forwarding, I didn't know how obj_msg_sendv was
meant to be used, so no surprise I got the implementation wrong.
2020-03-10 02:56:37 +09:00
Bill Currie
2a152e6356
[ruamoko] Add builtin __obj_responds_to
...
Fast dtable-based messages response test. However, it does not handle
forwarding.
2020-03-10 00:08:30 +09:00
Bill Currie
af37b660e8
[ruamoko] Push the forwarded args block
...
This causes the block to be freed when the forward: handler returns
(assuming it's not yet another builtin). This is necessary so calling a
lot of forwarded messages in a loop doesn't leak memory (though it will
get freed eventually).
2020-03-09 23:38:27 +09:00
Bill Currie
9b0368039e
[ruamoko] Include param size in size of args block
...
I forget it every time. It really doesn't help that params are 4 words
and words are 4 bytes, so seeing a size of 12 for 3 parameters *looks*
right.
2020-03-09 22:54:22 +09:00
Bill Currie
fa0a74efdf
[ruamoko] Finish implementation of __obj_forward
...
With this, object's implementing forward:: seem to accept the message
well, including receiving all the original args (not quite sure how to
deal with them in ruamoko code just yet, though).
2020-03-09 22:20:11 +09:00
Bill Currie
e3fe93c586
[gamecode] Implement most of message forwarding
...
All that's left is the parameter setup of forward::.
2020-03-09 20:41:17 +09:00
Bill Currie
a487595149
[ruamoko,libr] Begin implementation of __obj_forward
...
libr supplies an __obj_forward definition that links to a builtin, but
as it is the only def in its object file, it is readily replaceable by
an alternative Ruamoko implementation.
The builtin version currently simply errors out (rather facetiously),
but only as a stub to allow progs to load.
2020-03-09 19:09:08 +09:00
Bill Currie
e2f4c189f9
[ruamoko] Install and use dispatch tables
...
This should speed up ruamoko code somewhat as hash table lookups have
been replaced with direct array indexing. As a bonus, support for
message forwarding has been added (though not tested).
2020-03-09 18:11:36 +09:00
Bill Currie
1ccdd76780
[ruamoko] Clean up runtime init and cleanup
...
Move the semi-permanent resource initialisation into the module init and
the cleanup of those resources into cleanup. Makes actual runtime init
much easier to read.
2020-03-09 18:09:03 +09:00
Bill Currie
0e40366c7f
[ruamoko] Implement class conformsToProtocol
...
Seems to work nicely, too :)
2020-03-02 15:21:10 +09:00
Bill Currie
a906efac47
[ruamoko] Register protocols and their selectors
2020-03-02 15:20:34 +09:00
Bill Currie
78f552aa87
[ruamoko] Initialize static instances
...
This is one step closer to implementing conformsToProtocol. However,
protocols are not yet initialized correctly: they are not registered,
nor are their selectors.
While the static initializer list pointer was not written previously,
the module struct always came immediately after the symbols struct, and
the module version has so far always been 0. Thus, the list pointer is
correctly 0 for older progs and there's no need for a version bump.
2020-03-02 13:45:47 +09:00
Bill Currie
bc4bea79cb
[ruamoko] Remove a stale FIXME
...
This was fixed when pr_def_t was introduced. I missed the comment at the
time.
2020-03-02 13:00:33 +09:00
Bill Currie
383a7fe5e1
Remove File_Open
...
Other than its blocking of access to certain files, it really wasn't
that useful compared to the functions in qfs, and pointless with access
to qfs anyway.
2020-02-26 13:45:14 +09:00
Bill Currie
d60291a73e
Clean up a lot of va usage
...
va is not thread-safe (it's not save even without threads), and I want
to be able to run progs in threads.
2020-02-26 09:46:59 +09:00
Bill Currie
42713cad8b
Make script much friendlier to use
...
It now simply sets an error message pointer and returns false if there's
an error.
2020-02-26 09:39:03 +09:00
Bill Currie
3577d27a45
Move the ObjQC data into a resource block
...
This makes it nice and private (though with the cached pointer, ObjQC is
still a first-class component).
2020-02-25 23:14:18 +09:00
Bill Currie
a55b9544ac
Improve handling of pr_argc
...
It is now set to 0 when progs are loaded and every time
PR_ExecuteProgram() returns. This takes care of the default case, but
when setting parameters, pr_argc needs to be set correctly in case a
vararg function is called.
2020-02-25 17:36:29 +09:00
Bill Currie
9bb68f2d8c
Allow nested use of PR_SaveParams()
...
PR_SaveParams() is required for implementing the +initialize diversion
used by Objective-QuakeC because builtins do not have local def spaces
(of course, a normal stack calling convention would help). However, it
is entirely possible for a call to +initialize to trigger another call
to +initialize, thus the need for stacking parameter stashes. As a
bonus, this implementation cleans up some fields in progs_t.
2020-02-25 14:30:26 +09:00
Bill Currie
4b7ecdf74a
Make PR_Init take an instance to initialize
...
This allows internal sub-systems to do per-instance initializations
without other engine systems having to know about them.
2020-02-23 18:32:16 +09:00
Bill Currie
81083698a8
Move to using an in-memory form of ddef_t
...
This allows the VM to work with extended ddefs transparently. It seems
to have uncovered a typedef alias relocation bug, though.
2020-02-22 22:33:44 +09:00
Bill Currie
2db5d04e3f
Reduce the ephemeral nature of str_mid
...
When the substring is the tail of the supplied string, return a
"pointer" to within the supplied string rather than a new "return"
string. This means that tail-end substrings of string constants are
themselves constants.
2020-02-19 21:41:46 +09:00
Bill Currie
bab3752e98
Add missed overridden math functions
...
And fix misspelled ones too.
2020-02-15 23:49:12 +09:00
Bill Currie
df7c08a010
Add support for doubles to Ruamoko
...
Only as scalars, I still need to think about what to do for vectors and
quaternions due to param size issues. Also, doubles are not yet
guaranteed to be correctly aligned.
2020-02-15 23:49:12 +09:00
Bill Currie
8f028b8a0d
Fix some double frees.
2018-09-07 20:03:19 +09:00
Bill Currie
3efb0c538f
Separate file search from loading.
...
QFS_LoadFile (and its wrappers) now take a file handle rather than a
path. This will make vpath usage a little cleaner to implement.
2014-01-28 16:22:05 +09:00
Bill Currie
f5501fbf24
Fix a pile of automake deprecation warnings.
...
s/INCLUDES/AM_CPPFLAGS/g
I <3 sed :)
2013-11-24 13:11:50 +09:00
Bill Currie
6288684fa2
Fix more gcc 4.8 errors.
...
More actual bugs found, too.
2013-09-27 23:09:37 +09:00
Bill Currie
c6f9d8b64c
Reduce CFLAGS abuse a little for mingw targets.
...
This fixes missing debug info (useful for fixing linker errors, if nothing
else).
2013-01-28 16:21:42 +09:00
Bill Currie
e27d7cbd2d
Handle alloca "correctly".
...
Use AC_FUNC_ALLOCA and the #ifdef mess suggested by the autoconf docs
(hidden in qfalloca.h).
2013-01-22 21:02:50 +09:00
Bill Currie
6eb6b6c0ba
Change pointer_t to unsigned and clean up the mess.
...
It doesn't make sense to have negative pointers. The size of the commit is
from enabling gcc's -Wtype-limits warning and cleaning up that mess too.
2012-12-21 21:53:13 +09:00
Bill Currie
84a68b139e
Rename set_iter_t's value to element.
...
Correct terminology and all :)
2012-12-21 14:09:00 +09:00
Bill Currie
427d52511c
Fix an uninitialized variable warning.
...
It's a false positive, but best to be safe.
2012-12-19 17:13:32 +09:00
Bill Currie
e17d8ac9db
Add ruamoko wrappers for the set api.
...
This includes both normal functions and a Set class (and SetIterator
class). Most of the methods are implemented as builtins.
2012-12-16 13:48:36 +09:00
Bill Currie
3a9fe196b6
Get the return param right for messages to nil.
...
R_INT(pr) = R_(INT)(pr); is not exactly what I had intended :P
2012-12-16 13:39:59 +09:00
Bill Currie
f631f514e9
Fix the obj_error family of functions.
...
It seems they were written before quaternion support was added and were not
updated to take into account the variable size of parameters. Now at least
Object's -error: works.
2012-12-16 13:19:31 +09:00
Bill Currie
d5c831b6da
Add a little test case for accessing types.
...
Using ruamoko to access ruamoko type encodings is actually quite pleasant
:)
2012-11-15 13:40:11 +09:00
Bill Currie
6b46cde7c8
Move retainCount out of Object.
...
Going by "standard" Objective-C, retainCount really doesn't belong in
Object itself. The way GNUStep does it is to stash retainCount in memory
just below the object by allocating extra bytes for the count and returning
a pointer just beyond those extra bytes. Now Ruamoko does the same. This
fixes the inconsistencies in structure layouts for Protocol and class
structs between qfcc generated (internal) structs and user visible structs.
2012-11-08 20:24:25 +09:00
Bill Currie
ec42bde527
Make hash tables more const correct.
...
And clean up the resulting mess :/
2012-10-27 11:44:31 +09:00
Bill Currie
23a38738fc
Massive whitespace cleanup.
...
Lots of trailing whitespace and otherwise blank lines.
2012-05-22 08:23:22 +09:00
Bill Currie
bc1b483525
Nuke the rcsid stuff.
...
It's pretty useless in git.
2012-04-22 10:56:32 +09:00
Bill Currie
7a8f91edda
Move bi_gib.c from ruamoko to gib.
...
This makes gib depend on gamecode, but removes the dependency on gib from
ruamoko. Unfortunately, carne now needs to be linked against gamecode even
though it never uses it.
2012-02-09 10:00:54 +09:00
Bill Currie
9fbff2f4d5
Do an audit of the Makefile.am files.
...
o All instances of LIBADD/LDADD have a corresponding DEPENDENCIES
specificatiion.
o libraries now use a lib_ldflags macro to keep things consistent
o duplication of source/lib names has been minimized (particularly in
the libraries; more work needs to be done for the executables)
o automake spec blocks have been organized (again, more work needs to be
done for the executables)
2012-02-07 16:04:19 +09:00
Bill Currie
b5019c8e33
Nuke the engine dicrectory from gamecode.
...
Not the contents, of course :) Anyway, finally, that totally useless
directory is gone.
2012-02-06 23:44:52 +09:00
Bill Currie
c98ffa4eda
Create a message buffer API for Ruamoko
...
The api hides all the gory details of message buffer setup and usage
(particularly the differences between writing and reading). Most
importantly, the api provides a safe way to read and write binary data
(always little endian).
2012-02-06 15:50:32 +09:00
Bill Currie
3bd75cefd8
Autoconfiscate log2f.
...
Android doesn't supply log2f for us (though it does have all the other
float calls ruamoko wants).
2012-02-05 14:23:33 +09:00
Bill Currie
cc5140e3a1
Move min/max/bound and field_offset into better locations.
...
min/max bound into mathlib.h (they /are/ math functions, after all) and
field_offset into qtypes.h.
2011-12-24 10:04:33 +09:00
Jeff Teunissen
361255cf31
Ruamoko: New math constants, some new math functions
...
Also, switch all of the math builtins functions we use from Rua to the
ones that accept and return floats, avoiding conversions to/from double.
2011-12-09 22:36:41 -05:00
Bill Currie
f75b0a611b
Some compile fixes for OpenBSD
2011-08-25 22:35:20 +09:00
Bill Currie
3dd31b7de9
Fix some bugs found while hacking inputlines.
2011-07-09 09:42:11 +09:00
Antti Harri
358a844a42
Implement --version-info configure switch to override QuakeForge
...
library versioning. From Lasse Collin, thanks!
2011-07-09 01:23:36 +03:00
Bill Currie
4e66a5b327
Add rua rappers for the cvar alias functions.
2011-07-06 19:17:28 +09:00
Bill Currie
a8245e598e
Fix a memory leak.
...
The command hash table is shared between all progs engine instances, but it
was being allocated for every instance. Ensure only one is allocated.
2011-07-05 19:05:24 +09:00
Bill Currie
6484dd16c7
Finish cvar alias support.
...
Several functions that manipulate cvars were not checking for aliases.
2011-07-04 21:05:42 +09:00
Bill Currie
74a7e07dfc
Use AM_CFLAGS instead of CFLAGS.
...
CFLAGS is meant to be reserved for the user.
2011-05-10 12:44:44 +09:00
Bill Currie
2bacfdabf2
Interpret func fields as selectors for entities with objects.
2011-03-30 20:19:31 +09:00
Bill Currie
2be07fd652
Keep the the temp string out of progs for sprintf.
...
There's no need for the string to be in progs memory when printing as the
end result will be moved into progs memory regardless.
2011-03-24 11:45:58 +09:00
Bill Currie
cb0bc7229a
Resurect the debugging messages in rua_obj.c
...
Yet another debug flag: SYS_RUA_OBJ
2011-01-10 12:26:10 +09:00
Bill Currie
a85c0713aa
Nuke libQFbuiltins.
...
The gib and "common" builtins are now part of libQFruamoko.
2011-01-04 21:21:19 +09:00
Bill Currie
8c4fe2f844
Rename Sys_DPrintf to Sys_MaskPrintf.
...
We now have finer runtime control over what gets printed. Need to do a
SYS_DEV audit, creating new masks as apropriate.
2010-11-26 16:19:26 +09:00
Bill Currie
addbcaa09c
Add PL_GetFromFile builtin.
...
This is an extension "wrapper" (no such C function). This allows ruamoko
programs to read property lists without worrying about the memory required
to store the string for the property list being read.
2010-11-24 17:01:19 +09:00
Bill Currie
defc2a264b
Add QFile_GetHandle()
...
This allows other rua builtins to make use of ruamoko files.
2010-11-24 17:01:19 +09:00
Bill Currie
5fc4ef63f6
Rewrite ruamoko plist support to use handles.
...
The plist code was written long before I thought of resource handles, and
then it was forgotten. This is much nicer and safer than storing C
pointers in progs memory space (*shudder*).
2010-11-24 17:01:18 +09:00
Bill Currie
763cec3838
Some spelling/grammar corrections.
2010-11-24 17:01:18 +09:00
Bill Currie
0dfff8fd58
ignore stuff
2010-08-07 10:42:09 +00:00
Bill Currie
00e590f5f5
Really nail down the args param in rua_obj_msg_sendv().
2010-01-13 06:36:16 +00:00
Bill Currie
8abb9a69aa
remove support for an optional = in struct/union declarations
2010-01-13 06:34:32 +00:00
Bill Currie
00f9d48f10
be a little more paranoid
2010-01-13 06:33:03 +00:00
Bill Currie
ff61dbb329
fix some sillies with QFS_FileList
...
Use dynamic strings instead of temp strings for the list
2010-01-13 06:29:01 +00:00
Bill Currie
ca0bbd909c
correctly save and restore the parameters when calling +initialize. fixes the segfault in the qwaq test.
2007-06-09 13:44:06 +00:00
Bill Currie
d996c364b8
massively speedup savegame scanning (and bump the menu progs memory size again :/)
2007-05-13 03:56:08 +00:00
Bill Currie
ff132bb536
64bit windows patch from phrosty
2007-04-04 07:48:14 +00:00
Bill Currie
81a57bb3fa
patch from phrosty for vc2005 support. includes fixes for a bunch of gcc-isms that crept in over the years.
2007-03-22 23:20:57 +00:00
Bill Currie
99c0954b47
the big dso visibility patch :). Sure, we have to have unique names for static builds, but with controlled visibitly we should get faster program loads (although this isn't C++, so it's not as bad) and complex plugins are cleaner.
2007-03-10 12:00:59 +00:00
Bill Currie
33f08b6a43
add QFS_Open and QFS_WOpen
2006-12-20 12:08:57 +00:00
Bill Currie
d084264c3a
don't barf on protocols that are used by multiple classes in the same object file.
2006-12-19 12:17:42 +00:00
Bill Currie
70ec9848e7
add PL_RemoveObjectForKey and make PL_D_AddObject take a normal C string for key instead of a pl string.
2006-12-09 06:00:36 +00:00
Bill Currie
d28952dfcc
fix a bunch of gcc-4.1 warnings (thanks for the heads up, jordi)
2006-11-30 22:52:36 +00:00
Bill Currie
3fb03fc2be
hah, should have been using __attribute__((used)) all that time (rather
...
than __attribute__((unused))). fixes the missing console in -x11
2005-08-04 15:27:09 +00:00
Bill Currie
6e0c70cac7
reduce the amount of memory needed to read menu.plist
2005-06-15 01:41:10 +00:00
Bill Currie
762aefc9b1
implement Raven's calling convention (rcall: first 2 params in opb and
...
opc). should give a general speedup to most progs.
2005-06-12 09:54:01 +00:00
Bill Currie
318a945a9c
fix an out-by-one error that caused a buffer overrun and a crash in windows
2005-01-03 00:30:38 +00:00
Bill Currie
23f71485d1
more tree recovering. This includes Despair's anisotropy support work.
2005-01-02 14:23:20 +00:00
Bill Currie
a9200f5f8f
remove a nasty cast
...
This is an imperfect revision of history.
2004-11-18 06:08:40 +00:00
Bill Currie
53f4d13f43
wrap the plist functions
...
This is an imperfect revision of history.
2004-11-11 22:42:00 +00:00
Bill Currie
2a36c74120
add dynamic (freeable but unchangeable) strings
...
This is an imperfect revision of history.
2004-11-11 09:40:00 +00:00
Bill Currie
ff47490c48
resource usage cleanup
...
This is an imperfect revision of history.
2004-11-11 07:57:00 +00:00
Bill Currie
5ef382d2a7
Add a rua wrapper for scripts (seems, to work, too:). Also added generic resource handle support based on strref handling in pr_strings.c.
...
This is an imperfect revision of history.
2004-11-11 04:06:00 +00:00
Bill Currie
64cc8c60d2
compile time protocol support seems to be complete now. fortunatly, protocols had never been written out so the corrections to the protocol related stuctures do not need a progs version bump. runtime protocol support hasn't been fully tested yet.
...
+load runtime support seems to be working.
This is an imperfect revision of history.
2004-11-11 00:34:00 +00:00
Bill Currie
b35561504c
do proper selector registration. unfortunatly, I discovered I'd created pr_method_t incorrectly and so had to bump the progs version again
...
This is an imperfect revision of history.
2004-11-10 05:37:00 +00:00
Bill Currie
780fb41858
make a common call function and fix pr_trace such that it autoclears only when the execution session it's set in is exited
...
This is an imperfect revision of history.
2004-11-07 03:00:00 +00:00
Bill Currie
f5bc90a53a
clean up some redundant progs functions (may be broken for a while)
...
This is an imperfect revision of history.
2004-11-05 11:49:00 +00:00
Bill Currie
8e2f392d2d
pr_obj.h: add the structure for static instances rua_obj.c: add support for +initialize test.r: add some test code for +initialize main.c: don't need to initialize the hunk any more and fix a buffer overflow
...
This is an imperfect revision of history.
2004-11-02 05:12: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
616be68bdd
strip parameter to QFS_FilelistFill and add rua support
2004-04-20 22:52:09 +00:00
Bill Currie
103299e7e4
rename Cvar_GetCvarString to Cvar_GetString and add
...
Cvar_Set{String,Float,Integer,Vector} and
Cvar_Get{String,Float,Integer,Vector}. use them in the menus
2004-02-14 02:56:29 +00:00
Bill Currie
d1bf75d218
add Cvar_Toggle
2004-02-07 00:08:46 +00:00
Bill Currie
43f68ba10c
d'oh
2004-01-22 06:27:56 +00:00
Bill Currie
4843d0adde
implement the invers hyper trig functions locally because they're not
...
available everywhere.
2004-01-22 06:26:55 +00:00
Bill Currie
bb31308953
ruamoko math functions from Grievre
2004-01-22 05:43:18 +00:00
Bill Currie
e154c9add5
be consistent with WIN32 and _WIN32 (now all _WIN32)
2004-01-20 03:47:27 +00:00
Bill Currie
77b2942982
several libs can now get built as dlls in windows: console, gamecode,
...
gamecode_builtins, gib, image, modules, object, ruamoko and util.
2004-01-19 07:47:41 +00:00
Bill Currie
249aee2e9f
move the OO runtime support code from libQFgamecode to libQFruamoko where
...
it really belongs :)
2004-01-16 08:02:31 +00:00
Bill Currie
e7ffad8772
more rua cleanups: now just one init function to call (it calls the rest)
2004-01-16 07:03:58 +00:00
Bill Currie
01392c78bb
move the bulk of what whas libQFcsqc to libQFruamoko.
2004-01-16 05:46:19 +00:00