ObjFW  History of src/OFString_UTF8.m of 780d0963712b39e5

History of file src/OFString_UTF8.m at check-in 780d0963712b39e5

2019-06-17
02:33
Deleted: Remove underscores from class names check-in: [17d57e01ff] user: js, branch: trunk, size: 0
2019-04-22
16:53
OFString_UTF8: Improved range checks file: [c33b1359c4] check-in: [0b962df002] user: js, branch: trunk, size: 28431 [annotate] [blame] [check-ins using] [diff]
2019-03-08
00:35
Use dot syntax file: [b5bfc583a1] check-in: [bceb7ed4c9] user: js, branch: trunk, size: 28407 [annotate] [blame] [check-ins using] [diff]
2019-01-03
19:13
Update copyright file: [0962ed33d1] check-in: [0509d7a844] user: js, branch: trunk, size: 28461 [annotate] [blame] [check-ins using] [diff]
2018-03-11
00:37
OFString: Move path handling into a category

This is the first step to have different versions of those for different
operating systems, rather than #ifdefs everywhere.

This also has the nice side-effect of not having one implementation in
OFString and another one in OFString_UTF8 anymore. The one in OFString
was a generic version, while the one in OFString_UTF8 was one optimized
for UTF-8 strings. Now only the version optimized for UTF-8 strings
exists, as this is by far the most common string implementation used,
and the overhead of converting from something else to UTF-8 is not more
than converting to UTF-32. file: [ec2d5729ba] check-in: [7a488c3062] user: js, branch: trunk, size: 28455 [annotate] [blame] [check-ins using] [diff]

2018-02-25
04:31
Reintroduce of_char{16,32}_t

There is no reliable way to check if C++ already defined those, as Clang
now defines char{16,32}_t even when it is not in C++ 11 mode. So we
cannot check if we are not in C++ 11 and then define them and otherwise
rely on the C++ 11 types. file: [d6a602d281] check-in: [505137f25f] user: js, branch: trunk, size: 30558 [annotate] [blame] [check-ins using] [diff]

2018-01-03
19:49
Update copyright notice file: [be8ebf571d] check-in: [7e5c81e186] user: js, branch: trunk, size: 30507 [annotate] [blame] [check-ins using] [diff]
2017-11-19
12:56
Fix compilation with GCC file: [ec9ecd6e22] check-in: [615a9f2eba] user: js, branch: trunk, size: 30484 [annotate] [blame] [check-ins using] [diff]
12:05
Fix warnings introduced by OFComparing change

Since OFComparing no longer conforms to OFObject, OFObject needed to be
added at a few places. file: [879030fae2] check-in: [11f24addd7] user: js, branch: trunk, size: 30490 [annotate] [blame] [check-ins using] [diff]

2017-11-04
21:12
OFString: Improve freeWhenDone in case of error file: [0ee13f2fd8] check-in: [ca0621da09] user: js, branch: 0.90, size: 30441 [annotate] [blame] [check-ins using] [diff]
21:09
OFString: Improve freeWhenDone in case of error file: [6dc5021b73] check-in: [9f3a4dfbc0] user: js, branch: trunk, size: 30480 [annotate] [blame] [check-ins using] [diff]
20:58
OFString_UTF8: Fix BOM handling in no copy init file: [77d4090528] check-in: [1aca64c18e] user: js, branch: 0.90, size: 30357 [annotate] [blame] [check-ins using] [diff]
16:01
+[stringWithUTF8StringNoCopy:length:freeWhenDone:] file: [542fa51776] check-in: [1ec122d57c] user: js, branch: trunk, size: 30396 [annotate] [blame] [check-ins using] [diff]
2017-10-29
00:41
Fix conversion between URL and path on Win32

This also adds -[OFURL fileSystemRepresentation] to correctly convert a
URL back to a path in the local file system. file: [c30817026a] check-in: [b83d1414b1] user: js, branch: trunk, size: 30176 [annotate] [blame] [check-ins using] [diff]

