ObjFW  History of src/OFObject.m of f2e96ebd9a89f730

History of file src/OFObject.m at check-in f2e96ebd9a89f730

2024-10-27
18:38
Remove nullable in .m files file: [936405dd93] check-in: [7d1275cb49] user: js, branch: trunk, size: 31512 [annotate] [blame] [check-ins using] [diff]
2024-04-29
21:42
Properly hide private symbols file: [8a5a49c0ca] check-in: [f16bccc7b3] user: js, branch: trunk, size: 31532 [annotate] [blame] [check-ins using] [diff]
2024-04-21
19:55
Add missing NTAPI for RtlGenRandom file: [aac1ccf77b] check-in: [f61f430bfb] user: js, branch: trunk, size: 31511 [annotate] [blame] [check-ins using] [diff]
19:15
Use RtlGenRandom on Windows if available file: [e25577ee55] check-in: [2bcb2bd40f] user: js, branch: trunk, size: 31492 [annotate] [blame] [check-ins using] [diff]
2024-04-09
19:35
OFObject: Use posix_memalign() on Solaris

In 32 bit mode, malloc() doesn't always return pointers correctly
aligned for SSE. file: [88eeb2453d] check-in: [f6afff33eb] user: js, branch: trunk, size: 30579 [annotate] [blame] [check-ins using] [diff]

2024-04-03
02:16
Change license to LGPLv3 only file: [d8ad2314c9] check-in: [7413a728a7] user: js, branch: trunk, size: 30513 [annotate] [blame] [check-ins using] [diff]
2024-03-28
18:29
Properly align objects on MS-DOS

When running an MS-DOS application on Windows 98 SE, it is possible to
use SSE in an MS-DOS application, so it is important that objects are
aligned properly. file: [3ec904d9fc] check-in: [5fd6d0a46d] user: js, branch: trunk, size: 30305 [annotate] [blame] [check-ins using] [diff]

2024-02-18
22:03
Use __mingw_aligned_* instead of _aligned_*

These are available on Windows 98 as well. file: [69eb852a00] check-in: [7965aac7d5] user: js, branch: trunk, size: 29181 [annotate] [blame] [check-ins using] [diff]

2024-02-13
22:40
Make sure objects are correctly aligned on Windows

malloc() on Windows XP only aligns with 8 bytes, which is not enough for
SSE. file: [8335b4d9d4] check-in: [2547c1c4ce] user: js, branch: trunk, size: 29153 [annotate] [blame] [check-ins using] [diff]

2024-01-02
17:17
Update copyright file: [70b0e206af] check-in: [26ddd2e4e4] user: js, branch: trunk, size: 28712 [annotate] [blame] [check-ins using] [diff]
2023-11-04
14:43
OFAllocObject: Fix calculation of extra alignment

While at it, also migrate to using OFRoundUpToPowerOf2, which is much
more readable. file: [399d8957d0] check-in: [648d29a33e] user: js, branch: trunk, size: 28712 [annotate] [blame] [check-ins using] [diff]

