ObjFW  History of src/OFMapTable.h of 10f006be3783a5ca

History of file src/OFMapTable.h at check-in 10f006be3783a5ca

2024-06-17
21:08
Always use <ObjFW/ObjFW.h> in documentation file: [a85c5a2da3] check-in: [164f2fb4bf] user: js, branch: trunk, size: 7929 [annotate] [blame] [check-ins using] [diff]
2024-04-03
02:16
Change license to LGPLv3 only file: [5ec91b5432] check-in: [7413a728a7] user: js, branch: trunk, size: 7944 [annotate] [blame] [check-ins using] [diff]
2024-01-02
17:17
Update copyright file: [442352c010] check-in: [26ddd2e4e4] user: js, branch: trunk, size: 7736 [annotate] [blame] [check-ins using] [diff]
2023-07-19
21:00
OFMapTable: Change the rotation when resizing file: [05fc4b813f] check-in: [cdc49aa375] user: js, branch: trunk, size: 7736 [annotate] [blame] [check-ins using] [diff]
2023-01-06
09:04
Update copyright file: [0187aff28b] check-in: [8939cbdb52] user: js, branch: trunk, size: 7734 [annotate] [blame] [check-ins using] [diff]
2022-09-12
14:34
Either restrict subclassing or reserve ivars file: [382835ac81] check-in: [c40a295629] user: js, branch: trunk, size: 7734 [annotate] [blame] [check-ins using] [diff]
2022-02-12
07:46
Update copyright file: [db5052bd42] check-in: [1a86b8175b] user: js, branch: trunk, size: 7678 [annotate] [blame] [check-ins using] [diff]
2021-12-24
11:06
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. file: [3ab57c4538] check-in: [ae4879fe0d] user: js, branch: trunk, size: 7678 [annotate] [blame] [check-ins using] [diff]

2021-04-29
23:24
Clean up struct and enum typedefs

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

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

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

2021-01-02
22:04
Update copyright file: [aaa3a8b0bc] check-in: [374e1a1bfa] user: js, branch: trunk, size: 7873 [annotate] [blame] [check-ins using] [diff]
2020-10-10
21:54
More type cleanups file: [bf028bd496] check-in: [ac004e624d] user: js, branch: trunk, size: 7962 [annotate] [blame] [check-ins using] [diff]
14:27
OFObject: Change type of -[hash] to unsigned long

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

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

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

2019-06-19
00:45
OFEnumerator: Remove -[reset]

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

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

This improves Swift compatibility. file: [36496cd646] check-in: [f3ccf14461] user: js, branch: trunk, size: 7959 [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: [df99b8af7c] check-in: [2f4e0df8be] user: js, branch: trunk, size: 7998 [annotate] [blame] [check-ins using] [diff]

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

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

2017-02-04
17:45
Fix typos in comments and strings found by aspell file: [68e1c948c0] check-in: [5a31a537a1] user: js, branch: trunk, size: 7563 [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: [7e670427ae] check-in: [44f45c2e35] user: js, branch: trunk, size: 7558 [annotate] [blame] [check-ins using] [diff]

2016-06-04
18:49
OFMapTable: Rename valueForKey to objectForKey

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

2016-01-03
00:43
Update copyright

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

00:41
Update copyright

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

2015-11-29
11:43
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). file: [761c1c436d] check-in: [48980f2297] user: js, branch: trunk, size: 7453 [annotate] [blame] [check-ins using] [diff]

2015-11-21
18:35
Remove OF_NULLABLE / OF_NONNULL

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

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

2015-06-14
10:45
Add OF_NONNULL / OF_NULLABLE and use that instead

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

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

This also removes "bool *stop" from some blocks where it does not make
sense. file: [aa28d14053] check-in: [e8473b9db8] user: js, branch: trunk, size: 7652 [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: [e819467858] check-in: [c5ef582958] user: js, branch: trunk, size: 7234 [annotate] [blame] [check-ins using] [diff]

2013-02-18
11:07
Add -[OFMutableDictionary initWithCapacity:].

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

2013-02-12
18:22
Prefix all ivars with an underscore. file: [c74d98dfe6] check-in: [e40729d406] user: js, branch: trunk, size: 7248 [annotate] [blame] [check-ins using] [diff]
2013-01-09
22:24
Update copyright. file: [7677133529] check-in: [813c00ccf0] user: js, branch: trunk, size: 7236 [annotate] [blame] [check-ins using] [diff]
2013-01-03
22:26
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. file: [3754665273] check-in: [7cebeaa808] user: js, branch: trunk, size: 7230 [annotate] [blame] [check-ins using] [diff]

2012-12-06
11:00
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. file: [91b9317d21] check-in: [4857107479] user: js, branch: trunk, size: 7246 [annotate] [blame] [check-ins using] [diff]

2012-12-04
09:59
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. file: [5b6730706a] check-in: [590fa6ed79] user: js, branch: trunk, size: 7229 [annotate] [blame] [check-ins using] [diff]

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