ObjFW  History of src/OFObject.h of 9b7d35bb00278869

History of file src/OFObject.h at check-in 9b7d35bb00278869

2024-10-09
23:53
Fix warning with Clang 19 file: [000a9e21ad] check-in: [986553ba41] user: js, branch: 1.1, size: 45077 [annotate] [blame] [check-ins using] [diff]
23:53
Fix warning with Clang 19 file: [0693f844c8] check-in: [23249cfbc0] user: js, branch: trunk, size: 45112 [annotate] [blame] [check-ins using] [diff]
2024-08-21
20:14
Make ObjFW compile on macOS/PowerPC 64 file: [19c484f42c] check-in: [7b0cd744dc] user: js, branch: trunk, size: 45082 [annotate] [blame] [check-ins using] [diff]
2024-06-17
21:08
Always use <ObjFW/ObjFW.h> in documentation file: [036e696929] check-in: [164f2fb4bf] user: js, branch: trunk, size: 45014 [annotate] [blame] [check-ins using] [diff]
2024-05-01
15:19
Document a lot of undocumented functions & macros

Also fixes Doxygen not creating documentation for `static OF_INLINE`
functions. file: [7b8537b8d6] check-in: [0c3c3b6efa] user: js, branch: trunk, size: 45047 [annotate] [blame] [check-ins using] [diff]

2024-04-03
02:16
Change license to LGPLv3 only file: [08353423b4] check-in: [7413a728a7] user: js, branch: trunk, size: 43924 [annotate] [blame] [check-ins using] [diff]
2024-04-02
03:21
Only align OFVector4D where necessary

Changing the alignment of OFVector4D globally (as was done previously)
would have technically been an ABI break in extremely rare cases.
However, since we only need the alignment for the methods added after
1.0, it's better to only have the alignment there and get back to full
ABI compatibility with 1.0. file: [a1d249e5df] check-in: [1af54eb2c2] user: js, branch: trunk, size: 43716 [annotate] [blame] [check-ins using] [diff]

2024-02-25
01:08
Backport associated objects to old Apple runtime file: [18f66eccc2] check-in: [2d8c6a004d] user: js, branch: trunk, size: 43729 [annotate] [blame] [check-ins using] [diff]
2024-02-03
11:41
Update copyright file: [7750edaf4e] check-in: [7324ec8590] user: js, branch: 1.0, size: 43108 [annotate] [blame] [check-ins using] [diff]
08:53
Fix typos in documentation found by spell checker file: [34d13dde62] check-in: [19f3948a26] user: js, branch: 1.0, size: 43108 [annotate] [blame] [check-ins using] [diff]
08:49
Fix typos in documentation found by spell checker file: [cd5ab83dfc] check-in: [f97dc452b1] user: js, branch: trunk, size: 43121 [annotate] [blame] [check-ins using] [diff]
2024-01-02
17:17
Update copyright file: [f6921949eb] check-in: [26ddd2e4e4] user: js, branch: trunk, size: 43115 [annotate] [blame] [check-ins using] [diff]
2023-11-03
01:07
OFMatrix4x4: Remove SSE4.1 due to Clang bugs

Clang fails to correctly align the _values ivar in 32 bit mode, despite
OF_ALIGN(16). Trying to force it to align it properly by creating a new
typedef or putting it into an aligned struct instead makes Clang's
builtin memcpy fail in another, entirely unrelated method (that has no
inline assembly), as the inlined memcpy will then try to use movaps on
unaligned data, probably because Clang still assumes the data to be
unaligned there and tries to memcpy using SSE after adding an offset
that would make it aligned - but now makes it unaligned. file: [53e8f943e6] check-in: [7e1dbda4b4] user: js, branch: trunk, size: 43115 [annotate] [blame] [check-ins using] [diff]

00:16
OFMatrix4x4: SSE4.1 for -[transformVectors:count:]

This requires the vectors to be 16 byte aligned. In order to achieve
this, the OFVector4D type is changed to have an alignment of 16 bytes.
However, this does *not* break ABI because the only method actually
requiring 16 byte alignment is -[transformVectors:count:], which was not
in ObjFW 1.0. Hence binaries compiled for ObjFW 1.0 have no 16 byte
alignment for OFVector4D, but also cannot ever call into any code that
needs it. (-[transformedVector:] calls into -[transformVectors:count:],
but creates a properly aligned copy that it passes.) file: [ea05d80823] check-in: [7f304f573b] user: js, branch: trunk, size: 43115 [annotate] [blame] [check-ins using] [diff]

2023-08-09
22:39
OFValue: Improve -[description] file: [6d396e3db6] check-in: [772e8b8f78] user: js, branch: trunk, size: 43102 [annotate] [blame] [check-ins using] [diff]
2023-08-05
09:04
Remove hacks in headers for C compatibility

A better approach would probably be to have a separate header which
makes some classes available to pure C. file: [2c787e015d] check-in: [14c70763b0] user: js, branch: trunk, size: 43050 [annotate] [blame] [check-ins using] [diff]

2023-07-15
20:57
Merge trunk into branch "amiga-library" file: [f176d35c0c] check-in: [860b0bf1e9] user: js, branch: amiga-library, size: 43248 [annotate] [blame] [check-ins using] [diff]
2023-04-10
19:22
Remove OFSerialization

While the idea sounds nice that the tag name is the class, this means the
serialization includes whether something is mutable or immutable. This means
doing as much as making something immutable changes the serialization, which
can then cause issues after being deserialized. file: [3ddfbc785d] check-in: [6ce0093f8d] user: js, branch: trunk, size: 43248 [annotate] [blame] [check-ins using] [diff]

2023-02-18
12:01
OFMatrix4x4: Transform vectors in 4D space file: [38cdbbc21b] check-in: [e31a31bdcb] user: js, branch: trunk, size: 43284 [annotate] [blame] [check-ins using] [diff]
2023-02-16
21:37
OFMatrix4x4: Add translation and scaling file: [40bec49225] check-in: [3e4ed4e59f] user: js, branch: trunk, size: 42024 [annotate] [blame] [check-ins using] [diff]
19:59
OFVector3D -> OFPoint3D

For now, we're only interested in transformed points. file: [01a23b3a57] check-in: [db7991d07b] user: js, branch: trunk, size: 41990 [annotate] [blame] [check-ins using] [diff]

2023-02-12
22:20
Add OFMatrix4x4 and OFVector3D

These will be useful for 3D graphics. file: [06e4bde8d0] check-in: [44eb35b212] user: js, branch: trunk, size: 42011 [annotate] [blame] [check-ins using] [diff]

2023-01-06
09:04
Update copyright file: [797f554cc7] check-in: [8939cbdb52] user: js, branch: trunk, size: 40902 [annotate] [blame] [check-ins using] [diff]
2022-12-25
19:11
Add missing nullable file: [51658d5865] check-in: [8461a50c3a] user: js, branch: trunk, size: 40902 [annotate] [blame] [check-ins using] [diff]
18:01
Add -[sortedArrayUsingFunction:context:options:] file: [72f3e8d63d] check-in: [c911523834] user: js, branch: trunk, size: 40892 [annotate] [blame] [check-ins using] [diff]
2022-12-04
09:01
Remove +[OFObject new]

While it allows for some laziness when using ARC, it only creates
inconsistency because there are no +[newWith*] methods. file: [4fee091a9d] check-in: [8d9ab7ea41] user: js, branch: trunk, size: 40577 [annotate] [blame] [check-ins using] [diff]

2022-11-07
00:24
Merge trunk into branch "3d-affine-transforms" file: [f34dd9cc3a] check-in: [fd7d3894ff] user: js, branch: 3d-affine-transforms, size: 41806 [annotate] [blame] [check-ins using] [diff]
00:23
Merge trunk into branch "3d-affine-transforms" file: [c07058d567] check-in: [86f8767eca] user: js, branch: 3d-affine-transforms, size: 41534 [annotate] [blame] [check-ins using] [diff]
2022-10-18
22:19
Merge trunk into branch "amiga-library" file: [c53ca874a9] check-in: [80dbc3c570] user: js, branch: amiga-library, size: 40734 [annotate] [blame] [check-ins using] [diff]
22:17
Merge trunk into branch "amiga-library" file: [73c8d5277c] check-in: [ac19ed9d40] user: js, branch: amiga-library, size: 40462 [annotate] [blame] [check-ins using] [diff]
2022-09-24
15:32
Do not document exceptions that are obvious

Otherwise every second method would need to have
OFInvalidArgumentException documented. file: [698abcee0b] check-in: [96e0a91a06] user: js, branch: trunk, size: 40734 [annotate] [blame] [check-ins using] [diff]

2022-09-19
19:37
OFObject: Document exceptions file: [e7d4a93a9e] check-in: [ae55197d6b] user: js, branch: trunk, size: 40824 [annotate] [blame] [check-ins using] [diff]
2022-08-30
00:48
OFObject: Small API change file: [397c215f3f] check-in: [4ad0c363f3] user: js, branch: trunk, size: 40492 [annotate] [blame] [check-ins using] [diff]
2022-02-12
07:46
Update copyright file: [48eed47979] check-in: [1a86b8175b] user: js, branch: trunk, size: 40462 [annotate] [blame] [check-ins using] [diff]
2021-10-14
23:45
Add OF3DVector file: [4b442adb2a] check-in: [e5f7c958ea] user: js, branch: 3d-affine-transforms, size: 41534 [annotate] [blame] [check-ins using] [diff]
2021-05-09
14:45
Merge trunk into branch "amiga-library"

All necessary changes to adjust for the changes made in trunk are
included in the merge commit. file: [9706bbf5bc] check-in: [3c88df0ce4] user: js, branch: amiga-library, size: 40462 [annotate] [blame] [check-ins using] [diff]

2021-05-02
11:34
runtime: Name things more consistently file: [256748162e] check-in: [2b75f9e6a0] user: js, branch: trunk, size: 40462 [annotate] [blame] [check-ins using] [diff]
2021-04-30
21:23
Make OFHashSeed private file: [6b4d0acc99] check-in: [39863b3503] user: js, branch: trunk, size: 40491 [annotate] [blame] [check-ins using] [diff]
2021-04-29
23:24
Clean up struct and enum typedefs

With TYPEDEF_HIDES_STRUCT set, Doxygen properly handles anonymous
structs and enums that are typedef'd. file: [f1db17a081] check-in: [2fcf5a3052] user: js, branch: trunk, size: 39289 [annotate] [blame] [check-ins using] [diff]

