ObjFW  History of src/OFMapTable.h of 21244a7e6291184a

History of the file that is called src/OFMapTable.h at check-in 21244a7e6291184a

2024-04-03
02:16
[5ec91b5432] part of check-in [7413a728a7] Change license to LGPLv3 only (check-in: [7413a728a7] user: js, branch: trunk, size: 7944) [annotate] [blame] [check-ins using] [diff]
2024-01-02
17:17
[442352c010] part of check-in [26ddd2e4e4] Update copyright (check-in: [26ddd2e4e4] user: js, branch: trunk, size: 7736) [annotate] [blame] [check-ins using] [diff]
2023-07-19
21:00
[05fc4b813f] part of check-in [cdc49aa375] OFMapTable: Change the rotation when resizing (check-in: [cdc49aa375] user: js, branch: trunk, size: 7736) [annotate] [blame] [check-ins using] [diff]
2023-01-06
09:04
[0187aff28b] part of check-in [8939cbdb52] Update copyright (check-in: [8939cbdb52] user: js, branch: trunk, size: 7734) [annotate] [blame] [check-ins using] [diff]
2022-09-12
14:34
[382835ac81] part of check-in [c40a295629] Either restrict subclassing or reserve ivars (check-in: [c40a295629] user: js, branch: trunk, size: 7734) [annotate] [blame] [check-ins using] [diff]
2022-02-12
07:46
[db5052bd42] part of check-in [1a86b8175b] Update copyright (check-in: [1a86b8175b] user: js, branch: trunk, size: 7678) [annotate] [blame] [check-ins using] [diff]
2021-12-24
11:06
[3ab57c4538] part of check-in [ae4879fe0d] OFMapTable: Fix rotating with the wrong size

This essentially made it a shift rather than a rotate, sometimes
shifting most or even all of the bits out and making all hashes collide. (check-in: [ae4879fe0d] user: js, branch: trunk, size: 7678) [annotate] [blame] [check-ins using] [diff]

2021-04-29
23:24
[67af88b431] part of check-in [2fcf5a3052] Clean up struct and enum typedefs

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

2021-04-19
21:07
[0dfbcfb542] part of check-in [c81086beeb] Rename all struct of_* (check-in: [c81086beeb] user: js, branch: new-naming-convention, size: 7736) [annotate] [blame] [check-ins using] [diff]
2021-04-17
14:21
[14b8d30277] part of check-in [943d9bd388] of_map_table_functions_t -> OFMapTableFunctions (check-in: [943d9bd388] user: js, branch: new-naming-convention, size: 7742) [annotate] [blame] [check-ins using] [diff]
03:21
[843bd062c2] part of check-in [c4e0e56fa3] Rename all blocks (check-in: [c4e0e56fa3] user: js, branch: new-naming-convention, size: 7841) [annotate] [blame] [check-ins using] [diff]
2021-03-07
02:36
[428b0aea8c] part of check-in [a0fd103a0b] Style change: Allow more than 1 argument per line

This is only migrating some places, others will be migrated as they are
touched. (check-in: [a0fd103a0b] user: js, branch: trunk, size: 7869) [annotate] [blame] [check-ins using] [diff]

2021-01-02
22:04
[aaa3a8b0bc] part of check-in [374e1a1bfa] Update copyright (check-in: [374e1a1bfa] user: js, branch: trunk, size: 7873) [annotate] [blame] [check-ins using] [diff]
2020-10-10
21:54
[bf028bd496] part of check-in [ac004e624d] More type cleanups (check-in: [ac004e624d] user: js, branch: trunk, size: 7962) [annotate] [blame] [check-ins using] [diff]
14:27
[7fe069efae] part of check-in [aeb403a1ed] 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. (check-in: [aeb403a1ed] user: js, branch: trunk, size: 7956) [annotate] [blame] [check-ins using] [diff]