2023-08-30
11:45
Merge trunk into branch "amiga-library" file: [cbcdeeefcc] check-in: [5ea06b70ce] user: js, branch: amiga-library, size: 28771 [annotate] [blame] [check-ins using] [diff]
2023-08-08
15:32
A few minor cleanups file: [663f9433ab] check-in: [a6f520157a] user: js, branch: trunk, size: 28684 [annotate] [blame] [check-ins using] [diff]
2023-07-15
20:57
Merge trunk into branch "amiga-library" file: [f38056ff53] check-in: [860b0bf1e9] user: js, branch: amiga-library, size: 28748 [annotate] [blame] [check-ins using] [diff]
2023-06-19
19:22
Minor style fixes file: [e705635cfb] check-in: [da7db4d68c] user: js, branch: trunk, size: 28661 [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: [6fb92dcbb6] check-in: [6ce0093f8d] user: js, branch: trunk, size: 28645 [annotate] [blame] [check-ins using] [diff]

15:08
Work around newer amiga-gcc defining Class file: [d0e1cba71d] check-in: [abbed5c008] user: js, branch: trunk, size: 28685 [annotate] [blame] [check-ins using] [diff]
2023-01-06
09:04
Update copyright file: [9eea9ca3cb] check-in: [8939cbdb52] user: js, branch: trunk, size: 28641 [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: [5066d79b28] check-in: [8d9ab7ea41] user: js, branch: trunk, size: 28641 [annotate] [blame] [check-ins using] [diff]

2022-11-16
01:31
Merge trunk into branch "amiga-library" file: [fa1a2c06ef] check-in: [3c13b15751] user: js, branch: amiga-library, size: 28782 [annotate] [blame] [check-ins using] [diff]
01:27
Add OFAssert()

This uses the same format as OFEnsure(). file: [eefa1e2165] check-in: [c86b8f10f0] user: js, branch: trunk, size: 28695 [annotate] [blame] [check-ins using] [diff]

2022-11-13
11:32
Use OFLog() instead of fprintf(stderr, ...) file: [afe0ab07e4] check-in: [ef470b8aa3] user: js, branch: trunk, size: 28714 [annotate] [blame] [check-ins using] [diff]
11:29
Use OFLog() instead of fprintf(stderr, ...) file: [58ac8c00a9] check-in: [095a015165] user: js, branch: amiga-library, size: 28801 [annotate] [blame] [check-ins using] [diff]
2022-10-18
22:19
Merge trunk into branch "amiga-library" file: [2ac228feac] check-in: [80dbc3c570] user: js, branch: amiga-library, size: 28909 [annotate] [blame] [check-ins using] [diff]
22:17
Merge trunk into branch "amiga-library" file: [ac239733f0] check-in: [ac19ed9d40] user: js, branch: amiga-library, size: 27796 [annotate] [blame] [check-ins using] [diff]
2022-09-29
22:08
Fix tests on Nintendo consoles & PSP file: [0477c3fb09] check-in: [01199db504] user: js, branch: trunk, size: 28822 [annotate] [blame] [check-ins using] [diff]
21:26
OFException: Provide stack trace addresses file: [da1d529dc6] check-in: [f93fae010f] user: js, branch: trunk, size: 28820 [annotate] [blame] [check-ins using] [diff]
2022-09-19
19:16
OFObject: Free spinlock in dealloc file: [1199f442fe] check-in: [8aa77abadd] user: js, branch: trunk, size: 28006 [annotate] [blame] [check-ins using] [diff]
2022-08-30
00:48
OFObject: Small API change file: [ed9d8357b8] check-in: [4ad0c363f3] user: js, branch: trunk, size: 27713 [annotate] [blame] [check-ins using] [diff]
2022-04-25
13:09
Remove OFMemoryNotPartOfObjectException

It is no longer used. file: [fe35d606d6] check-in: [5ee9765356] user: js, branch: trunk, size: 27709 [annotate] [blame] [check-ins using] [diff]

2022-02-22
20:40
OFObject: Fix a missing free file: [8b7ed1ef23] check-in: [b695a7ad48] user: js, branch: trunk, size: 27754 [annotate] [blame] [check-ins using] [diff]
2022-02-12
07:46
Update copyright file: [c94b10de5b] check-in: [1a86b8175b] user: js, branch: trunk, size: 27732 [annotate] [blame] [check-ins using] [diff]
2022-01-29
19:24
Make ObjFW compile for MiNT file: [a515832382] check-in: [8d027eadf3] user: js, branch: trunk, size: 27732 [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: [77711da280] check-in: [3c88df0ce4] user: js, branch: amiga-library, size: 27791 [annotate] [blame] [check-ins using] [diff]

2021-05-02
09:25
A few more missed renames file: [4833385eee] check-in: [19236ddfe7] user: js, branch: trunk, size: 27704 [annotate] [blame] [check-ins using] [diff]
2021-04-30
21:23
Make OFHashSeed private file: [ec692d0b5b] check-in: [39863b3503] user: js, branch: trunk, size: 27704 [annotate] [blame] [check-ins using] [diff]
2021-04-25
11:05
A few last renames file: [63795ddfa3] check-in: [27103855c2] user: js, branch: new-naming-convention, size: 27641 [annotate] [blame] [check-ins using] [diff]
2021-04-18
23:41
of_memory_barrier -> OFMemoryBarrier file: [eafb73f421] check-in: [1cdf56dc9e] user: js, branch: new-naming-convention, size: 27641 [annotate] [blame] [check-ins using] [diff]
21:12
OF_RETAIN_COUNT_MAX -> OFMaxRetainCount file: [2194068b85] check-in: [b06b86d6f9] user: js, branch: new-naming-convention, size: 27647 [annotate] [blame] [check-ins using] [diff]
20:51
Rename everything in several smaller files file: [0448100f28] check-in: [35de667566] user: js, branch: new-naming-convention, size: 27650 [annotate] [blame] [check-ins using] [diff]
15:55
Rename all functions in macros.h file: [f6a82db0c8] check-in: [7392685ffc] user: js, branch: new-naming-convention, size: 27591 [annotate] [blame] [check-ins using] [diff]
13:24
Rename remaining functions in OFObject.h file: [5faecbc421] check-in: [d9f8960fc5] user: js, branch: new-naming-convention, size: 27591 [annotate] [blame] [check-ins using] [diff]
2021-04-17
22:45
Rename of_(re)alloc and add OFFreeMemory file: [540c546a9d] check-in: [498074dab9] user: js, branch: new-naming-convention, size: 27634 [annotate] [blame] [check-ins using] [diff]
20:47
Rename atomic operations file: [0c3d27624a] check-in: [dfaf287249] user: js, branch: new-naming-convention, size: 27567 [annotate] [blame] [check-ins using] [diff]
16:29
of_spinlock_t -> OFSpinlock file: [b4c19ab1e4] check-in: [fabf53041a] user: js, branch: new-naming-convention, size: 27563 [annotate] [blame] [check-ins using] [diff]
16:13
of_once_t -> OFOnceControl file: [2771fd68a5] check-in: [26aa88fc9b] user: js, branch: new-naming-convention, size: 27576 [annotate] [blame] [check-ins using] [diff]
02:10
of_string_encoding_t -> OFStringEncoding file: [8df21bda9c] check-in: [255f21fb3d] user: js, branch: new-naming-convention, size: 27564 [annotate] [blame] [check-ins using] [diff]
00:51
of_time_interval_t -> OFTimeInterval file: [9719883ec1] check-in: [8c0d76f782] user: js, branch: new-naming-convention, size: 27574 [annotate] [blame] [check-ins using] [diff]
2021-03-07
20:25
*.m: Fold methods into one line where it fits file: [ab465686e4] check-in: [1b82d3bf4f] user: js, branch: trunk, size: 27614 [annotate] [blame] [check-ins using] [diff]
2021-01-02
22:06
Update copyright file: [a0e6d07e6b] check-in: [27b401c7c2] user: js, branch: amiga-library, size: 27766 [annotate] [blame] [check-ins using] [diff]
22:04
Update copyright file: [cef279c6b0] check-in: [374e1a1bfa] user: js, branch: trunk, size: 27632 [annotate] [blame] [check-ins using] [diff]
2020-12-20
21:36
Merge trunk into branch "amiga-library" file: [779114b0ef] check-in: [90637a4ecc] user: js, branch: amiga-library, size: 27855 [annotate] [blame] [check-ins using] [diff]
21:26
Return error instead of using errno for threading

errno is problematic for Amiga libraries and is also not thread-safe on
some systems, even though it should. file: [d5d0a02ee8] check-in: [5b37fbeb82] user: js, branch: trunk, size: 27721 [annotate] [blame] [check-ins using] [diff]

2020-11-14
12:28
Merge trunk into branch "amiga-library" file: [7354b5ddd4] check-in: [a55863c2ed] user: js, branch: amiga-library, size: 27831 [annotate] [blame] [check-ins using] [diff]
12:23
Rename of_malloc and of_calloc

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

11:45
Merge trunk into branch "amiga-library" file: [4360aae9b1] check-in: [25a6c00b82] user: js, branch: amiga-library, size: 27826 [annotate] [blame] [check-ins using] [diff]
2020-11-07
20:23
OFObject: Remove -[allocMemoryWithSize:] file: [e2e795413b] check-in: [4fbdca698c] user: js, branch: trunk, size: 27692 [annotate] [blame] [check-ins using] [diff]
2020-11-05
02:35
Remove -[allocZeroedMemoryWithSize:]

This is no longer being used. file: [b6169ba098] check-in: [2bb3136a7f] user: js, branch: trunk, size: 31838 [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: [2cf6c520ad] check-in: [3d8286feee] user: js, branch: trunk, size: 32760 [annotate] [blame] [check-ins using] [diff]

2020-10-25
23:33
Add of_{malloc,calloc,realloc,free} file: [133c2d9091] check-in: [d0ae3bfd6c] user: js, branch: trunk, size: 32809 [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: [c2480d6470] check-in: [aeb403a1ed] user: js, branch: trunk, size: 31608 [annotate] [blame] [check-ins using] [diff]

2020-10-04
15:00
Merge trunk into branch "amiga-library" file: [567d4abd47] check-in: [92335940e9] user: js, branch: amiga-library, size: 31737 [annotate] [blame] [check-ins using] [diff]
2020-09-29
21:36
Merge support for tagged pointers file: [73163cea94] check-in: [b4039f9a85] user: js, branch: trunk, size: 31603 [annotate] [blame] [check-ins using] [diff]
2020-09-27
01:00
Don't assume arc4random_buf if we have arc4random file: [9fabb2395f] check-in: [9aa85c25b5] user: js, branch: trunk, size: 31458 [annotate] [blame] [check-ins using] [diff]
2020-07-12
18:00
Merge trunk into branch "tagged-pointers" file: [bf40f65e77] check-in: [aba47e526e] user: js, branch: tagged-pointers, size: 31599 [annotate] [blame] [check-ins using] [diff]
11:50
Obfuscate tagged pointers file: [a224615e89] check-in: [0bfac2b513] user: js, branch: tagged-pointers, size: 31510 [annotate] [blame] [check-ins using] [diff]
11:17
Fix missing include for getrandom() file: [37d44845c9] check-in: [ed7377d854] user: js, branch: trunk, size: 31454 [annotate] [blame] [check-ins using] [diff]
10:35
Split of_random() into of_random{16,32,64}() file: [f5834cd36c] check-in: [14f05841a3] user: js, branch: trunk, size: 31365 [annotate] [blame] [check-ins using] [diff]
10:00
Add support for getrandom() file: [d3c7a17532] check-in: [ba1135b0b2] user: js, branch: trunk, size: 30806 [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: [54579841e3] check-in: [c1fe4b2b77] user: js, branch: trunk, size: 30665 [annotate] [blame] [check-ins using] [diff]

2020-06-21
03:02
Add functions/variables for tests to Amiga library file: [99d327411f] check-in: [9937a79627] user: js, branch: amiga-library, size: 30201 [annotate] [blame] [check-ins using] [diff]
2020-01-02
22:16
Move autorelease pools to runtime file: [d6b3535b02] check-in: [f2fe8f96d5] user: js, branch: trunk, size: 30067 [annotate] [blame] [check-ins using] [diff]
01:51
Update copyright file: [b21ded3e9c] check-in: [c7f0229795] user: js, branch: trunk, size: 29972 [annotate] [blame] [check-ins using] [diff]
01:35
Move objc_{con,de}structInstance to runtime file: [6644c9c215] check-in: [7f1acf9221] user: js, branch: trunk, size: 29969 [annotate] [blame] [check-ins using] [diff]
2019-12-13
00:00
runtime: Add class_getInstanceMethod() file: [507689f6ed] check-in: [9e23a50de7] user: js, branch: trunk, size: 29990 [annotate] [blame] [check-ins using] [diff]
2019-12-08
21:51
runtime: Make methods opaque and provide an API file: [349b3d550a] check-in: [f310bcc3ff] user: js, branch: trunk, size: 30098 [annotate] [blame] [check-ins using] [diff]
2019-08-18
22:22
Optimize retain / release on AmigaOS file: [c440638f52] check-in: [fbe84dc674] user: js, branch: trunk, size: 31226 [annotate] [blame] [check-ins using] [diff]
2019-08-01
20:14
Split threading.[hm] into multiple files

This allows the runtime to only link against the parts it needs, without
pulling in unnecessary parts like thread spawning, TLS and conditions. file: [ea3b6b261c] check-in: [5358e9ea6a] user: js, branch: trunk, size: 30705 [annotate] [blame] [check-ins using] [diff]

2019-06-17
00:38
Remove underscores from library & framework names

This is more compatible with the various conventions used on various
systems. file: [9fed2e9f2d] check-in: [79fe29dbf4] user: js, branch: trunk, size: 30709 [annotate] [blame] [check-ins using] [diff]

2019-03-08
00:35
Use dot syntax file: [2b218f823b] check-in: [bceb7ed4c9] user: js, branch: trunk, size: 30710 [annotate] [blame] [check-ins using] [diff]
2019-02-07
21:31
More style improvements file: [edba45d06c] check-in: [754bf24742] user: js, branch: trunk, size: 30782 [annotate] [blame] [check-ins using] [diff]
00:46
Make style consistent between ObjFW and ObjFW_RT

ObjFW_RT used to be a separate project that followed the BSD style, as
it was written in pure C, while ObjFW's style is based on the BSD style
with changes to make it a better fit for Objective-C. This commit
changes ObjFW_RT to use the same style as ObjFW. file: [cd9c001f04] check-in: [ef6d69931e] user: js, branch: trunk, size: 30747 [annotate] [blame] [check-ins using] [diff]

2019-01-03
19:13
Update copyright file: [13c5a8d446] check-in: [0509d7a844] user: js, branch: trunk, size: 30737 [annotate] [blame] [check-ins using] [diff]
2018-07-28
18:45
Rename OFLocalization -> OFLocale file: [de9dc9587f] check-in: [aa0384d1bf] user: js, branch: trunk, size: 30731 [annotate] [blame] [check-ins using] [diff]
17:46
macros.h: Fix missing ) and #include file: [da61972c93] check-in: [d0b636d965] user: js, branch: trunk, size: 30754 [annotate] [blame] [check-ins using] [diff]
16:48
macros.h: Add of_random()

This does *NOT* provide cryptographically secure randomness! file: [c2001431e3] check-in: [a2a06d372a] user: js, branch: trunk, size: 30777 [annotate] [blame] [check-ins using] [diff]

2018-06-09
16:30
OFObject: Change one #else to #elif file: [f0155ad158] check-in: [745d514023] user: js, branch: trunk, size: 31182 [annotate] [blame] [check-ins using] [diff]
2018-06-03
23:31
Add -[OFObject allocZeroedMemoryWithSize:(count:)] file: [aff4f94d44] check-in: [aacb5897a0] user: js, branch: trunk, size: 31156 [annotate] [blame] [check-ins using] [diff]
2018-04-22
17:48
Make ObjFW compile for AmigaOS 3 file: [de528ece86] check-in: [0b07c8fcfa] user: js, branch: trunk, size: 30364 [annotate] [blame] [check-ins using] [diff]
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: [678b6e28e1] check-in: [fe2cbe0021] user: js, branch: trunk, size: 30347 [annotate] [blame] [check-ins using] [diff]

2018-02-25
04:21
OFObject: Bring +[new] back file: [4583da4a4e] check-in: [d6bf2b12dd] user: js, branch: trunk, size: 30347 [annotate] [blame] [check-ins using] [diff]
2018-01-21
22:16
Allow building the runtime as a .framework

This also renames ObjFW-RT to ObjFW_RT, as hyphens should not be in
framework names. file: [cc8b3ee1a4] check-in: [0f42b0eafd] user: js, branch: trunk, size: 30293 [annotate] [blame] [check-ins using] [diff]

2018-01-03
19:49
Update copyright notice file: [27d4e83713] check-in: [7e5c81e186] user: js, branch: trunk, size: 30293 [annotate] [blame] [check-ins using] [diff]
2017-11-19
13:14
Remove +[OFObject new] file: [22261c0609] check-in: [c03aab9c8c] user: js, branch: trunk, size: 30270 [annotate] [blame] [check-ins using] [diff]
2017-11-11
23:27
Small optimization for -[isEqual:] file: [e04ae60642] check-in: [526feacebc] user: js, branch: trunk, size: 30324 [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: [fdaee34133] check-in: [2f4e0df8be] user: js, branch: trunk, size: 30324 [annotate] [blame] [check-ins using] [diff]

2017-10-01
14:14
Backport nullability fixes from master file: [4d9911935a] check-in: [f37b373a95] user: js, branch: 0.90, size: 25194 [annotate] [blame] [check-ins using] [diff]
14:05
Disable -Wnullable-to-nonnull-conversion again

It does not work well enough yet: While creating a lot of noise, it
fails to even find many of the obvious cases. Depending on the static
analyzer seems to be the better approach for now. file: [d94672b28e] check-in: [e47c219327] user: js, branch: trunk, size: 30202 [annotate] [blame] [check-ins using] [diff]

09:54
Nullability fixes for ObjFW runtime file: [b2d94e1a72] check-in: [5882409fd0] user: js, branch: trunk, size: 30271 [annotate] [blame] [check-ins using] [diff]
09:28
Nullability fixes for macOS High Sierra file: [d1b883cd1d] check-in: [166fd50e82] user: js, branch: trunk, size: 30267 [annotate] [blame] [check-ins using] [diff]
2017-09-27
22:38
More nullability fixes file: [6217c47a34] check-in: [6b66bda9eb] user: js, branch: 0.90, size: 25218 [annotate] [blame] [check-ins using] [diff]
22:35
More nullability fixes file: [d351e409b9] check-in: [697e3ecbf7] user: js, branch: trunk, size: 30048 [annotate] [blame] [check-ins using] [diff]
2017-09-25
00:02
OFObject: Add -[performSelector*] with 4 objects file: [34872d52d4] check-in: [f714793eb4] user: js, branch: trunk, size: 30032 [annotate] [blame] [check-ins using] [diff]
2017-09-24
02:11
OFObject: Add -[performSelector*] with 3 objects file: [ca49ba5cd2] check-in: [9f1accca4e] user: js, branch: trunk, size: 27268 [annotate] [blame] [check-ins using] [diff]
2017-09-09
22:03
Replace type encodings with OFMethodSignature file: [958e60e586] check-in: [55f1b21ae7] user: js, branch: trunk, size: 24770 [annotate] [blame] [check-ins using] [diff]
2017-07-09
15:29
runtime: Rename include to ObjFW-RT.h file: [c072b00a16] check-in: [5bb771755d] user: js, branch: trunk, size: 25202 [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: [a3ec40e380] check-in: [012c6b5786] user: js, branch: trunk, size: 25201 [annotate] [blame] [check-ins using] [diff]

2017-05-13
20:11
OFObject: Make Foundation check work on macOS 10.5 file: [a28a9b391e] check-in: [9f9898eb8b] user: js, branch: trunk, size: 25207 [annotate] [blame] [check-ins using] [diff]
19:51
Make Apple GCC happy file: [43cde2e0c7] check-in: [7e8ee9b1f9] user: js, branch: trunk, size: 25206 [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: [3eb86842c6] check-in: [4af49a13c3] user: js, branch: trunk, size: 25251 [annotate] [blame] [check-ins using] [diff]

15:39
Do not include any addresses in -[description]

This makes it harder to accidentally leak addresses which could be used
to defeat ASLR. file: [3768fd3a96] check-in: [7c2a0dda3d] user: js, branch: trunk, size: 25183 [annotate] [blame] [check-ins using] [diff]

2017-04-13
13:30
-[OFObject release]: Add memory barriers file: [8d7351b7a0] check-in: [05e2b4b851] user: js, branch: trunk, size: 25193 [annotate] [blame] [check-ins using] [diff]
2017-04-02
02:02
Add OF_WEAK_REF() file: [349066991f] check-in: [126632e200] user: js, branch: trunk, size: 25125 [annotate] [blame] [check-ins using] [diff]
2017-02-03
22:42
Improve -[OFObject hash]

This shifted the wrong way, and there's also no point in not hashing
over the entire address. file: [21ee30041a] check-in: [a55371e2c9] user: js, branch: trunk, size: 25107 [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: [b658da002c] check-in: [44f45c2e35] user: js, branch: trunk, size: 25083 [annotate] [blame] [check-ins using] [diff]

06:26
Add OFLocalization

This singleton gives access to all things locale, including the ability
to get localized strings.

This also adds the OF_LOCALIZED() macro. Its first argument is an ID for
the string to be localized and its second argument is the fallback
string to be used if it cannot retrieve the localized string. Following
that are variable name / value pairs to be replaced in the localized
string.

Getting translated strings is not implemented yet: Instead, it always
uses the fallback string.

This also switches ofhttp to localized strings. file: [f695ac4fbd] check-in: [06bcb21fc7] user: js, branch: trunk, size: 25077 [annotate] [blame] [check-ins using] [diff]

2016-10-15
20:47
Use NSFoundationVersionNumber to detect Foundation

This is more reliable than checking for CFRetain to see if
CoreFoundation is linked, as CFRetain is always available, even when not
linked against CoreFoundation explicitly. file: [f0a708441f] check-in: [ccd504e68d] user: js, branch: trunk, size: 25091 [annotate] [blame] [check-ins using] [diff]

2016-10-08
15:57
Never override CoreFoundations's forward handler

If an application links ObjFW and (Core)Foundation, overriding
CoreFoundation's forward handler breaks things.

Before this commit, this only worked depending on the load order: If
ObjFW was loaded first, everything was fine, as CoreFoundation would
just override ObjFW's forward handler. However, if CoreFoundation would
be loaded first, ObjFW would override CoreFoundation's forward handler
and break CoreFoundation. file: [efb4532301] check-in: [c70fd7d7f3] user: js, branch: trunk, size: 25049 [annotate] [blame] [check-ins using] [diff]

15:57
Explicitly cast objc_msgSend file: [a2a40a09cb] check-in: [bc64c479a8] user: js, branch: trunk, size: 24592 [annotate] [blame] [check-ins using] [diff]
2016-07-04
19:36
Remove check for objc_enumerationMutation

Every supported runtime has it, so there is no point in having it.
(The ObjFW runtime has it and the Apple runtime has it since the one
shipped with OS X 10.5. No earlier Apple runtime is supported anyway.) file: [f36c1920e5] check-in: [32d092b9ba] user: js, branch: trunk, size: 24552 [annotate] [blame] [check-ins using] [diff]

2016-07-03
12:01
runtime: Add objc_enumerationMutation()

This was provided by OFObject before, but should actually be provided by
the runtime, as the compiler can generate code calling into it. file: [d472a9075a] check-in: [5e267364ae] user: js, branch: trunk, size: 24795 [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: [8d3755fc71] check-in: [3ad1f2b268] user: js, branch: trunk, size: 24724 [annotate] [blame] [check-ins using] [diff]

2016-05-29
00:42
Add -[{allows,retain}WeakReference] to OFObject

This is required by the Apple runtime to support weak references. file: [980b1c8958] check-in: [1d57af4a31] user: js, branch: trunk, size: 24683 [annotate] [blame] [check-ins using] [diff]

2016-05-28
11:37
Add a reference to OFStdIOStream_Win32Console

This is required for static linking, as otherwise
+[OFStdIOStream_Win32Console load] will not be called. file: [e954270f26] check-in: [e53a4fd61c] user: js, branch: trunk, size: 24572 [annotate] [blame] [check-ins using] [diff]

2016-05-06
20:39
Enable -Wsign-compare file: [bfe47061e0] check-in: [2a2e17d8d0] user: js, branch: trunk, size: 24572 [annotate] [blame] [check-ins using] [diff]
2016-03-28
23:43
Style consistency changes

Multiline preprocessor directives now always indent the continued lines
by 4 spaces. The only exception are defines that define to code blocks:
Those are still indented by a tab in order to align with the rest of the
code. file: [110335b983] check-in: [543eb96c02] user: js, branch: trunk, size: 24554 [annotate] [blame] [check-ins using] [diff]

2016-02-21
15:37
Make use of C99-style for loops file: [6e92aa6c33] check-in: [e0b9167693] user: js, branch: trunk, size: 24548 [annotate] [blame] [check-ins using] [diff]
2016-01-03
00:43
Update copyright

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

00:41
Update copyright

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

2015-10-19
22:15
Add platform.h & make platform defines consistent file: [fa72960651] check-in: [1ba08eebc5] user: js, branch: trunk, size: 24529 [annotate] [blame] [check-ins using] [diff]
2015-08-26
08:50
Make sure of_hash_seed is never initialized to 0

of_hash_seed == 0 is special, as it means to OFMapTable to behave
deterministically (which is required for the tests, for example) and not
do any random per-hashtable rotating on the hash. The random rotation
improves resistance against hash collision DoS attacks, so if the random
seed happens to be 0, it would disable that rotation unintentionally,
thus it's better to get a new random seed if it is 0. file: [920a5b1adb] check-in: [50e4ae0716] user: js, branch: trunk, size: 24525 [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: [8a0142f57a] check-in: [ffb39d1df6] user: js, branch: trunk, size: 24459 [annotate] [blame] [check-ins using] [diff]

2015-02-01
00:47
Reduce code size for OF_UNRECOGNIZED_SELECTOR file: [11cea8a285] check-in: [e0c84651d6] user: js, branch: trunk, size: 24449 [annotate] [blame] [check-ins using] [diff]
2015-01-03
20:57
Update copyright file: [b4471e2926] check-in: [cfd374b906] user: js, branch: trunk, size: 24423 [annotate] [blame] [check-ins using] [diff]
2014-10-04
21:59
Add +[OFSystemInfo native8BitEncoding]

This replaces +[OFString nativeOSEncoding]. file: [da02b5a0e1] check-in: [ec66e49dca] user: js, branch: trunk, size: 24417 [annotate] [blame] [check-ins using] [diff]

2014-08-23
01:01
Make ObjFW.framework a module

This makes it possible to import ObjFW from Swift. file: [d6054ff862] check-in: [c8a562d8d7] user: js, branch: trunk, size: 24356 [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: [dcda168113] check-in: [13ee56edf3] user: js, branch: trunk, size: 24172 [annotate] [blame] [check-ins using] [diff]

2014-05-15
15:32
Multiple dtable / sparse array improvements

* dtable.m is now the old sparse array, using IMP as type for values and
thus not violating the C standard anymore (functions may not be stored
in void*)
* New sparsearray.m which can work with any size, based on the sparse
array from the fast path of class.m
* Fast path of class.m now uses the new sparsearray.m file: [31f7e1ca7d] check-in: [1ebb9eb7b3] user: js, branch: trunk, size: 24216 [annotate] [blame] [check-ins using] [diff]

15:17
Work around Apple's API breaking the C standard file: [a836174d3d] check-in: [469553637d] user: js, branch: trunk, size: 24106 [annotate] [blame] [check-ins using] [diff]
01:50
Don't define _*_SOURCE

Instead, just define _GNU_SOURCE when __GLIBC__ is defined. After all,
that's the only libc that doesn't work properly without any defines. file: [0c79230d37] check-in: [17be12b6e5] user: js, branch: trunk, size: 24090 [annotate] [blame] [check-ins using] [diff]

2014-05-05
01:08
Improve atomics API file: [e8aca19951] check-in: [a92844520a] user: js, branch: trunk, size: 24111 [annotate] [blame] [check-ins using] [diff]
2014-03-30
00:30
ObjFW-RT: Call +[unload] on class unregister file: [f3bed53382] check-in: [1ecef2d7f6] user: js, branch: trunk, size: 24113 [annotate] [blame] [check-ins using] [diff]
2014-02-13
23:26
Use -std=c11 instead of -std=gnu11

Not using -std=gnu11 means _GNU_SOURCE does not get defined anymore,
therefore this commit also adds the required feature defines for glibc.

Additionally, this adds of_strdup in macros.h, as strdup is an
extension. file: [f4d9610474] check-in: [2f5af58573] user: js, branch: trunk, size: 24093 [annotate] [blame] [check-ins using] [diff]

2014-01-16
23:38
Add +[OFString nativeOSEncoding].

This replaces OF_STRING_ENCODING_NATIVE, as a define was not flexible
enough (determining the native OS encoding at startup was not possible). file: [ca87b4ce10] check-in: [e54c8c0368] user: js, branch: trunk, size: 24072 [annotate] [blame] [check-ins using] [diff]

23:09
Add of_time_interval_t.

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

2014-01-12
23:38
Add -[superclass] to OFObject protocol. file: [3b4e65cff2] check-in: [4c6d9b7c1b] user: js, branch: trunk, size: 23996 [annotate] [blame] [check-ins using] [diff]
2014-01-04
00:24
Update copyright. file: [c604df4ce7] check-in: [3b97fc3cd9] user: js, branch: trunk, size: 23919 [annotate] [blame] [check-ins using] [diff]
2013-12-27
02:07
Rework forwarding API and ABI.

It matches the Apple API and ABI now and the forwarding handler itself
determines whether it should forward or not.

This moves handling of +[resolve{Class,Instance}Method:] to the runtime
and allows adding new kinds of forwarding without changing the runtime.

Also fixes a potential stack problem in the forwarding for MIPS. file: [a55f4922cc] check-in: [0c332aa2d2] user: js, branch: trunk, size: 23913 [annotate] [blame] [check-ins using] [diff]

2013-12-21
12:58
-[performSelector:]: Use the normal dispatch.

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

2013-12-20
00:14
runtime: More consistency in the API. file: [9bd5d20560] check-in: [2dec88a9d5] user: js, branch: trunk, size: 25572 [annotate] [blame] [check-ins using] [diff]
2013-12-15
18:11
Silence a few of Clang Analyzer's false positives. file: [704b6761d2] check-in: [d0b98b417d] user: js, branch: trunk, size: 25562 [annotate] [blame] [check-ins using] [diff]
2013-12-07
17:30
macros.h: Add OF_BIGGEST_ALIGNMENT.

When the compiler supports C11, _Alignof(max_align_t) is used; otherwise
the __BIGGEST_ALIGNMENT__ define is tried with a fallback to 16. file: [fcedcc72d4] check-in: [fdfb2be253] user: js, branch: trunk, size: 25514 [annotate] [blame] [check-ins using] [diff]

2013-12-05
17:48
Make coding style consistent.

A file documenting the coding style will be written soon. This will
hopefully prevent conflicts in the future, such as whether static
functions are written in camelCase or_with_underscores, like was the
case here. file: [585ebe6665] check-in: [fa6496efc7] user: js, branch: trunk, size: 25518 [annotate] [blame] [check-ins using] [diff]

2013-11-23
01:27
Add OF_UNRECOGNIZED_SELECTOR. file: [7af9301010] check-in: [6e19bd47ee] user: js, branch: trunk, size: 25551 [annotate] [blame] [check-ins using] [diff]
2013-11-22
23:24
runtime: Add support for non-fragile ivars. file: [8e2d9bc735] check-in: [3780f1462e] user: js, branch: trunk, size: 25719 [annotate] [blame] [check-ins using] [diff]
2013-08-12
21:59
OFZIPArchive: Initial implementation.

Still a lot to do, see list of FIXMEs in the source. file: [5387ac3c3a] check-in: [1c78b3a4db] user: js, branch: trunk, size: 25719 [annotate] [blame] [check-ins using] [diff]

2013-07-27
17:38
Fix a typo. file: [1d6bb87b12] check-in: [405731e798] user: js, branch: trunk, size: 25736 [annotate] [blame] [check-ins using] [diff]
2013-07-26
15:21
Add support for objc_msg_lookup_stret.

The assembly implementations of the lookup and forwarding still need to
be adjusted. Those just alias to the non-stret version for now so that
linking works, meaning the behaviour is still the same as without
support for objc_msg_lookup_stret for now. file: [7eff738717] check-in: [9713ad857d] user: js, branch: trunk, size: 25727 [annotate] [blame] [check-ins using] [diff]

2013-07-23
22:48
Allow classes in collections requiring OFCopying. file: [fd13e3d461] check-in: [7992490163] user: js, branch: trunk, size: 25714 [annotate] [blame] [check-ins using] [diff]
2013-06-22
12:12
Rework exceptions.

This mostly removes the argument for the class in which the exception
occurred. As backtraces were recently added for all platforms, the
passed class does not give any extra information on where the exception
occurred anymore.

This also removes a few other arguments which were not too helpful. In
the past, the idea was to pass as many arguments as possible so that it
is easier to find the origin of the exception. However, as backtraces
are a much better way to find the origin, those are not useful anymore
and just make the exception more cumbersome to use. The rule is now to
only pass arguments that might help in recovering from the exception or
provide information that is otherwise not easily accessible. file: [87e58e39d7] check-in: [3d16a30f41] user: js, branch: trunk, size: 25771 [annotate] [blame] [check-ins using] [diff]

2013-06-18
21:37
Make more use of OF_STRING_ENCODING_NATIVE. file: [22ddb06ede] check-in: [7c7187345a] user: js, branch: trunk, size: 25949 [annotate] [blame] [check-ins using] [diff]
2013-05-22
21:09
Show a backtrace for uncaught exceptions. file: [8d2c38124f] check-in: [32230a1615] user: js, branch: trunk, size: 25813 [annotate] [blame] [check-ins using] [diff]
18:45
Import OFThread.h unconditionally.

It's safe to always import OFThread.h now as OFThread even offers
limited functionality when threads are unavailable. file: [6f6ec3f922] check-in: [d7365be372] user: js, branch: trunk, size: 25532 [annotate] [blame] [check-ins using] [diff]

2013-04-07
21:21
Fix Win32 #include hell. file: [51f9346050] check-in: [ec6b265428] user: js, branch: trunk, size: 25593 [annotate] [blame] [check-ins using] [diff]
2013-03-16
10:13
Add forwardingTargetForSelector: for AMD64/ELF.

Currently, no methods returning structs are supported, see the comment
in OFObject. file: [6922597523] check-in: [5a6cc94418] user: js, branch: trunk, size: 25593 [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: [2d5ba7013a] check-in: [c5ef582958] user: js, branch: trunk, size: 24893 [annotate] [blame] [check-ins using] [diff]

2013-02-18
10:38
Add -[OFDataArray initWithItemSize:capacity:]. file: [68901c9b91] check-in: [e403ca05cb] user: js, branch: trunk, size: 24834 [annotate] [blame] [check-ins using] [diff]
2013-01-22
02:31
OFStream: Add property for writeBufferEnabled.

This also renames the getter to -[isWriteBufferEnabled]. file: [9691c753e2] check-in: [b96b150ce3] user: js, branch: trunk, size: 24848 [annotate] [blame] [check-ins using] [diff]

2013-01-14
23:22
OFObject: Cosmetic changes. file: [4617a114d5] check-in: [6d438629e2] user: js, branch: trunk, size: 24961 [annotate] [blame] [check-ins using] [diff]
2013-01-12
20:53
Clean up the feature #ifdef mess. file: [c05874ae6f] check-in: [b8ce2359f3] user: js, branch: trunk, size: 24921 [annotate] [blame] [check-ins using] [diff]
20:32
Fix code used when atomic ops are unavailable. file: [1c57171d5d] check-in: [20aea410be] user: js, branch: trunk, size: 25010 [annotate] [blame] [check-ins using] [diff]
20:21
Fix --disable-threads. file: [431202d1e9] check-in: [85b8efadbc] user: js, branch: trunk, size: 25011 [annotate] [blame] [check-ins using] [diff]
17:29
Rename *UsingEncoding: to *WithEncoding:.

This reverts 5362941.

Even though *UsingEncoding: is what Foundation uses, *WithEncoding: is
more natural and is more consistent with the rest. Also, this means this
restores it to the API of 0.7. file: [f14f82d06a] check-in: [9ddd33a258] user: js, branch: trunk, size: 24960 [annotate] [blame] [check-ins using] [diff]

2013-01-09
22:24
Update copyright. file: [4e3a5a961f] check-in: [813c00ccf0] user: js, branch: trunk, size: 24961 [annotate] [blame] [check-ins using] [diff]
2012-12-30
00:19
-[performSelector:]: Never call NULL.

When the selector is not recognized, call -[doesNotRecognizeSelector:]. file: [2afc930247] check-in: [0389649320] user: js, branch: trunk, size: 24955 [annotate] [blame] [check-ins using] [diff]

2012-12-26
14:10
Add OFSystemInfo. file: [6afd10fb87] check-in: [4b637f8516] user: js, branch: trunk, size: 24727 [annotate] [blame] [check-ins using] [diff]
2012-12-22
15:37
Add -[doesNotRecognizeSelector:]. file: [23e21a638e] check-in: [917ce5754c] user: js, branch: trunk, size: 25343 [annotate] [blame] [check-ins using] [diff]
14:41
Never throw in -[typeEncodingForSelector:]. file: [9c302a662d] check-in: [77573bf01f] user: js, branch: trunk, size: 25586 [annotate] [blame] [check-ins using] [diff]
2012-12-15
23:31
OFString: Improved API for getting C strings. file: [5c04a02683] check-in: [e2f4c1283c] user: js, branch: trunk, size: 26136 [annotate] [blame] [check-ins using] [diff]
2012-12-12
18:40
Coding style. file: [517d28e9f2] check-in: [6ad5d3d8d6] user: js, branch: trunk, size: 26135 [annotate] [blame] [check-ins using] [diff]
2012-12-07
13:57
Revert several OFHashMap related commits.

This reverts:
* "Add a per-hashtable seed."
(cd49c7fcb4b8dca62dccdbf6545d37d86b639eef)
* "OFMapTable: Reseed on resize."
(5b545165691cd9ad838c9125b02ff7c857bd4b99)
* "Add of_random()."
(9810f191b4e8c1612e7e55095c87e589660fbdba)
* "OFMapTable: Rotate hash by a random number of bits"
(3bef412217232d01f202794f7175c130afa1df8f)

It turned out that these were slowing down all classes based on
OFHashMap significantly. As there is still no proof that the seeded
one-at-a-time hash is vulnerable to DoS, these changes were overly
paranoid. While overly paranoid is usually ok, it is not if it severely
impacts performance. file: [ce3e8ba58d] check-in: [6712442fad] user: js, branch: trunk, size: 26100 [annotate] [blame] [check-ins using] [diff]

2012-12-06
21:17
Fix Clang warnings and a typo. file: [0307a15aa9] check-in: [31d023e401] user: js, branch: trunk, size: 26283 [annotate] [blame] [check-ins using] [diff]
11:00
Add of_random(). file: [af5fd55d36] check-in: [f675979cf0] user: js, branch: trunk, size: 26251 [annotate] [blame] [check-ins using] [diff]
00:14
Improve -[hash] of OFNumber and OFObject. file: [e989a30df6] check-in: [ac51f5f0cf] user: js, branch: trunk, size: 25972 [annotate] [blame] [check-ins using] [diff]
2012-12-04
09:19
Randomize hashes.

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

2012-11-28
19:27
Remove broken forwarding target for ObjFW-RT.

While it calls the correct method, it does not pass the correct object
to that code. This would need a trampoline that replaces the object,
written in assembly for each platform. Therefore, it will be only
available for some platforms later and the broken code will not come
back. file: [2f06cacc09] check-in: [53defb95a9] user: js, branch: trunk, size: 25492 [annotate] [blame] [check-ins using] [diff]

2012-11-26
23:19
Implement forwarding target for Apple/ARM. file: [dfed8e0734] check-in: [5927b80b4e] user: js, branch: trunk, size: 25770 [annotate] [blame] [check-ins using] [diff]
2012-11-17
18:23
Implement forwarding target for Apple/PPC. file: [80381fd262] check-in: [95850c4572] user: js, branch: trunk, size: 25866 [annotate] [blame] [check-ins using] [diff]
2012-11-16
23:07
Implement forwarding target for Apple/i386. file: [62c904a387] check-in: [1ec18e57bc] user: js, branch: trunk, size: 25826 [annotate] [blame] [check-ins using] [diff]
21:16
Implement forwarding target for the Apple runtime.

Only on x86_64 so far, others to follow. file: [43abec3b5d] check-in: [2b20e164d7] user: js, branch: trunk, size: 25774 [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: [4b4eff1419] check-in: [d3a2e59414] user: js, branch: trunk, size: 25411 [annotate] [blame] [check-ins using] [diff]

2012-10-21
22:12
Make GCC 4.4 happy. file: [130a752ea7] check-in: [fcade8da38] user: js, branch: trunk, size: 25155 [annotate] [blame] [check-ins using] [diff]
2012-10-10
10:16
Provide objc_constructInstance() when necessary.

OS X < 10.6 did not have it, so it is built regardless of the selected
runtime now if objc_constructInstance() hasn't been found. file: [b2fb1a5ccb] check-in: [16ba7ec477] user: js, branch: trunk, size: 25178 [annotate] [blame] [check-ins using] [diff]

2012-09-17
10:18
Add -[performSelectorOnMainThread:waitUntilDone:]. file: [36829d1a67] check-in: [e959c99f85] user: js, branch: trunk, size: 25157 [annotate] [blame] [check-ins using] [diff]
09:30
Simplify autoreleasing. file: [13e68b8637] check-in: [c9bea2982f] user: js, branch: trunk, size: 23845 [annotate] [blame] [check-ins using] [diff]
2012-09-16
22:31
Add -[performSelector:onThread:waitUntilDone:]. file: [5b25661283] check-in: [e9cbd5e12a] user: js, branch: trunk, size: 23838 [annotate] [blame] [check-ins using] [diff]
22:16
Make sure an autorelease pool is always in place. file: [5eddd9378d] check-in: [cc9601c228] user: js, branch: trunk, size: 22484 [annotate] [blame] [check-ins using] [diff]
21:59
Make it possible to invalidate OFTimers. file: [2de861858b] check-in: [8658d1a22a] user: js, branch: trunk, size: 22467 [annotate] [blame] [check-ins using] [diff]
13:23
Add -[performSelector:onThread:afterDelay:]. file: [91d44503b0] check-in: [4fd5559652] user: js, branch: trunk, size: 22469 [annotate] [blame] [check-ins using] [diff]
2012-09-14
06:09
Add -[OFObject performSelector:afterDelay:]. file: [6a36e235dc] check-in: [5e067285c8] user: js, branch: trunk, size: 21260 [annotate] [blame] [check-ins using] [diff]
2012-09-11
14:20
Add missing abort to uncaught_exception_handler. file: [9817511d97] check-in: [e58bcdedb5] user: js, branch: trunk, size: 20281 [annotate] [blame] [check-ins using] [diff]
2012-09-06
19:13
Add objc_{construct,destruct}Instance(). file: [2f8b3fda71] check-in: [20c584252c] user: js, branch: trunk, size: 20271 [annotate] [blame] [check-ins using] [diff]
2012-08-10
20:08
Directly use the runtime's autorelease pools.

This greatly improves performance, as it gets rid of the overhead of
OFAutoreleasePool. file: [b19596ca32] check-in: [1255f3a11a] user: js, branch: trunk, size: 21277 [annotate] [blame] [check-ins using] [diff]

2012-08-04
08:29
Replace a few init methods with constructors. file: [ef2b5b53fe] check-in: [c34d45798b] user: js, branch: trunk, size: 21507 [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: [6f60ff9dfc] check-in: [285e1138bc] user: js, branch: trunk, size: 21860 [annotate] [blame] [check-ins using] [diff]

2012-07-16
23:49
Add OF_ENSURE.

This is to be used when the condition includes a statement that needs to
be executed, as with assert, this would not be executed anymore when
NDEBUG is defined. file: [8f2badf8fb] check-in: [417b213d41] user: js, branch: trunk, size: 20376 [annotate] [blame] [check-ins using] [diff]

22:44
Don't require extra parentheses for OF_(UN)LIKELY. file: [edc6b04857] check-in: [ff8b2a6c29] user: js, branch: trunk, size: 20364 [annotate] [blame] [check-ins using] [diff]
2012-07-15
00:54
Fix a memory leak. file: [d6164e1afa] check-in: [f772f8c188] user: js, branch: trunk, size: 20037 [annotate] [blame] [check-ins using] [diff]
2012-07-14
20:00
New autorelease pools.

This uses the runtime's autorelease pools and implements autorelease
pools in the ObjFW runtime. It therefore uses ObjFW's autorelease pools
when using the ObjFW runtime and Apple's autorelease pools when using
the Apple runtime.

These new pools should be ARC-compatible now and finally, it should be
possible to mix OFAutoreleasePools and NSAutoreleasePools again, even
@autoreleasepool is allowed in the mix now. This also means the old
bridge to NSAutoreleasePool should not be required anymore, as both use
the runtime's autorelease pools now.

As a bonus, it's significantly faster to use the ObjFW runtime with
ObjFW's autorelease pools than to use Apple's runtime with Apple's
autorelease pools, as a quick benchmark using OFXMLParser on large files
showed. (Note: This is not only due to the different autorelease pools,
but also due to the fact that even with the same autorelease pools it is
faster using the ObjFW runtime, as can be seen in versions prior to this
commit.) file: [d5e3e3b36f] check-in: [f5927f8a84] user: js, branch: trunk, size: 19973 [annotate] [blame] [check-ins using] [diff]

2012-07-12
01:28
Don't access isa directly. file: [470fa11181] check-in: [8892ae9fcc] user: js, branch: trunk, size: 19981 [annotate] [blame] [check-ins using] [diff]
2012-07-11
13:56
Get the number of CPUs on QNX. file: [64a1864a0a] check-in: [3d1d05df3c] user: js, branch: trunk, size: 19696 [annotate] [blame] [check-ins using] [diff]
08:38
Only use _SC_* if defined. file: [fd16b773e1] check-in: [a3dcdac0b8] user: js, branch: trunk, size: 19516 [annotate] [blame] [check-ins using] [diff]
2012-07-03
15:44
runtime: Add exception handling. file: [a5886ec856] check-in: [a230197b48] user: js, branch: runtime, size: 19509 [annotate] [blame] [check-ins using] [diff]
2012-06-11
20:50
Merge branch 'master' into runtime

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

2012-06-10
13:28
More API improvements. file: [7124c4f433] check-in: [11d3d69a22] user: js, branch: trunk, size: 24924 [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: [71be745647] check-in: [050ac82798] user: js, branch: runtime, size: 19571 [annotate] [blame] [check-ins using] [diff]

13:47
Slightly change the memory management API.

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

2012-04-03
18:30
Make clang happy. file: [26d577e585] check-in: [931a8783ca] user: js, branch: runtime, size: 19547 [annotate] [blame] [check-ins using] [diff]
2012-03-23
14:54
Add class_getMethodImplementation(). file: [946762df81] check-in: [46105d56c7] user: js, branch: runtime, size: 19537 [annotate] [blame] [check-ins using] [diff]
12:59
Move objc_{properties,sync} to runtime. file: [99d74c377b] check-in: [adbce6d8f4] user: js, branch: runtime, size: 19714 [annotate] [blame] [check-ins using] [diff]
12:04
Merge branch 'master' into runtime file: [97e6d3c1aa] check-in: [3719e10281] user: js, branch: runtime, size: 19801 [annotate] [blame] [check-ins using] [diff]
10:45
Add a cast to make Clang happy. file: [6045fcc9af] check-in: [2179411c60] user: js, branch: runtime, size: 20232 [annotate] [blame] [check-ins using] [diff]
2012-03-21
14:47
OFObject: Use owner as a sentinel for pre_mem. file: [708e72ca3d] check-in: [ce1c7fe940] user: js, branch: trunk, size: 24982 [annotate] [blame] [check-ins using] [diff]
2012-03-17
15:12
Add of_alloc_object(). file: [0df01667b3] check-in: [e7d16fea58] user: js, branch: trunk, size: 24819 [annotate] [blame] [check-ins using] [diff]
14:26
Move definition of __BIGGEST_ALIGNMENT__ to macros.h. file: [ffa19d5312] check-in: [2d4a63cfcb] user: js, branch: trunk, size: 24165 [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: [329e3b32bd] check-in: [28170f5f65] user: js, branch: trunk, size: 24294 [annotate] [blame] [check-ins using] [diff]

2012-03-13
20:19
Add of_num_cpus. file: [eb1f0d3652] check-in: [5a7c58ec98] user: js, branch: trunk, size: 25566 [annotate] [blame] [check-ins using] [diff]
2012-03-06
16:53
Implement +[OFObject inheritMethodsFromClass:] for the ObjFW runtime. file: [cb4e4e0941] check-in: [54c4df2021] user: js, branch: runtime, size: 20236 [annotate] [blame] [check-ins using] [diff]
16:31
Merge changes from default branch into runtime branch. file: [5440e87ac8] check-in: [9bb186a7a3] user: js, branch: runtime, size: 19245 [annotate] [blame] [check-ins using] [diff]
16:17
Clean up the method replacement mess. file: [836c79ac97] check-in: [2d08ba105c] user: js, branch: trunk, size: 25413 [annotate] [blame] [check-ins using] [diff]
00:13
Init C++ ctors in -[init] instead of +[alloc]. file: [fc6752589f] check-in: [9767602af7] user: js, branch: trunk, size: 29411 [annotate] [blame] [check-ins using] [diff]
2012-03-04
19:42
Remove all code for the GNU runtime. file: [ad59fef6e2] check-in: [7f0b0c9811] user: js, branch: runtime, size: 21435 [annotate] [blame] [check-ins using] [diff]
19:28
Change includes of objfw-rt.h to include local runtime.h. file: [1328998492] check-in: [1664513cf6] user: js, branch: runtime, size: 29447 [annotate] [blame] [check-ins using] [diff]
2012-02-27
22:11
Add -[OFObject isMemberOfClass:] and -[OFObject isProxy]. file: [76ac8473f2] check-in: [8830166fe8] user: js, branch: trunk, size: 29448 [annotate] [blame] [check-ins using] [diff]
2012-01-05
00:56
Update copyright. file: [0093660075] check-in: [ce70e17b38] user: js, branch: trunk, size: 29348 [annotate] [blame] [check-ins using] [diff]
2012-01-03
20:44
Don't use objc_setUncaughtExceptionHandler with the old Apple runtime. file: [e021a66494] check-in: [138d928621] user: js, branch: trunk, size: 29342 [annotate] [blame] [check-ins using] [diff]
2012-01-01
19:41
Some MinGW versions are missing alloca() in <stdlib.h>. file: [066d7adb4c] check-in: [d871468a3a] user: js, branch: trunk, size: 29295 [annotate] [blame] [check-ins using] [diff]
2011-12-23
03:07
Add an uncaught exception handler for the Apple & new GNU runtime. file: [f8865835bf] check-in: [40c0aba35e] user: js, branch: trunk, size: 29295 [annotate] [blame] [check-ins using] [diff]
2011-12-13
13:43
Work around a bug affecting only Clang 2.9 + libobjc from GCC 4.6. file: [f6fefc29fd] check-in: [0c427ebb0a] user: js, branch: trunk, size: 28862 [annotate] [blame] [check-ins using] [diff]
2011-10-24
15:00
Don't use a spinlock for reference counting if we have no threads. file: [34b558d1e8] check-in: [9454c38313] user: js, branch: trunk, size: 28012 [annotate] [blame] [check-ins using] [diff]
2011-09-22
23:25
Exceptions are now autoreleased.

This is safe as an "exception loop" can't happen, since if allocating
an exception fails, it throws an OFAllocFailedException which is
preallocated and can always be thrown.

So, the worst case would be that an autorelease of an exception fails,
triggering an OFOutOfMemoryException for which there is no memory,
resulting in an OFAllocFailedException to be thrown. file: [6a6eeb3258] check-in: [e1e7ffa903] user: js, branch: trunk, size: 27831 [annotate] [blame] [check-ins using] [diff]

2011-09-19
16:34
Rename -[allocMemoryForNItems:withSize:] and friends.
It is now -[allocMemoryForNItems:ofSize:].
file: [e5c0e6c88e] check-in: [f173477bef] user: js, branch: trunk, size: 27612 [annotate] [blame] [check-ins using] [diff]
2011-09-12
19:57
Rename -[cString] to -[UTF8String]. file: [6cafb355bb] check-in: [e6fd39d11e] user: js, branch: trunk, size: 27613 [annotate] [blame] [check-ins using] [diff]
2011-09-10
18:36
Remove -[finalize] as ARC will be implemented instead of a GC. file: [02fc494c69] check-in: [972a3ee40d] user: js, branch: trunk, size: 27487 [annotate] [blame] [check-ins using] [diff]
2011-08-03
04:14
Use the well hidden __objc_update_dispatch_table_for_class() function.

The old GNU API actually does export a function to update the dtable,
however, it is not defined in the headers anymore starting with gcc 4.6. file: [b3a44692ae] check-in: [3f0940e36d] user: js, branch: trunk, size: 28095 [annotate] [blame] [check-ins using] [diff]

03:53
Always use the old GNU API, even with the new GNU runtime.

The new API of the new GNU runtime is currently too broken to be of any
use, thus we even use the old API when the new one is detected until
the new one has been fixed and offers a way to detect if it is the fixed
one. file: [4d946cf26f] check-in: [546332b4d7] user: js, branch: trunk, size: 28868 [annotate] [blame] [check-ins using] [diff]

03:38
Fix updating the dtable for the old GNU runtime.

Again, why does the old GNU runtime force us to fiddle with its internal
data structures instead of exporting functions? file: [ec4f3dc978] check-in: [0322aa3168] user: js, branch: trunk, size: 28738 [annotate] [blame] [check-ins using] [diff]

01:55
D'oh... file: [1dc5e5a7d1] check-in: [e8dccdf9a9] user: js, branch: trunk, size: 28551 [annotate] [blame] [check-ins using] [diff]
2011-08-01
19:01
Don't use any other classes for +[inheritMethodsFromClass:].

Using other classes there would make it impossible to use
+[inheritMethodsFromClass:] in the classes being used, which would be
unfortunate as the classes that were used are potential candidates for
collection classes. file: [b74fa282bf] check-in: [7b5b0c8174] user: js, branch: trunk, size: 28590 [annotate] [blame] [check-ins using] [diff]

2011-07-31
20:03
Correctly update the dtable for the old GNU runtime. file: [7f71e00414] check-in: [df914ca51d] user: js, branch: trunk, size: 26946 [annotate] [blame] [check-ins using] [diff]
19:45
Cleaner -[setImplementation:...] for old GNU runtime.

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

02:07
Implement adding methods for the GNU runtime. file: [e350530160] check-in: [db5f8c2c1b] user: js, branch: trunk, size: 26202 [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: [3cd936beff] check-in: [2828853e17] user: js, branch: trunk, size: 24354 [annotate] [blame] [check-ins using] [diff]

23:14
+[addClassMethod:withTypeEncoding:implementation:] to OFObject. file: [6537d810e0] check-in: [6083048589] user: js, branch: trunk, size: 23379 [annotate] [blame] [check-ins using] [diff]
17:43
Fix a typo. file: [103c38cd6a] check-in: [5613f7fc46] user: js, branch: trunk, size: 23031 [annotate] [blame] [check-ins using] [diff]
02:14
Improve +[inheritInstanceMethodsFromClass:]. file: [e21e0eaee6] check-in: [cace873874] user: js, branch: trunk, size: 23030 [annotate] [blame] [check-ins using] [diff]
2011-07-29
21:54
Add +[inheritInstanceMethodsFromClass:] to OFObject.

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

2011-07-24
20:05
Add a few defines for runtime methods so they always have the same name. file: [51e0fb0c89] check-in: [c7bc7b93d9] user: js, branch: trunk, size: 21434 [annotate] [blame] [check-ins using] [diff]
2011-07-23
13:33
Add -[self] to OFObject. file: [28150d2fd9] check-in: [f1d6ecb1b8] user: js, branch: trunk, size: 21752 [annotate] [blame] [check-ins using] [diff]
2011-07-17
01:55
Define __NO_EXT_QNX in files using unistd.h or fcntl.h.

Without this, the headers try to declare functions that use __block as
an argument name and thus fail to compile when using -fblocks. file: [2e1d6a6c76] check-in: [59e52af26d] user: js, branch: 0.5, size: 20483 [annotate] [blame] [check-ins using] [diff]

01:55
Define __NO_EXT_QNX in files using unistd.h or fcntl.h.

Without this, the headers try to declare functions that use __block as
an argument name and thus fail to compile when using -fblocks. file: [d3a58745ba] check-in: [da2701ad14] user: js, branch: trunk, size: 21726 [annotate] [blame] [check-ins using] [diff]

2011-07-08
15:29
Make it possible to add more ivars to OFConstantString. file: [1a556c5a33] check-in: [0b846bcc4a] user: js, branch: trunk, size: 21702 [annotate] [blame] [check-ins using] [diff]
2011-07-06
17:44
Add +[new] to OFObject for compatibility and convenience. file: [de19156e6d] check-in: [0319e89d4b] user: js, branch: trunk, size: 21716 [annotate] [blame] [check-ins using] [diff]
2011-06-13
14:08
Reduce ObjC method calls in OFFloatVector and OFFloatMatrix. file: [1d0de2f3be] check-in: [f4313d070a] user: js, branch: trunk, size: 21676 [annotate] [blame] [check-ins using] [diff]
03:47
Fix -[conformsToProtocol:] for the old GNU runtime. file: [bd7981a871] check-in: [6fa34f7811] user: js, branch: 0.5, size: 20459 [annotate] [blame] [check-ins using] [diff]
03:47
Fix -[conformsToProtocol:] for the old GNU runtime. file: [251a843844] check-in: [a1769f0105] user: js, branch: trunk, size: 21676 [annotate] [blame] [check-ins using] [diff]
00:06
Replace a forgotten SIZE_MAX with UINT_MAX in OFObject.m. file: [c23b582461] check-in: [287d598b5a] user: js, branch: trunk, size: 21657 [annotate] [blame] [check-ins using] [diff]
2011-06-10
18:19
Save 16 bytes per object on 64 bit systems with a 16 byte alignment. file: [ace848aef2] check-in: [def4850926] user: js, branch: trunk, size: 21657 [annotate] [blame] [check-ins using] [diff]
2011-06-06
16:19
Remove semicolons that should not have been there. file: [01ae05fc13] check-in: [048ed62083] user: js, branch: 0.5, size: 20440 [annotate] [blame] [check-ins using] [diff]
16:18
Remove semicolons that should not have been there. file: [05402e39fd] check-in: [65ec63f7c1] user: js, branch: trunk, size: 21638 [annotate] [blame] [check-ins using] [diff]
2011-06-05
22:26
Nicer API for serialization. file: [4dfae6fcca] check-in: [29988c434b] user: js, branch: trunk, size: 21641 [annotate] [blame] [check-ins using] [diff]
2011-05-04
22:22
Documentation improvements. file: [78d403774f] check-in: [851e47d743] user: js, branch: trunk, size: 21511 [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: [e69c1ca6c9] check-in: [07b3d0e8de] user: js, branch: trunk, size: 21384 [annotate] [blame] [check-ins using] [diff]
18:30
Add _NSPrintForDebugger. file: [e4b8e27eb3] check-in: [ff381fe8ba] user: js, branch: trunk, size: 20776 [annotate] [blame] [check-ins using] [diff]
2011-04-22
20:19
More style improvements. file: [f33de6810c] check-in: [e76a7f52c1] user: js, branch: trunk, size: 20688 [annotate] [blame] [check-ins using] [diff]
16:23
Various style improvements. file: [b8a2ef4dd8] check-in: [c7e66feb30] user: js, branch: trunk, size: 20462 [annotate] [blame] [check-ins using] [diff]
2011-04-11
00:37
A few readability improvements. file: [59829ea342] check-in: [e52ccc8d45] user: js, branch: trunk, size: 20432 [annotate] [blame] [check-ins using] [diff]
2011-04-03
18:49
Use __BIGGEST_ALIGNMENT__ if available. file: [66f93123ef] check-in: [03f5fe299c] user: js, branch: trunk, size: 20443 [annotate] [blame] [check-ins using] [diff]
17:02
Fix -[performSelector:] and friends. file: [5b4c20a0f2] check-in: [3398436156] user: js, branch: trunk, size: 20318 [annotate] [blame] [check-ins using] [diff]
2011-03-27
17:51
Pass the causing object for OFEnumerationMutationExceptions. file: [8f8e235cfd] check-in: [f072e1a338] user: js, branch: trunk, size: 20212 [annotate] [blame] [check-ins using] [diff]
2011-03-25
12:30
Add -[performSelector:] and friends to OFObject. file: [fc3fc31d4e] check-in: [c3f3576af4] user: js, branch: trunk, size: 20189 [annotate] [blame] [check-ins using] [diff]
2011-03-24
19:42
Get rid of OFExceptions.h. file: [fde9d39d7a] check-in: [cda44767f4] user: js, branch: trunk, size: 19732 [annotate] [blame] [check-ins using] [diff]
2011-03-23
12:58
Make the return type of retainCount unsigned int.
This way, the OFObject protocol is compatible to NSObject.
file: [e58d7ba883] check-in: [8de8df50e9] user: js, branch: trunk, size: 19442 [annotate] [blame] [check-ins using] [diff]
2011-03-22
00:55
Add -Wshorten-64-to-32. file: [73e373ae9d] check-in: [6d4dfb5bc7] user: js, branch: trunk, size: 19427 [annotate] [blame] [check-ins using] [diff]
2011-03-11
16:47
Get rid of warnings when using latest clang. file: [83c3cca2e3] check-in: [36c4b260aa] user: js, branch: trunk, size: 19447 [annotate] [blame] [check-ins using] [diff]
2011-03-10
19:54
Call C++ constructors and destructors.

However, this only works with Apple GCC and Clang, but does not hurt
if unsupported. Therefore, no check for compiler support is needed. file: [a76c510128] check-in: [894658f979] user: js, branch: trunk, size: 19440 [annotate] [blame] [check-ins using] [diff]

2011-02-10
20:41
More work on the PSP port.
Outputting text now works - with colours!
file: [ffdb3bc597] check-in: [3273f141b3] user: js, branch: trunk, size: 18264 [annotate] [blame] [check-ins using] [diff]
2011-02-09
19:34
More changes to port ObjFW to PSP. file: [0e939837b3] check-in: [33f646ce2d] user: js, branch: trunk, size: 18263 [annotate] [blame] [check-ins using] [diff]
2011-01-29
19:16
Use %@ where it is useful. file: [a091595654] check-in: [d0eace5cd1] user: js, branch: trunk, size: 18218 [annotate] [blame] [check-ins using] [diff]
2011-01-14
11:01
It can never happen that we don't have threads and atomic ops.
If we don't have threads, everything is atomic.
file: [a02b47cd7d] check-in: [c50d483262] user: js, branch: trunk, size: 18236 [annotate] [blame] [check-ins using] [diff]
2011-01-01
20:19
Change license. file: [07b4e58e79] check-in: [da6b3d26cb] user: js, branch: trunk, size: 18415 [annotate] [blame] [check-ins using] [diff]
2010-12-28
22:18
Make ObjFW work again without threads and without atomic ops. file: [b33c6cd1e8] check-in: [88c920bd62] user: js, branch: trunk, size: 18159 [annotate] [blame] [check-ins using] [diff]
2010-12-18
23:39
Add support for the new GNU runtime.

Currently, the properties test for nonatomic fails. This is a bug in
the new GNU runtime. file: [72f139fc0b] check-in: [6f4eb004a3] user: js, branch: trunk, size: 17930 [annotate] [blame] [check-ins using] [diff]

2010-12-11
20:27
Rename a few exception-related methods. file: [5f364917f3] check-in: [5e44debc07] user: js, branch: trunk, size: 17812 [annotate] [blame] [check-ins using] [diff]
2010-12-10
11:21
Documentation fixes. file: [72238fc133] check-in: [fada60d54c] user: js, branch: trunk, size: 17782 [annotate] [blame] [check-ins using] [diff]
2010-11-16
00:50
Remove a useless #ifdef in OFObject.m. file: [4cf881420b] check-in: [57dd60897f] user: js, branch: trunk, size: 17814 [annotate] [blame] [check-ins using] [diff]
00:40
-[className] and +[className] now return an OFString. file: [5ec7131f1a] check-in: [2011b7b91c] user: js, branch: trunk, size: 17916 [annotate] [blame] [check-ins using] [diff]
2010-11-13
21:57
Add -[description] for OFObject, OFString, OFArray and OFDictionary. file: [115db6d7a7] check-in: [9b50b86632] user: js, branch: trunk, size: 17842 [annotate] [blame] [check-ins using] [diff]
2010-10-31
21:59
More atomic operations. file: [0624e5a61b] check-in: [dd061ee65e] user: js, branch: trunk, size: 17574 [annotate] [blame] [check-ins using] [diff]
2010-09-19
22:39
Add -[typeEncodingForSelector] and +[typeEncodingForInstanceSelector:]. file: [25a48a48d7] check-in: [477d06da14] user: js, branch: trunk, size: 17619 [annotate] [blame] [check-ins using] [diff]
2010-09-07
09:10
Rename +[addObjectToTopmostPool:] to +[addObject:]. file: [4840601dc7] check-in: [eafb8d18ed] user: js, branch: trunk, size: 16009 [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: [45b7441d77] check-in: [e2b06423e0] user: js, branch: trunk, size: 16022 [annotate] [blame] [check-ins using] [diff]

2010-08-25
22:05
Better way to cache OFAutoreleasePool.
This way, the tests work again with static linking.
file: [f4894aef60] check-in: [f2f4062b53] user: js, branch: trunk, size: 16029 [annotate] [blame] [check-ins using] [diff]
2010-07-08
10:04
Clean up method replacing. file: [b60749cd23] check-in: [fdcb2a71e4] user: js, branch: trunk, size: 15901 [annotate] [blame] [check-ins using] [diff]
09:44
Cache OFAutoreleasePool class.

This improves performance with the GNU runtime, where looking up a class
is quite expensive. file: [85afaae721] check-in: [3c5eb0ddb6] user: js, branch: trunk, size: 15778 [annotate] [blame] [check-ins using] [diff]

2010-05-05
17:21
Rename method replacement methods - the old names were too long. file: [1881ae5509] check-in: [bce7bbddf4] user: js, branch: trunk, size: 15698 [annotate] [blame] [check-ins using] [diff]
2010-05-04
12:25
Only allow subclasses for +[replace*Method:with*MethodFromClass:]. file: [721d4fa462] check-in: [252833ad30] user: js, branch: trunk, size: 15709 [annotate] [blame] [check-ins using] [diff]
2010-04-17
16:09
Give the methods in OFNumber better names. file: [7e95f15bf5] check-in: [2517f18272] user: js, branch: trunk, size: 15457 [annotate] [blame] [check-ins using] [diff]
15:46
Don't return self where not necessary, return void or something useful. file: [224d3accf3] check-in: [062a052b50] user: js, branch: trunk, size: 15473 [annotate] [blame] [check-ins using] [diff]
2010-04-01
23:51
Add support for ObjFW-RT, the ObjFW Objective C runtime. file: [6d2f924ac1] check-in: [8c2755723a] user: js, branch: trunk, size: 15484 [annotate] [blame] [check-ins using] [diff]
20:57
Improve method replacing when using the Apple runtime.

This prevents replacing the method of a superclass when the method is
not implemented in the class and creates a new method instead. file: [95a9dc34dd] check-in: [54e971a3a6] user: js, branch: trunk, size: 15069 [annotate] [blame] [check-ins using] [diff]

2010-03-13
21:24
Add global variable of_pagesize and use it to reduce code duplication. file: [4bc8df336e] check-in: [382ed34d40] user: js, branch: trunk, size: 15256 [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: [3eb553ab40] check-in: [b91a8283fe] user: js, branch: 0.2, size: 13550 [annotate] [blame] [check-ins using] [diff]

2010-03-04
21:37
GCC always defines self as struct objc_class, even for class methods. file: [864eafb36e] check-in: [19890b42b2] user: js, branch: trunk, size: 15004 [annotate] [blame] [check-ins using] [diff]
12:28
Add +[setImplemenation:forClassMethod:] and friends. file: [69ac875773] check-in: [a4b1a005b6] user: js, branch: trunk, size: 14963 [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: [3fb2c436d1] check-in: [b156ec8284] user: js, branch: trunk, size: 13494 [annotate] [blame] [check-ins using] [diff]
2010-02-19
16:36
Update copyright. file: [591acb6dd3] check-in: [42886185fd] user: js, branch: trunk, size: 13464 [annotate] [blame] [check-ins using] [diff]
2010-02-16
12:11
Fix a typo. file: [4fdd97e3c7] check-in: [cdea8f326d] user: js, branch: trunk, size: 13464 [annotate] [blame] [check-ins using] [diff]
2010-02-10
20:30
Documentation improvements. file: [66bcfdea6b] check-in: [6a65366467] user: js, branch: trunk, size: 13458 [annotate] [blame] [check-ins using] [diff]
2010-02-07
14:15
Reduce #ifdefs in OFObject.m. file: [4674410a8d] check-in: [623c89300a] user: js, branch: trunk, size: 13426 [annotate] [blame] [check-ins using] [diff]
14:09
Add +[superclass] to OFObject. file: [eeb1a8282b] check-in: [047af7a8ad] user: js, branch: trunk, size: 13652 [annotate] [blame] [check-ins using] [diff]
2010-02-05
14:03
Rename of_atomic_*32 to of_atomic_*_32 and add of_atomic_cmpswap_ptr. file: [a529b1aaf1] check-in: [4e1ab53403] user: js, branch: trunk, size: 13518 [annotate] [blame] [check-ins using] [diff]
2010-02-02
18:58
Rename OFMacros.h to macros.h, as it's not a class. file: [747590c79e] check-in: [832188d759] user: js, branch: trunk, size: 13516 [annotate] [blame] [check-ins using] [diff]
2010-01-31
22:05
Small optimization. file: [357eadb4d2] check-in: [305317e5ea] user: js, branch: trunk, size: 13518 [annotate] [blame] [check-ins using] [diff]
2010-01-30
12:46
Change -[retainCount] back to size_t and cast, so we keep the old API. file: [695579ca2f] check-in: [2cb37ce407] user: js, branch: trunk, size: 13516 [annotate] [blame] [check-ins using] [diff]
10:47
Check return value of of_spinlock_*. file: [7ae92c5eec] check-in: [8a97fac06f] user: js, branch: trunk, size: 13466 [annotate] [blame] [check-ins using] [diff]
01:50
Fall back to spinlocks if atomic ops are unavailable. file: [415ea37dd0] check-in: [bd6a71aad3] user: js, branch: trunk, size: 13343 [annotate] [blame] [check-ins using] [diff]
01:17
Change spinlock implementation, add fallbacks and move to threading.h. file: [f35a66b387] check-in: [921b158d17] user: js, branch: trunk, size: 12757 [annotate] [blame] [check-ins using] [diff]
2010-01-29
15:21
Make retain count int32_t. file: [14884d461d] check-in: [b725e983ae] user: js, branch: trunk, size: 12519 [annotate] [blame] [check-ins using] [diff]
2010-01-25
15:22
Make retain counter 32 bit due to atomic ops being 32 bit. file: [490f2fcff3] check-in: [831ebcd4f5] user: js, branch: trunk, size: 12528 [annotate] [blame] [check-ins using] [diff]
2010-01-24
18:54
Make retain/release atomic. file: [1a2c0cda4c] check-in: [b4a9924066] user: js, branch: trunk, size: 12472 [annotate] [blame] [check-ins using] [diff]
2010-01-17
13:11
uintptr_t might be better here. file: [844da0afa5] check-in: [453532ccf3] user: js, branch: trunk, size: 12420 [annotate] [blame] [check-ins using] [diff]
2010-01-16
13:18
Make properties work with the Apple runtime. file: [e24c28f144] check-in: [4c069e571f] user: js, branch: trunk, size: 12419 [annotate] [blame] [check-ins using] [diff]
2010-01-04
14:29
Backport a few fixes from default branch to 0.1.

This includes the following revisions:
* f91d3a18db7b
* dbe7a578af42
* 95545a36ed0e
* 7806af1b171a
* cacc8353b5c2 file: [186b25418e] check-in: [98f171212d] user: js, branch: 0.1, size: 11429 [annotate] [blame] [check-ins using] [diff]

00:18
Fix forgotten static for enumeration_mutation_handler. file: [42e8feff00] check-in: [c46f609578] user: js, branch: trunk, size: 11774 [annotate] [blame] [check-ins using] [diff]
2010-01-03
19:38
Throw an exception when trying to use +[dealloc]. file: [5be7057eec] check-in: [5e88aed650] user: js, branch: trunk, size: 11757 [annotate] [blame] [check-ins using] [diff]
18:48
Check for objc_enumerationMutation and provide it if it's missing. file: [c5b8c0b3b5] check-in: [2c40c95434] user: js, branch: trunk, size: 11675 [annotate] [blame] [check-ins using] [diff]
17:22
Add OFFastEnumeration protocol and OFEnumerationMutationException. file: [529e251348] check-in: [9a881883be] user: js, branch: trunk, size: 11567 [annotate] [blame] [check-ins using] [diff]
2009-12-09
18:43
Indent defines and imports where it is useful. file: [ff3d52f1b1] check-in: [66f6ca045c] user: js, branch: trunk, size: 11347 [annotate] [blame] [check-ins using] [diff]
2009-12-05
11:06
Add +[isSubclassOfClass:] to OFObject. file: [6eaebd22dd] check-in: [c7bfcc9e92] user: js, branch: trunk, size: 11345 [annotate] [blame] [check-ins using] [diff]
2009-12-02
20:02
Introduce some consistency when to use OFObject* and when to use id. file: [6b6a2eea9a] check-in: [c7ab3a46d1] user: js, branch: trunk, size: 11066 [annotate] [blame] [check-ins using] [diff]
2009-12-01
13:35
Better checking which runtime we use. file: [e42ffed2f9] check-in: [240b72cd71] user: js, branch: trunk, size: 11059 [annotate] [blame] [check-ins using] [diff]
2009-11-29
16:23
Allow NULL as parameter for -[freeMemory:]. file: [f65ab03140] check-in: [d57228d9d6] user: js, branch: trunk, size: 11060 [annotate] [blame] [check-ins using] [diff]
2009-11-15
01:17
Add +[load] to OFObject. file: [81f4a12608] check-in: [1bae432025] user: js, branch: trunk, size: 11026 [annotate] [blame] [check-ins using] [diff]
2009-11-09
22:45
Rename libobjfw to ObjFW. file: [4c1f43e6bd] check-in: [a3cc34b139] user: js, branch: trunk, size: 11008 [annotate] [blame] [check-ins using] [diff]
2009-10-19
08:29
Fix a bug in -[freeMemory:].

This could be an out of bounds write if the last element is free'd,
as i is pointing to the last element then, which does not exist then
anymore, as it was already resized. Now, it is set before resizing.

Additionally, if the realloc to make it smaller fails, we just ignore
that now - it will still work, as we set the correct size before
resizing. file: [3718c4ff22] check-in: [6e357d636d] user: js, branch: trunk, size: 11011 [annotate] [blame] [check-ins using] [diff]

2009-08-26
19:40
Improve documentation. file: [02f24ce790] check-in: [146db53e4a] user: js, branch: trunk, size: 11010 [annotate] [blame] [check-ins using] [diff]
2009-08-12
15:37
Rename +[name] and -[name] to +[className] and -[className]. file: [344bd01fa3] check-in: [ce8d36d5c4] user: js, branch: trunk, size: 11010 [annotate] [blame] [check-ins using] [diff]
2009-07-19
14:05
Rename andFoo: to foo: in all methods. file: [bc5794b890] check-in: [4eae61a78f] user: js, branch: trunk, size: 11000 [annotate] [blame] [check-ins using] [diff]
2009-06-30
14:22
Add +[instanceMethodForSelector:] to OFObject. file: [cb5875a194] check-in: [0707c56762] user: js, branch: trunk, size: 11000 [annotate] [blame] [check-ins using] [diff]
14:15
Add +[instancesRespondToSelector:] to OFObject. file: [b8dec711ff] check-in: [5f47e81a9e] user: js, branch: trunk, size: 10786 [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: [434aadda8c] check-in: [67bb344ba6] user: js, branch: trunk, size: 10576 [annotate] [blame] [check-ins using] [diff]

2009-06-10
15:31
Add +[setImplementation:forMethod:]. file: [afcd5f1e07] check-in: [b10efe7b2b] user: js, branch: trunk, size: 10523 [annotate] [blame] [check-ins using] [diff]
2009-06-09
23:28
Update the dtable so we can replace methods at runtime. file: [da7bffba83] check-in: [c70922ee1c] user: js, branch: trunk, size: 10350 [annotate] [blame] [check-ins using] [diff]
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: [0fa5062289] check-in: [b7cd1e3dc6] user: js, branch: trunk, size: 10090 [annotate] [blame] [check-ins using] [diff]

2009-06-02
17:21
Take care of the root metaclass's super being the root class. file: [936af7ddb3] check-in: [4c343b7841] user: js, branch: trunk, size: 10088 [annotate] [blame] [check-ins using] [diff]
2009-06-01
12:20
Add +[conformsTo:] and -[conformsTo:]. file: [089ffd7efa] check-in: [5008910e85] user: js, branch: trunk, size: 8913 [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: [4147582b99] check-in: [033054ad75] user: js, branch: trunk, size: 8338 [annotate] [blame] [check-ins using] [diff]

2009-05-25
17:00
Improve objc_sync.m.

* Use inline functions to improve code readability.
* Fix a wrong lock.
* Initialize it in +[initialize] of OFObject. file: [8515c66c59] check-in: [5337be0924] user: js, branch: trunk, size: 8240 [annotate] [blame] [check-ins using] [diff]

2009-05-24
21:51
Don't use @defs - it's not available in the ObjC2 ABI. file: [3d254d43a1] check-in: [4cd4d94ea8] user: js, branch: trunk, size: 8020 [annotate] [blame] [check-ins using] [diff]
18:04
Always use #include "config.h" instead of #import "config.h". file: [b3df5176b4] check-in: [94ea6848a8] user: js, branch: trunk, size: 8039 [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: [8454e38c50] check-in: [526d04018d] user: js, branch: trunk, size: 8038 [annotate] [blame] [check-ins using] [diff]

2009-05-16
11:47
Use @defs in preallocated OFAllocFailedException struct. file: [74f9d21734] check-in: [fa64faf81e] user: js, branch: trunk, size: 8021 [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: [6b8000ea51] check-in: [6d589825cd] user: js, branch: trunk, size: 8002 [annotate] [blame] [check-ins using] [diff]

20:31
Rename - free to - (void)dealloc. file: [e6b5b1a83b] check-in: [9e6dd00ef5] user: js, branch: trunk, size: 8030 [annotate] [blame] [check-ins using] [diff]
19:49
There's no need for + initialize to return anything. file: [168ac17ab0] check-in: [917188fdcc] user: js, branch: trunk, size: 8019 [annotate] [blame] [check-ins using] [diff]
2009-05-03
21:33
Get rid of + new.
Additionally, make - accept return an autoreleased OFTCPSocket.
file: [0826af6e82] check-in: [5ca127891c] user: js, branch: trunk, size: 8027 [annotate] [blame] [check-ins using] [diff]
15:10
Get rid of another useless variable. file: [ed4919e346] check-in: [2cec8a76d7] user: js, branch: trunk, size: 8067 [annotate] [blame] [check-ins using] [diff]
14:48
Don't throw an OFNoMemException in - freeMem:. It won't help anyway.

If there's not even enough memory to make the list of memchunks
smaller, there can't be much done anyway. The only way is to ignore
it and hope the whole object gets free'd soon, as the memchunk will
be free'd then as well.

Additionally, the OFOutOfRangeException was replaced by an assert. It
should never overflow here as we're making it smaller. And a size of 0
can't happen as we already found the memchunk before. file: [a14dce520b] check-in: [042a74a6e6] user: js, branch: trunk, size: 8105 [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: [a774c5de86] check-in: [e959fed010] user: js, branch: trunk, size: 8225 [annotate] [blame] [check-ins using] [diff]

2009-04-22
22:43
gcc seems to accept a @throw instead of a return as well. file: [352bb910bc] check-in: [8dbc052d49] user: js, branch: trunk, size: 8237 [annotate] [blame] [check-ins using] [diff]
2009-04-21
18:07
Remove useless + load from OFObject. file: [290156f650] check-in: [ba65a43f3f] user: js, branch: trunk, size: 8347 [annotate] [blame] [check-ins using] [diff]
16:47
Throw OFAllocFailedException instead of returning nil.
This exception is quite special, look at the documentation for details.
file: [1a0aed77e1] check-in: [a1a5bfb3cd] user: js, branch: trunk, size: 8407 [annotate] [blame] [check-ins using] [diff]
2009-04-20
01:42
Partly revert 13945ed73147 and add testcase. file: [18bfba4e77] check-in: [6e4eb3c2ec] user: js, branch: trunk, size: 8239 [annotate] [blame] [check-ins using] [diff]
2009-04-19
20:34
Use isa instead of [self class].

Since we don't use Object anymore and define isa in OFObject, we can
rely on it. file: [850b7969ab] check-in: [139591afe1] user: js, branch: trunk, size: 8214 [annotate] [blame] [check-ins using] [diff]

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: [deb9ba26f1] check-in: [348b389736] user: js, branch: trunk, size: 8323 [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: [a0cbb15bb4] check-in: [57fb5578cc] user: js, branch: trunk, size: 8307 [annotate] [blame] [check-ins using] [diff]

2009-04-16
17:18
Get rid of dependency on method_getSizeOfArguments. file: [7381da9158] check-in: [345716d824] user: js, branch: trunk, size: 10155 [annotate] [blame] [check-ins using] [diff]
2009-04-15
20:31
Workaround for wrong length of OFConstStrings on PPC64 OS X.
Apple does a strange thing there: The length is only 32 bit, followed
by another 32 bit which seem to be garbage.
file: [4cc42158d1] check-in: [9b3e9e6895] user: js, branch: trunk, size: 9302 [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: [fd94d50205] check-in: [cbdd534337] user: js, branch: trunk, size: 9317 [annotate] [blame] [check-ins using] [diff]

2009-03-04
20:49
- release should not be chained, might be free'd. Therefore return void. file: [1ab2516eb4] check-in: [e73e76e40f] user: js, branch: trunk, size: 5006 [annotate] [blame] [check-ins using] [diff]
2009-02-27
11:17
Add - hash for OFArray and OFString, main implementation in OFMacros. file: [b132f8aa53] check-in: [ffd26c8238] user: js, branch: trunk, size: 5022 [annotate] [blame] [check-ins using] [diff]
2009-02-15
16:40
Get rid of OFComparable and make it part of OFObject. file: [091b00dab8] check-in: [d9308adc2b] user: js, branch: trunk, size: 5033 [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: [9d1bddfff6] check-in: [029511474c] user: js, branch: trunk, size: 4800 [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: [f1ae449a76] check-in: [dfc10dbeb8] user: js, branch: trunk, size: 4797 [annotate] [blame] [check-ins using] [diff]
2009-01-05
00:59
Update copyright. file: [c1018bac67] check-in: [f1b749d113] user: js, branch: trunk, size: 4746 [annotate] [blame] [check-ins using] [diff]
00:56
Initial OFAutoreleasePool - still needs a *lot* of testing. file: [7210a76063] check-in: [b412845664] user: js, branch: trunk, size: 4739 [annotate] [blame] [check-ins using] [diff]
2009-01-04
01:40
Clean up exceptions. file: [027dbab7f0] check-in: [bb1fe89478] user: js, branch: trunk, size: 4490 [annotate] [blame] [check-ins using] [diff]
2008-12-24
16:11
Let libobjc free our objects. file: [e51bd21762] check-in: [e9aa88be06] user: js, branch: trunk, size: 4418 [annotate] [blame] [check-ins using] [diff]
11:55
Add methods to initalize from and append from formatted C strings. file: [239d0ace71] check-in: [486760ed2b] user: js, branch: trunk, size: 4423 [annotate] [blame] [check-ins using] [diff]
2008-12-23
03:59
Remove spaces and tabs at end of line. file: [59a115d6f5] check-in: [7d7b89d775] user: js, branch: trunk, size: 3873 [annotate] [blame] [check-ins using] [diff]
01:57
Check for SIZE_T, fallback to SIZE_T_MAX or define as (size_t)-1. file: [6f88f8ea70] check-in: [c180b76560] user: js, branch: trunk, size: 3878 [annotate] [blame] [check-ins using] [diff]
2008-12-22
22:00
This isn't needed anymore. file: [a8fcc0b239] check-in: [1d99bea306] user: js, branch: trunk, size: 3859 [annotate] [blame] [check-ins using] [diff]
2008-12-09
17:36
Don't use - raise anymore, but @throw.
- raise was only because at first, exceptions were self-raising, but
this was later changed so they had to be risen manually. - rise was
introduced for that, but it would've been better to use @throw
directly. Thus, this change now.
file: [19577f9cbf] check-in: [d88aec8e95] user: js, branch: trunk, size: 3945 [annotate] [blame] [check-ins using] [diff]
2008-12-07
02:53
Add writeCString and writeWideCString to OFStream. file: [16b59ee246] check-in: [6ed7c33611] user: js, branch: trunk, size: 3938 [annotate] [blame] [check-ins using] [diff]
2008-11-29
11:59
Optimize branch prediction for ifs inside loops. file: [c722de15cb] check-in: [92c12b1d4f] user: js, branch: trunk, size: 3977 [annotate] [blame] [check-ins using] [diff]
2008-11-08
21:52
Further optimize OFObject. file: [c0fb34ec43] check-in: [c6ee6a2870] user: js, branch: trunk, size: 3878 [annotate] [blame] [check-ins using] [diff]
20:28
Optimize OFObject. file: [9ea6f8965e] check-in: [14ba9e517b] user: js, branch: trunk, size: 3784 [annotate] [blame] [check-ins using] [diff]
2008-11-07
17:25
Implementation for OFBigArray. file: [f326f71c26] check-in: [59f16e8a3d] user: js, branch: trunk, size: 3234 [annotate] [blame] [check-ins using] [diff]
2008-11-05
16:11
OFOverflowException -> OFOutOfRangeException. file: [014c4c85fd] check-in: [3577c0d81c] user: js, branch: trunk, size: 3234 [annotate] [blame] [check-ins using] [diff]
2008-11-02
00:27
Some fixes for OFObject. file: [6aad9c4888] check-in: [9ff3dbe9f9] user: js, branch: trunk, size: 3230 [annotate] [blame] [check-ins using] [diff]
2008-11-01
22:20
Some exception stuff & withSize -> ofSize for OFObject. file: [99a5765c29] check-in: [9944a6f8a4] user: js, branch: trunk, size: 2955 [annotate] [blame] [check-ins using] [diff]
21:47
Allow using [ofobject resizeMem: NULL toSize: size]. file: [dfdab0e3f3] check-in: [a6b45eec2f] user: js, branch: trunk, size: 2942 [annotate] [blame] [check-ins using] [diff]
2008-10-29
17:29
Add getMemForNItems:withSize: & resizeMem:toNItems:withSize: in OFObject

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

2008-10-26
20:54
Return self when we have no return value. This allows nesting. file: [fdc15c6565] check-in: [8ae4c59cd6] user: js, branch: trunk, size: 2332 [annotate] [blame] [check-ins using] [diff]
2008-10-25
22:28
Decided we don't want @"" anyway. Thus remove our own alloc.

We don't need it anymore as there is no reason left to have our memory
pool before the instance variables left. file: [88dde3fe42] check-in: [061e654036] user: js, branch: trunk, size: 2318 [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: [5509180fd4] check-in: [e47ad44290] user: js, branch: trunk, size: 3131 [annotate] [blame] [check-ins using] [diff]

2008-10-09
00:25
Multiple changes, see details.

* Use config.h.
* Check whether to use sel_get_name or sel_getName.
* Rename freeWithData to freeIncludingData. file: [85971766c6] check-in: [7a49441656] user: js, branch: trunk, size: 2209 [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: [c1de4ea884] check-in: [b597d49f43] user: js, branch: trunk, size: 2189 [annotate] [blame] [check-ins using] [diff]

2008-10-07
17:18
Added OFFile. file: [deca1fe096] check-in: [71119a787b] user: js, branch: trunk, size: 2145 [annotate] [blame] [check-ins using] [diff]
2008-09-14
19:03
More exceptions stuff. file: [0937ee4297] check-in: [98fe076bd8] user: js, branch: trunk, size: 2137 [annotate] [blame] [check-ins using] [diff]
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: [9572084d4f] check-in: [7b8b7cd06c] user: js, branch: trunk, size: 2357 [annotate] [blame] [check-ins using] [diff]

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