2021-04-18
20:51
Rename everything in several smaller files file: [d972931bb6] check-in: [35de667566] user: js, branch: new-naming-convention, size: 39407 [annotate] [blame] [check-ins using] [diff]
15:55
Rename all functions in macros.h file: [8b42f7f42b] check-in: [7392685ffc] user: js, branch: new-naming-convention, size: 39404 [annotate] [blame] [check-ins using] [diff]
13:24
Rename remaining functions in OFObject.h file: [8dbb8236a1] check-in: [d9f8960fc5] user: js, branch: new-naming-convention, size: 39432 [annotate] [blame] [check-ins using] [diff]
2021-04-17
22:45
Rename of_(re)alloc and add OFFreeMemory file: [92e7aec20e] check-in: [498074dab9] user: js, branch: new-naming-convention, size: 39136 [annotate] [blame] [check-ins using] [diff]
15:20
Clean up blocks a little file: [0d9484cf9e] check-in: [03ea273cb3] user: js, branch: new-naming-convention, size: 38833 [annotate] [blame] [check-ins using] [diff]
14:13
Always prefix functions with the type file: [36c6bafde9] check-in: [eb0cfa6ff9] user: js, branch: new-naming-convention, size: 38830 [annotate] [blame] [check-ins using] [diff]
02:27
Minor Doxygen fix file: [972f5ad44c] check-in: [9f1d51c236] user: js, branch: new-naming-convention, size: 38836 [annotate] [blame] [check-ins using] [diff]
01:24
OF_NOT_FOUND -> OFNotFound file: [e386160582] check-in: [83dc0fe6e5] user: js, branch: new-naming-convention, size: 38805 [annotate] [blame] [check-ins using] [diff]
01:19
of_rectangle_t -> OFRect file: [ad55e4debc] check-in: [dec9721b35] user: js, branch: new-naming-convention, size: 38761 [annotate] [blame] [check-ins using] [diff]
01:10
of_dimension_t -> OFSize file: [43c18460ed] check-in: [8a7353b219] user: js, branch: new-naming-convention, size: 38899 [annotate] [blame] [check-ins using] [diff]
00:54
of_point_t -> OFPoint file: [257923a725] check-in: [3524409dd0] user: js, branch: new-naming-convention, size: 39098 [annotate] [blame] [check-ins using] [diff]
00:51
of_time_interval_t -> OFTimeInterval file: [cae8b45bf8] check-in: [8c0d76f782] user: js, branch: new-naming-convention, size: 39127 [annotate] [blame] [check-ins using] [diff]
00:44
of_range_t -> OFRange file: [51e30260c3] check-in: [d975c53a43] user: js, branch: new-naming-convention, size: 39171 [annotate] [blame] [check-ins using] [diff]
00:31
of_byte_order_t -> OFByteOrder file: [354a662802] check-in: [1046d10a20] user: js, branch: new-naming-convention, size: 39199 [annotate] [blame] [check-ins using] [diff]
00:24
of_comparator_t -> OFComparator file: [726a0561e2] check-in: [aade14a6e2] user: js, branch: new-naming-convention, size: 39049 [annotate] [blame] [check-ins using] [diff]
00:14
of_comparison_result_t -> OFComparisonResult file: [035a07e792] check-in: [61fc389aee] user: js, branch: new-naming-convention, size: 39056 [annotate] [blame] [check-ins using] [diff]
2021-04-07
20:39
Override -[compare:] with a more specific type file: [846f3a0425] check-in: [91a4c53bb1] user: js, branch: trunk, size: 39074 [annotate] [blame] [check-ins using] [diff]
2021-03-07
15:07
*.h: Fold methods into one line where it fits file: [7b6e5395a2] check-in: [1948e7e972] user: js, branch: trunk, size: 39001 [annotate] [blame] [check-ins using] [diff]
2021-01-02
22:06
Update copyright file: [a9ac62cb9b] check-in: [27b401c7c2] user: js, branch: amiga-library, size: 39139 [annotate] [blame] [check-ins using] [diff]
22:04
Update copyright file: [064d8093db] check-in: [374e1a1bfa] user: js, branch: trunk, size: 39013 [annotate] [blame] [check-ins using] [diff]
2020-12-30
00:03
Merge trunk into branch "amiga-library" file: [d3ad29c6a9] check-in: [cebf3184eb] user: js, branch: amiga-library, size: 39228 [annotate] [blame] [check-ins using] [diff]
2020-12-26
19:09
Fix compiling in ObjC++ mode file: [678a8131fe] check-in: [17d0bee29c] user: js, branch: trunk, size: 39102 [annotate] [blame] [check-ins using] [diff]
2020-11-14
12:28
Merge trunk into branch "amiga-library" file: [a59738a747] check-in: [a55863c2ed] user: js, branch: amiga-library, size: 39227 [annotate] [blame] [check-ins using] [diff]
12:23
Rename of_malloc and of_calloc

The new names should be more accurate. file: [ec746b369b] check-in: [627511b032] user: js, branch: trunk, size: 39101 [annotate] [blame] [check-ins using] [diff]

11:45
Merge trunk into branch "amiga-library" file: [8a371736ae] check-in: [25a6c00b82] user: js, branch: amiga-library, size: 39172 [annotate] [blame] [check-ins using] [diff]
2020-11-07
20:23
OFObject: Remove -[allocMemoryWithSize:] file: [3aacd2e524] check-in: [4fbdca698c] user: js, branch: trunk, size: 39046 [annotate] [blame] [check-ins using] [diff]
2020-11-05
02:35
Remove -[allocZeroedMemoryWithSize:]

This is no longer being used. file: [19b99027a7] check-in: [2bb3136a7f] user: js, branch: trunk, size: 41243 [annotate] [blame] [check-ins using] [diff]

2020-11-04
23:18
Remove of_free()

While it makes sense to wrap malloc and calloc to replace the error
checking with exceptions, it does not make sense to wrap free. file: [9d5edd8a16] check-in: [3d8286feee] user: js, branch: trunk, size: 42197 [annotate] [blame] [check-ins using] [diff]

2020-10-25
23:33
Add of_{malloc,calloc,realloc,free} file: [6ddaa1e48b] check-in: [d0ae3bfd6c] user: js, branch: trunk, size: 42234 [annotate] [blame] [check-ins using] [diff]
2020-10-10
14:27
OFObject: Change type of -[hash] to unsigned long

The internal hash is still 32 bit in most places, but this way, it is at
least not baked into the API and ABI and can be upgraded later, should
that ever be necessary. file: [2f5277b92c] check-in: [aeb403a1ed] user: js, branch: trunk, size: 40289 [annotate] [blame] [check-ins using] [diff]

2020-10-04
15:00
Merge trunk into branch "amiga-library" file: [5951a63423] check-in: [92335940e9] user: js, branch: amiga-library, size: 40405 [annotate] [blame] [check-ins using] [diff]
2020-10-03
11:35
Use /** */ instead of /*! */ for documentation file: [de7a4dbfdc] check-in: [163a4a5a2e] user: js, branch: trunk, size: 40279 [annotate] [blame] [check-ins using] [diff]
2020-09-27
01:56
Fix compiling for old Apple runtime file: [d7fb98b511] check-in: [877616edaf] user: js, branch: trunk, size: 40279 [annotate] [blame] [check-ins using] [diff]
00:57
Work around bugs in Apple GCC 4.2.1 file: [78dcc54e1b] check-in: [cbc09c6e26] user: js, branch: trunk, size: 40090 [annotate] [blame] [check-ins using] [diff]
2020-07-12
10:35
Split of_random() into of_random{16,32,64}() file: [f46ea6f043] check-in: [14f05841a3] user: js, branch: trunk, size: 39642 [annotate] [blame] [check-ins using] [diff]
09:49
Make of_random() a function

When arc4random() is unavailable, either random() or rand() is used and
both need to be seeded. If of_random() is a macro, it needs to be
(re)seeded every time, as it's unknown whether it has already been
seeded. As it is seeded with gettimeofday() due to the lack of a better
initial seed, this means every call returns the first state for the
current time, which is very predictable. random() and rand() are both
not cryptographic, but this should at least make it a little bit better
now. file: [89cb21ae56] check-in: [c1fe4b2b77] user: js, branch: trunk, size: 39571 [annotate] [blame] [check-ins using] [diff]

2020-06-21
03:02
Add functions/variables for tests to Amiga library file: [b43176a606] check-in: [9937a79627] user: js, branch: amiga-library, size: 39579 [annotate] [blame] [check-ins using] [diff]
2020-04-19
15:24
Several documentation improvements file: [0775955f65] check-in: [f27905c199] user: js, branch: trunk, size: 39453 [annotate] [blame] [check-ins using] [diff]
2020-04-12
12:52
Work around broken -Wdocumentation in Clang 10 file: [4e03fe9cf9] check-in: [d35b4e3a85] user: js, branch: trunk, size: 39135 [annotate] [blame] [check-ins using] [diff]
2020-04-11
19:31
Make OFObject.h and OFString.h C-safe file: [27f5bcdbd5] check-in: [6e7e19252b] user: js, branch: trunk, size: 38999 [annotate] [blame] [check-ins using] [diff]
2020-01-02
22:16
Move autorelease pools to runtime file: [67744f52d1] check-in: [f2fe8f96d5] user: js, branch: trunk, size: 38800 [annotate] [blame] [check-ins using] [diff]
01:51
Update copyright file: [8e7d1bdd71] check-in: [c7f0229795] user: js, branch: trunk, size: 38663 [annotate] [blame] [check-ins using] [diff]
2019-09-29
15:58
Remove OFAutoreleasePool

OFAutoreleasePools have long been discouraged in favor of the runtime's
autorelease pools. file: [b3d6515614] check-in: [09be825f88] user: js, branch: trunk, size: 38660 [annotate] [blame] [check-ins using] [diff]

2019-02-17
22:16
OFWindowsRegistryKey: Add write support file: [81f633ed2d] check-in: [4c5f686a52] user: js, branch: trunk, size: 38661 [annotate] [blame] [check-ins using] [diff]
2019-01-03
19:13
Update copyright file: [b61464d46f] check-in: [0509d7a844] user: js, branch: trunk, size: 38313 [annotate] [blame] [check-ins using] [diff]
2018-06-03
23:31
Add -[OFObject allocZeroedMemoryWithSize:(count:)] file: [cdaa2f3d08] check-in: [aacb5897a0] user: js, branch: trunk, size: 38307 [annotate] [blame] [check-ins using] [diff]
2018-04-22
16:13
runtime: Define BOOL to be the same as bool

