This is NSMapTable.h in view mode; [Download] [Up]
/*
Copyright (C) 1996
Ovidiu Predescu <ovidiu@bx.logicnet.ro>
Mircea Oancea <mircea@jupiter.elcom.pub.ro>
Author: Mircea Oancea <mircea@jupiter.elcom.pub.ro>
This file is part of the FoundationExtensions library.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef __NSMapTable_h__
#define __NSMapTable_h__
#include <Foundation/NSObject.h>
@class NSArray;
struct _NSMapTable;
struct _NSMapNode {
void *key;
void *value;
struct _NSMapNode *next;
};
typedef struct _NSMapTableKeyCallBacks {
unsigned (*hash)(struct _NSMapTable *table, const void *anObject);
BOOL (*isEqual)(struct _NSMapTable *table, const void *anObject1,
const void *anObject2);
void (*retain)(struct _NSMapTable *table, const void *anObject);
void (*release)(struct _NSMapTable *table, void *anObject);
NSString *(*describe)(struct _NSMapTable *table, const void *anObject);
const void *notAKeyMarker;
} NSMapTableKeyCallBacks;
typedef struct _NSMapTableValueCallBacks {
void (*retain)(struct _NSMapTable *table, const void *anObject);
void (*release)(struct _NSMapTable *table, void *anObject);
NSString *(*describe)(struct _NSMapTable *table, const void *anObject);
} NSMapTableValueCallBacks;
typedef struct _NSMapTable {
struct _NSMapNode **nodes;
unsigned int hashSize;
unsigned int itemsCount;
NSMapTableKeyCallBacks keyCallbacks;
NSMapTableValueCallBacks valueCallbacks;
NSZone *zone;
} NSMapTable;
typedef struct NSMapEnumerator {
struct _NSMapTable *table;
struct _NSMapNode *node;
int bucket;
} NSMapEnumerator;
#define NSNotAnIntMapKey MAXINT
#define NSNotAPointerMapKey ((long)1)
/* Predefined callback sets */
extern const NSMapTableKeyCallBacks NSIntMapKeyCallBacks;
extern const NSMapTableValueCallBacks NSIntMapValueCallBacks;
extern const NSMapTableKeyCallBacks NSNonOwnedPointerMapKeyCallBacks;
extern const NSMapTableKeyCallBacks NSNonOwnedCStringMapKeyCallBacks;
extern const NSMapTableValueCallBacks NSNonOwnedPointerMapValueCallBacks;
extern const NSMapTableKeyCallBacks NSNonOwnedPointerOrNullMapKeyCallBacks;
extern const NSMapTableKeyCallBacks NSNonRetainedObjectMapKeyCallBacks;
extern const NSMapTableValueCallBacks NSNonRetainedObjectMapValueCallBacks;
extern const NSMapTableKeyCallBacks NSObjectMapKeyCallBacks;
extern const NSMapTableValueCallBacks NSObjectMapValueCallBacks;
extern const NSMapTableKeyCallBacks NSOwnedPointerMapKeyCallBacks;
extern const NSMapTableValueCallBacks NSOwnedPointerMapValueCallBacks;
/* Map Table Functions */
/* Create a Table */
NSMapTable *NSCreateMapTable(NSMapTableKeyCallBacks keyCallBacks,
NSMapTableValueCallBacks valueCallBacks,
unsigned capacity);
NSMapTable *NSCreateMapTableWithZone(NSMapTableKeyCallBacks keyCallBacks,
NSMapTableValueCallBacks valueCallBacks,
unsigned capacity,
NSZone *zone);
NSMapTable *NSCopyMapTableWithZone(NSMapTable *table, NSZone *zone);
/* Free a Table */
void NSFreeMapTable(NSMapTable *table);
void NSResetMapTable(NSMapTable *table);
/* Compare Two Tables */
BOOL NSCompareMapTables(NSMapTable *table1, NSMapTable *table2);
/* Get the Number of Items */
unsigned NSCountMapTable(NSMapTable *table);
/* Retrieve Items */
BOOL NSMapMember(NSMapTable *table, const void *key,
void **originalKey,
void **value);
void *NSMapGet(NSMapTable *table, const void *key);
NSMapEnumerator NSEnumerateMapTable(NSMapTable *table);
BOOL NSNextMapEnumeratorPair(NSMapEnumerator *enumerator,
void **key,
void **value);
NSArray *NSAllMapTableKeys(NSMapTable *table);
NSArray *NSAllMapTableValues(NSMapTable *table);
/* Add or Remove an Item */
void NSMapInsert(NSMapTable *table, const void *key, const void *value);
void *NSMapInsertIfAbsent(NSMapTable *table,
const void *key,
const void *value);
void NSMapInsertKnownAbsent(NSMapTable *table,
const void *key,
const void *value);
void NSMapRemove(NSMapTable *table, const void *key);
NSString *NSStringFromMapTable(NSMapTable *table);
#endif /* __NSMapTable_h__ */
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.