2020-10-03
11:35
[c882862b86] part of check-in [163a4a5a2e] Use /** */ instead of /*! */ for documentation (check-in: [163a4a5a2e] user: js, branch: trunk, size: 7966) [annotate] [blame] [check-ins using] [diff]
2020-04-12
12:52
[18718d5a71] part of check-in [d35b4e3a85] Work around broken -Wdocumentation in Clang 10 (check-in: [d35b4e3a85] user: js, branch: trunk, size: 7966) [annotate] [blame] [check-ins using] [diff]
2020-01-02
01:51
[39846c8467] part of check-in [c7f0229795] Update copyright (check-in: [c7f0229795] user: js, branch: trunk, size: 7908) [annotate] [blame] [check-ins using] [diff]
2019-09-29
19:35
[b6dd6c63b6] part of check-in [496695d778] Either restrict subclassing or reserve ivar space

This allows ABI stability with the fragile ABI. (check-in: [496695d778] user: js, branch: trunk, size: 7905) [annotate] [blame] [check-ins using] [diff]

2019-06-19
00:45
[1f1f29d31e] part of check-in [7214a2c7af] OFEnumerator: Remove -[reset]

It's not very useful and is a problem for the Foundation bridge, as
NSEnumerator does not have it. (check-in: [7214a2c7af] user: js, branch: trunk, size: 7879) [annotate] [blame] [check-ins using] [diff]

2019-01-03
19:13
[094ec6866a] part of check-in [0509d7a844] Update copyright (check-in: [0509d7a844] user: js, branch: trunk, size: 8009) [annotate] [blame] [check-ins using] [diff]
2018-01-03
19:49
[2f6bf5bdbd] part of check-in [7e5c81e186] Update copyright notice (check-in: [7e5c81e186] user: js, branch: trunk, size: 8003) [annotate] [blame] [check-ins using] [diff]
2017-11-18
18:50
[60fe89eb9b] part of check-in [cc3ad3ddd3] Documentation: Use @brief for all properties (check-in: [cc3ad3ddd3] user: js, branch: trunk, size: 7980) [annotate] [blame] [check-ins using] [diff]
2017-10-29
21:58
[36496cd646] part of check-in [f3ccf14461] Convert methods to properties where appropriate

This improves Swift compatibility. (check-in: [f3ccf14461] user: js, branch: trunk, size: 7959) [annotate] [blame] [check-ins using] [diff]

2017-10-17
00:33
[df99b8af7c] part of check-in [2f4e0df8be] 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. (check-in: [2f4e0df8be] user: js, branch: trunk, size: 7998) [annotate] [blame] [check-ins using] [diff]

2017-09-28
23:02
[975babca81] part of check-in [2de9660312] Enable -Wnullable-to-nonnull-conversion and adjust (check-in: [2de9660312] user: js, branch: trunk, size: 7938) [annotate] [blame] [check-ins using] [diff]
2017-09-27
22:35
[59f43aca32] part of check-in [697e3ecbf7] More nullability fixes (check-in: [697e3ecbf7] user: js, branch: trunk, size: 7794) [annotate] [blame] [check-ins using] [diff]
2017-09-26
22:01
[21253784bd] part of check-in [319709fff1] Many nullability fixes (check-in: [319709fff1] user: js, branch: 0.90, size: 7726) [annotate] [blame] [check-ins using] [diff]
21:53
[840bb3bdb2] part of check-in [52011fbfd6] Many nullability fixes (check-in: [52011fbfd6] user: js, branch: trunk, size: 7738) [annotate] [blame] [check-ins using] [diff]
00:09
[cdb36b51da] part of check-in [9f2b639aef] Get rid of the last /// comments (check-in: [9f2b639aef] user: js, branch: trunk, size: 7690) [annotate] [blame] [check-ins using] [diff]
00:02
[d688a725dd] part of check-in [3da9426ea5] Fix a few missing nullable (check-in: [3da9426ea5] user: js, branch: trunk, size: 7678) [annotate] [blame] [check-ins using] [diff]
2017-05-13
16:29
[9ffd8ae151] part of check-in [f663d40cbd] Also use nonatomic for non-object properties (check-in: [f663d40cbd] user: js, branch: trunk, size: 7669) [annotate] [blame] [check-ins using] [diff]
2017-05-08
21:37
[39ab811d56] part of check-in [469a496cd2] Add OF_DESIGNATED_INITIALIZER & OF_METHOD_FAMILY (check-in: [469a496cd2] user: js, branch: trunk, size: 7647) [annotate] [blame] [check-ins using] [diff]
2017-05-07
23:14
[6e6fb2bdca] part of check-in [16c05e87e1] Add OF_UNAVAILABLE (check-in: [16c05e87e1] user: js, branch: trunk, size: 7621) [annotate] [blame] [check-ins using] [diff]
20:10
[1bd4f42cb6] part of check-in [4af49a13c3] Small code style change

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