As we define the ABI, we can just replace BOOL with bool everywhere,
including in ObjFW itself. For the Apple platforms where BOOL and bool
are different, this is not a problem as BOOL and bool are passed and
returned the same way in the ABI.

This still defines BOOL to bool for compatibility, except on AmigaOS and
Wii, which both have its own BOOL type. file: [a6c803a105] check-in: [fe2cbe0021] user: js, branch: trunk, size: 37351 [annotate] [blame] [check-ins using] [diff]

2018-02-25
04:21
OFObject: Bring +[new] back file: [f9418de3f6] check-in: [d6bf2b12dd] user: js, branch: trunk, size: 37351 [annotate] [blame] [check-ins using] [diff]
2018-01-21
12:18
OFValue: Support for {point,dimension,rectangle}s file: [885fe09f8c] check-in: [2ca34d3de1] user: js, branch: trunk, size: 37194 [annotate] [blame] [check-ins using] [diff]
02:20
Allow boxing of most structs file: [2ac0a8962b] check-in: [88b19eae2c] user: js, branch: trunk, size: 35406 [annotate] [blame] [check-ins using] [diff]
2018-01-03
19:49
Update copyright notice file: [607adabcb5] check-in: [7e5c81e186] user: js, branch: trunk, size: 35362 [annotate] [blame] [check-ins using] [diff]
2017-11-19
14:41
Fix compiling as ObjC++ file: [5636413cd6] check-in: [487aa4d51b] user: js, branch: trunk, size: 35339 [annotate] [blame] [check-ins using] [diff]
13:14
Remove +[OFObject new] file: [c6967b6935] check-in: [c03aab9c8c] user: js, branch: trunk, size: 35143 [annotate] [blame] [check-ins using] [diff]
2017-11-18
19:14
Fix the last Doxygen warnings file: [44d3bd5e78] check-in: [bb281804a3] user: js, branch: trunk, size: 35293 [annotate] [blame] [check-ins using] [diff]
18:50
Documentation: Use @brief for all properties file: [4bd56fc717] check-in: [cc3ad3ddd3] user: js, branch: trunk, size: 35304 [annotate] [blame] [check-ins using] [diff]
2017-11-05
02:58
Add OF_WARN_UNUSED_RESULT file: [288587471e] check-in: [7c79db860d] user: js, branch: trunk, size: 35248 [annotate] [blame] [check-ins using] [diff]
2017-10-30
00:23
Add class properties where appropriate

This improves Swift compatibility. file: [fa7289510f] check-in: [a2e849c681] user: js, branch: trunk, size: 35160 [annotate] [blame] [check-ins using] [diff]

2017-10-29
21:58
Convert methods to properties where appropriate

This improves Swift compatibility. file: [1f2c48e5a0] check-in: [f3ccf14461] user: js, branch: trunk, size: 34879 [annotate] [blame] [check-ins using] [diff]

2017-10-17
00:33
Do not use implicit method return types

Instead, explicitly declare them, as OF_ASSUME_NONNULL_{BEGIN,END} does
not apply to implicit return types. This means that after this commit,
all init methods have a nonnull return type, as they should have. file: [39e5e50197] check-in: [2f4e0df8be] user: js, branch: trunk, size: 35063 [annotate] [blame] [check-ins using] [diff]

2017-10-01
14:14
Backport nullability fixes from master file: [7fadabcfb1] check-in: [f37b373a95] user: js, branch: 0.90, size: 27626 [annotate] [blame] [check-ins using] [diff]
09:28
Nullability fixes for macOS High Sierra file: [cbc749740e] check-in: [166fd50e82] user: js, branch: trunk, size: 34967 [annotate] [blame] [check-ins using] [diff]
2017-09-27
22:38
More nullability fixes file: [299d01c5f5] check-in: [6b66bda9eb] user: js, branch: 0.90, size: 27588 [annotate] [blame] [check-ins using] [diff]
22:35
More nullability fixes file: [09a592a800] check-in: [697e3ecbf7] user: js, branch: trunk, size: 34929 [annotate] [blame] [check-ins using] [diff]
2017-09-26
22:40
Work around Clang analyzer false positives file: [8cde88e60d] check-in: [c9efebeff9] user: js, branch: trunk, size: 34949 [annotate] [blame] [check-ins using] [diff]
00:06
Fix a few missing nullable file: [3bd61b8897] check-in: [cfb4a7ab76] user: js, branch: 0.90, size: 27608 [annotate] [blame] [check-ins using] [diff]
00:02
Fix a few missing nullable file: [ad4d018447] check-in: [3da9426ea5] user: js, branch: trunk, size: 34868 [annotate] [blame] [check-ins using] [diff]
2017-09-25
00:02
OFObject: Add -[performSelector*] with 4 objects file: [9250be25e0] check-in: [f714793eb4] user: js, branch: trunk, size: 34737 [annotate] [blame] [check-ins using] [diff]
2017-09-24
02:11
OFObject: Add -[performSelector*] with 3 objects file: [95e2ceeaf1] check-in: [9f1accca4e] user: js, branch: trunk, size: 30334 [annotate] [blame] [check-ins using] [diff]
2017-09-09
22:03
Replace type encodings with OFMethodSignature file: [a0035c52d6] check-in: [55f1b21ae7] user: js, branch: trunk, size: 26624 [annotate] [blame] [check-ins using] [diff]
2017-08-12
21:03
Add -[OFMutableArray sortUsingSelector:options:] file: [eac4bbd7b8] check-in: [daa11c19cb] user: js, branch: trunk, size: 27757 [annotate] [blame] [check-ins using] [diff]
2017-05-28
11:24
Make +[resolve{Class,Instance}Method:] return BOOL

Other runtimes expect it to be BOOL, not bool. file: [9973173cd1] check-in: [012c6b5786] user: js, branch: trunk, size: 27477 [annotate] [blame] [check-ins using] [diff]

2017-05-07
20:10
Small code style change

Casts are now written like types in variable declarations. file: [6e202ea9b1] check-in: [4af49a13c3] user: js, branch: trunk, size: 27477 [annotate] [blame] [check-ins using] [diff]

2017-02-04
17:45
Fix typos in comments and strings found by aspell file: [292119d486] check-in: [5a31a537a1] user: js, branch: trunk, size: 27457 [annotate] [blame] [check-ins using] [diff]
2017-01-09
17:36
Update copyright

Forgot to add 2017, even though I already did quite some changes in
2017. file: [d4cf9a5554] check-in: [44f45c2e35] user: js, branch: trunk, size: 27459 [annotate] [blame] [check-ins using] [diff]

2017-01-07
23:23
Override Clang's block declarations on Windows

This is necessary as Clang's implicit declarations for block-related
things are dllimport, while we need dllexport when compiling ObjFW
itself. file: [12add09603] check-in: [30bc1fb225] user: js, branch: trunk, size: 27453 [annotate] [blame] [check-ins using] [diff]

2016-06-05
00:01
Add OFKeyValueCoding

No support for paths and auto-wrapping yet.

Also, no classes like OFDictionary override it yet. file: [fb4f549aa8] check-in: [3ad1f2b268] user: js, branch: trunk, size: 27435 [annotate] [blame] [check-ins using] [diff]

2016-05-29
00:55
runtime/arc.m: Use -[{allows,retain}WeakReference]

This is to have consistent behavior with the Apple runtime, which
requires these. file: [5b937156e8] check-in: [4ee6b746cd] user: js, branch: trunk, size: 27399 [annotate] [blame] [check-ins using] [diff]

2016-05-16
11:14
Minor documentation improvements file: [2a9718be8b] check-in: [5a3133f9d8] user: js, branch: trunk, size: 27086 [annotate] [blame] [check-ins using] [diff]
2016-01-03
00:43
Update copyright

While at it, also update the mail address. file: [71f630969d] check-in: [cec0f072f8] user: js, branch: 0.8, size: 27030 [annotate] [blame] [check-ins using] [diff]

00:41
Update copyright

While at it, also update the mail address. file: [c19146d511] check-in: [2a27cf3000] user: js, branch: trunk, size: 27086 [annotate] [blame] [check-ins using] [diff]

2015-11-28
19:47
Minor documentation improvements file: [70a2085b25] check-in: [650b4be224] user: js, branch: trunk, size: 27082 [annotate] [blame] [check-ins using] [diff]
2015-11-21
18:35
Remove OF_NULLABLE / OF_NONNULL

Now that Clang switched to use _Nullable and _Nonnull instead of
__nullable / __nonnull, there is no longer a conflict with glibc, which
means we can just define _Nullable / _Nonnull to nothing if they are not
understood by the compiler (which did not work with __nullable /
__nonnull due to this conflict).

This also defines _Null_unspecified to nothing if unavailable. file: [95294129a9] check-in: [d526d938d7] user: js, branch: trunk, size: 27023 [annotate] [blame] [check-ins using] [diff]

2015-10-19
22:15
Add platform.h & make platform defines consistent file: [baf6f7542e] check-in: [1ba08eebc5] user: js, branch: trunk, size: 27027 [annotate] [blame] [check-ins using] [diff]
2015-06-14
10:45
Add OF_NONNULL / OF_NULLABLE and use that instead

Using __nonnull directly doesn't work on systems using glibc, as glibc
defines __nonnull as a parameterized define. While this does not fix the
problem of Clang introducing __nonnull even though it conflicts with
glibc, this at least means it's possible again to compile things with
versions of Clang that don't support __nonnull on systems with glibc. file: [43c8c1be65] check-in: [b7097a67b6] user: js, branch: trunk, size: 27026 [annotate] [blame] [check-ins using] [diff]

2015-06-13
22:26
Add support for and use the new nullability file: [c9ef03c38f] check-in: [9e76144ef8] user: js, branch: trunk, size: 27023 [annotate] [blame] [check-ins using] [diff]
2015-03-30
21:33
Add OF_NO_RETURN_FUNC

OF_NO_RETURN_FUNC is defined when __attribute__((__noreturn__)) is
supported for functions, whereas OF_NO_RETURN is only defined when it is
supported for both functions and methods. file: [1907dcf7b8] check-in: [ffb39d1df6] user: js, branch: trunk, size: 26640 [annotate] [blame] [check-ins using] [diff]

2015-02-01
00:47
Reduce code size for OF_UNRECOGNIZED_SELECTOR file: [3a0eaddd4d] check-in: [e0c84651d6] user: js, branch: trunk, size: 26635 [annotate] [blame] [check-ins using] [diff]
2015-01-03
20:57
Update copyright file: [6df0d0f15b] check-in: [cfd374b906] user: js, branch: trunk, size: 26570 [annotate] [blame] [check-ins using] [diff]
2014-07-19
09:55
Don't use C11's noreturn

It causes just too much trouble: It breaks with some old versions of
Clang, where noreturn does not work correctly, and OS X headers break if
noreturn is defined, requiring an ugly and fragile workaround. It's just
not worth the trouble it causes, as the same functionality is available
through __attribute__((__noreturn__)). file: [9b8af1df33] check-in: [716b1fc2b3] user: js, branch: trunk, size: 26564 [annotate] [blame] [check-ins using] [diff]

2014-06-21
21:43
Move all macros from OFObject.h to macros.h

This means that OFObject.h imports macros.h now, making it unnecessary
to manually import macros.h in almost every file. And while at it, also
import autorelease.h in OFObject.h, so that this doesn't need to be
manually imported in almost every file as well. file: [94f4198362] check-in: [13ee56edf3] user: js, branch: trunk, size: 26570 [annotate] [blame] [check-ins using] [diff]

2014-05-31
16:34
Work around broken Apple libc headers file: [3a0e0599cf] check-in: [dccc3ed8a9] user: js, branch: trunk, size: 29242 [annotate] [blame] [check-ins using] [diff]
2014-05-14
20:45
Add C11 noreturn

If it's unavailable, it's defined to __attribute__((noreturn)).

Unfortunately, it cannot be used for ObjC methods, as noreturn is part
of the return type while __attribute__((noreturn)) needs to be at the
end for an ObjC method. To make matters worse, even GCC versions that
accept noreturn don't allow it for an ObjC method. Thus, the only thing
that can be done is to always use __attribute__((noreturn)) for ObjC
methods using the OF_METHOD_NORETURN define. file: [baff938aeb] check-in: [bac91ccede] user: js, branch: trunk, size: 28951 [annotate] [blame] [check-ins using] [diff]

20:28
Always use __foo__ instead of foo for attributes file: [3f124a3246] check-in: [e35b10115e] user: js, branch: trunk, size: 28700 [annotate] [blame] [check-ins using] [diff]
20:19
Use thread_local instead of __thread

If threads.h exists, the thread_local from there is used. If it doesn't,
but _Thread_local exists, it's defined to that. As a last fallback, it
is defined to __thread. file: [b5db2a6441] check-in: [c701e89b83] user: js, branch: trunk, size: 28653 [annotate] [blame] [check-ins using] [diff]

2014-05-05
02:43
Add OF_NO_RETURN and OF_UNREACHABLE file: [14f340cddc] check-in: [b885b6fdfa] user: js, branch: trunk, size: 28386 [annotate] [blame] [check-ins using] [diff]
2014-03-30
00:30
ObjFW-RT: Call +[unload] on class unregister file: [2a79ae4f27] check-in: [1ecef2d7f6] user: js, branch: trunk, size: 28303 [annotate] [blame] [check-ins using] [diff]
2014-02-22
01:14
Rename AMD64 to x86_64 file: [9b4e14f514] check-in: [05f4b0a4f0] user: js, branch: trunk, size: 27785 [annotate] [blame] [check-ins using] [diff]
2014-02-20
16:04
Add forwardingTargetForSelector: for AMD64/Win64 file: [8e073ebf17] check-in: [0ce296bbb5] user: js, branch: trunk, size: 27785 [annotate] [blame] [check-ins using] [diff]
2014-02-18
18:50
Documentation: Show correct imports file: [7cc08d97ce] check-in: [246cfe0807] user: js, branch: trunk, size: 27750 [annotate] [blame] [check-ins using] [diff]
2014-01-18
22:27
Disable fast enumeration for Apple GCC + ObjFW RT.

Apple's GCC seems to only support fast enumeration for the Apple
runtime, as the compiler crashes when trying to use fast enumeration
with the ObjFW runtime. file: [a20b25debb] check-in: [76e53b2e72] user: js, branch: trunk, size: 27347 [annotate] [blame] [check-ins using] [diff]

2014-01-16
23:09
Add of_time_interval_t.

This is used instead for time intervals now instead of doubles. file: [1fca43414f] check-in: [dc31ce3d34] user: js, branch: trunk, size: 27259 [annotate] [blame] [check-ins using] [diff]

2014-01-12
23:38
Add -[superclass] to OFObject protocol. file: [b36db29afe] check-in: [4c6d9b7c1b] user: js, branch: trunk, size: 27105 [annotate] [blame] [check-ins using] [diff]
2014-01-04
00:24
Update copyright. file: [e73a1c649f] check-in: [3b97fc3cd9] user: js, branch: trunk, size: 26984 [annotate] [blame] [check-ins using] [diff]
2013-12-24
00:50
Add forwarding for iOS/ARM64. file: [73a261c6af] check-in: [2566c341f3] user: js, branch: trunk, size: 26978 [annotate] [blame] [check-ins using] [diff]
2013-12-21
12:58
-[performSelector:]: Use the normal dispatch.

This has the advantage of being faster. file: [16867a85cf] check-in: [3dac86b429] user: js, branch: trunk, size: 26955 [annotate] [blame] [check-ins using] [diff]

2013-12-06
02:36
Add forwardingTargetForSelector: for x86/Win32. file: [6c65e9c570] check-in: [c0f224df8a] user: js, branch: trunk, size: 26929 [annotate] [blame] [check-ins using] [diff]
2013-11-30
19:53
OFObject: Make _isa private.

This prevents direct access to it and enforces the usage of
object_{set,set}Class(). file: [650e4bd8f2] check-in: [cb6a61527a] user: js, branch: trunk, size: 26726 [annotate] [blame] [check-ins using] [diff]

2013-11-23
01:38
Add OF_ROOT_CLASS. file: [c6bd5b455e] check-in: [48df0f966f] user: js, branch: trunk, size: 26725 [annotate] [blame] [check-ins using] [diff]
01:14
Add OF_REQUIRES_SUPER. file: [ac40fa6ce0] check-in: [3ab5dace83] user: js, branch: trunk, size: 26581 [annotate] [blame] [check-ins using] [diff]
2013-09-16
17:02
Adjust stret forwarding to recent Clang change. file: [73a416c428] check-in: [b8e3900bef] user: js, branch: trunk, size: 26373 [annotate] [blame] [check-ins using] [diff]
2013-08-15
18:44
Add OF_HAVE_CLASS_EXTENSIONS. file: [03b184e014] check-in: [a5bfaa315b] user: js, branch: trunk, size: 26389 [annotate] [blame] [check-ins using] [diff]
2013-08-01
18:59
Add of_forward_stret for MIPS/ELF. file: [357d7fd283] check-in: [d694ea89af] user: js, branch: trunk, size: 26456 [annotate] [blame] [check-ins using] [diff]
2013-07-31
22:54
Add of_forward_stret for PPC/ELF. file: [5018540cff] check-in: [8f337d1890] user: js, branch: trunk, size: 26345 [annotate] [blame] [check-ins using] [diff]
2013-07-30
21:41
Add forwardingTargetForSelector: for PowerPC/ELF.

Methods returning structs are not yet supported. file: [a8241891a0] check-in: [9ce5b241e4] user: js, branch: trunk, size: 26407 [annotate] [blame] [check-ins using] [diff]

2013-07-28
15:29
Add of_forward_stret for ARM/ELF. file: [c0a893a0e3] check-in: [2b1b0f8b59] user: js, branch: trunk, size: 26305 [annotate] [blame] [check-ins using] [diff]
01:12
Add of_forward_stret for x86/ELF. file: [4855a8b423] check-in: [0379a04a1b] user: js, branch: trunk, size: 26361 [annotate] [blame] [check-ins using] [diff]
2013-07-26
15:21
Add of_forward_stret for AMD64/ELF. file: [664e39b0bd] check-in: [1a38a540aa] user: js, branch: trunk, size: 26362 [annotate] [blame] [check-ins using] [diff]
2013-07-24
23:05
Add forwardingTargetForSelector: for MIPS/ELF.

Only for the O32 ABI and the 32-bit EABI.

Currently, no methods returning structs are supported, see the comment
in OFObject. file: [5a670ed733] check-in: [f1416bbdc2] user: js, branch: trunk, size: 26194 [annotate] [blame] [check-ins using] [diff]

2013-07-23
22:48
Allow classes in collections requiring OFCopying. file: [58996a4468] check-in: [7992490163] user: js, branch: trunk, size: 26031 [annotate] [blame] [check-ins using] [diff]
2013-07-11
01:39
Move feature defines from macros.h to OFObject.h. file: [3de31d4c62] check-in: [1e39c46eab] user: js, branch: trunk, size: 25827 [annotate] [blame] [check-ins using] [diff]
2013-04-09
06:47
Check for OBJC_NEW_PROPERTIES as a fallback. file: [d0848d39ae] check-in: [241692d895] user: js, branch: trunk, size: 25387 [annotate] [blame] [check-ins using] [diff]
2013-03-04
17:20
Replace BOOL with bool.

The only places where BOOL is left are those where they are required by
the ABI. file: [668397dc9b] check-in: [c5ef582958] user: js, branch: trunk, size: 25355 [annotate] [blame] [check-ins using] [diff]

2013-02-28
09:57
Make @true and @false work. file: [c49016d190] check-in: [de24e36b29] user: js, branch: trunk, size: 25352 [annotate] [blame] [check-ins using] [diff]
2013-02-12
18:22
Prefix all ivars with an underscore. file: [7e8147f893] check-in: [e40729d406] user: js, branch: trunk, size: 25222 [annotate] [blame] [check-ins using] [diff]
2013-02-10
16:36
Add a warning about reimplementing -[isEqual:]. file: [a61f98d08c] check-in: [b807b66ccc] user: js, branch: trunk, size: 25221 [annotate] [blame] [check-ins using] [diff]
2013-01-17
23:15
Documentation improvements. file: [dfac8717ac] check-in: [50b5ac3b27] user: js, branch: trunk, size: 24914 [annotate] [blame] [check-ins using] [diff]
2013-01-12
20:53
Clean up the feature #ifdef mess. file: [5d2293002c] check-in: [b8ce2359f3] user: js, branch: trunk, size: 24861 [annotate] [blame] [check-ins using] [diff]
20:21
Fix --disable-threads. file: [a016fafbe2] check-in: [85b8efadbc] user: js, branch: trunk, size: 24856 [annotate] [blame] [check-ins using] [diff]
2013-01-09
22:24
Update copyright. file: [7c5fd9c3d2] check-in: [813c00ccf0] user: js, branch: trunk, size: 24831 [annotate] [blame] [check-ins using] [diff]
2012-12-26
14:10
Add OFSystemInfo. file: [24db658a1c] check-in: [4b637f8516] user: js, branch: trunk, size: 24825 [annotate] [blame] [check-ins using] [diff]
2012-12-22
15:37
Add -[doesNotRecognizeSelector:]. file: [fdedfa544a] check-in: [917ce5754c] user: js, branch: trunk, size: 24879 [annotate] [blame] [check-ins using] [diff]
2012-12-06
11:00
Add of_random(). file: [b44a7c59ae] check-in: [f675979cf0] user: js, branch: trunk, size: 24626 [annotate] [blame] [check-ins using] [diff]
2012-12-04
09:19
Randomize hashes.

This prevents DoSing hashtables by creating conflicts deliberately. file: [c663f1ca8f] check-in: [f60e4012b7] user: js, branch: trunk, size: 24593 [annotate] [blame] [check-ins using] [diff]

2012-11-14
15:39
Initial -[forwarindTargetForSelector:].

This only works with the ObjFW runtime so far. The Apple runtime will
require an assembly implementation for every architecture. file: [710d8a991e] check-in: [d3a2e59414] user: js, branch: trunk, size: 24563 [annotate] [blame] [check-ins using] [diff]

2012-10-29
13:37
Documentation improvements (add references). file: [cf116e78a7] check-in: [1bcd4b3d46] user: js, branch: 0.7, size: 24135 [annotate] [blame] [check-ins using] [diff]
13:35
Documentation improvements (add references). file: [856cc09e65] check-in: [e685b742d9] user: js, branch: trunk, size: 24135 [annotate] [blame] [check-ins using] [diff]
08:00
Documentation improvements. file: [405adaef95] check-in: [7a3977d7fd] user: js, branch: 0.7, size: 24090 [annotate] [blame] [check-ins using] [diff]
07:59
Documentation improvements. file: [97ec10457b] check-in: [63bf4de97b] user: js, branch: trunk, size: 24090 [annotate] [blame] [check-ins using] [diff]
2012-10-28
12:38
Switch to a headerdoc-compatible doc format. file: [496d3ca31d] check-in: [1ad9565253] user: js, branch: trunk, size: 23805 [annotate] [blame] [check-ins using] [diff]
2012-10-18
17:33
Fix missing #else. file: [de75aa3e70] check-in: [7169decdef] user: js, branch: trunk, size: 23805 [annotate] [blame] [check-ins using] [diff]
2012-10-14
00:59
OF_INVALID_INDEX -> OF_NOT_FOUND. file: [b6dffac34a] check-in: [f38744df74] user: js, branch: trunk, size: 23778 [annotate] [blame] [check-ins using] [diff]
00:54
range.start -> range.location. file: [b910dda1d9] check-in: [c9433ea60d] user: js, branch: trunk, size: 23782 [annotate] [blame] [check-ins using] [diff]
2012-10-13
19:30
of_endianess_t -> of_byte_order_t. file: [2329ee91b2] check-in: [255fd75828] user: js, branch: trunk, size: 23779 [annotate] [blame] [check-ins using] [diff]
2012-10-12
17:59
Add __attribute__((sentinel)). file: [7924907748] check-in: [c1b2e3e604] user: js, branch: trunk, size: 23775 [annotate] [blame] [check-ins using] [diff]
2012-10-09
15:07
Make use of instancetype. file: [b59326f934] check-in: [fb515e8e24] user: js, branch: trunk, size: 23588 [annotate] [blame] [check-ins using] [diff]
2012-10-03
15:47
Move ObjC feature checks to OFObject.h.

This way, it is theoretically possible to compile ObjFW with one
compiler and then use it with another. file: [5242dae164] check-in: [2edae50b86] user: js, branch: trunk, size: 23550 [annotate] [blame] [check-ins using] [diff]

15:41
Move definition of restricted to OFObject.h. file: [d0b36af00e] check-in: [7239333455] user: js, branch: trunk, size: 23170 [annotate] [blame] [check-ins using] [diff]
2012-09-17
10:18
Add -[performSelectorOnMainThread:waitUntilDone:]. file: [171eb78051] check-in: [e959c99f85] user: js, branch: trunk, size: 23058 [annotate] [blame] [check-ins using] [diff]
2012-09-16
22:31
Add -[performSelector:onThread:waitUntilDone:]. file: [c83f58337e] check-in: [e9cbd5e12a] user: js, branch: trunk, size: 21795 [annotate] [blame] [check-ins using] [diff]
13:23
Add -[performSelector:onThread:afterDelay:]. file: [38e57fe783] check-in: [4fd5559652] user: js, branch: trunk, size: 20271 [annotate] [blame] [check-ins using] [diff]
2012-09-14
06:09
Add -[OFObject performSelector:afterDelay:]. file: [69a725f33c] check-in: [5e067285c8] user: js, branch: trunk, size: 18659 [annotate] [blame] [check-ins using] [diff]
2012-09-09
14:36
OFNumber: Implement OFComparing. file: [65abbe11ec] check-in: [56df9c44de] user: js, branch: trunk, size: 17442 [annotate] [blame] [check-ins using] [diff]
2012-08-19
21:27
Add more ARC type qualifiers. file: [add59de5c9] check-in: [bab9dd49fe] user: js, branch: trunk, size: 17428 [annotate] [blame] [check-ins using] [diff]
2012-08-03
22:37
Implement basic forwarding.

No need to implement it for the Apple runtime, as the Apple runtime
already tries to call these methods. file: [0b56356200] check-in: [285e1138bc] user: js, branch: trunk, size: 17385 [annotate] [blame] [check-ins using] [diff]

18:45
Add ARC type qualifiers. file: [263d460557] check-in: [881cfff24e] user: js, branch: trunk, size: 16807 [annotate] [blame] [check-ins using] [diff]
2012-07-12
01:28
Don't access isa directly. file: [98f274a22b] check-in: [8892ae9fcc] user: js, branch: trunk, size: 16226 [annotate] [blame] [check-ins using] [diff]
2012-06-11
20:50
Merge branch 'master' into runtime

* master: (6 commits)
Improve -[OFNumber description].
... file: [f1d13468c6] check-in: [19a677b596] user: js, branch: runtime, size: 16168 [annotate] [blame] [check-ins using] [diff]

2012-06-10
13:28
More API improvements. file: [84660ce002] check-in: [11d3d69a22] user: js, branch: trunk, size: 16169 [annotate] [blame] [check-ins using] [diff]
2012-06-06
14:05
Merge branch 'master' into runtime

* master: (17 commits)
Slightly change the memory management API.
... file: [2f8f69a869] check-in: [050ac82798] user: js, branch: runtime, size: 16199 [annotate] [blame] [check-ins using] [diff]

13:47
Slightly change the memory management API.

Also fix a bug where OFBigDataArray would waste memory. file: [08ae6bde87] check-in: [f7576a66ce] user: js, branch: trunk, size: 16200 [annotate] [blame] [check-ins using] [diff]

2012-04-21
11:31
Merge branch 'master' into runtime file: [9092415875] check-in: [676e09bf77] user: js, branch: runtime, size: 16195 [annotate] [blame] [check-ins using] [diff]
11:02
Fix __has_feature check. file: [34ca0c3322] check-in: [66db4586f7] user: js, branch: trunk, size: 16196 [annotate] [blame] [check-ins using] [diff]
10:35
Merge branch 'master' into runtime file: [491222589f] check-in: [e5d2a616de] user: js, branch: runtime, size: 16187 [annotate] [blame] [check-ins using] [diff]
10:30
Use __objc_yes and __objc_no if available.

This way, @YES and @NO work. file: [5bb4fe2eb8] check-in: [e571ecccc0] user: js, branch: trunk, size: 16188 [annotate] [blame] [check-ins using] [diff]

2012-03-23
12:04
Merge branch 'master' into runtime file: [c823dc085d] check-in: [3719e10281] user: js, branch: runtime, size: 16055 [annotate] [blame] [check-ins using] [diff]
2012-03-17
15:12
Add of_alloc_object(). file: [9620b63ed6] check-in: [e7d16fea58] user: js, branch: trunk, size: 16056 [annotate] [blame] [check-ins using] [diff]
2012-03-15
11:29
Greatly improve OFObject's memory handling and performance.

A linked-list is put before each memory chunk allocated instead of
having an array of all memory chunks. This means only one malloc now
instead of one malloc and one realloc. This also means that when
checking reallocs and frees, it's no longer necessary to iterate through
all memory chunks, as the linked list also contains the owner, meaning
realloc and free are no longer O(n), but O(1) now.

As allocating bigger chunks seems to be a little bit slower than smaller
chunks, it seems that this is slightly slower in benchmarks if only very small
chunks are allocated. However, measuring real world usage, it's a lot faster. file: [5a4773192e] check-in: [28170f5f65] user: js, branch: trunk, size: 15956 [annotate] [blame] [check-ins using] [diff]

2012-03-13
20:19
Add of_num_cpus. file: [df231ae667] check-in: [5a7c58ec98] user: js, branch: trunk, size: 16271 [annotate] [blame] [check-ins using] [diff]
20:18
Move objc_{set,get}Property() declarations to macros.h. file: [fd7384f991] check-in: [92da2a3a5b] user: js, branch: trunk, size: 16244 [annotate] [blame] [check-ins using] [diff]
2012-03-06
16:31
Merge changes from default branch into runtime branch. file: [38b992ba28] check-in: [9bb186a7a3] user: js, branch: runtime, size: 16363 [annotate] [blame] [check-ins using] [diff]
16:17
Clean up the method replacement mess. file: [502b05ce3f] check-in: [2d08ba105c] user: js, branch: trunk, size: 16364 [annotate] [blame] [check-ins using] [diff]
2012-03-04
19:28
Change includes of objfw-rt.h to include local runtime.h. file: [37e4450eb1] check-in: [1664513cf6] user: js, branch: runtime, size: 16981 [annotate] [blame] [check-ins using] [diff]
2012-02-27
22:11
Add -[OFObject isMemberOfClass:] and -[OFObject isProxy]. file: [131792314e] check-in: [8830166fe8] user: js, branch: trunk, size: 16982 [annotate] [blame] [check-ins using] [diff]
2012-01-05
00:56
Update copyright. file: [e279082981] check-in: [ce70e17b38] user: js, branch: trunk, size: 16563 [annotate] [blame] [check-ins using] [diff]
2011-12-28
18:41
Move a few selectors from OFObject to the OFObject protocol.

