|
|
1.1 root 1: /*
2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * "Portions Copyright (c) 1999 Apple Computer, Inc. All Rights
7: * Reserved. This file contains Original Code and/or Modifications of
8: * Original Code as defined in and that are subject to the Apple Public
9: * Source License Version 1.0 (the 'License'). You may not use this file
10: * except in compliance with the License. Please obtain a copy of the
11: * License at http://www.apple.com/publicsource and read it before using
12: * this file.
13: *
14: * The Original Code and all software distributed under the License are
15: * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
18: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
19: * License for the specific language governing rights and limitations
20: * under the License."
21: *
22: * @APPLE_LICENSE_HEADER_END@
23: */
24: /*
25: HashTable.h
26: Copyright 1988, 1989 NeXT, Inc.
27:
28: DEFINED AS: A common class
29: HEADER FILES: objc/HashTable.h
30:
31: */
32:
33: #ifndef _OBJC_HASHTABLE_H_
34: #define _OBJC_HASHTABLE_H_
35:
36: #import "Object.h"
37: #import "hashtable.h"
38: #import "typedstream.h"
39:
40: @interface HashTable: Object
41: {
42: unsigned count; /* Current number of associations */
43: const char *keyDesc; /* Description of keys */
44: const char *valueDesc; /* Description of values */
45: unsigned _nbBuckets; /* Current size of the array */
46: void *_buckets; /* Data array */
47: }
48:
49: /* Initializing */
50:
51: - init;
52: - initKeyDesc: (const char *)aKeyDesc;
53: - initKeyDesc:(const char *)aKeyDesc valueDesc:(const char *)aValueDesc;
54: - initKeyDesc: (const char *) aKeyDesc valueDesc: (const char *) aValueDesc
55: capacity: (unsigned) aCapacity;
56:
57: /* Freeing */
58:
59: - free;
60: - freeObjects;
61: - freeKeys:(void (*) (void *))keyFunc values:(void (*) (void *))valueFunc;
62: - empty;
63:
64: /* Copying */
65:
66: - copyFromZone:(NXZone *)zone;
67:
68: /* Manipulating */
69:
70: - (unsigned)count;
71: - (BOOL)isKey:(const void *)aKey;
72: - (void *)valueForKey:(const void *)aKey;
73: - (void *)insertKey:(const void *)aKey value:(void *)aValue;
74: - (void *)removeKey:(const void *)aKey;
75:
76: /* Iterating */
77:
78: - (NXHashState)initState;
79: - (BOOL)nextState:(NXHashState *)aState key:(const void **)aKey
80: value:(void **)aValue;
81:
82: /* Archiving */
83:
84: - write:(NXTypedStream *)stream;
85: - read:(NXTypedStream *)stream;
86:
87: /*
88: * The following new... methods are now obsolete. They remain in this
89: * interface file for backward compatibility only. Use Object's alloc method
90: * and the init... methods defined in this class instead.
91: */
92:
93: + new;
94: + newKeyDesc: (const char *)aKeyDesc;
95: + newKeyDesc:(const char *)aKeyDesc valueDesc:(const char *)aValueDesc;
96: + newKeyDesc:(const char *)aKeyDesc valueDesc:(const char *)aValueDesc
97: capacity:(unsigned)aCapacity;
98:
99: @end
100:
101: #endif /* _OBJC_HASHTABLE_H_ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.