summaryrefslogtreecommitdiff
path: root/fpcsrc/packages/cocoaint/src/foundation/NSMapTable.inc
blob: ec26e8366fb76f60a475c0cd7db9fa37612b31f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
{ Parsed from Foundation.framework NSMapTable.h }

{$ifdef TYPES}
{$ifndef NSMAPTABLE_PAS_T}
{$define NSMAPTABLE_PAS_T}

{ Constants }

const
  NSMapTableStrongMemory = 0;
  NSMapTableZeroingWeakMemory = NSPointerFunctionsZeroingWeakMemory;
  NSMapTableCopyIn = NSPointerFunctionsCopyIn;
  NSMapTableObjectPointerPersonality = NSPointerFunctionsObjectPointerPersonality;

{ Types }
type
  NSMapTableOptions = NSUInteger;
  NSMapTableOptionsPtr = ^NSMapTableOptions;

{ Defines }
const
  NSNotAnIntMapKey = NSIntegerMin;
  NSNotAnIntegerMapKey = NSIntegerMin;
  NSNotAPointerMapKey = UINTPTR_MAX;

{$endif}
{$endif}

{$ifdef RECORDS}
{$ifndef NSMAPTABLE_PAS_R}
{$define NSMAPTABLE_PAS_R}

{ Records }
type
  
NSMapEnumerator = record
    _pi: NSUInteger;
    _si: NSUInteger;
    _bs: Pointer;
  end;
NSMapEnumeratorPtr = ^NSMapEnumerator;

type
  NSMapTableKeyCallBacks = record
    hash: function (table: NSMapTable; param1: Pointer): NSUInteger; cdecl;
    isEqual: function (table: NSMapTable; param1: Pointer; param2: Pointer): Boolean; cdecl;
    retain: procedure (table: NSMapTable; param1: Pointer); cdecl;
    release: procedure (table: NSMapTable; param1: Pointer); cdecl;
    describe: function (table: NSMapTable; param1: Pointer): NSString; cdecl;
    notAKeyMarker: Pointer;
  end;
NSMapTableKeyCallBacksPtr = ^NSMapTableKeyCallBacks;

type
  NSMapTableValueCallBacks = record
    retain: procedure (table: NSMapTable; param1: Pointer); cdecl;
    release: procedure (table: NSMapTable; param1: Pointer); cdecl;
    describe: function (table: NSMapTable; param1: Pointer): NSString; cdecl;
  end;
NSMapTableValueCallBacksPtr = ^NSMapTableValueCallBacks;


{$endif}
{$endif}

{$ifdef FUNCTIONS}
{$ifndef NSMAPTABLE_PAS_F}
{$define NSMAPTABLE_PAS_F}

{ Functions }
procedure NSFreeMapTable(table: NSMapTable); cdecl; external;
procedure NSResetMapTable(table: NSMapTable); cdecl; external;
function NSCompareMapTables(table1: NSMapTable; table2: NSMapTable): Boolean; cdecl; external;
function NSCopyMapTableWithZone(table: NSMapTable; zone: NSZonePtr): NSMapTable; cdecl; external;
function NSMapMember(table: NSMapTable; key: Pointer; originalKey: PPointer; value: PPointer): Boolean; cdecl; external;
function NSMapGet(table: NSMapTable; key: Pointer): Pointer; cdecl; external;
procedure NSMapInsert(table: NSMapTable; key: Pointer; value: Pointer); cdecl; external;
procedure NSMapInsertKnownAbsent(table: NSMapTable; key: Pointer; value: Pointer); cdecl; external;
function NSMapInsertIfAbsent(table: NSMapTable; key: Pointer; value: Pointer): Pointer; cdecl; external;
procedure NSMapRemove(table: NSMapTable; key: Pointer); cdecl; external;
function NSEnumerateMapTable(table: NSMapTable): NSMapEnumerator; cdecl; external;
function NSNextMapEnumeratorPair(enumerator: NSMapEnumeratorPtr; key: PPointer; value: PPointer): Boolean; cdecl; external;
procedure NSEndMapTableEnumeration(enumerator: NSMapEnumeratorPtr); cdecl; external;
function NSCountMapTable(table: NSMapTable): NSUInteger; cdecl; external;
function NSStringFromMapTable(table: NSMapTable): NSString; cdecl; external;
function NSAllMapTableKeys(table: NSMapTable): NSArray; cdecl; external;
function NSAllMapTableValues(table: NSMapTable): NSArray; cdecl; external;
function NSCreateMapTableWithZone(keyCallBacks: NSMapTableKeyCallBacks; valueCallBacks: NSMapTableValueCallBacks; capacity: NSUInteger; zone: NSZonePtr): NSMapTable; cdecl; external;
function NSCreateMapTable(keyCallBacks: NSMapTableKeyCallBacks; valueCallBacks: NSMapTableValueCallBacks; capacity: NSUInteger): NSMapTable; cdecl; external;