Selectors are -[conformsToProtocol:], -[methodForSelector:] and
-[typeEncodingForSelector:]. file: [2c1d63b959] check-in: [12eafc42ef] user: js, branch: trunk, size: 16557 [annotate] [blame] [check-ins using] [diff]

2011-09-19
16:34
Rename -[allocMemoryForNItems:withSize:] and friends.
It is now -[allocMemoryForNItems:ofSize:].
file: [27e15c911a] check-in: [f173477bef] user: js, branch: trunk, size: 16557 [annotate] [blame] [check-ins using] [diff]
2011-09-11
01:28
Fix ObjC++. file: [26f6124a82] check-in: [f786163cf8] user: js, branch: trunk, size: 16557 [annotate] [blame] [check-ins using] [diff]
2011-09-10
18:36
Remove -[finalize] as ARC will be implemented instead of a GC. file: [786dbd8023] check-in: [972a3ee40d] user: js, branch: trunk, size: 16556 [annotate] [blame] [check-ins using] [diff]
2011-08-22
09:58
Clean up the class hierarchy in the doxygen generated documentation. file: [8c882f215e] check-in: [367bf4117b] user: js, branch: trunk, size: 16993 [annotate] [blame] [check-ins using] [diff]
2011-07-31
19:45
Cleaner -[setImplementation:...] for old GNU runtime.

Still work needed to correctly update the dtable. file: [7e695cf1f5] check-in: [fbee44d38e] user: js, branch: trunk, size: 17016 [annotate] [blame] [check-ins using] [diff]

02:07
Implement adding methods for the GNU runtime. file: [5c52be14f5] check-in: [db5f8c2c1b] user: js, branch: trunk, size: 16444 [annotate] [blame] [check-ins using] [diff]
2011-07-30
23:31
More enhancements in +[OFObject inheritMethodsFromClass:].

Inherits class and instance methods now, handles superclasses, etc. file: [0f97f0d9d0] check-in: [2828853e17] user: js, branch: trunk, size: 16366 [annotate] [blame] [check-ins using] [diff]

02:14
Improve +[inheritInstanceMethodsFromClass:]. file: [1644680d03] check-in: [cace873874] user: js, branch: trunk, size: 16211 [annotate] [blame] [check-ins using] [diff]
2011-07-29
21:54
Add +[inheritInstanceMethodsFromClass:] to OFObject.

This allows something similar to multiple inheritance. file: [250cefa1d6] check-in: [bf0f10966f] user: js, branch: trunk, size: 15999 [annotate] [blame] [check-ins using] [diff]

2011-07-23
13:33
Add -[self] to OFObject. file: [0bcf5ccb1b] check-in: [f1d6ecb1b8] user: js, branch: trunk, size: 15073 [annotate] [blame] [check-ins using] [diff]
2011-07-06
17:44
Add +[new] to OFObject for compatibility and convenience. file: [36dca16f39] check-in: [0319e89d4b] user: js, branch: trunk, size: 14997 [annotate] [blame] [check-ins using] [diff]
2011-06-28
18:14
Use floats for of_point_t and of_dimension_t. file: [59c945a116] check-in: [722f0808e8] user: js, branch: trunk, size: 14864 [annotate] [blame] [check-ins using] [diff]
2011-06-13
23:47
Add of_{point,dimension,rectangle}_t. file: [93706299d5] check-in: [f86ac97de4] user: js, branch: trunk, size: 14856 [annotate] [blame] [check-ins using] [diff]
2011-06-05
22:26
Nicer API for serialization. file: [482cb22a3c] check-in: [29988c434b] user: js, branch: trunk, size: 14539 [annotate] [blame] [check-ins using] [diff]
2011-05-15
17:00
Make it possible to specify the byte order for Unicode / UTF-16. file: [441f3c4a6d] check-in: [3dad5e5803] user: js, branch: trunk, size: 14503 [annotate] [blame] [check-ins using] [diff]
2011-05-04
22:22
Documentation improvements. file: [dcd1dc9c0c] check-in: [851e47d743] user: js, branch: trunk, size: 14351 [annotate] [blame] [check-ins using] [diff]
2011-04-24
21:50
Add -[finalize] to all classes which would require it once we have GC. file: [ae7d2dccfa] check-in: [07b3d0e8de] user: js, branch: trunk, size: 12020 [annotate] [blame] [check-ins using] [diff]
2011-04-22
20:19
More style improvements. file: [71473f3fce] check-in: [e76a7f52c1] user: js, branch: trunk, size: 11851 [annotate] [blame] [check-ins using] [diff]
16:31
Make OFCopying and OFComparing conform to OFObject.
Also make OFMutableCopying conform to OFCopying.
file: [9dc78efdb2] check-in: [b46a3eccdb] user: js, branch: trunk, size: 11851 [annotate] [blame] [check-ins using] [diff]
16:23
Various style improvements. file: [1c3650ec63] check-in: [c7e66feb30] user: js, branch: trunk, size: 11817 [annotate] [blame] [check-ins using] [diff]
2011-03-25
12:30
Add -[performSelector:] and friends to OFObject. file: [20ad48203c] check-in: [c3f3576af4] user: js, branch: trunk, size: 11791 [annotate] [blame] [check-ins using] [diff]
2011-03-23
13:05
Use OF_INVALID_INDEX instead of SIZE_MAX. file: [bcf048ad36] check-in: [a252dc5c69] user: js, branch: trunk, size: 10779 [annotate] [blame] [check-ins using] [diff]
12:58
Make the return type of retainCount unsigned int.
This way, the OFObject protocol is compatible to NSObject.
file: [1c80d73d6b] check-in: [8de8df50e9] user: js, branch: trunk, size: 10745 [annotate] [blame] [check-ins using] [diff]
2011-03-22
00:55
Add -Wshorten-64-to-32. file: [2a5a45e545] check-in: [6d4dfb5bc7] user: js, branch: trunk, size: 10701 [annotate] [blame] [check-ins using] [diff]
2011-03-21
14:38
Move a few methods to OFObject protocol. file: [0bd8b0d360] check-in: [41cd31363f] user: js, branch: trunk, size: 10681 [annotate] [blame] [check-ins using] [diff]
2011-03-11
13:02
Make it easier to generate getters and setters. file: [676c5cd786] check-in: [2c72efb4e7] user: js, branch: trunk, size: 10581 [annotate] [blame] [check-ins using] [diff]
2011-02-26
19:00
Make isa public to allow for better class swizzling. file: [ba88035595] check-in: [58c07e80e4] user: js, branch: trunk, size: 10461 [annotate] [blame] [check-ins using] [diff]
2011-02-01
22:11
Use extern "C" where useful.
Improves ObjC++ compatibility.
file: [89e99f7304] check-in: [03d1b71d10] user: js, branch: trunk, size: 10453 [annotate] [blame] [check-ins using] [diff]
21:41
Define __STDC_CONSTANT_MACROS if not defined. file: [f957d3ca64] check-in: [0ca438498e] user: js, branch: trunk, size: 10386 [annotate] [blame] [check-ins using] [diff]
2011-01-24
20:20
ObjC++ needs those defines for <stdin.h>. file: [b1fe4b2427] check-in: [5ad479153e] user: js, branch: trunk, size: 10316 [annotate] [blame] [check-ins using] [diff]
2011-01-01
20:19
Change license. file: [a37d14de62] check-in: [da6b3d26cb] user: js, branch: trunk, size: 10251 [annotate] [blame] [check-ins using] [diff]
2010-12-25
13:14
Add OFComparing protocol. file: [e8182b85e4] check-in: [6b45991a6a] user: js, branch: trunk, size: 9995 [annotate] [blame] [check-ins using] [diff]
2010-12-10
11:21
Documentation fixes. file: [a268b416fa] check-in: [fada60d54c] user: js, branch: trunk, size: 9651 [annotate] [blame] [check-ins using] [diff]
2010-11-16
00:40
-[className] and +[className] now return an OFString. file: [2a51330d11] check-in: [2011b7b91c] user: js, branch: trunk, size: 9594 [annotate] [blame] [check-ins using] [diff]
2010-11-13
21:57
Add -[description] for OFObject, OFString, OFArray and OFDictionary. file: [82b71eb5d5] check-in: [9b50b86632] user: js, branch: trunk, size: 9611 [annotate] [blame] [check-ins using] [diff]
2010-09-19
22:39
Add -[typeEncodingForSelector] and +[typeEncodingForInstanceSelector:]. file: [0ecdb91882] check-in: [477d06da14] user: js, branch: trunk, size: 9319 [annotate] [blame] [check-ins using] [diff]
2010-09-05
23:19
Replace OFObject* with id in many places.

We assume now that every object understands retain, release, etc. so
that we can weaken the type from OFObject* to id. This makes it
possible to use different root object classes. file: [acfaa1e5ed] check-in: [e2b06423e0] user: js, branch: trunk, size: 8887 [annotate] [blame] [check-ins using] [diff]

2010-05-05
17:21
Rename method replacement methods - the old names were too long. file: [edc7438bce] check-in: [bce7bbddf4] user: js, branch: trunk, size: 8894 [annotate] [blame] [check-ins using] [diff]
2010-04-17
16:09
Give the methods in OFNumber better names. file: [ed24092d00] check-in: [2517f18272] user: js, branch: trunk, size: 8905 [annotate] [blame] [check-ins using] [diff]
15:46
Don't return self where not necessary, return void or something useful. file: [c207812c2a] check-in: [062a052b50] user: js, branch: trunk, size: 8913 [annotate] [blame] [check-ins using] [diff]
2010-04-01
23:51
Add support for ObjFW-RT, the ObjFW Objective C runtime. file: [2662d5b8c3] check-in: [8c2755723a] user: js, branch: trunk, size: 8901 [annotate] [blame] [check-ins using] [diff]
2010-03-14
12:38
Merge 9af5e9a8f80a into 0.2 branch. file: [d330b83b36] check-in: [0d9f51689f] user: js, branch: 0.2, size: 7882 [annotate] [blame] [check-ins using] [diff]
12:37
Documentation improvements. file: [d59ecc6081] check-in: [40523d5535] user: js, branch: trunk, size: 8841 [annotate] [blame] [check-ins using] [diff]
2010-03-13
21:24
Add global variable of_pagesize and use it to reduce code duplication. file: [573c4d5ce8] check-in: [382ed34d40] user: js, branch: trunk, size: 8833 [annotate] [blame] [check-ins using] [diff]
2010-03-05
11:52
Merge a few changesets from the default branch into the 0.2 branch.

