mirror of
https://github.com/gnustep/libs-base.git
synced 2025-05-31 08:41:03 +00:00
Tidied retain mechanism
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@3644 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
4b2e7d0859
commit
c2c4c8dd43
3 changed files with 10 additions and 6 deletions
|
@ -102,7 +102,8 @@ FastArrayAddItem(FastArray array, FastArrayItem item)
|
||||||
array->old = array->cap;
|
array->old = array->cap;
|
||||||
array->cap = next;
|
array->cap = next;
|
||||||
}
|
}
|
||||||
array->ptr[array->count++] = FAST_ARRAY_RETAIN(item);
|
FAST_ARRAY_RETAIN(item);
|
||||||
|
array->ptr[array->count++] = item;
|
||||||
}
|
}
|
||||||
|
|
||||||
static INLINE void
|
static INLINE void
|
||||||
|
@ -122,7 +123,8 @@ FastArraySetItemAtIndex(FastArray array, FastArrayItem item, unsigned index)
|
||||||
if (array->ptr[index].o != item.o)
|
if (array->ptr[index].o != item.o)
|
||||||
{
|
{
|
||||||
FAST_ARRAY_RELEASE(array->ptr[index]);
|
FAST_ARRAY_RELEASE(array->ptr[index]);
|
||||||
array->ptr[index] = FAST_ARRAY_RETAIN(item);
|
FAST_ARRAY_RETAIN(item);
|
||||||
|
array->ptr[index] = item;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -93,6 +93,7 @@
|
||||||
|
|
||||||
typedef union {
|
typedef union {
|
||||||
id o;
|
id o;
|
||||||
|
NSObject *O;
|
||||||
Class c;
|
Class c;
|
||||||
SEL C;
|
SEL C;
|
||||||
int i;
|
int i;
|
||||||
|
@ -529,8 +530,8 @@ FastMapAddPair(FastMapTable map, FastMapItem key, FastMapItem value)
|
||||||
{
|
{
|
||||||
FastMapNode node;
|
FastMapNode node;
|
||||||
|
|
||||||
key = FAST_MAP_RETAIN_KEY(key);
|
FAST_MAP_RETAIN_KEY(key);
|
||||||
value = FAST_MAP_RETAIN_VAL(value);
|
FAST_MAP_RETAIN_VAL(value);
|
||||||
node = FastMapNewNode(map, key, value);
|
node = FastMapNewNode(map, key, value);
|
||||||
|
|
||||||
if (node != 0)
|
if (node != 0)
|
||||||
|
@ -561,7 +562,7 @@ FastMapAddKey(FastMapTable map, FastMapItem key)
|
||||||
{
|
{
|
||||||
FastMapNode node;
|
FastMapNode node;
|
||||||
|
|
||||||
key = FAST_MAP_RETAIN_KEY(key);
|
FAST_MAP_RETAIN_KEY(key);
|
||||||
node = FastMapNewNode(map, key);
|
node = FastMapNewNode(map, key);
|
||||||
|
|
||||||
if (node != 0)
|
if (node != 0)
|
||||||
|
|
|
@ -102,7 +102,8 @@ myEqual(id self, id other)
|
||||||
*/
|
*/
|
||||||
#define FAST_MAP_HASH(X) myHash(X.o)
|
#define FAST_MAP_HASH(X) myHash(X.o)
|
||||||
#define FAST_MAP_EQUAL(X,Y) myEqual(X.o,Y.o)
|
#define FAST_MAP_EQUAL(X,Y) myEqual(X.o,Y.o)
|
||||||
#define FAST_MAP_RETAIN_KEY(X) [((id)(X).o) copyWithZone: map->zone]
|
#define FAST_MAP_RETAIN_KEY(X) ((id)(X).o) = \
|
||||||
|
[((id)(X).o) copyWithZone: map->zone]
|
||||||
|
|
||||||
#include "FastMap.x"
|
#include "FastMap.x"
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue