123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747 |
- { CFDictionary.h
- Copyright (c) 1998-2005, Apple, Inc. All rights reserved.
- }
- { Pascal Translation Updated: Peter N Lewis, <[email protected]>, September 2005 }
- {
- Modified for use with Free Pascal
- Version 200
- Please report any bugs to <[email protected]>
- }
- {$mode macpas}
- {$packenum 1}
- {$macro on}
- {$inline on}
- {$CALLING MWPASCAL}
- unit CFDictionary;
- interface
- {$setc UNIVERSAL_INTERFACES_VERSION := $0342}
- {$setc GAP_INTERFACES_VERSION := $0200}
- {$ifc not defined USE_CFSTR_CONSTANT_MACROS}
- {$setc USE_CFSTR_CONSTANT_MACROS := TRUE}
- {$endc}
- {$ifc defined CPUPOWERPC and defined CPUI386}
- {$error Conflicting initial definitions for CPUPOWERPC and CPUI386}
- {$endc}
- {$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN}
- {$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN}
- {$endc}
- {$ifc not defined __ppc__ and defined CPUPOWERPC}
- {$setc __ppc__ := 1}
- {$elsec}
- {$setc __ppc__ := 0}
- {$endc}
- {$ifc not defined __i386__ and defined CPUI386}
- {$setc __i386__ := 1}
- {$elsec}
- {$setc __i386__ := 0}
- {$endc}
- {$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}
- {$error Conflicting definitions for __ppc__ and __i386__}
- {$endc}
- {$ifc defined __ppc__ and __ppc__}
- {$setc TARGET_CPU_PPC := TRUE}
- {$setc TARGET_CPU_X86 := FALSE}
- {$elifc defined __i386__ and __i386__}
- {$setc TARGET_CPU_PPC := FALSE}
- {$setc TARGET_CPU_X86 := TRUE}
- {$elsec}
- {$error Neither __ppc__ nor __i386__ is defined.}
- {$endc}
- {$setc TARGET_CPU_PPC_64 := FALSE}
- {$ifc defined FPC_BIG_ENDIAN}
- {$setc TARGET_RT_BIG_ENDIAN := TRUE}
- {$setc TARGET_RT_LITTLE_ENDIAN := FALSE}
- {$elifc defined FPC_LITTLE_ENDIAN}
- {$setc TARGET_RT_BIG_ENDIAN := FALSE}
- {$setc TARGET_RT_LITTLE_ENDIAN := TRUE}
- {$elsec}
- {$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}
- {$endc}
- {$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE}
- {$setc CALL_NOT_IN_CARBON := FALSE}
- {$setc OLDROUTINENAMES := FALSE}
- {$setc OPAQUE_TOOLBOX_STRUCTS := TRUE}
- {$setc OPAQUE_UPP_TYPES := TRUE}
- {$setc OTCARBONAPPLICATION := TRUE}
- {$setc OTKERNEL := FALSE}
- {$setc PM_USE_SESSION_APIS := TRUE}
- {$setc TARGET_API_MAC_CARBON := TRUE}
- {$setc TARGET_API_MAC_OS8 := FALSE}
- {$setc TARGET_API_MAC_OSX := TRUE}
- {$setc TARGET_CARBON := TRUE}
- {$setc TARGET_CPU_68K := FALSE}
- {$setc TARGET_CPU_MIPS := FALSE}
- {$setc TARGET_CPU_SPARC := FALSE}
- {$setc TARGET_OS_MAC := TRUE}
- {$setc TARGET_OS_UNIX := FALSE}
- {$setc TARGET_OS_WIN32 := FALSE}
- {$setc TARGET_RT_MAC_68881 := FALSE}
- {$setc TARGET_RT_MAC_CFM := FALSE}
- {$setc TARGET_RT_MAC_MACHO := TRUE}
- {$setc TYPED_FUNCTION_POINTERS := TRUE}
- {$setc TYPE_BOOL := FALSE}
- {$setc TYPE_EXTENDED := FALSE}
- {$setc TYPE_LONGLONG := TRUE}
- uses MacTypes,CFBase;
- {$ALIGN POWER}
- {!
- @header CFDictionary
- CFDictionary implements a container which pairs pointer-sized keys
- with pointer-sized values. Values are accessed via arbitrary
- user-defined keys. A CFDictionary differs from a CFArray in that
- the key used to access a particular value in the dictionary remains
- the same as values are added to or removed from the dictionary,
- unless a value associated with its particular key is replaced or
- removed. In a CFArray, the key (or index) used to retrieve a
- particular value can change over time as values are added to or
- deleted from the array. Also unlike an array, there is no ordering
- among values in a dictionary. To enable later retrieval of a value,
- the key of the key-value pair should be constant (or treated as
- constant); if the key changes after being used to put a value in
- the dictionary, the value may not be retrievable. The keys of a
- dictionary form a set; that is, no two keys which are equal to
- one another are present in the dictionary at any time.
- Dictionaries come in two flavors, immutable, which cannot have
- values added to them or removed from them after the dictionary is
- created, and mutable, to which you can add values or from which
- remove values. Mutable dictionaries have two subflavors,
- fixed-capacity, for which there is a maximum number set at creation
- time of values which can be put into the dictionary, and variable
- capacity, which can have an unlimited number of values (or rather,
- limited only by constraints external to CFDictionary, like the
- amount of available memory). Fixed-capacity dictionaries can be
- somewhat higher performing, if you can put a definate upper limit
- on the number of values that might be put into the dictionary.
- As with all CoreFoundation collection types, dictionaries maintain
- hard references on the values you put in them, but the retaining and
- releasing functions are user-defined callbacks that can actually do
- whatever the user wants (for example, nothing).
- Although a particular implementation of CFDictionary may not use
- hashing and a hash table for storage of the values, the keys have
- a hash-code generating function defined for them, and a function
- to test for equality of two keys. These two functions together
- must maintain the invariant that if equal(X, Y), then hash(X) ==
- hash(Y). Note that the converse will not generally be true (but
- the contrapositive, if hash(X) != hash(Y), then !equal(X, Y),
- will be as required by Boolean logic). If the hash() and equal()
- key callbacks are NULL, the key is used as a pointer-sized integer,
- and pointer equality is used. Care should be taken to provide a
- hash() callback which will compute sufficiently dispersed hash
- codes for the key set for best performance.
- Computational Complexity
- The access time for a value in the dictionary is guaranteed to be at
- worst O(lg N) for any implementation, current and future, but will
- often be O(1) (constant time). Insertion or deletion operations
- will typically be constant time as well, but are O(N*lg N) in the
- worst case in some implementations. Access of values through a key
- is faster than accessing values directly (if there are any such
- operations). Dictionaries will tend to use significantly more memory
- than a array with the same number of values.
- }
- {!
- @typedef CFDictionaryKeyCallBacks
- Structure containing the callbacks for keys of a CFDictionary.
- @field version The version number of the structure type being passed
- in as a parameter to the CFDictionary creation functions.
- This structure is version 0.
- @field retain The callback used to add a retain for the dictionary
- on keys as they are used to put values into the dictionary.
- This callback returns the value to use as the key in the
- dictionary, which is usually the value parameter passed to
- this callback, but may be a different value if a different
- value should be used as the key. The dictionary's allocator
- is passed as the first argument.
- @field release The callback used to remove a retain previously added
- for the dictionary from keys as their values are removed from
- the dictionary. The dictionary's allocator is passed as the
- first argument.
- @field copyDescription The callback used to create a descriptive
- string representation of each key in the dictionary. This
- is used by the CFCopyDescription() function.
- @field equal The callback used to compare keys in the dictionary for
- equality.
- @field hash The callback used to compute a hash code for keys as they
- are used to access, add, or remove values in the dictionary.
- }
- type
- CFDictionaryRetainCallBack = function( allocator: CFAllocatorRef; value: {const} UnivPtr ): UnivPtr;
- CFDictionaryReleaseCallBack = procedure( allocator: CFAllocatorRef; value: {const} UnivPtr );
- CFDictionaryCopyDescriptionCallBack = function( value: {const} UnivPtr ): CFStringRef;
- CFDictionaryEqualCallBack = function( value1: {const} UnivPtr; value2: {const} UnivPtr ): Boolean;
- CFDictionaryHashCallBack = function( value: {const} UnivPtr ): CFHashCode;
- CFDictionaryKeyCallBacks = record
- version: CFIndex;
- retain: CFDictionaryRetainCallBack;
- release: CFDictionaryReleaseCallBack;
- copyDescription: CFDictionaryCopyDescriptionCallBack;
- equal: CFDictionaryEqualCallBack;
- hash: CFDictionaryHashCallBack;
- end;
- CFDictionaryKeyCallBacksPtr = ^CFDictionaryKeyCallBacks;
- {!
- @constant kCFTypeDictionaryKeyCallBacks
- Predefined CFDictionaryKeyCallBacks structure containing a
- set of callbacks appropriate for use when the keys of a
- CFDictionary are all CFTypes.
- }
- var kCFTypeDictionaryKeyCallBacks: CFDictionaryKeyCallBacks; external name '_kCFTypeDictionaryKeyCallBacks'; (* attribute const *)
- {!
- @constant kCFCopyStringDictionaryKeyCallBacks
- Predefined CFDictionaryKeyCallBacks structure containing a
- set of callbacks appropriate for use when the keys of a
- CFDictionary are all CFStrings, which may be mutable and
- need to be copied in order to serve as constant keys for
- the values in the dictionary.
- }
- var kCFCopyStringDictionaryKeyCallBacks: CFDictionaryKeyCallBacks; external name '_kCFCopyStringDictionaryKeyCallBacks'; (* attribute const *)
- {!
- @typedef CFDictionaryValueCallBacks
- Structure containing the callbacks for values of a CFDictionary.
- @field version The version number of the structure type being passed
- in as a parameter to the CFDictionary creation functions.
- This structure is version 0.
- @field retain The callback used to add a retain for the dictionary
- on values as they are put into the dictionary.
- This callback returns the value to use as the value in the
- dictionary, which is usually the value parameter passed to
- this callback, but may be a different value if a different
- value should be added to the dictionary. The dictionary's
- allocator is passed as the first argument.
- @field release The callback used to remove a retain previously added
- for the dictionary from values as they are removed from
- the dictionary. The dictionary's allocator is passed as the
- first argument.
- @field copyDescription The callback used to create a descriptive
- string representation of each value in the dictionary. This
- is used by the CFCopyDescription() function.
- @field equal The callback used to compare values in the dictionary for
- equality in some operations.
- }
- type
- CFDictionaryValueCallBacks = record
- version: CFIndex;
- retain: CFDictionaryRetainCallBack;
- release: CFDictionaryReleaseCallBack;
- copyDescription: CFDictionaryCopyDescriptionCallBack;
- equal: CFDictionaryEqualCallBack;
- end;
- CFDictionaryValueCallBacksPtr = ^CFDictionaryValueCallBacks;
- {!
- @constant kCFTypeDictionaryValueCallBacks
- Predefined CFDictionaryValueCallBacks structure containing a set
- of callbacks appropriate for use when the values in a CFDictionary
- are all CFTypes.
- }
- var kCFTypeDictionaryValueCallBacks: CFDictionaryValueCallBacks; external name '_kCFTypeDictionaryValueCallBacks'; (* attribute const *)
- {!
- @typedef CFDictionaryApplierFunction
- Type of the callback function used by the apply functions of
- CFDictionarys.
- @param key The current key for the value.
- @param value The current value from the dictionary.
- @param context The user-defined context parameter given to the apply
- function.
- }
- type
- CFDictionaryApplierFunction = procedure( key: {const} UnivPtr; value: {const} UnivPtr; context: UnivPtr );
- {!
- @typedef CFDictionaryRef
- This is the type of a reference to immutable CFDictionarys.
- }
- type
- CFDictionaryRef = ^SInt32; { an opaque 32-bit type }
- CFDictionaryRefPtr = ^CFDictionaryRef;
- {!
- @typedef CFMutableDictionaryRef
- This is the type of a reference to mutable CFDictionarys.
- }
- type
- CFMutableDictionaryRef = CFDictionaryRef;
- CFMutableDictionaryRefPtr = ^CFMutableDictionaryRef;
- {!
- @function CFDictionaryGetTypeID
- Returns the type identifier of all CFDictionary instances.
- }
- function CFDictionaryGetTypeID: CFTypeID; external name '_CFDictionaryGetTypeID';
- {!
- @function CFDictionaryCreate
- Creates a new immutable dictionary with the given values.
- @param allocator The CFAllocator which should be used to allocate
- memory for the dictionary and its storage for values. This
- parameter may be NULL in which case the current default
- CFAllocator is used. If this reference is not a valid
- CFAllocator, the behavior is undefined.
- @param keys A C array of the pointer-sized keys to be used for
- the parallel C array of values to be put into the dictionary.
- This parameter may be NULL if the numValues parameter is 0.
- This C array is not changed or freed by this function. If
- this parameter is not a valid pointer to a C array of at
- least numValues pointers, the behavior is undefined.
- @param values A C array of the pointer-sized values to be in the
- dictionary. This parameter may be NULL if the numValues
- parameter is 0. This C array is not changed or freed by
- this function. If this parameter is not a valid pointer to
- a C array of at least numValues pointers, the behavior is
- undefined.
- @param numValues The number of values to copy from the keys and
- values C arrays into the CFDictionary. This number will be
- the count of the dictionary. If this parameter is
- negative, or greater than the number of values actually
- in the keys or values C arrays, the behavior is undefined.
- @param keyCallBacks A pointer to a CFDictionaryKeyCallBacks structure
- initialized with the callbacks for the dictionary to use on
- each key in the dictionary. The retain callback will be used
- within this function, for example, to retain all of the new
- keys from the keys C array. A copy of the contents of the
- callbacks structure is made, so that a pointer to a structure
- on the stack can be passed in, or can be reused for multiple
- dictionary creations. If the version field of this
- callbacks structure is not one of the defined ones for
- CFDictionary, the behavior is undefined. The retain field may
- be NULL, in which case the CFDictionary will do nothing to add
- a retain to the keys of the contained values. The release field
- may be NULL, in which case the CFDictionary will do nothing
- to remove the dictionary's retain (if any) on the keys when the
- dictionary is destroyed or a key-value pair is removed. If the
- copyDescription field is NULL, the dictionary will create a
- simple description for a key. If the equal field is NULL, the
- dictionary will use pointer equality to test for equality of
- keys. If the hash field is NULL, a key will be converted from
- a pointer to an integer to compute the hash code. This callbacks
- parameter itself may be NULL, which is treated as if a valid
- structure of version 0 with all fields NULL had been passed in.
- Otherwise, if any of the fields are not valid pointers to
- functions of the correct type, or this parameter is not a
- valid pointer to a CFDictionaryKeyCallBacks callbacks structure,
- the behavior is undefined. If any of the keys put into the
- dictionary is not one understood by one of the callback functions
- the behavior when that callback function is used is undefined.
- @param valueCallBacks A pointer to a CFDictionaryValueCallBacks structure
- initialized with the callbacks for the dictionary to use on
- each value in the dictionary. The retain callback will be used
- within this function, for example, to retain all of the new
- values from the values C array. A copy of the contents of the
- callbacks structure is made, so that a pointer to a structure
- on the stack can be passed in, or can be reused for multiple
- dictionary creations. If the version field of this callbacks
- structure is not one of the defined ones for CFDictionary, the
- behavior is undefined. The retain field may be NULL, in which
- case the CFDictionary will do nothing to add a retain to values
- as they are put into the dictionary. The release field may be
- NULL, in which case the CFDictionary will do nothing to remove
- the dictionary's retain (if any) on the values when the
- dictionary is destroyed or a key-value pair is removed. If the
- copyDescription field is NULL, the dictionary will create a
- simple description for a value. If the equal field is NULL, the
- dictionary will use pointer equality to test for equality of
- values. This callbacks parameter itself may be NULL, which is
- treated as if a valid structure of version 0 with all fields
- NULL had been passed in. Otherwise,
- if any of the fields are not valid pointers to functions
- of the correct type, or this parameter is not a valid
- pointer to a CFDictionaryValueCallBacks callbacks structure,
- the behavior is undefined. If any of the values put into the
- dictionary is not one understood by one of the callback functions
- the behavior when that callback function is used is undefined.
- @result A reference to the new immutable CFDictionary.
- }
- function CFDictionaryCreate( allocator: CFAllocatorRef; {const} keys: UnivPtrPtr; {const} values: UnivPtrPtr; numValues: CFIndex; {const} keyCallBacks: CFDictionaryKeyCallBacksPtr { can be NULL }; {const} valueCallBacks: CFDictionaryValueCallBacksPtr { can be NULL } ): CFDictionaryRef; external name '_CFDictionaryCreate';
- {!
- @function CFDictionaryCreateCopy
- Creates a new immutable dictionary with the key-value pairs from
- the given dictionary.
- @param allocator The CFAllocator which should be used to allocate
- memory for the dictionary and its storage for values. This
- parameter may be NULL in which case the current default
- CFAllocator is used. If this reference is not a valid
- CFAllocator, the behavior is undefined.
- @param theDict The dictionary which is to be copied. The keys and values
- from the dictionary are copied as pointers into the new
- dictionary (that is, the values themselves are copied, not
- that which the values point to, if anything). However, the
- keys and values are also retained by the new dictionary using
- the retain function of the original dictionary.
- The count of the new dictionary will be the same as the
- given dictionary. The new dictionary uses the same callbacks
- as the dictionary to be copied. If this parameter is
- not a valid CFDictionary, the behavior is undefined.
- @result A reference to the new immutable CFDictionary.
- }
- function CFDictionaryCreateCopy( allocator: CFAllocatorRef; theDict: CFDictionaryRef ): CFDictionaryRef; external name '_CFDictionaryCreateCopy';
- {!
- @function CFDictionaryCreateMutable
- Creates a new mutable dictionary.
- @param allocator The CFAllocator which should be used to allocate
- memory for the dictionary and its storage for values. This
- parameter may be NULL in which case the current default
- CFAllocator is used. If this reference is not a valid
- CFAllocator, the behavior is undefined.
- @param capacity The maximum number of values that can be contained by
- the CFDictionary. The dictionary starts empty, and can grow
- to this number of values (and it can have less). If this
- parameter is 0, the dictionary's maximum capacity is unlimited
- (or rather, only limited by address space and available memory
- constraints). If this parameter is negative, the behavior is
- undefined.
- @param keyCallBacks A pointer to a CFDictionaryKeyCallBacks structure
- initialized with the callbacks for the dictionary to use on
- each key in the dictionary. A copy of the contents of the
- callbacks structure is made, so that a pointer to a structure
- on the stack can be passed in, or can be reused for multiple
- dictionary creations. If the version field of this
- callbacks structure is not one of the defined ones for
- CFDictionary, the behavior is undefined. The retain field may
- be NULL, in which case the CFDictionary will do nothing to add
- a retain to the keys of the contained values. The release field
- may be NULL, in which case the CFDictionary will do nothing
- to remove the dictionary's retain (if any) on the keys when the
- dictionary is destroyed or a key-value pair is removed. If the
- copyDescription field is NULL, the dictionary will create a
- simple description for a key. If the equal field is NULL, the
- dictionary will use pointer equality to test for equality of
- keys. If the hash field is NULL, a key will be converted from
- a pointer to an integer to compute the hash code. This callbacks
- parameter itself may be NULL, which is treated as if a valid
- structure of version 0 with all fields NULL had been passed in.
- Otherwise, if any of the fields are not valid pointers to
- functions of the correct type, or this parameter is not a
- valid pointer to a CFDictionaryKeyCallBacks callbacks structure,
- the behavior is undefined. If any of the keys put into the
- dictionary is not one understood by one of the callback functions
- the behavior when that callback function is used is undefined.
- @param valueCallBacks A pointer to a CFDictionaryValueCallBacks structure
- initialized with the callbacks for the dictionary to use on
- each value in the dictionary. The retain callback will be used
- within this function, for example, to retain all of the new
- values from the values C array. A copy of the contents of the
- callbacks structure is made, so that a pointer to a structure
- on the stack can be passed in, or can be reused for multiple
- dictionary creations. If the version field of this callbacks
- structure is not one of the defined ones for CFDictionary, the
- behavior is undefined. The retain field may be NULL, in which
- case the CFDictionary will do nothing to add a retain to values
- as they are put into the dictionary. The release field may be
- NULL, in which case the CFDictionary will do nothing to remove
- the dictionary's retain (if any) on the values when the
- dictionary is destroyed or a key-value pair is removed. If the
- copyDescription field is NULL, the dictionary will create a
- simple description for a value. If the equal field is NULL, the
- dictionary will use pointer equality to test for equality of
- values. This callbacks parameter itself may be NULL, which is
- treated as if a valid structure of version 0 with all fields
- NULL had been passed in. Otherwise,
- if any of the fields are not valid pointers to functions
- of the correct type, or this parameter is not a valid
- pointer to a CFDictionaryValueCallBacks callbacks structure,
- the behavior is undefined. If any of the values put into the
- dictionary is not one understood by one of the callback functions
- the behavior when that callback function is used is undefined.
- @result A reference to the new mutable CFDictionary.
- }
- function CFDictionaryCreateMutable( allocator: CFAllocatorRef; capacity: CFIndex; {const} keyCallBacks: CFDictionaryKeyCallBacksPtr { can be NULL }; {const} valueCallBacks: CFDictionaryValueCallBacksPtr { can be NULL } ): CFMutableDictionaryRef; external name '_CFDictionaryCreateMutable';
- {!
- @function CFDictionaryCreateMutableCopy
- Creates a new mutable dictionary with the key-value pairs from
- the given dictionary.
- @param allocator The CFAllocator which should be used to allocate
- memory for the dictionary and its storage for values. This
- parameter may be NULL in which case the current default
- CFAllocator is used. If this reference is not a valid
- CFAllocator, the behavior is undefined.
- @param capacity The maximum number of values that can be contained
- by the CFDictionary. The dictionary starts empty, and can grow
- to this number of values (and it can have less). If this
- parameter is 0, the dictionary's maximum capacity is unlimited
- (or rather, only limited by address space and available memory
- constraints). This parameter must be greater than or equal
- to the count of the dictionary which is to be copied, or the
- behavior is undefined. If this parameter is negative, the
- behavior is undefined.
- @param theDict The dictionary which is to be copied. The keys and values
- from the dictionary are copied as pointers into the new
- dictionary (that is, the values themselves are copied, not
- that which the values point to, if anything). However, the
- keys and values are also retained by the new dictionary using
- the retain function of the original dictionary.
- The count of the new dictionary will be the same as the
- given dictionary. The new dictionary uses the same callbacks
- as the dictionary to be copied. If this parameter is
- not a valid CFDictionary, the behavior is undefined.
- @result A reference to the new mutable CFDictionary.
- }
- function CFDictionaryCreateMutableCopy( allocator: CFAllocatorRef; capacity: CFIndex; theDict: CFDictionaryRef ): CFMutableDictionaryRef; external name '_CFDictionaryCreateMutableCopy';
- {!
- @function CFDictionaryGetCount
- Returns the number of values currently in the dictionary.
- @param theDict The dictionary to be queried. If this parameter is
- not a valid CFDictionary, the behavior is undefined.
- @result The number of values in the dictionary.
- }
- function CFDictionaryGetCount( theDict: CFDictionaryRef ): CFIndex; external name '_CFDictionaryGetCount';
- {!
- @function CFDictionaryGetCountOfKey
- Counts the number of times the given key occurs in the dictionary.
- @param theDict The dictionary to be searched. If this parameter is
- not a valid CFDictionary, the behavior is undefined.
- @param key The key for which to find matches in the dictionary. The
- hash() and equal() key callbacks provided when the dictionary
- was created are used to compare. If the hash() key callback
- was NULL, the key is treated as a pointer and converted to
- an integer. If the equal() key callback was NULL, pointer
- equality (in C, ==) is used. If key, or any of the keys in
- the dictionary, are not understood by the equal() callback,
- the behavior is undefined.
- @result Returns 1 if a matching key is used by the dictionary,
- 0 otherwise.
- }
- function CFDictionaryGetCountOfKey( theDict: CFDictionaryRef; key: {const} UnivPtr ): CFIndex; external name '_CFDictionaryGetCountOfKey';
- {!
- @function CFDictionaryGetCountOfValue
- Counts the number of times the given value occurs in the dictionary.
- @param theDict The dictionary to be searched. If this parameter is
- not a valid CFDictionary, the behavior is undefined.
- @param value The value for which to find matches in the dictionary. The
- equal() callback provided when the dictionary was created is
- used to compare. If the equal() value callback was NULL, pointer
- equality (in C, ==) is used. If value, or any of the values in
- the dictionary, are not understood by the equal() callback,
- the behavior is undefined.
- @result The number of times the given value occurs in the dictionary.
- }
- function CFDictionaryGetCountOfValue( theDict: CFDictionaryRef; value: {const} UnivPtr ): CFIndex; external name '_CFDictionaryGetCountOfValue';
- {!
- @function CFDictionaryContainsKey
- Reports whether or not the key is in the dictionary.
- @param theDict The dictionary to be searched. If this parameter is
- not a valid CFDictionary, the behavior is undefined.
- @param key The key for which to find matches in the dictionary. The
- hash() and equal() key callbacks provided when the dictionary
- was created are used to compare. If the hash() key callback
- was NULL, the key is treated as a pointer and converted to
- an integer. If the equal() key callback was NULL, pointer
- equality (in C, ==) is used. If key, or any of the keys in
- the dictionary, are not understood by the equal() callback,
- the behavior is undefined.
- @result true, if the key is in the dictionary, otherwise false.
- }
- function CFDictionaryContainsKey( theDict: CFDictionaryRef; key: {const} UnivPtr ): Boolean; external name '_CFDictionaryContainsKey';
- {!
- @function CFDictionaryContainsValue
- Reports whether or not the value is in the dictionary.
- @param theDict The dictionary to be searched. If this parameter is
- not a valid CFDictionary, the behavior is undefined.
- @param value The value for which to find matches in the dictionary. The
- equal() callback provided when the dictionary was created is
- used to compare. If the equal() callback was NULL, pointer
- equality (in C, ==) is used. If value, or any of the values
- in the dictionary, are not understood by the equal() callback,
- the behavior is undefined.
- @result true, if the value is in the dictionary, otherwise false.
- }
- function CFDictionaryContainsValue( theDict: CFDictionaryRef; value: {const} UnivPtr ): Boolean; external name '_CFDictionaryContainsValue';
- {!
- @function CFDictionaryGetValue
- Retrieves the value associated with the given key.
- @param theDict The dictionary to be queried. If this parameter is
- not a valid CFDictionary, the behavior is undefined.
- @param key The key for which to find a match in the dictionary. The
- hash() and equal() key callbacks provided when the dictionary
- was created are used to compare. If the hash() key callback
- was NULL, the key is treated as a pointer and converted to
- an integer. If the equal() key callback was NULL, pointer
- equality (in C, ==) is used. If key, or any of the keys in
- the dictionary, are not understood by the equal() callback,
- the behavior is undefined.
- @result The value with the given key in the dictionary, or NULL if
- no key-value pair with a matching key exists. Since NULL
- can be a valid value in some dictionaries, the function
- CFDictionaryGetValueIfPresent() must be used to distinguish
- NULL-no-found from NULL-is-the-value.
- }
- function CFDictionaryGetValue( theDict: CFDictionaryRef; key: {const} UnivPtr ): UnivPtr; external name '_CFDictionaryGetValue';
- {!
- @function CFDictionaryGetValueIfPresent
- Retrieves the value associated with the given key.
- @param theDict The dictionary to be queried. If this parameter is
- not a valid CFDictionary, the behavior is undefined.
- @param key The key for which to find a match in the dictionary. The
- hash() and equal() key callbacks provided when the dictionary
- was created are used to compare. If the hash() key callback
- was NULL, the key is treated as a pointer and converted to
- an integer. If the equal() key callback was NULL, pointer
- equality (in C, ==) is used. If key, or any of the keys in
- the dictionary, are not understood by the equal() callback,
- the behavior is undefined.
- @param value A pointer to memory which should be filled with the
- pointer-sized value if a matching key is found. If no key
- match is found, the contents of the storage pointed to by
- this parameter are undefined. This parameter may be NULL,
- in which case the value from the dictionary is not returned
- (but the return value of this function still indicates
- whether or not the key-value pair was present).
- @result true, if a matching key was found, false otherwise.
- }
- function CFDictionaryGetValueIfPresent( theDict: CFDictionaryRef; key: {const} UnivPtr; {const} value: UnivPtrPtr ): Boolean; external name '_CFDictionaryGetValueIfPresent';
- {!
- @function CFDictionaryGetKeysAndValues
- Fills the two buffers with the keys and values from the dictionary.
- @param theDict The dictionary to be queried. If this parameter is
- not a valid CFDictionary, the behavior is undefined.
- @param keys A C array of pointer-sized values to be filled with keys
- from the dictionary. The keys and values C arrays are parallel
- to each other (that is, the items at the same indices form a
- key-value pair from the dictionary). This parameter may be NULL
- if the keys are not desired. If this parameter is not a valid
- pointer to a C array of at least CFDictionaryGetCount() pointers,
- or NULL, the behavior is undefined.
- @param values A C array of pointer-sized values to be filled with values
- from the dictionary. The keys and values C arrays are parallel
- to each other (that is, the items at the same indices form a
- key-value pair from the dictionary). This parameter may be NULL
- if the values are not desired. If this parameter is not a valid
- pointer to a C array of at least CFDictionaryGetCount() pointers,
- or NULL, the behavior is undefined.
- }
- procedure CFDictionaryGetKeysAndValues( theDict: CFDictionaryRef; {const} keys: UnivPtrPtr; {const} values: UnivPtrPtr ); external name '_CFDictionaryGetKeysAndValues';
- {!
- @function CFDictionaryApplyFunction
- Calls a function once for each value in the dictionary.
- @param theDict The dictionary to be queried. If this parameter is
- not a valid CFDictionary, the behavior is undefined.
- @param applier The callback function to call once for each value in
- the dictionary. If this parameter is not a
- pointer to a function of the correct prototype, the behavior
- is undefined. If there are keys or values which the
- applier function does not expect or cannot properly apply
- to, the behavior is undefined.
- @param context A pointer-sized user-defined value, which is passed
- as the third parameter to the applier function, but is
- otherwise unused by this function. If the context is not
- what is expected by the applier function, the behavior is
- undefined.
- }
- procedure CFDictionaryApplyFunction( theDict: CFDictionaryRef; applier: CFDictionaryApplierFunction; context: UnivPtr ); external name '_CFDictionaryApplyFunction';
- {!
- @function CFDictionaryAddValue
- Adds the key-value pair to the dictionary if no such key already exists.
- @param theDict The dictionary to which the value is to be added. If this
- parameter is not a valid mutable CFDictionary, the behavior is
- undefined. If the dictionary is a fixed-capacity dictionary and
- it is full before this operation, the behavior is undefined.
- @param key The key of the value to add to the dictionary. The key is
- retained by the dictionary using the retain callback provided
- when the dictionary was created. If the key is not of the sort
- expected by the retain callback, the behavior is undefined. If
- a key which matches this key is already present in the dictionary,
- this function does nothing ("add if absent").
- @param value The value to add to the dictionary. The value is retained
- by the dictionary using the retain callback provided when the
- dictionary was created. If the value is not of the sort expected
- by the retain callback, the behavior is undefined.
- }
- procedure CFDictionaryAddValue( theDict: CFMutableDictionaryRef; key: {const} UnivPtr; value: {const} UnivPtr ); external name '_CFDictionaryAddValue';
- {!
- @function CFDictionarySetValue
- Sets the value of the key in the dictionary.
- @param theDict The dictionary to which the value is to be set. If this
- parameter is not a valid mutable CFDictionary, the behavior is
- undefined. If the dictionary is a fixed-capacity dictionary and
- it is full before this operation, and the key does not exist in
- the dictionary, the behavior is undefined.
- @param key The key of the value to set into the dictionary. If a key
- which matches this key is already present in the dictionary, only
- the value is changed ("add if absent, replace if present"). If
- no key matches the given key, the key-value pair is added to the
- dictionary. If added, the key is retained by the dictionary,
- using the retain callback provided
- when the dictionary was created. If the key is not of the sort
- expected by the key retain callback, the behavior is undefined.
- @param value The value to add to or replace into the dictionary. The value
- is retained by the dictionary using the retain callback provided
- when the dictionary was created, and the previous value if any is
- released. If the value is not of the sort expected by the
- retain or release callbacks, the behavior is undefined.
- }
- procedure CFDictionarySetValue( theDict: CFMutableDictionaryRef; key: {const} UnivPtr; value: {const} UnivPtr ); external name '_CFDictionarySetValue';
- {!
- @function CFDictionaryReplaceValue
- Replaces the value of the key in the dictionary.
- @param theDict The dictionary to which the value is to be replaced. If this
- parameter is not a valid mutable CFDictionary, the behavior is
- undefined.
- @param key The key of the value to replace in the dictionary. If a key
- which matches this key is present in the dictionary, the value
- is changed to the given value, otherwise this function does
- nothing ("replace if present").
- @param value The value to replace into the dictionary. The value
- is retained by the dictionary using the retain callback provided
- when the dictionary was created, and the previous value is
- released. If the value is not of the sort expected by the
- retain or release callbacks, the behavior is undefined.
- }
- procedure CFDictionaryReplaceValue( theDict: CFMutableDictionaryRef; key: {const} UnivPtr; value: {const} UnivPtr ); external name '_CFDictionaryReplaceValue';
- {!
- @function CFDictionaryRemoveValue
- Removes the value of the key from the dictionary.
- @param theDict The dictionary from which the value is to be removed. If this
- parameter is not a valid mutable CFDictionary, the behavior is
- undefined.
- @param key The key of the value to remove from the dictionary. If a key
- which matches this key is present in the dictionary, the key-value
- pair is removed from the dictionary, otherwise this function does
- nothing ("remove if present").
- }
- procedure CFDictionaryRemoveValue( theDict: CFMutableDictionaryRef; key: {const} UnivPtr ); external name '_CFDictionaryRemoveValue';
- {!
- @function CFDictionaryRemoveAllValues
- Removes all the values from the dictionary, making it empty.
- @param theDict The dictionary from which all of the values are to be
- removed. If this parameter is not a valid mutable
- CFDictionary, the behavior is undefined.
- }
- procedure CFDictionaryRemoveAllValues( theDict: CFMutableDictionaryRef ); external name '_CFDictionaryRemoveAllValues';
- end.
|