Changesets:
* b95fcaa6d694
* 804c68d222b4
* da8cd738da3d
* 1109d5ce3419
* d03f5c1ca95d
* 2a7017722165
* 4fccdc79eeb7
* d228149fbc04
* 8782d412a4a6 file: [762d83757b] check-in: [b91a8283fe] user: js, branch: 0.2, size: 7874 [annotate] [blame] [check-ins using] [diff]

2010-03-04
12:28
Add +[setImplemenation:forClassMethod:] and friends. file: [eab33580e8] check-in: [a4b1a005b6] user: js, branch: trunk, size: 8805 [annotate] [blame] [check-ins using] [diff]
2010-02-24
23:00
Rename -[replaceMethod:withMethodFromClass:] and friends.
The rename was needed as these replace instance methods.
file: [75b9a0dc79] check-in: [b156ec8284] user: js, branch: trunk, size: 8156 [annotate] [blame] [check-ins using] [diff]
2010-02-19
16:36
Update copyright. file: [b67f49f2af] check-in: [42886185fd] user: js, branch: trunk, size: 8067 [annotate] [blame] [check-ins using] [diff]
2010-02-11
14:58
Documentation improvements. file: [f7abde26a3] check-in: [72caeab860] user: js, branch: trunk, size: 8067 [annotate] [blame] [check-ins using] [diff]
14:05
Add of_range_t and add methods taking an of_range_t. file: [db793b12be] check-in: [a7bed8325c] user: js, branch: trunk, size: 8020 [annotate] [blame] [check-ins using] [diff]
2010-02-07
14:09
Add +[superclass] to OFObject. file: [e2a29ab486] check-in: [047af7a8ad] user: js, branch: trunk, size: 7903 [annotate] [blame] [check-ins using] [diff]
2010-01-29
15:21
Make retain count int32_t. file: [58427ce6f5] check-in: [b725e983ae] user: js, branch: trunk, size: 7835 [annotate] [blame] [check-ins using] [diff]
2010-01-25
15:22
Make retain counter 32 bit due to atomic ops being 32 bit. file: [b10aa6cbcf] check-in: [831ebcd4f5] user: js, branch: trunk, size: 7836 [annotate] [blame] [check-ins using] [diff]
2010-01-16
13:19
Remove useless definitions in headers. file: [9367c723f3] check-in: [9f3151f200] user: js, branch: trunk, size: 7834 [annotate] [blame] [check-ins using] [diff]
2009-12-06
14:06
Move ObjFW definitions to a header that gets installed. file: [952a3ddb87] check-in: [3631d46ccc] user: js, branch: trunk, size: 8414 [annotate] [blame] [check-ins using] [diff]
2009-12-05
11:06
Add +[isSubclassOfClass:] to OFObject. file: [310003f809] check-in: [c7bfcc9e92] user: js, branch: trunk, size: 8498 [annotate] [blame] [check-ins using] [diff]
2009-12-03
10:29
More documentation improvements. file: [a51d330892] check-in: [012cee4f80] user: js, branch: trunk, size: 8292 [annotate] [blame] [check-ins using] [diff]
2009-12-02
20:02
Introduce some consistency when to use OFObject* and when to use id. file: [d628e82c53] check-in: [c7ab3a46d1] user: js, branch: trunk, size: 8289 [annotate] [blame] [check-ins using] [diff]
2009-12-01
13:35
Better checking which runtime we use. file: [5c9737ae0e] check-in: [240b72cd71] user: js, branch: trunk, size: 8282 [annotate] [blame] [check-ins using] [diff]
2009-11-29
16:23
Allow NULL as parameter for -[freeMemory:]. file: [a9bb10dc6d] check-in: [d57228d9d6] user: js, branch: trunk, size: 8341 [annotate] [blame] [check-ins using] [diff]
2009-11-15
01:17
Add +[load] to OFObject. file: [65d50f6e31] check-in: [1bae432025] user: js, branch: trunk, size: 8309 [annotate] [blame] [check-ins using] [diff]
2009-11-10
15:32
Improve -[compare:]. file: [1dd4852877] check-in: [6772512e3e] user: js, branch: trunk, size: 8119 [annotate] [blame] [check-ins using] [diff]
2009-11-09
22:45
Rename libobjfw to ObjFW. file: [916163ab90] check-in: [a3cc34b139] user: js, branch: trunk, size: 7842 [annotate] [blame] [check-ins using] [diff]
2009-11-03
16:48
Rename class to class_ for the sake of Objective C++ compatibility. file: [27f44708ae] check-in: [8a35bb55a8] user: js, branch: trunk, size: 7848 [annotate] [blame] [check-ins using] [diff]
2009-08-26
19:40
Improve documentation. file: [5cc0fd9342] check-in: [146db53e4a] user: js, branch: trunk, size: 7844 [annotate] [blame] [check-ins using] [diff]
2009-08-17
21:13
Ensure in the headers that we got the required definitions.

This prevents compiling stuff using libobjfw without objfw-config,
which could generate strange bugs. file: [6180a99265] check-in: [5903c87d36] user: js, branch: trunk, size: 7354 [annotate] [blame] [check-ins using] [diff]

2009-08-12
15:37
Rename +[name] and -[name] to +[className] and -[className]. file: [494102f6f4] check-in: [ce8d36d5c4] user: js, branch: trunk, size: 7243 [annotate] [blame] [check-ins using] [diff]
2009-06-30
14:22
Add +[instanceMethodForSelector:] to OFObject. file: [7edb49c81c] check-in: [0707c56762] user: js, branch: trunk, size: 7233 [annotate] [blame] [check-ins using] [diff]
14:15
Add +[instancesRespondToSelector:] to OFObject. file: [2922396d0b] check-in: [5f47e81a9e] user: js, branch: trunk, size: 7020 [annotate] [blame] [check-ins using] [diff]
12:07
A few renames in OFObject, see details.

* +[conformsTo:] to +[conformsToProtocol:].
* -[isKindOf:] to -[isKindOfClass:].
* -[respondsTo:] to -[respondsToSelector:].
* -[conformsTo:] to -[conformsToProtocol:].
* -[methodFor:] to -[methodForSelector:]. file: [f2a66cf4f4] check-in: [67bb344ba6] user: js, branch: trunk, size: 6793 [annotate] [blame] [check-ins using] [diff]

2009-06-15
19:22
Remove whitespaces at EOL. file: [2c81425fe1] check-in: [172e662b71] user: js, branch: trunk, size: 6756 [annotate] [blame] [check-ins using] [diff]
2009-06-10
15:31
Add +[setImplementation:forMethod:]. file: [b4d0f545f8] check-in: [b10efe7b2b] user: js, branch: trunk, size: 6757 [annotate] [blame] [check-ins using] [diff]
2009-06-09
13:01
Use #import "*.h" instead of #import <*.h> in objfw.h.

We need this because we don't add the objfw include path to the
CPPFLAGS anymore in objfw-config. file: [ca450e2d5c] check-in: [b7cd1e3dc6] user: js, branch: trunk, size: 6466 [annotate] [blame] [check-ins using] [diff]

2009-06-02
17:21
Take care of the root metaclass's super being the root class. file: [60d0648156] check-in: [4c343b7841] user: js, branch: trunk, size: 6464 [annotate] [blame] [check-ins using] [diff]
2009-06-01
12:20
Add +[conformsTo:] and -[conformsTo:]. file: [3ce907fa27] check-in: [5008910e85] user: js, branch: trunk, size: 5884 [annotate] [blame] [check-ins using] [diff]
2009-05-29
19:21
A few renames.

OFExceptions:
* OFNoMemException to OFOutOfMemoryException.
* OFMemNotPartOfObjException to OFMemoryNotPartOfObjectException.

OFObject:
* -[addItemToMemoryPool:] to -[addMemoryToPool:].
* -[allocWithSize:] to -[allocMemoryWithSize:].
* -[allocNItems:withSize] to -[allocMemoryForNItems:withSize:].
* -[resizeMem:toSize] to -[resizeMemory:toSize:].
* -[resizeMem:toNItems:withSize:] to
-[resizeMemoryToNItems:withSize:].
* -[freeMem] to -[freeMemory:].

OFString:
* -[urlencode] to -[urlEncodedString].
* -[urldecode] to -[urlDecodedString]. file: [1ae322315c] check-in: [033054ad75] user: js, branch: trunk, size: 5468 [annotate] [blame] [check-ins using] [diff]

2009-05-23
21:53
A few renames.

OFArray:
* -[add:] to -[addObject:].
* -[last] to -[lastObject].

OFAutoreleasePool:
* +[addToPool:] to +[addObjectToTopmostPool:].
* -[addToPool:] to -[addObject:].

OFDataArray:
* -[add:] to -[addItem:].
* -[last] to -[lastItem].

OFObject:
* -[addToMemoryPool:] to -[addItemToMemoryPool:]. file: [7205341d87] check-in: [526d04018d] user: js, branch: trunk, size: 5437 [annotate] [blame] [check-ins using] [diff]

2009-05-18
18:15
Introduce OFMutableCopying protocol. file: [ee8a3d67d3] check-in: [79e1893b40] user: js, branch: trunk, size: 5433 [annotate] [blame] [check-ins using] [diff]
16:49
Make - copy a protocol. file: [9afbf70556] check-in: [8dc49f1861] user: js, branch: trunk, size: 5216 [annotate] [blame] [check-ins using] [diff]
2009-05-13
20:39
Let - release return void again.

If you want to know if it will be released, you can just get the retain
count and check it this way. file: [9df3b05f63] check-in: [6d589825cd] user: js, branch: trunk, size: 5074 [annotate] [blame] [check-ins using] [diff]