2017-02-04
17:45
[68e1c948c0] part of check-in [5a31a537a1] Fix typos in comments and strings found by aspell (check-in: [5a31a537a1] user: js, branch: trunk, size: 7563) [annotate] [blame] [check-ins using] [diff]
2017-01-09
17:36
[7e670427ae] part of check-in [44f45c2e35] Update copyright

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

2016-06-04
18:49
[2c4d7aef99] part of check-in [1ba9c051a6] OFMapTable: Rename valueForKey to objectForKey

The reason for this is that -[valueForKey:] could be confused with
Key Value Coding. (check-in: [1ba9c051a6] user: js, branch: trunk, size: 7552) [annotate] [blame] [check-ins using] [diff]

2016-01-03
00:43
[8c1fa384ac] part of check-in [cec0f072f8] Update copyright

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

00:41
[65a71eea19] part of check-in [2a27cf3000] Update copyright

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

2015-11-29
11:43
[761c1c436d] part of check-in [48980f2297] Make properties a requirement and clean up code

This increases the required GCC version from 4.0 to 4.6 (exception:
Apple GCC, which already supports this with >= 4.0 starting with OS X
10.5). Since even GCC 4.6 is really old by now, there is no point in
still supporting something even older and making the code ugly because
of that. While some hardware and OS support was dropped from GCC 4.6
compared to GCC 4.0, there is nothing in there that would be an
interesting target with the exception of BeOS maybe - but a port to BeOS
can also be achieved using the Haiku support. The other dropped OSes are
mostly old versions of OSes while newer ones are still being supported
(and those newer versions of those OSes still support the same
hardware). (check-in: [48980f2297] user: js, branch: trunk, size: 7453) [annotate] [blame] [check-ins using] [diff]

2015-11-21
18:35
[fa70b8daed] part of check-in [d526d938d7] Remove OF_NULLABLE / OF_NONNULL

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

This also defines _Null_unspecified to nothing if unavailable. (check-in: [d526d938d7] user: js, branch: trunk, size: 7557) [annotate] [blame] [check-ins using] [diff]

2015-06-14
10:45
[a855386419] part of check-in [b7097a67b6] Add OF_NONNULL / OF_NULLABLE and use that instead

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