2017-10-22
15:05
Make Apple GCC with -Wshadow happy file: [9568261c3b] check-in: [a06354b42a] user: js, branch: trunk, size: 30476 [annotate] [blame] [check-ins using] [diff]
14:09
Make Apple GCC with -Wshadow happy file: [fb6ee6e76b] check-in: [31c0f5b89e] user: js, branch: 0.90, size: 30357 [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: [3425587555] check-in: [2f4e0df8be] user: js, branch: trunk, size: 30509 [annotate] [blame] [check-ins using] [diff]

2017-09-28
23:02
Enable -Wnullable-to-nonnull-conversion and adjust file: [c4bb148231] check-in: [2de9660312] user: js, branch: trunk, size: 30519 [annotate] [blame] [check-ins using] [diff]
2017-06-03
18:37
Properly check for sys/types.h file: [62af83b584] check-in: [4ec0948b1b] user: js, branch: trunk, size: 30390 [annotate] [blame] [check-ins using] [diff]
2017-05-21
21:28
Prefix private methods with of_ instead of OF_

This matches Apple's style. file: [2b39181352] check-in: [6b77a5dd8b] user: js, branch: trunk, size: 30355 [annotate] [blame] [check-ins using] [diff]

2017-05-07
21:25
Use char{16,32}_t instead of of_char{16,32}_t file: [b63159ccbd] check-in: [37d2a81754] user: js, branch: trunk, size: 30355 [annotate] [blame] [check-ins using] [diff]
20:10
Small code style change

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

2017-05-06
19:43
Clean up a few includes file: [961145e2e1] check-in: [cca678886f] user: js, branch: trunk, size: 30376 [annotate] [blame] [check-ins using] [diff]
2017-04-02
12:13
Use OF_PATH_CURRENT_DIRECTORY instead of @"." file: [d9922bef3f] check-in: [643985e07a] user: js, branch: trunk, size: 30395 [annotate] [blame] [check-ins using] [diff]
2017-02-12
13:33
Save a few bytes on the encodings file: [4a1023ff16] check-in: [8ae231f515] user: js, branch: trunk, size: 30374 [annotate] [blame] [check-ins using] [diff]
2017-02-05
22:47
Add ISO-8859-3 file: [b5d78abf98] check-in: [52e6e8aa89] user: js, branch: trunk, size: 29820 [annotate] [blame] [check-ins using] [diff]
21:22
Add KOI8-U encoding file: [37fcb522a7] check-in: [2c489201b7] user: js, branch: trunk, size: 29671 [annotate] [blame] [check-ins using] [diff]
01:31
Add KOI8-R encoding file: [7036f0659c] check-in: [59348cd51d] user: js, branch: trunk, size: 29538 [annotate] [blame] [check-ins using] [diff]
2017-01-19
23:08
Add support for disabling encodings

This allows building a smaller ObjFW if those are not needed. file: [652cb8ee2f] check-in: [766eedef4c] user: js, branch: trunk, size: 29405 [annotate] [blame] [check-ins using] [diff]

2017-01-17
03:23
Add ISO-8859-2 file: [4623150629] check-in: [7a27ce7b0b] user: js, branch: trunk, size: 29155 [annotate] [blame] [check-ins using] [diff]
2017-01-15
04:32
Add codepage 858

This only differs from codepage 850 by a single code point. file: [f5ba43aeaa] check-in: [adbf31f2f9] user: js, branch: trunk, size: 29036 [annotate] [blame] [check-ins using] [diff]

2017-01-11
04:22
Add Windows-1251 encoding file: [fe504fcb59] check-in: [0f88ccfb04] user: js, branch: trunk, size: 28911 [annotate] [blame] [check-ins using] [diff]
03:49
Use U+FFFF for invalid characters

This used to be U+FFFD, but if a character is not assigned in an
encoding, U+FFFF is a better match. file: [38f6296657] check-in: [a9f85ba3b1] user: js, branch: trunk, size: 28786 [annotate] [blame] [check-ins using] [diff]

2017-01-10
23:23
Add Mac OS Roman encoding file: [293372453e] check-in: [0832fcf579] user: js, branch: trunk, size: 28786 [annotate] [blame] [check-ins using] [diff]
21:38
Add codepage 850 file: [fdc7ecf620] check-in: [878c25c9d7] user: js, branch: trunk, size: 28670 [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: [432a4769a5] check-in: [44f45c2e35] user: js, branch: trunk, size: 28545 [annotate] [blame] [check-ins using] [diff]

2017-01-07
00:37
Add of_ascii_{to{upper,lower},is{alpha,alnum}}

These are independent of the locale and work on the ASCII character set.

Unlike the C ones, these are 8-bit safe, meaning if a character > 0x7F
is passed, is{alpha,alnum} returns false and to{upper,lower} returns the
original character. file: [b0d3c841b5] check-in: [d9eb7b50b3] user: js, branch: trunk, size: 28539 [annotate] [blame] [check-ins using] [diff]

2016-08-29
00:05
configure: Add --disable-unicode-tables option

This is only useful for size-constrained systems and changes the
behavior as follows:

* Case-insensitive comparisons only work as expected for ASCII
characters. This means that while a and A compare equal, ä and Ä do
not.

* -[OFMutableString {upper,lower}] and
-[OFString {upper,lower}caseString] only work on ASCII characters;
all other characters are left as they are. This means that the upper
version of a is A, but the upper version of ä is still ä (and vice
versa for lower). file: [539d29c205] check-in: [b7b33247d6] user: js, branch: trunk, size: 28512 [annotate] [blame] [check-ins using] [diff]

2016-07-03
19:38
-[pathComponents]: Include drive in 1st component file: [32973681cc] check-in: [541aab7a03] user: js, branch: trunk, size: 28441 [annotate] [blame] [check-ins using] [diff]
2016-06-05
21:17
Always cast to unsigned char for to{upper,lower}()

This is required as passing something signed to it is an error on
NetBSD, but passing anything else than a char is undefined on Linux. file: [f214cc2fb6] check-in: [09a0d12bae] user: js, branch: trunk, size: 28142 [annotate] [blame] [check-ins using] [diff]

2016-03-13
11:19
Change of_string_utf8_decode() API

It now returns <= 0 on error, with negative values being the number of
bytes it would have needed * -1.

This can be used to detect cut off and how many bytes are missing. file: [c460dbfe91] check-in: [5e2ef97c35] user: js, branch: trunk, size: 28090 [annotate] [blame] [check-ins using] [diff]

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

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

2015-05-03
11:34
Check <= SSIZE_MAX before assignign to ssize_t file: [30daa260be] check-in: [daf78156a7] user: js, branch: trunk, size: 28011 [annotate] [blame] [check-ins using] [diff]
2015-01-29
20:58
-[OFString lastPathComponent]: Return @"" for / file: [f9a61670cf] check-in: [775d6b52a5] user: js, branch: trunk, size: 27926 [annotate] [blame] [check-ins using] [diff]
2015-01-03
20:57
Update copyright file: [4d0413d200] check-in: [cfd374b906] user: js, branch: trunk, size: 27882 [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: [60dc6c49fb] check-in: [13ee56edf3] user: js, branch: trunk, size: 27876 [annotate] [blame] [check-ins using] [diff]

2014-04-14
00:45
Coding style

No functional change intended. file: [26025dccab] check-in: [9da9b2b64c] user: js, branch: trunk, size: 27919 [annotate] [blame] [check-ins using] [diff]

2014-01-04
00:24
Update copyright. file: [0b123dda77] check-in: [3b97fc3cd9] user: js, branch: trunk, size: 27867 [annotate] [blame] [check-ins using] [diff]
2013-12-01
11:50
Clean up the path delimiter mess. file: [cb1d0ad5b1] check-in: [00dbb47969] user: js, branch: trunk, size: 27861 [annotate] [blame] [check-ins using] [diff]
02:08
Port to DOS/DJGPP.

The port was much easier than expected. The only changes that were
required were defining the missing lrint() and useconds_t, the rest was
optional (like using backslashes for paths, even though slashes work
fine). file: [458af69b3f] check-in: [a0b63a8df4] user: js, branch: trunk, size: 28773 [annotate] [blame] [check-ins using] [diff]

2013-11-23
17:28
OF(Mutable)String_UTF8: Code simplification. file: [7fb4904a02] check-in: [f177032b43] user: js, branch: trunk, size: 28570 [annotate] [blame] [check-ins using] [diff]
2013-08-15
19:00
Move private methods into private headers. file: [33807e1aeb] check-in: [1d7a1cbca0] user: js, branch: trunk, size: 28880 [annotate] [blame] [check-ins using] [diff]
2013-08-14
19:17
+[stringWithPath:] -> +[pathWithComponents:].

This removes -[initWithPath:,...], so that it's finally possible to use
-[initWithPath:] for many places where a workaround like
-[initWithDirectoryPath:] was required before. file: [dcb1103ce6] check-in: [7c4179ab9b] user: js, branch: trunk, size: 28846 [annotate] [blame] [check-ins using] [diff]

2013-08-13
10:39
Add a few more instancetypes. file: [9860c5f0d1] check-in: [73ae6fa60f] user: js, branch: trunk, size: 30438 [annotate] [blame] [check-ins using] [diff]
2013-08-12
10:09
Add codepage 437.

This is required for ZIP files, which can use either codepage 437 or
Unicode. file: [48ca6830d9] check-in: [3912669d91] user: js, branch: trunk, size: 30410 [annotate] [blame] [check-ins using] [diff]

10:00
Don't store the first 128 chars of an encoding. file: [35d6df4f4a] check-in: [d36cf257fe] user: js, branch: trunk, size: 30285 [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: [3a479b89af] check-in: [3d16a30f41] user: js, branch: trunk, size: 30279 [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: [3ce37a1895] check-in: [c5ef582958] user: js, branch: trunk, size: 31231 [annotate] [blame] [check-ins using] [diff]

2013-02-12
18:22
Prefix all ivars with an underscore. file: [503640087e] check-in: [e40729d406] user: js, branch: trunk, size: 31171 [annotate] [blame] [check-ins using] [diff]
2013-01-23
21:52
Never compare to @"", use length instead. file: [0615761918] check-in: [ea4a43461c] user: js, branch: trunk, size: 30918 [annotate] [blame] [check-ins using] [diff]
2013-01-16
14:27
OFString: Add -[getCString:maxLength:encoding:]. file: [17c27fdf19] check-in: [7694d37135] user: js, branch: trunk, size: 30924 [annotate] [blame] [check-ins using] [diff]
2013-01-13
13:07
Add of_char{16,32}_t.

For ObjC++, these are defined to char{16,32}_t if C++11 is used. This
means passing e.g. a C++11 UTF-16 string to -[initWithUTF16String:]
works without a warning.

For C11, this is not necessary, as char{16,32}_t are just typedef'd to
uint_least{16,32}_t in <uchar.h> and thus compatible to the definition
of of_char{16,32}_t. The reason for not defining of_char{16,32}_t to
char{16,32}_t when using C11 is that <uchar.h> might be missing and that
char{16,32}_t are not required to be UTF-{16,32}, whereas in C++, they
are required to be UTF-{16,32}. file: [5a1fe9d9fc] check-in: [545b6f740e] user: js, branch: trunk, size: 30912 [annotate] [blame] [check-ins using] [diff]

2013-01-12
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: [c16c78a6d7] check-in: [9ddd33a258] user: js, branch: trunk, size: 30900 [annotate] [blame] [check-ins using] [diff]

2013-01-11
12:41
OFString: Improve API for characters / UTF-32.

With this change, there is a clear separation between characters and
UTF-32 strings now. Characters are just an array of characters in the
native endianess, with no BOM prepended. UTF-32 on the other hand may
have a BOM and can be swapped and is optionally zero-terminated.

This also fixes a few missing UTF-16 init methods in OFMutableString. file: [97c02a6c42] check-in: [50916b8dbe] user: js, branch: trunk, size: 30904 [annotate] [blame] [check-ins using] [diff]

12:13
Add -[OFMutableString appendCharacters:length:]. file: [ce12e0f51c] check-in: [beb9051a10] user: js, branch: trunk, size: 29801 [annotate] [blame] [check-ins using] [diff]
2013-01-10
22:51
Optimize -[OFString_UTF8 isEqual:] a little. file: [a02eabeb4e] check-in: [e03385a820] user: js, branch: trunk, size: 29899 [annotate] [blame] [check-ins using] [diff]
2013-01-09
22:24
Update copyright. file: [511ae88739] check-in: [813c00ccf0] user: js, branch: trunk, size: 29676 [annotate] [blame] [check-ins using] [diff]
2013-01-08
12:33
OFString: Add methods for UTF-32. file: [c7327619e7] check-in: [7cddd5f891] user: js, branch: trunk, size: 29670 [annotate] [blame] [check-ins using] [diff]
2012-12-30
00:22
Fix -[initWithUTF8StringNoCopy:freeWhenDone:]. file: [0ddb5e507a] check-in: [c16e6aca56] user: js, branch: trunk, size: 28864 [annotate] [blame] [check-ins using] [diff]
2012-12-29
17:56
OFString: Improve API for Unicode strings.

* Instead of Unicode "strings", it uses the term "Unicode character
array".
* No terminating 0 character anymore, as these are not C strings
anyway. file: [797a478d4d] check-in: [640b225ba7] user: js, branch: trunk, size: 28916 [annotate] [blame] [check-ins using] [diff]

14:43
Prettify some code. file: [e371dc8e8d] check-in: [374956b098] user: js, branch: trunk, size: 28920 [annotate] [blame] [check-ins using] [diff]
2012-12-22
15:37
Add -[doesNotRecognizeSelector:]. file: [dfd9d65700] check-in: [917ce5754c] user: js, branch: trunk, size: 30384 [annotate] [blame] [check-ins using] [diff]
2012-12-16
01:15
Add encodings for -[cStringUsingEncoding:].

This adds ISO 8859-1 and ASCII, ISO 8859-15 and Windows-1252 will
follow. file: [75ce5faed6] check-in: [556234e290] user: js, branch: trunk, size: 30422 [annotate] [blame] [check-ins using] [diff]

2012-12-15
23:31
OFString: Improved API for getting C strings. file: [7793b455ee] check-in: [e2f4c1283c] user: js, branch: trunk, size: 30547 [annotate] [blame] [check-ins using] [diff]
2012-12-09
12:31
Fix +[OFString stringWithUTF8StringNoCopy:…]. file: [b90943c641] check-in: [b55b4ab87b] user: js, branch: trunk, size: 30643 [annotate] [blame] [check-ins using] [diff]
2012-10-16
14:47
A few more API improvements.

This should make it more future-proof, as adding new options is easier
than adding new methods for each and every combination of options. file: [7a3937da16] check-in: [fcaa549324] user: js, branch: trunk, size: 30604 [annotate] [blame] [check-ins using] [diff]

2012-10-14
10:36
More integer overflow checks. file: [b09a7e72c1] check-in: [53af033b0e] user: js, branch: trunk, size: 30585 [annotate] [blame] [check-ins using] [diff]
00:59
OF_INVALID_INDEX -> OF_NOT_FOUND. file: [f11d00232a] check-in: [f38744df74] user: js, branch: trunk, size: 30236 [annotate] [blame] [check-ins using] [diff]
00:54
range.start -> range.location. file: [e621285ff6] check-in: [c9433ea60d] user: js, branch: trunk, size: 30252 [annotate] [blame] [check-ins using] [diff]
2012-10-13
22:21
Add -[OFString rangeOfString:options:range:]. file: [f8f277011d] check-in: [20dddc7345] user: js, branch: trunk, size: 30231 [annotate] [blame] [check-ins using] [diff]
21:29
Rename s->UTF8 to s->isUTF8. file: [dd6ca8a27b] check-in: [9817eab3be] user: js, branch: trunk, size: 29674 [annotate] [blame] [check-ins using] [diff]
21:06
of_bswap* -> OF_BSWAP*.

This makes it clear that multiple evaluation of parameters is possible. file: [2e4dae0bbe] check-in: [1cb8fee5c3] user: js, branch: trunk, size: 29614 [annotate] [blame] [check-ins using] [diff]

20:50
Move UTF-8 functions to OFString_UTF8.m. file: [b3064980ae] check-in: [9cfefe9c30] user: js, branch: trunk, size: 29614 [annotate] [blame] [check-ins using] [diff]
20:02
indexOfFirstOccurrenceOfString -> rangeOfString. file: [4e25f0432f] check-in: [5209390938] user: js, branch: trunk, size: 26237 [annotate] [blame] [check-ins using] [diff]
19:30
of_endianess_t -> of_byte_order_t. file: [134f59b75b] check-in: [255fd75828] user: js, branch: trunk, size: 26321 [annotate] [blame] [check-ins using] [diff]
2012-09-16
15:27
Prefix all private methods with OF_. file: [8ace43f8fa] check-in: [c137da5e5b] user: js, branch: trunk, size: 26317 [annotate] [blame] [check-ins using] [diff]
2012-09-09
14:36
OFNumber: Implement OFComparing. file: [de39f05b50] check-in: [56df9c44de] user: js, branch: trunk, size: 26325 [annotate] [blame] [check-ins using] [diff]
2012-09-06
19:13
Add -[OFString initWithUTF8String:freeWhenDone:]. file: [743848703f] check-in: [3659c87c63] user: js, branch: trunk, size: 26300 [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: [b0a0f37ea8] check-in: [1255f3a11a] user: js, branch: trunk, size: 25451 [annotate] [blame] [check-ins using] [diff]

2012-07-12
01:28
Don't access isa directly. file: [090bb87767] check-in: [8892ae9fcc] user: js, branch: trunk, size: 25403 [annotate] [blame] [check-ins using] [diff]
2012-06-10
13:28
More API improvements. file: [65dd22d751] check-in: [11d3d69a22] user: js, branch: trunk, size: 25149 [annotate] [blame] [check-ins using] [diff]
2012-06-06
13:47
Slightly change the memory management API.

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

2012-03-17
15:48
One malloc less for creating an immutable UTF-8 string. file: [03beefc292] check-in: [0dafdc4730] user: js, branch: trunk, size: 25151 [annotate] [blame] [check-ins using] [diff]
2012-03-16
14:01
One malloc less when allocating a string. file: [2441b116ae] check-in: [3005748a9d] user: js, branch: trunk, size: 24423 [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: [2df9fbd0df] check-in: [28170f5f65] user: js, branch: trunk, size: 24829 [annotate] [blame] [check-ins using] [diff]

2012-02-27
13:14
Fix missing includes of <sys/types.h> for ssize_t. file: [6c7986d6d1] check-in: [337895d46c] user: js, branch: 0.6, size: 24579 [annotate] [blame] [check-ins using] [diff]
13:14
Fix missing includes of <sys/types.h> for ssize_t. file: [df8f106867] check-in: [10e0d710ab] user: js, branch: trunk, size: 24777 [annotate] [blame] [check-ins using] [diff]
12:25
Add -[OFString componentsSeparatedByString:skipEmpty:]. file: [c9c969d32c] check-in: [c007c0d4f7] user: js, branch: trunk, size: 24753 [annotate] [blame] [check-ins using] [diff]
2012-01-24
12:01
Cache hashes of strings. file: [2b9e572a06] check-in: [a0d967e8dd] user: js, branch: trunk, size: 24555 [annotate] [blame] [check-ins using] [diff]
11:57
Compare pointers of strings before comparing the string content. file: [53d2bab608] check-in: [af56ce47e0] user: js, branch: trunk, size: 24484 [annotate] [blame] [check-ins using] [diff]
2012-01-05
00:56
Update copyright. file: [38887f119f] check-in: [ce70e17b38] user: js, branch: trunk, size: 24347 [annotate] [blame] [check-ins using] [diff]
2011-11-21
16:47
Implement -[OFString_UTF8 hash] for better performance. file: [a98ac09f1e] check-in: [855de7c3a7] user: js, branch: trunk, size: 24341 [annotate] [blame] [check-ins using] [diff]
2011-11-20
18:41
Added: Make OFString a class cluster.

It is a class cluster now, but there is still much to improve. file: [3609f3a164] check-in: [301ee63212] user: js, branch: trunk, size: 23880 [annotate] [blame] [check-ins using]