ObjFW  Diff

Differences From Artifact [7ccafaf30f]:

To Artifact [8882363f15]:


35
36
37
38
39
40
41
42

43
44
45
46
47
48

49
50
51
52
53

54
55
56
57
58
59

60
61
62
63
64
65
66
35
36
37
38
39
40
41

42
43
44
45
46
47

48
49
50
51
52

53
54
55
56
57
58

59
60
61
62
63
64
65
66







-
+





-
+




-
+





-
+







struct of_map_table_bucket {
	void *key, *value;
	uint32_t hash;
};
static struct of_map_table_bucket deleted = {};

static void*
default_retain(void *value)
defaultRetain(void *value)
{
	return value;
}

static void
default_release(void *value)
defaultRelease(void *value)
{
}

static uint32_t
default_hash(void *value)
defaultHash(void *value)
{
	return (uint32_t)(uintptr_t)value;
}

static bool
default_equal(void *value1, void *value2)
defaultEqual(void *value1, void *value2)
{
	return (value1 == value2);
}

@interface OFMapTable (OF_PRIVATE_CATEGORY)
- (void)OF_setValue: (void*)value
	     forKey: (void*)key
124
125
126
127
128
129
130
131
132
133
134




135
136
137
138
139




140
141
142
143
144
145
146
124
125
126
127
128
129
130




131
132
133
134
135




136
137
138
139
140
141
142
143
144
145
146







-
-
-
-
+
+
+
+

-
-
-
-
+
+
+
+







		_keyFunctions = keyFunctions;
		_valueFunctions = valueFunctions;

#define SET_DEFAULT(var, value) \
	if (var == NULL)	\
		var = value;

		SET_DEFAULT(_keyFunctions.retain, default_retain);
		SET_DEFAULT(_keyFunctions.release, default_release);
		SET_DEFAULT(_keyFunctions.hash, default_hash);
		SET_DEFAULT(_keyFunctions.equal, default_equal);
		SET_DEFAULT(_keyFunctions.retain, defaultRetain);
		SET_DEFAULT(_keyFunctions.release, defaultRelease);
		SET_DEFAULT(_keyFunctions.hash, defaultHash);
		SET_DEFAULT(_keyFunctions.equal, defaultEqual);

		SET_DEFAULT(_valueFunctions.retain, default_retain);
		SET_DEFAULT(_valueFunctions.release, default_release);
		SET_DEFAULT(_valueFunctions.hash, default_hash);
		SET_DEFAULT(_valueFunctions.equal, default_equal);
		SET_DEFAULT(_valueFunctions.retain, defaultRetain);
		SET_DEFAULT(_valueFunctions.release, defaultRelease);
		SET_DEFAULT(_valueFunctions.hash, defaultHash);
		SET_DEFAULT(_valueFunctions.equal, defaultEqual);

#undef SET_DEFAULT

		if (capacity > UINT32_MAX / sizeof(*_buckets) ||
		    capacity > UINT32_MAX / 8)
			@throw [OFOutOfRangeException exception];