{$endif}
{$endif}

{$ifdef EXTERNAL_SYMBOLS}
{$ifndef NSMAPTABLE_PAS_S}
{$define NSMAPTABLE_PAS_S}

{ External symbols }
var
  NSIntegerMapKeyCallBacks: NSMapTableKeyCallBacks; cvar; external;
  NSNonOwnedPointerMapKeyCallBacks: NSMapTableKeyCallBacks; cvar; external;
  NSNonOwnedPointerOrNullMapKeyCallBacks: NSMapTableKeyCallBacks; cvar; external;
  NSNonRetainedObjectMapKeyCallBacks: NSMapTableKeyCallBacks; cvar; external;
  NSObjectMapKeyCallBacks: NSMapTableKeyCallBacks; cvar; external;
  NSOwnedPointerMapKeyCallBacks: NSMapTableKeyCallBacks; cvar; external;
  NSIntMapKeyCallBacks: NSMapTableKeyCallBacks deprecated 'in Mac OS X 10.5 and later'; cvar; external;
  NSIntegerMapValueCallBacks: NSMapTableValueCallBacks; cvar; external;
  NSNonOwnedPointerMapValueCallBacks: NSMapTableValueCallBacks; cvar; external;
  NSObjectMapValueCallBacks: NSMapTableValueCallBacks; cvar; external;
  NSNonRetainedObjectMapValueCallBacks: NSMapTableValueCallBacks; cvar; external;
  NSOwnedPointerMapValueCallBacks: NSMapTableValueCallBacks; cvar; external;
  NSIntMapValueCallBacks: NSMapTableValueCallBacks deprecated 'in Mac OS X 10.5 and later'; cvar; external;

{$endif}
{$endif}

{$ifdef FORWARD}
  NSMapTable = objcclass;
  NSMapTablePointer = ^NSMapTable;
  NSMapTablePtr = NSMapTablePointer;

{$endif}

{$ifdef CLASSES}
{$ifndef NSMAPTABLE_PAS_C}
{$define NSMAPTABLE_PAS_C}

{ NSMapTable }
  NSMapTable = objcclass external (NSObject, NSCopyingProtocol, NSCodingProtocol, NSFastEnumerationProtocol)
    
  public
    function initWithKeyOptions_valueOptions_capacity(keyOptions: NSPointerFunctionsOptions; valueOptions: NSPointerFunctionsOptions; initialCapacity: NSUInteger): id; message 'initWithKeyOptions:valueOptions:capacity:';
    function initWithKeyPointerFunctions_valuePointerFunctions_capacity(keyFunctions: NSPointerFunctions; valueFunctions: NSPointerFunctions; initialCapacity: NSUInteger): id; message 'initWithKeyPointerFunctions:valuePointerFunctions:capacity:';
    class function mapTableWithKeyOptions_valueOptions(keyOptions: NSPointerFunctionsOptions; valueOptions: NSPointerFunctionsOptions): id; message 'mapTableWithKeyOptions:valueOptions:';
    class function mapTableWithStrongToStrongObjects: id; message 'mapTableWithStrongToStrongObjects';
    class function mapTableWithWeakToStrongObjects: id; message 'mapTableWithWeakToStrongObjects';
    class function mapTableWithStrongToWeakObjects: id; message 'mapTableWithStrongToWeakObjects';
    class function mapTableWithWeakToWeakObjects: id; message 'mapTableWithWeakToWeakObjects';
    function keyPointerFunctions: NSPointerFunctions; message 'keyPointerFunctions';
    function valuePointerFunctions: NSPointerFunctions; message 'valuePointerFunctions';
    function objectForKey(aKey: id): id; message 'objectForKey:';
    procedure removeObjectForKey(aKey: id); message 'removeObjectForKey:';
    procedure setObject_forKey(anObject: id; aKey: id); message 'setObject:forKey:';
    function count: NSUInteger; message 'count';
    function keyEnumerator: NSEnumerator; message 'keyEnumerator';
    function objectEnumerator: NSEnumerator; message 'objectEnumerator';
    procedure removeAllObjects; message 'removeAllObjects';
    function dictionaryRepresentation: NSDictionary; message 'dictionaryRepresentation';

    { Adopted Protocols }
    function copyWithZone(zone_: NSZonePtr): id;
    procedure encodeWithCoder(aCoder: NSCoder);
    function initWithCoder(aDecoder: NSCoder): id;
    function countByEnumeratingWithState_objects_count(state: NSFastEnumerationStatePtr; stackbuf: idPtr; len: NSUInteger): NSUInteger;
  end;

{$endif}
{$endif}