2015-06-13
22:26
[03ba48a726] part of check-in [9e76144ef8] Add support for and use the new nullability (check-in: [9e76144ef8] user: js, branch: trunk, size: 7618) [annotate] [blame] [check-ins using] [diff]
2015-01-03
20:57
[d4d456e6cd] part of check-in [cfd374b906] Update copyright (check-in: [cfd374b906] user: js, branch: trunk, size: 7422) [annotate] [blame] [check-ins using] [diff]
2014-02-18
18:50
[7932c0a40a] part of check-in [246cfe0807] Documentation: Show correct imports (check-in: [246cfe0807] user: js, branch: trunk, size: 7416) [annotate] [blame] [check-ins using] [diff]
2014-01-04
00:24
[3debf5b6eb] part of check-in [3b97fc3cd9] Update copyright. (check-in: [3b97fc3cd9] user: js, branch: trunk, size: 7248) [annotate] [blame] [check-ins using] [diff]
2013-12-01
12:12
[67db213ab9] part of check-in [d7b691c402] Make OFMapTableEnumeratorWrapper private. (check-in: [d7b691c402] user: js, branch: trunk, size: 7242) [annotate] [blame] [check-ins using] [diff]
2013-08-15
19:00
[98d8e166cb] part of check-in [1d7a1cbca0] Move private methods into private headers. (check-in: [1d7a1cbca0] user: js, branch: trunk, size: 7438) [annotate] [blame] [check-ins using] [diff]
2013-08-10
23:12
[260a69baad] part of check-in [aae02e7970] Add -[OFMutableDictionary removeAllObjects]. (check-in: [aae02e7970] user: js, branch: trunk, size: 7716) [annotate] [blame] [check-ins using] [diff]
2013-06-20
08:13
[bef3845de0] part of check-in [5ec11e8b56] Add support for MessagePack extensions. (check-in: [5ec11e8b56] user: js, branch: trunk, size: 7652) [annotate] [blame] [check-ins using] [diff]
2013-03-08
22:44
[aa28d14053] part of check-in [e8473b9db8] Document the block types.

This also removes "bool *stop" from some blocks where it does not make
sense. (check-in: [e8473b9db8] user: js, branch: trunk, size: 7652) [annotate] [blame] [check-ins using] [diff]

2013-03-04
17:20
[e819467858] part of check-in [c5ef582958] Replace BOOL with bool.

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

2013-02-18
11:07
[98630c9c0b] part of check-in [4fb0f4bf66] Add -[OFMutableDictionary initWithCapacity:].

This was already implemented in OFDictionary_hashtable for internal
usage and is now publicly available. (check-in: [4fb0f4bf66] user: js, branch: trunk, size: 7234) [annotate] [blame] [check-ins using] [diff]

2013-02-12
18:22
[c74d98dfe6] part of check-in [e40729d406] Prefix all ivars with an underscore. (check-in: [e40729d406] user: js, branch: trunk, size: 7248) [annotate] [blame] [check-ins using] [diff]
2013-01-09
22:24
[7677133529] part of check-in [813c00ccf0] Update copyright. (check-in: [813c00ccf0] user: js, branch: trunk, size: 7236) [annotate] [blame] [check-ins using] [diff]
2013-01-03
22:26
[3754665273] part of check-in [7cebeaa808] OFMapTable: Rotate hashes randomly.

This makes the map table use the full range of the hash and not only the
least significant bits, making it harder for an attacker to find
collisions. (check-in: [7cebeaa808] user: js, branch: trunk, size: 7230) [annotate] [blame] [check-ins using] [diff]

2012-12-06
11:00
[91b9317d21] part of check-in [4857107479] OFMapTable: Rotate hash by a random number of bits

By rotating the hash by a random number of bits, an attacker needs to
find collisions on the full 32 bits of the hash and not only on the
lower n bits that are actually used by the map table, as an attacker
can't know which bits are actually used for the map table. (check-in: [4857107479] user: js, branch: trunk, size: 7246) [annotate] [blame] [check-ins using] [diff]

2012-12-04
09:59
[5b6730706a] part of check-in [590fa6ed79] Add a per-hashtable seed.

This should make it impossible to retrieve of_hash_seed by inserting
keys into a hashtable and then retrieving the hashtable. Without this
change, the order could be used to make guesses about of_hash_seed,
which could be a problem for long running processes. (check-in: [590fa6ed79] user: js, branch: trunk, size: 7229) [annotate] [blame] [check-ins using] [diff]

2012-12-01
17:50
[dcccbffbc5] part of check-in [ed438b979d] OFSet_hashtable: Store in OFMapTable. (check-in: [ed438b979d] user: js, branch: trunk, size: 7213) [annotate] [blame] [check-ins using] [diff]
17:26
Added: [b9cf6cd576] part of check-in [6f081c14f9] Add OFMapTable. (check-in: [6f081c14f9] user: js, branch: trunk, size: 7019) [annotate] [blame] [check-ins using]