20:31
Rename - free to - (void)dealloc. file: [aacf1f5953] check-in: [9e6dd00ef5] user: js, branch: trunk, size: 5068 [annotate] [blame] [check-ins using] [diff]
19:49
There's no need for + initialize to return anything. file: [daf333a5b7] check-in: [917188fdcc] user: js, branch: trunk, size: 5024 [annotate] [blame] [check-ins using] [diff]
2009-05-03
21:33
Get rid of + new.
Additionally, make - accept return an autoreleased OFTCPSocket.
file: [1bd5addeee] check-in: [5ca127891c] user: js, branch: trunk, size: 5018 [annotate] [blame] [check-ins using] [diff]
2009-04-26
12:44
A few renames in OFObject.

getMemWithSize: -> allocWithSize:
getMemForNItems:ofSize: -> allocNItems:withSize:
resizeMem:toNItems:ofSize: -> resizeMem:toNItems:withSize: file: [8b1380da52] check-in: [e959fed010] user: js, branch: trunk, size: 5113 [annotate] [blame] [check-ins using] [diff]

2009-04-21
17:16
The if ((self = [super init])) construct isn't needed anymore. file: [706bb1644c] check-in: [d87df02e8b] user: js, branch: trunk, size: 5115 [annotate] [blame] [check-ins using] [diff]
2009-04-19
20:19
Actually, it makes sense that - release returns self.
This way, you can check if the object has been free'd, for example
using if ((obj = [obj release]) == nil).
file: [84bfaf3d9b] check-in: [348b389736] user: js, branch: trunk, size: 4759 [annotate] [blame] [check-ins using] [diff]
17:37
Remove forwarding methods. See long commit message for details.

There are two resons for removing it:

First, OFPlugin does not need forwarding anymore. Second is that
forwarding is broken in both, the GNU and the Apple runtime.

In GNU libobjc, objc_msg_sendv is implemented using __builtin_apply,
which is broken on many platforms, including x86_64. If forwarding is
used, the application will just crash. To work around that, I'd need to
parse the type encoding and use libffi to call the method instead of
using objc_msg_sendv.

Now the Apple runtime has a similar problem: There is no objc_msgSendv
for PPC64 and x86_64 as it's only in ObjC1 and on ARM (iPhone), it's
broken (most likely because the iPhone uses only ObjC2 - I was confused
that objc_msgSendv was even in the libobjc there). So I'd need to write
an ASM implementation for these 3.

Writing those 3 ASM implementations (or 5, so we don't depend on ObjC1
stuff on PPC32 and x86 as well) wouldn't be a problem, but there is a
problem the GNU libobjc and the Apple runtime got in common, which
originates from the early ObjC implementations:

forward:: and performv:: were only designed to return scalar types. But
today, it's possible to return floats, structs and unions as well. What
Apple and GNU use here is a very hacky workaround and it's just luck
that it works. forward:: and performv:: both return an id (Apple) or
void* (GNU). forward:: is called by the runtime if you called a method
that is not implemented. The compiler does not know at compile time
that it is not implemented, therefore expects a float as a return. On
x86, floats are returned in sp0. The runtime now notices that the
called method is not implemented and calls forward::. Forward then
calls performv:: to call the right method. The method returns a float
and stores it in sp0. Remember that both, forward:: and performv::
return an id / void*. performv:: returns now and after that, forward::
returns. The return of those was always put into eax, as that's how
scalar values are returned on x86. The original caller of the method
does not expect any return value in eax, but in sp0. This works, as
no code touched sp0. However, you can not rely on sp0 not being
touched. It's just luck that the compiler generates code that does not
touch sp0.

While this works for forwarding due to the ABI on x86 (and the ABIs on
many other platforms allow this hack as well), this fails if you call
performv:: directly on a method returning a float. In this case, the
compiler does not expect a return value in sp0, but in eax, as
performv:: is expected to return id / void*. Therefore the bogus value
in eax will be casted to float and the result will be useless.

This is why I decided to remove forwarding and performv:: from libobjfw
for now. If I encounter a situation where I need forwarding, I'm going
to implement it in a sane way and NOT the objc way. The forwarding
methods this commit removes did it the objc way, which is IMO just
wrong. (That way was ok back then when you only had scalar return
types, but today you're not limited to scalar return types anymore.) file: [9fc0378e5d] check-in: [57fb5578cc] user: js, branch: trunk, size: 4765 [annotate] [blame] [check-ins using] [diff]

2009-04-12
14:51
Get rid of the dependency on Object.

This allows libobjfw to run on ObjC2-only runtimes like the one on the
iPhone. However, it's still relying on objc_msgSendv for plugins, which
is unavailable in ObjC2-only runtimes, thus OFPlugins are unavailable
on the iPhone until I write a replacement for objc_msgSendv. file: [e051be24f6] check-in: [cbdd534337] user: js, branch: trunk, size: 5627 [annotate] [blame] [check-ins using] [diff]

2009-04-04
19:56
Fix wrong documentation. file: [6f74f6252f] check-in: [a72c435267] user: js, branch: trunk, size: 3381 [annotate] [blame] [check-ins using] [diff]
2009-03-15
13:46
Preliminary OFConstString implementation and support for @"" literals. file: [1af8420b56] check-in: [2ff44fe8d7] user: js, branch: trunk, size: 3381 [annotate] [blame] [check-ins using] [diff]
2009-03-04
20:49
- release should not be chained, might be free'd. Therefore return void. file: [a404ee9968] check-in: [e73e76e40f] user: js, branch: trunk, size: 3294 [annotate] [blame] [check-ins using] [diff]
2009-02-15
16:40
Get rid of OFComparable and make it part of OFObject. file: [25e68717c7] check-in: [d9308adc2b] user: js, branch: trunk, size: 3288 [annotate] [blame] [check-ins using] [diff]
2009-02-14
17:26
Always use #include for libc headers due to glibc being broken.
Do the same for win32 headers, just in case. They should work with
#import, but you never know ;).
file: [2370690927] check-in: [029511474c] user: js, branch: trunk, size: 2817 [annotate] [blame] [check-ins using] [diff]
2009-01-06
22:38
Use OFList and OFArray in OFAutoreleasePool.
This reduces code duplication and looks far better.
file: [8a674581d8] check-in: [dfc10dbeb8] user: js, branch: trunk, size: 2816 [annotate] [blame] [check-ins using] [diff]
2009-01-05
00:59
Update copyright. file: [743bd758c4] check-in: [f1b749d113] user: js, branch: trunk, size: 2756 [annotate] [blame] [check-ins using] [diff]
00:56
Initial OFAutoreleasePool - still needs a *lot* of testing. file: [e8bad88823] check-in: [b412845664] user: js, branch: trunk, size: 2749 [annotate] [blame] [check-ins using] [diff]
2008-12-24
11:55
Add methods to initalize from and append from formatted C strings. file: [9f93088fa9] check-in: [486760ed2b] user: js, branch: trunk, size: 2482 [annotate] [blame] [check-ins using] [diff]
2008-12-19
23:15
Add errno in exceptions where it's useful. file: [ac2041ef80] check-in: [e668c03098] user: js, branch: trunk, size: 2207 [annotate] [blame] [check-ins using] [diff]
2008-11-30
15:17
Clean up imports. file: [0778c8e9f4] check-in: [4b8666fe15] user: js, branch: trunk, size: 2205 [annotate] [blame] [check-ins using] [diff]
2008-11-08
20:28
Optimize OFObject. file: [f0d19652e8] check-in: [14ba9e517b] user: js, branch: trunk, size: 2204 [annotate] [blame] [check-ins using] [diff]
2008-11-05
18:22
More documentation. file: [2a153af38a] check-in: [1caf21d1b2] user: js, branch: trunk, size: 2336 [annotate] [blame] [check-ins using] [diff]
17:51
More documentation. file: [1c8d9403e3] check-in: [32ccf22a44] user: js, branch: trunk, size: 2224 [annotate] [blame] [check-ins using] [diff]
2008-11-01
22:20
Some exception stuff & withSize -> ofSize for OFObject. file: [d5d3bf61c7] check-in: [9944a6f8a4] user: js, branch: trunk, size: 837 [annotate] [blame] [check-ins using] [diff]
16:44
Fix missing include. file: [fe500dfb05] check-in: [9a3c338399] user: js, branch: trunk, size: 837 [annotate] [blame] [check-ins using] [diff]
2008-10-29
17:29
Add getMemForNItems:withSize: & resizeMem:toNItems:withSize: in OFObject

Additionally, interface for OFArray. file: [05ff92829e] check-in: [49859c2bcc] user: js, branch: trunk, size: 818 [annotate] [blame] [check-ins using] [diff]

2008-10-26
20:54
Return self when we have no return value. This allows nesting. file: [1168f25909] check-in: [8ae4c59cd6] user: js, branch: trunk, size: 665 [annotate] [blame] [check-ins using] [diff]
2008-10-22
13:32
Reworked OFObject and added append(Wide)CString to OFString.

The reworked OFObject lets one test fail on the GNU runtime.
Unfortunately, I have no idea why... file: [1d4691aa4c] check-in: [e47ad44290] user: js, branch: trunk, size: 630 [annotate] [blame] [check-ins using] [diff]

2008-10-08
23:15
Multiple changes, see details.

* OFObject getMem: renamd to getMemWithSize:.
* OFString compare: renamed to compareTo:.
* Exceptions don't throw itself anymore.
* Exceptions include an error string now.
* Exceptions now got raise and string.
* New methods for OFFile:
* changeModeOfFile:toMode:
* changeOwnerOfFile:toOwner:andGroup:
* delete:
* link:to:
* symlink:to:
* OFFile isEndOfFile renamd to atEndOfFile
* OFNotImplementedExeception newWithObject:andMethod renamed to
newWithObject:andSelector:.
* Tests updated accordingly.
* TODO list added. file: [20796294ad] check-in: [b597d49f43] user: js, branch: trunk, size: 671 [annotate] [blame] [check-ins using] [diff]

2008-09-14
16:43
Lots of changes. See full commit message.

* Updated buildsys to fixed version.
* Implement exceptions.
* Let OFObject use exceptions.
* Write tests for OFObject.
* Fix a bug in OFObject's freeMem:. file: [55682be82c] check-in: [7b8b7cd06c] user: js, branch: trunk, size: 869 [annotate] [blame] [check-ins using] [diff]

15:29
Coding style. file: [b47bfb1d54] check-in: [778be56179] user: js, branch: trunk, size: 663 [annotate] [blame] [check-ins using] [diff]
2008-09-12
13:25
Added: Initial import. file: [3d2b1446a8] check-in: [a580136c80] user: js, branch: trunk, size: 651 [annotate] [blame] [check-ins using]