Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Ancestors of file src/OFObject.m from check-in 1ba08eebc5
|
2015-10-19
| ||
| 22:15 | Add platform.h & make platform defines consistent file: [fa72960651] check-in: [1ba08eebc5] user: js branch: trunk, size: 24529 | |
|
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 | |
|
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 | |
|
2015-02-01
| ||
| 00:47 | Reduce code size for OF_UNRECOGNIZED_SELECTOR file: [11cea8a285] check-in: [e0c84651d6] user: js branch: trunk, size: 24449 | |
|
2015-01-03
| ||
| 20:57 | Update copyright file: [b4471e2926] check-in: [cfd374b906] user: js branch: trunk, size: 24423 | |
|
2014-10-04
| ||
| 21:59 | Add +[OFSystemInfo native8BitEncoding] This replaces +[OFString nativeOSEncoding]. file: [da02b5a0e1] check-in: [ec66e49dca] user: js branch: trunk, size: 24417 | |
|
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 | |
|
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 | |
|
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 | |
| 15:17 | Work around Apple's API breaking the C standard file: [a836174d3d] check-in: [469553637d] user: js branch: trunk, size: 24106 | |
| 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 | |
|
2014-05-05
| ||
| 01:08 | Improve atomics API file: [e8aca19951] check-in: [a92844520a] user: js branch: trunk, size: 24111 | |
|
2014-03-30
| ||
| 00:30 | ObjFW-RT: Call +[unload] on class unregister file: [f3bed53382] check-in: [1ecef2d7f6] user: js branch: trunk, size: 24113 | |
|
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 | |
|
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 | |
| 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 | |
|
2014-01-12
| ||
| 23:38 | Add -[superclass] to OFObject protocol. file: [3b4e65cff2] check-in: [4c6d9b7c1b] user: js branch: trunk, size: 23996 | |
|
2014-01-04
| ||
| 00:24 | Update copyright. file: [c604df4ce7] check-in: [3b97fc3cd9] user: js branch: trunk, size: 23919 | |
|
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 | |
|
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 | |
|
2013-12-20
| ||
| 00:14 | runtime: More consistency in the API. file: [9bd5d20560] check-in: [2dec88a9d5] user: js branch: trunk, size: 25572 | |
|
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 | |
|
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 | |
|
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 | |
|
2013-11-23
| ||
| 01:27 | Add OF_UNRECOGNIZED_SELECTOR. file: [7af9301010] check-in: [6e19bd47ee] user: js branch: trunk, size: 25551 | |
|
2013-11-22
| ||
| 23:24 | runtime: Add support for non-fragile ivars. file: [8e2d9bc735] check-in: [3780f1462e] user: js branch: trunk, size: 25719 | |
|
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 | |
|
2013-07-27
| ||
| 17:38 | Fix a typo. file: [1d6bb87b12] check-in: [405731e798] user: js branch: trunk, size: 25736 | |
|
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 | |
|
2013-07-23
| ||
| 22:48 | Allow classes in collections requiring OFCopying. file: [fd13e3d461] check-in: [7992490163] user: js branch: trunk, size: 25714 | |
|
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 | |
|
2013-06-18
| ||
| 21:37 | Make more use of OF_STRING_ENCODING_NATIVE. file: [22ddb06ede] check-in: [7c7187345a] user: js branch: trunk, size: 25949 | |
|
2013-05-22
| ||
| 21:09 | Show a backtrace for uncaught exceptions. file: [8d2c38124f] check-in: [32230a1615] user: js branch: trunk, size: 25813 | |
| 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 | |
|
2013-04-07
| ||
| 21:21 | Fix Win32 #include hell. file: [51f9346050] check-in: [ec6b265428] user: js branch: trunk, size: 25593 | |
|
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 | |
|
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 | |
|
2013-02-18
| ||
| 10:38 | Add -[OFDataArray initWithItemSize:capacity:]. file: [68901c9b91] check-in: [e403ca05cb] user: js branch: trunk, size: 24834 | |
|
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 | |
|
2013-01-14
| ||
| 23:22 | OFObject: Cosmetic changes. file: [4617a114d5] check-in: [6d438629e2] user: js branch: trunk, size: 24961 | |
|
2013-01-12
| ||
| 20:53 | Clean up the feature #ifdef mess. file: [c05874ae6f] check-in: [b8ce2359f3] user: js branch: trunk, size: 24921 | |
| 20:32 | Fix code used when atomic ops are unavailable. file: [1c57171d5d] check-in: [20aea410be] user: js branch: trunk, size: 25010 | |
| 20:21 | Fix --disable-threads. file: [431202d1e9] check-in: [85b8efadbc] user: js branch: trunk, size: 25011 | |
| 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 | |
|
2013-01-09
| ||
| 22:24 | Update copyright. file: [4e3a5a961f] check-in: [813c00ccf0] user: js branch: trunk, size: 24961 | |
|
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 | |
|
2012-12-26
| ||
| 14:10 | Add OFSystemInfo. file: [6afd10fb87] check-in: [4b637f8516] user: js branch: trunk, size: 24727 | |
|
2012-12-22
| ||
| 15:37 | Add -[doesNotRecognizeSelector:]. file: [23e21a638e] check-in: [917ce5754c] user: js branch: trunk, size: 25343 | |
| 14:41 | Never throw in -[typeEncodingForSelector:]. file: [9c302a662d] check-in: [77573bf01f] user: js branch: trunk, size: 25586 | |
|
2012-12-15
| ||
| 23:31 | OFString: Improved API for getting C strings. file: [5c04a02683] check-in: [e2f4c1283c] user: js branch: trunk, size: 26136 | |
|
2012-12-12
| ||
| 18:40 | Coding style. file: [517d28e9f2] check-in: [6ad5d3d8d6] user: js branch: trunk, size: 26135 | |
|
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 | |
|
2012-12-06
| ||
| 21:17 | Fix Clang warnings and a typo. file: [0307a15aa9] check-in: [31d023e401] user: js branch: trunk, size: 26283 | |
| 11:00 | Add of_random(). file: [af5fd55d36] check-in: [f675979cf0] user: js branch: trunk, size: 26251 | |
| 00:14 | Improve -[hash] of OFNumber and OFObject. file: [e989a30df6] check-in: [ac51f5f0cf] user: js branch: trunk, size: 25972 | |
|
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 | |
|
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 | |
|
2012-11-26
| ||
| 23:19 | Implement forwarding target for Apple/ARM. file: [dfed8e0734] check-in: [5927b80b4e] user: js branch: trunk, size: 25770 | |
|
2012-11-17
| ||
| 18:23 | Implement forwarding target for Apple/PPC. file: [80381fd262] check-in: [95850c4572] user: js branch: trunk, size: 25866 | |
|
2012-11-16
| ||
| 23:07 | Implement forwarding target for Apple/i386. file: [62c904a387] check-in: [1ec18e57bc] user: js branch: trunk, size: 25826 | |
| 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 | |
|
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 | |
|
2012-10-21
| ||
| 22:12 | Make GCC 4.4 happy. file: [130a752ea7] check-in: [fcade8da38] user: js branch: trunk, size: 25155 | |
|
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 | |
|
2012-09-17
| ||
| 10:18 | Add -[performSelectorOnMainThread:waitUntilDone:]. file: [36829d1a67] check-in: [e959c99f85] user: js branch: trunk, size: 25157 | |
| 09:30 | Simplify autoreleasing. file: [13e68b8637] check-in: [c9bea2982f] user: js branch: trunk, size: 23845 | |
|
2012-09-16
| ||
| 22:31 | Add -[performSelector:onThread:waitUntilDone:]. file: [5b25661283] check-in: [e9cbd5e12a] user: js branch: trunk, size: 23838 | |
| 22:16 | Make sure an autorelease pool is always in place. file: [5eddd9378d] check-in: [cc9601c228] user: js branch: trunk, size: 22484 | |
| 21:59 | Make it possible to invalidate OFTimers. file: [2de861858b] check-in: [8658d1a22a] user: js branch: trunk, size: 22467 | |
| 13:23 | Add -[performSelector:onThread:afterDelay:]. file: [91d44503b0] check-in: [4fd5559652] user: js branch: trunk, size: 22469 | |
|
2012-09-14
| ||
| 06:09 | Add -[OFObject performSelector:afterDelay:]. file: [6a36e235dc] check-in: [5e067285c8] user: js branch: trunk, size: 21260 | |
|
2012-09-11
| ||
| 14:20 | Add missing abort to uncaught_exception_handler. file: [9817511d97] check-in: [e58bcdedb5] user: js branch: trunk, size: 20281 | |
|
2012-09-06
| ||
| 19:13 | Add objc_{construct,destruct}Instance(). file: [2f8b3fda71] check-in: [20c584252c] user: js branch: trunk, size: 20271 | |
|
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 | |
|
2012-08-04
| ||
| 08:29 | Replace a few init methods with constructors. file: [ef2b5b53fe] check-in: [c34d45798b] user: js branch: trunk, size: 21507 | |
|
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 | |
|
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 | |
| 22:44 | Don't require extra parentheses for OF_(UN)LIKELY. file: [edc6b04857] check-in: [ff8b2a6c29] user: js branch: trunk, size: 20364 | |
|
2012-07-15
| ||
| 00:54 | Fix a memory leak. file: [d6164e1afa] check-in: [f772f8c188] user: js branch: trunk, size: 20037 | |
|
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 | |
|
2012-07-12
| ||
| 01:28 | Don't access isa directly. file: [470fa11181] check-in: [8892ae9fcc] user: js branch: trunk, size: 19981 | |
|
2012-07-11
| ||
| 13:56 | Get the number of CPUs on QNX. file: [64a1864a0a] check-in: [3d1d05df3c] user: js branch: trunk, size: 19696 | |
| 08:38 | Only use _SC_* if defined. file: [fd16b773e1] check-in: [a3dcdac0b8] user: js branch: trunk, size: 19516 | |
|
2012-07-03
| ||
| 15:50 | Merge branch 'runtime' * runtime: (76 commits) runtime: Add exception handling. ... file: [a5886ec856] check-in: [4c4fdb3429] user: js branch: trunk, size: 19509 | |
|
2012-06-10
| ||
| 13:28 | More API improvements. file: [7124c4f433] check-in: [11d3d69a22] user: js branch: trunk, size: 24924 | |
|
2012-06-06
| ||
| 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 | |
|
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 | |
|
2012-03-17
| ||
| 15:12 | Add of_alloc_object(). file: [0df01667b3] check-in: [e7d16fea58] user: js branch: trunk, size: 24819 | |
| 14:26 | Move definition of __BIGGEST_ALIGNMENT__ to macros.h. file: [ffa19d5312] check-in: [2d4a63cfcb] user: js branch: trunk, size: 24165 | |
|
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 | |
|
2012-03-13
| ||
| 20:19 | Add of_num_cpus. file: [eb1f0d3652] check-in: [5a7c58ec98] user: js branch: trunk, size: 25566 | |
|
2012-03-06
| ||
| 16:17 | Clean up the method replacement mess. file: [836c79ac97] check-in: [2d08ba105c] user: js branch: trunk, size: 25413 | |
| 00:13 | Init C++ ctors in -[init] instead of +[alloc]. file: [fc6752589f] check-in: [9767602af7] user: js branch: trunk, size: 29411 | |
|
2012-02-27
| ||
| 22:11 | Add -[OFObject isMemberOfClass:] and -[OFObject isProxy]. file: [76ac8473f2] check-in: [8830166fe8] user: js branch: trunk, size: 29448 | |
|
2012-01-05
| ||
| 00:56 | Update copyright. file: [0093660075] check-in: [ce70e17b38] user: js branch: trunk, size: 29348 | |
|
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 | |
|
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 | |
|
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 | |
|
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 | |
|
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 | |
|
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 | |
|
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 | |
|
2011-09-12
| ||
| 19:57 | Rename -[cString] to -[UTF8String]. file: [6cafb355bb] check-in: [e6fd39d11e] user: js branch: trunk, size: 27613 | |
|
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 | |
|
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 | |
| 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 | |
| 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 | |
| 01:55 | D'oh... file: [1dc5e5a7d1] check-in: [e8dccdf9a9] user: js branch: trunk, size: 28551 | |
|
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 | |
|
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 | |
| 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 | |
| 02:07 | Implement adding methods for the GNU runtime. file: [e350530160] check-in: [db5f8c2c1b] user: js branch: trunk, size: 26202 | |
|
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 | |
| 23:14 | +[addClassMethod:withTypeEncoding:implementation:] to OFObject. file: [6537d810e0] check-in: [6083048589] user: js branch: trunk, size: 23379 | |
| 17:43 | Fix a typo. file: [103c38cd6a] check-in: [5613f7fc46] user: js branch: trunk, size: 23031 | |
| 02:14 | Improve +[inheritInstanceMethodsFromClass:]. file: [e21e0eaee6] check-in: [cace873874] user: js branch: trunk, size: 23030 | |
|
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 | |
|
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 | |
|
2011-07-23
| ||
| 13:33 | Add -[self] to OFObject. file: [28150d2fd9] check-in: [f1d6ecb1b8] user: js branch: trunk, size: 21752 | |
|
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: [d3a58745ba] check-in: [da2701ad14] user: js branch: trunk, size: 21726 | |
|
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 | |
|
2011-07-06
| ||
| 17:44 | Add +[new] to OFObject for compatibility and convenience. file: [de19156e6d] check-in: [0319e89d4b] user: js branch: trunk, size: 21716 | |
|
2011-06-13
| ||
| 14:08 | Reduce ObjC method calls in OFFloatVector and OFFloatMatrix. file: [1d0de2f3be] check-in: [f4313d070a] user: js branch: trunk, size: 21676 | |
| 03:47 | Fix -[conformsToProtocol:] for the old GNU runtime. file: [251a843844] check-in: [a1769f0105] user: js branch: trunk, size: 21676 | |
| 00:06 | Replace a forgotten SIZE_MAX with UINT_MAX in OFObject.m. file: [c23b582461] check-in: [287d598b5a] user: js branch: trunk, size: 21657 | |
|
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 | |
|
2011-06-06
| ||
| 16:18 | Remove semicolons that should not have been there. file: [05402e39fd] check-in: [65ec63f7c1] user: js branch: trunk, size: 21638 | |
|
2011-06-05
| ||
| 22:26 | Nicer API for serialization. file: [4dfae6fcca] check-in: [29988c434b] user: js branch: trunk, size: 21641 | |
|
2011-05-04
| ||
| 22:22 | Documentation improvements. file: [78d403774f] check-in: [851e47d743] user: js branch: trunk, size: 21511 | |
|
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 | |
| 18:30 | Add _NSPrintForDebugger. file: [e4b8e27eb3] check-in: [ff381fe8ba] user: js branch: trunk, size: 20776 | |
|
2011-04-22
| ||
| 20:19 | More style improvements. file: [f33de6810c] check-in: [e76a7f52c1] user: js branch: trunk, size: 20688 | |
| 16:23 | Various style improvements. file: [b8a2ef4dd8] check-in: [c7e66feb30] user: js branch: trunk, size: 20462 | |
|
2011-04-11
| ||
| 00:37 | A few readability improvements. file: [59829ea342] check-in: [e52ccc8d45] user: js branch: trunk, size: 20432 | |
|
2011-04-03
| ||
| 18:49 | Use __BIGGEST_ALIGNMENT__ if available. file: [66f93123ef] check-in: [03f5fe299c] user: js branch: trunk, size: 20443 | |
| 17:02 | Fix -[performSelector:] and friends. file: [5b4c20a0f2] check-in: [3398436156] user: js branch: trunk, size: 20318 | |
|
2011-03-27
| ||
| 17:51 | Pass the causing object for OFEnumerationMutationExceptions. file: [8f8e235cfd] check-in: [f072e1a338] user: js branch: trunk, size: 20212 | |
|
2011-03-25
| ||
| 12:30 | Add -[performSelector:] and friends to OFObject. file: [fc3fc31d4e] check-in: [c3f3576af4] user: js branch: trunk, size: 20189 | |
|
2011-03-24
| ||
| 19:42 | Get rid of OFExceptions.h. file: [fde9d39d7a] check-in: [cda44767f4] user: js branch: trunk, size: 19732 | |
|
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 | |
|
2011-03-22
| ||
| 00:55 | Add -Wshorten-64-to-32. file: [73e373ae9d] check-in: [6d4dfb5bc7] user: js branch: trunk, size: 19427 | |
|
2011-03-11
| ||
| 16:47 | Get rid of warnings when using latest clang. file: [83c3cca2e3] check-in: [36c4b260aa] user: js branch: trunk, size: 19447 | |
|
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 | |
|
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 | |
|
2011-02-09
| ||
| 19:34 | More changes to port ObjFW to PSP. file: [0e939837b3] check-in: [33f646ce2d] user: js branch: trunk, size: 18263 | |
|
2011-01-29
| ||
| 19:16 | Use %@ where it is useful. file: [a091595654] check-in: [d0eace5cd1] user: js branch: trunk, size: 18218 | |
|
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 | |
|
2011-01-01
| ||
| 20:19 | Change license. file: [07b4e58e79] check-in: [da6b3d26cb] user: js branch: trunk, size: 18415 | |
|
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 | |
|
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 | |
|
2010-12-11
| ||
| 20:27 | Rename a few exception-related methods. file: [5f364917f3] check-in: [5e44debc07] user: js branch: trunk, size: 17812 | |
|
2010-12-10
| ||
| 11:21 | Documentation fixes. file: [72238fc133] check-in: [fada60d54c] user: js branch: trunk, size: 17782 | |
|
2010-11-16
| ||
| 00:50 | Remove a useless #ifdef in OFObject.m. file: [4cf881420b] check-in: [57dd60897f] user: js branch: trunk, size: 17814 | |
| 00:40 | -[className] and +[className] now return an OFString. file: [5ec7131f1a] check-in: [2011b7b91c] user: js branch: trunk, size: 17916 | |
|
2010-11-13
| ||
| 21:57 | Add -[description] for OFObject, OFString, OFArray and OFDictionary. file: [115db6d7a7] check-in: [9b50b86632] user: js branch: trunk, size: 17842 | |
|
2010-10-31
| ||
| 21:59 | More atomic operations. file: [0624e5a61b] check-in: [dd061ee65e] user: js branch: trunk, size: 17574 | |
|
2010-09-19
| ||
| 22:39 | Add -[typeEncodingForSelector] and +[typeEncodingForInstanceSelector:]. file: [25a48a48d7] check-in: [477d06da14] user: js branch: trunk, size: 17619 | |
|
2010-09-07
| ||
| 09:10 | Rename +[addObjectToTopmostPool:] to +[addObject:]. file: [4840601dc7] check-in: [eafb8d18ed] user: js branch: trunk, size: 16009 | |
|
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 | |
|
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 | |
|
2010-07-08
| ||
| 10:04 | Clean up method replacing. file: [b60749cd23] check-in: [fdcb2a71e4] user: js branch: trunk, size: 15901 | |
| 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 | |
|
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 | |
|
2010-05-04
| ||
| 12:25 | Only allow subclasses for +[replace*Method:with*MethodFromClass:]. file: [721d4fa462] check-in: [252833ad30] user: js branch: trunk, size: 15709 | |
|
2010-04-17
| ||
| 16:09 | Give the methods in OFNumber better names. file: [7e95f15bf5] check-in: [2517f18272] user: js branch: trunk, size: 15457 | |
| 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 | |
|
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 | |
| 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 | |
|
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 | |
|
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 | |
| 12:28 | Add +[setImplemenation:forClassMethod:] and friends. file: [69ac875773] check-in: [a4b1a005b6] user: js branch: trunk, size: 14963 | |
|
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 | |
| 22:56 | Merge to fix wrong parent of last commit. file: [591acb6dd3] check-in: [b190519866] user: js branch: trunk, size: 13464 | |
|
2010-02-16
| ||
| 12:11 | Fix a typo. file: [4fdd97e3c7] check-in: [cdea8f326d] user: js branch: trunk, size: 13464 | |
|
2010-02-10
| ||
| 20:30 | Documentation improvements. file: [66bcfdea6b] check-in: [6a65366467] user: js branch: trunk, size: 13458 | |
|
2010-02-07
| ||
| 14:15 | Reduce #ifdefs in OFObject.m. file: [4674410a8d] check-in: [623c89300a] user: js branch: trunk, size: 13426 | |
| 14:09 | Add +[superclass] to OFObject. file: [eeb1a8282b] check-in: [047af7a8ad] user: js branch: trunk, size: 13652 | |
|
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 | |
|
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 | |
|
2010-01-31
| ||
| 22:05 | Small optimization. file: [357eadb4d2] check-in: [305317e5ea] user: js branch: trunk, size: 13518 | |
|
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 | |
| 10:47 | Check return value of of_spinlock_*. file: [7ae92c5eec] check-in: [8a97fac06f] user: js branch: trunk, size: 13466 | |
| 01:50 | Fall back to spinlocks if atomic ops are unavailable. file: [415ea37dd0] check-in: [bd6a71aad3] user: js branch: trunk, size: 13343 | |
| 01:17 | Change spinlock implementation, add fallbacks and move to threading.h. file: [f35a66b387] check-in: [921b158d17] user: js branch: trunk, size: 12757 | |
|
2010-01-29
| ||
| 15:21 | Make retain count int32_t. file: [14884d461d] check-in: [b725e983ae] user: js branch: trunk, size: 12519 | |
|
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 | |
|
2010-01-24
| ||
| 18:54 | Make retain/release atomic. file: [1a2c0cda4c] check-in: [b4a9924066] user: js branch: trunk, size: 12472 | |
|
2010-01-17
| ||
| 13:11 | uintptr_t might be better here. file: [844da0afa5] check-in: [453532ccf3] user: js branch: trunk, size: 12420 | |
|
2010-01-16
| ||
| 13:18 | Make properties work with the Apple runtime. file: [e24c28f144] check-in: [4c069e571f] user: js branch: trunk, size: 12419 | |
|
2010-01-04
| ||
| 00:18 | Fix forgotten static for enumeration_mutation_handler. file: [42e8feff00] check-in: [c46f609578] user: js branch: trunk, size: 11774 | |
|
2010-01-03
| ||
| 19:38 | Throw an exception when trying to use +[dealloc]. file: [5be7057eec] check-in: [5e88aed650] user: js branch: trunk, size: 11757 | |
| 18:48 | Check for objc_enumerationMutation and provide it if it's missing. file: [c5b8c0b3b5] check-in: [2c40c95434] user: js branch: trunk, size: 11675 | |
| 17:22 | Add OFFastEnumeration protocol and OFEnumerationMutationException. file: [529e251348] check-in: [9a881883be] user: js branch: trunk, size: 11567 | |
|
2009-12-09
| ||
| 18:43 | Indent defines and imports where it is useful. file: [ff3d52f1b1] check-in: [66f6ca045c] user: js branch: trunk, size: 11347 | |
|
2009-12-05
| ||
| 11:06 | Add +[isSubclassOfClass:] to OFObject. file: [6eaebd22dd] check-in: [c7bfcc9e92] user: js branch: trunk, size: 11345 | |
|
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 | |
|
2009-12-01
| ||
| 13:35 | Better checking which runtime we use. file: [e42ffed2f9] check-in: [240b72cd71] user: js branch: trunk, size: 11059 | |
|
2009-11-29
| ||
| 16:23 | Allow NULL as parameter for -[freeMemory:]. file: [f65ab03140] check-in: [d57228d9d6] user: js branch: trunk, size: 11060 | |
|
2009-11-15
| ||
| 01:17 | Add +[load] to OFObject. file: [81f4a12608] check-in: [1bae432025] user: js branch: trunk, size: 11026 | |
|
2009-11-09
| ||
| 22:45 | Rename libobjfw to ObjFW. file: [4c1f43e6bd] check-in: [a3cc34b139] user: js branch: trunk, size: 11008 | |
|
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 | |
|
2009-08-26
| ||
| 19:40 | Improve documentation. file: [02f24ce790] check-in: [146db53e4a] user: js branch: trunk, size: 11010 | |
|
2009-08-12
| ||
| 15:37 | Rename +[name] and -[name] to +[className] and -[className]. file: [344bd01fa3] check-in: [ce8d36d5c4] user: js branch: trunk, size: 11010 | |
|
2009-07-19
| ||
| 14:05 | Rename andFoo: to foo: in all methods. file: [bc5794b890] check-in: [4eae61a78f] user: js branch: trunk, size: 11000 | |
|
2009-06-30
| ||
| 14:22 | Add +[instanceMethodForSelector:] to OFObject. file: [cb5875a194] check-in: [0707c56762] user: js branch: trunk, size: 11000 | |
| 14:15 | Add +[instancesRespondToSelector:] to OFObject. file: [b8dec711ff] check-in: [5f47e81a9e] user: js branch: trunk, size: 10786 | |
| 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 | |
|
2009-06-10
| ||
| 15:31 | Add +[setImplementation:forMethod:]. file: [afcd5f1e07] check-in: [b10efe7b2b] user: js branch: trunk, size: 10523 | |
|
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 | |
| 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 | |
|
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 | |
|
2009-06-01
| ||
| 12:20 | Add +[conformsTo:] and -[conformsTo:]. file: [089ffd7efa] check-in: [5008910e85] user: js branch: trunk, size: 8913 | |
|
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 | |
|
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 | |
|
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 | |
| 18:04 | Always use #include "config.h" instead of #import "config.h". file: [b3df5176b4] check-in: [94ea6848a8] user: js branch: trunk, size: 8039 | |
|
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 | |
|
2009-05-16
| ||
| 11:47 | Use @defs in preallocated OFAllocFailedException struct. file: [74f9d21734] check-in: [fa64faf81e] user: js branch: trunk, size: 8021 | |
|
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 | |
| 20:31 | Rename - free to - (void)dealloc. file: [e6b5b1a83b] check-in: [9e6dd00ef5] user: js branch: trunk, size: 8030 | |
| 19:49 | There's no need for + initialize to return anything. file: [168ac17ab0] check-in: [917188fdcc] user: js branch: trunk, size: 8019 | |
|
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 | |
| 15:10 | Get rid of another useless variable. file: [ed4919e346] check-in: [2cec8a76d7] user: js branch: trunk, size: 8067 | |
| 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 | |
|
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 | |
|
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 | |
|
2009-04-21
| ||
| 18:07 | Remove useless + load from OFObject. file: [290156f650] check-in: [ba65a43f3f] user: js branch: trunk, size: 8347 | |
| 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 | |
|
2009-04-20
| ||
| 01:42 | Partly revert 13945ed73147 and add testcase. file: [18bfba4e77] check-in: [6e4eb3c2ec] user: js branch: trunk, size: 8239 | |
|
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 | |
| 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 | |
| 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 | |
|
2009-04-16
| ||
| 17:18 | Get rid of dependency on method_getSizeOfArguments. file: [7381da9158] check-in: [345716d824] user: js branch: trunk, size: 10155 | |
|
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 | |
|
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 | |
|
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 | |
|
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 | |
|
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 | |
|
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 | |
|
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 | |
|
2009-01-05
| ||
| 00:59 | Update copyright. file: [c1018bac67] check-in: [f1b749d113] user: js branch: trunk, size: 4746 | |
| 00:56 | Initial OFAutoreleasePool - still needs a *lot* of testing. file: [7210a76063] check-in: [b412845664] user: js branch: trunk, size: 4739 | |
|
2009-01-04
| ||
| 01:40 | Clean up exceptions. file: [027dbab7f0] check-in: [bb1fe89478] user: js branch: trunk, size: 4490 | |
|
2008-12-24
| ||
| 16:11 | Let libobjc free our objects. file: [e51bd21762] check-in: [e9aa88be06] user: js branch: trunk, size: 4418 | |
| 11:55 | Add methods to initalize from and append from formatted C strings. file: [239d0ace71] check-in: [486760ed2b] user: js branch: trunk, size: 4423 | |
|
2008-12-23
| ||
| 03:59 | Remove spaces and tabs at end of line. file: [59a115d6f5] check-in: [7d7b89d775] user: js branch: trunk, size: 3873 | |
| 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 | |
|
2008-12-22
| ||
| 22:00 | This isn't needed anymore. file: [a8fcc0b239] check-in: [1d99bea306] user: js branch: trunk, size: 3859 | |
|
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 | |
|
2008-12-07
| ||
| 02:53 | Add writeCString and writeWideCString to OFStream. file: [16b59ee246] check-in: [6ed7c33611] user: js branch: trunk, size: 3938 | |
|
2008-11-29
| ||
| 11:59 | Optimize branch prediction for ifs inside loops. file: [c722de15cb] check-in: [92c12b1d4f] user: js branch: trunk, size: 3977 | |
|
2008-11-08
| ||
| 21:52 | Further optimize OFObject. file: [c0fb34ec43] check-in: [c6ee6a2870] user: js branch: trunk, size: 3878 | |
| 20:28 | Optimize OFObject. file: [9ea6f8965e] check-in: [14ba9e517b] user: js branch: trunk, size: 3784 | |
|
2008-11-07
| ||
| 17:25 | Implementation for OFBigArray. file: [f326f71c26] check-in: [59f16e8a3d] user: js branch: trunk, size: 3234 | |
|
2008-11-05
| ||
| 16:11 | OFOverflowException -> OFOutOfRangeException. file: [014c4c85fd] check-in: [3577c0d81c] user: js branch: trunk, size: 3234 | |
|
2008-11-02
| ||
| 00:27 | Some fixes for OFObject. file: [6aad9c4888] check-in: [9ff3dbe9f9] user: js branch: trunk, size: 3230 | |
|
2008-11-01
| ||
| 22:20 | Some exception stuff & withSize -> ofSize for OFObject. file: [99a5765c29] check-in: [9944a6f8a4] user: js branch: trunk, size: 2955 | |
| 21:47 | Allow using [ofobject resizeMem: NULL toSize: size]. file: [dfdab0e3f3] check-in: [a6b45eec2f] user: js branch: trunk, size: 2942 | |
|
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 | |
|
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 | |
|
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 | |
|
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 | |
|
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 | |
|
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 | |
|
2008-10-07
| ||
| 17:18 | Added OFFile. file: [deca1fe096] check-in: [71119a787b] user: js branch: trunk, size: 2145 | |
|
2008-09-14
| ||
| 19:03 | More exceptions stuff. file: [0937ee4297] check-in: [98fe076bd8] user: js branch: trunk, size: 2137 | |
| 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 | |
| 15:29 | Coding style. file: [b460fe3dcf] check-in: [778be56179] user: js branch: trunk, size: 1964 | |
|
2008-09-12
| ||
| 13:25 | Added: Initial import. file: [3a6fe1669c] check-in: [a580136c80] user: js branch: trunk, size: 1900 | |