123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513 |
- { CFTree.h
- Copyright (c) 1998-2013, Apple Inc. All rights reserved.
- }
- {
- Modified for use with Free Pascal
- Version 308
- Please report any bugs to <[email protected]>
- }
- {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE}
- {$mode macpas}
- {$modeswitch cblocks}
- {$packenum 1}
- {$macro on}
- {$inline on}
- {$calling mwpascal}
- unit CFTree;
- interface
- {$setc UNIVERSAL_INTERFACES_VERSION := $0400}
- {$setc GAP_INTERFACES_VERSION := $0308}
- {$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 CPUPOWERPC32}
- {$setc __ppc__ := 1}
- {$elsec}
- {$setc __ppc__ := 0}
- {$endc}
- {$ifc not defined __ppc64__ and defined CPUPOWERPC64}
- {$setc __ppc64__ := 1}
- {$elsec}
- {$setc __ppc64__ := 0}
- {$endc}
- {$ifc not defined __i386__ and defined CPUI386}
- {$setc __i386__ := 1}
- {$elsec}
- {$setc __i386__ := 0}
- {$endc}
- {$ifc not defined __x86_64__ and defined CPUX86_64}
- {$setc __x86_64__ := 1}
- {$elsec}
- {$setc __x86_64__ := 0}
- {$endc}
- {$ifc not defined __arm__ and defined CPUARM}
- {$setc __arm__ := 1}
- {$elsec}
- {$setc __arm__ := 0}
- {$endc}
- {$ifc not defined __arm64__ and defined CPUAARCH64}
- {$setc __arm64__ := 1}
- {$elsec}
- {$setc __arm64__ := 0}
- {$endc}
- {$ifc defined cpu64}
- {$setc __LP64__ := 1}
- {$elsec}
- {$setc __LP64__ := 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_PPC64 := FALSE}
- {$setc TARGET_CPU_X86 := FALSE}
- {$setc TARGET_CPU_X86_64 := FALSE}
- {$setc TARGET_CPU_ARM := FALSE}
- {$setc TARGET_CPU_ARM64 := FALSE}
- {$setc TARGET_OS_MAC := TRUE}
- {$setc TARGET_OS_IPHONE := FALSE}
- {$setc TARGET_IPHONE_SIMULATOR := FALSE}
- {$setc TARGET_OS_EMBEDDED := FALSE}
- {$elifc defined __ppc64__ and __ppc64__}
- {$setc TARGET_CPU_PPC := FALSE}
- {$setc TARGET_CPU_PPC64 := TRUE}
- {$setc TARGET_CPU_X86 := FALSE}
- {$setc TARGET_CPU_X86_64 := FALSE}
- {$setc TARGET_CPU_ARM := FALSE}
- {$setc TARGET_CPU_ARM64 := FALSE}
- {$setc TARGET_OS_MAC := TRUE}
- {$setc TARGET_OS_IPHONE := FALSE}
- {$setc TARGET_IPHONE_SIMULATOR := FALSE}
- {$setc TARGET_OS_EMBEDDED := FALSE}
- {$elifc defined __i386__ and __i386__}
- {$setc TARGET_CPU_PPC := FALSE}
- {$setc TARGET_CPU_PPC64 := FALSE}
- {$setc TARGET_CPU_X86 := TRUE}
- {$setc TARGET_CPU_X86_64 := FALSE}
- {$setc TARGET_CPU_ARM := FALSE}
- {$setc TARGET_CPU_ARM64 := FALSE}
- {$ifc defined iphonesim}
- {$setc TARGET_OS_MAC := FALSE}
- {$setc TARGET_OS_IPHONE := TRUE}
- {$setc TARGET_IPHONE_SIMULATOR := TRUE}
- {$elsec}
- {$setc TARGET_OS_MAC := TRUE}
- {$setc TARGET_OS_IPHONE := FALSE}
- {$setc TARGET_IPHONE_SIMULATOR := FALSE}
- {$endc}
- {$setc TARGET_OS_EMBEDDED := FALSE}
- {$elifc defined __x86_64__ and __x86_64__}
- {$setc TARGET_CPU_PPC := FALSE}
- {$setc TARGET_CPU_PPC64 := FALSE}
- {$setc TARGET_CPU_X86 := FALSE}
- {$setc TARGET_CPU_X86_64 := TRUE}
- {$setc TARGET_CPU_ARM := FALSE}
- {$setc TARGET_CPU_ARM64 := FALSE}
- {$ifc defined iphonesim}
- {$setc TARGET_OS_MAC := FALSE}
- {$setc TARGET_OS_IPHONE := TRUE}
- {$setc TARGET_IPHONE_SIMULATOR := TRUE}
- {$elsec}
- {$setc TARGET_OS_MAC := TRUE}
- {$setc TARGET_OS_IPHONE := FALSE}
- {$setc TARGET_IPHONE_SIMULATOR := FALSE}
- {$endc}
- {$setc TARGET_OS_EMBEDDED := FALSE}
- {$elifc defined __arm__ and __arm__}
- {$setc TARGET_CPU_PPC := FALSE}
- {$setc TARGET_CPU_PPC64 := FALSE}
- {$setc TARGET_CPU_X86 := FALSE}
- {$setc TARGET_CPU_X86_64 := FALSE}
- {$setc TARGET_CPU_ARM := TRUE}
- {$setc TARGET_CPU_ARM64 := FALSE}
- {$setc TARGET_OS_MAC := FALSE}
- {$setc TARGET_OS_IPHONE := TRUE}
- {$setc TARGET_IPHONE_SIMULATOR := FALSE}
- {$setc TARGET_OS_EMBEDDED := TRUE}
- {$elifc defined __arm64__ and __arm64__}
- {$setc TARGET_CPU_PPC := FALSE}
- {$setc TARGET_CPU_PPC64 := FALSE}
- {$setc TARGET_CPU_X86 := FALSE}
- {$setc TARGET_CPU_X86_64 := FALSE}
- {$setc TARGET_CPU_ARM := FALSE}
- {$setc TARGET_CPU_ARM64 := TRUE}
- {$ifc defined ios}
- {$setc TARGET_OS_MAC := FALSE}
- {$setc TARGET_OS_IPHONE := TRUE}
- {$setc TARGET_OS_EMBEDDED := TRUE}
- {$elsec}
- {$setc TARGET_OS_MAC := TRUE}
- {$setc TARGET_OS_IPHONE := FALSE}
- {$setc TARGET_OS_EMBEDDED := FALSE}
- {$endc}
- {$setc TARGET_IPHONE_SIMULATOR := FALSE}
- {$elsec}
- {$error __ppc__ nor __ppc64__ nor __i386__ nor __x86_64__ nor __arm__ nor __arm64__ is defined.}
- {$endc}
- {$ifc defined __LP64__ and __LP64__ }
- {$setc TARGET_CPU_64 := TRUE}
- {$elsec}
- {$setc TARGET_CPU_64 := FALSE}
- {$endc}
- {$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_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;
- {$endc} {not MACOSALLINCLUDE}
- {$ALIGN POWER}
- {!
- @header CFTree
- CFTree implements a container which stores references to other CFTrees.
- Each tree may have a parent, and a variable number of children.
- }
- {!
- @typedef CFTreeRetainCallBack
- Type of the callback function used to add a retain to the user-specified
- info parameter. This callback may returns the value to use whenever the
- info parameter is retained, which is usually the value parameter passed
- to this callback, but may be a different value if a different value
- should be used.
- @param info A user-supplied info parameter provided in a CFTreeContext.
- @result The retained info parameter.
- }
- type
- CFTreeRetainCallBack = function( info: {const} UnivPtr ): UnivPtr;
- {!
- @typedef CFTreeReleaseCallBack
- Type of the callback function used to remove a retain previously
- added to the user-specified info parameter.
- @param info A user-supplied info parameter provided in a CFTreeContext.
- }
- type
- CFTreeReleaseCallBack = procedure( info: {const} UnivPtr );
- {!
- @typedef CFTreeCopyDescriptionCallBack
- Type of the callback function used to provide a description of the
- user-specified info parameter.
- @param info A user-supplied info parameter provided in a CFTreeContext.
- @result A description of the info parameter.
- }
- type
- CFTreeCopyDescriptionCallBack = function( info: {const} UnivPtr ): CFStringRef;
- {!
- @typedef CFTreeContext
- Structure containing user-specified data and callbacks for a CFTree.
- @field version The version number of the structure type being passed
- in as a parameter to the CFTree creation function.
- This structure is version 0.
- @field info A C pointer to a user-specified block of data.
- @field retain The callback used to add a retain for the info field.
- If this parameter is not a pointer to a function of the correct
- prototype, the behavior is undefined. The value may be NULL.
- @field release The calllback used to remove a retain previously added
- for the info field. If this parameter is not a pointer to a
- function of the correct prototype, the behavior is undefined.
- The value may be NULL.
- @field copyDescription The callback used to provide a description of
- the info field.
- }
- type
- CFTreeContext = record
- version: CFIndex;
- info: UnivPtr;
- retain: CFTreeRetainCallBack;
- release: CFTreeReleaseCallBack;
- copyDescription: CFTreeCopyDescriptionCallBack;
- end;
- CFTreeContextPtr = ^CFTreeContext;
- {!
- @typedef CFTreeApplierFunction
- Type of the callback function used by the apply functions of
- CFTree.
- @param value The current value from the CFTree
- @param context The user-defined context parameter give to the apply
- function.
- }
- type
- CFTreeApplierFunction = procedure( value: {const} UnivPtr; context: UnivPtr );
- {!
- @typedef CFTreeRef
- This is the type of a reference to CFTrees.
- }
- type
- CFTreeRef = ^__CFTree; { an opaque type }
- __CFTree = record end;
- CFTreeRefPtr = ^CFTreeRef;
- {!
- @function CFTreeGetTypeID
- Returns the type identifier of all CFTree instances.
- }
- function CFTreeGetTypeID: CFTypeID; external name '_CFTreeGetTypeID';
- {!
- @function CFTreeCreate
- Creates a new mutable tree.
- @param allocator The CFAllocator which should be used to allocate
- memory for the tree and storage for its children. 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 context A C pointer to a CFTreeContext structure to be copied
- and used as the context of the new tree. The info parameter
- will be retained by the tree if a retain function is provided.
- If this value is not a valid C pointer to a CFTreeContext
- structure-sized block of storage, the result is undefined.
- If the version number of the storage is not a valid CFTreeContext
- version number, the result is undefined.
- @result A reference to the new CFTree.
- }
- function CFTreeCreate( allocator: CFAllocatorRef; const (*var*) context: CFTreeContext ): CFTreeRef; external name '_CFTreeCreate';
- {!
- @function CFTreeGetParent
- Returns the parent of the specified tree.
- @param tree The tree to be queried. If this parameter is not a valid
- CFTree, the behavior is undefined.
- @result The parent of the tree.
- }
- function CFTreeGetParent( tree: CFTreeRef ): CFTreeRef; external name '_CFTreeGetParent';
- {!
- @function CFTreeGetNextSibling
- Returns the sibling after the specified tree in the parent tree's list.
- @param tree The tree to be queried. If this parameter is not a valid
- CFTree, the behavior is undefined.
- @result The next sibling of the tree.
- }
- function CFTreeGetNextSibling( tree: CFTreeRef ): CFTreeRef; external name '_CFTreeGetNextSibling';
- {!
- @function CFTreeGetFirstChild
- Returns the first child of the tree.
- @param tree The tree to be queried. If this parameter is not a valid
- CFTree, the behavior is undefined.
- @result The first child of the tree.
- }
- function CFTreeGetFirstChild( tree: CFTreeRef ): CFTreeRef; external name '_CFTreeGetFirstChild';
- {!
- @function CFTreeGetContext
- Returns the context of the specified tree.
- @param tree The tree to be queried. If this parameter is not a valid
- CFTree, the behavior is undefined.
- @param context A C pointer to a CFTreeContext structure to be filled in with
- the context of the specified tree. If this value is not a valid C
- pointer to a CFTreeContext structure-sized block of storage, the
- result is undefined. If the version number of the storage is not
- a valid CFTreeContext version number, the result is undefined.
- }
- procedure CFTreeGetContext( tree: CFTreeRef; var context: CFTreeContext ); external name '_CFTreeGetContext';
- {!
- @function CFTreeGetChildCount
- Returns the number of children of the specified tree.
- @param tree The tree to be queried. If this parameter is not a valid
- CFTree, the behavior is undefined.
- @result The number of children.
- }
- function CFTreeGetChildCount( tree: CFTreeRef ): CFIndex; external name '_CFTreeGetChildCount';
- {!
- @function CFTreeGetChildAtIndex
- Returns the nth child of the specified tree.
- @param tree The tree to be queried. If this parameter is not a valid
- CFTree, the behavior is undefined.
- @param idx The index of the child tree to be returned. If this parameter
- is less than zero or greater than the number of children of the
- tree, the result is undefined.
- @result A reference to the specified child tree.
- }
- function CFTreeGetChildAtIndex( tree: CFTreeRef; idx: CFIndex ): CFTreeRef; external name '_CFTreeGetChildAtIndex';
- {!
- @function CFTreeGetChildren
- Fills the buffer with children from the tree.
- @param tree The tree to be queried. If this parameter is not a valid
- CFTree, the behavior is undefined.
- @param children A C array of pointer-sized values to be filled with
- children from the tree. If this parameter is not a valid pointer to a
- C array of at least CFTreeGetChildCount() pointers, the behavior is undefined.
- @result A reference to the specified child tree.
- }
- procedure CFTreeGetChildren( tree: CFTreeRef; var children: CFTreeRef ); external name '_CFTreeGetChildren';
- {!
- @function CFTreeApplyFunctionToChildren
- Calls a function once for each child of the tree. Note that the applier
- only operates one level deep, and does not operate on descendents further
- removed than the immediate children of the tree.
- @param heap The tree to be operated upon. If this parameter is not a
- valid CFTree, the behavior is undefined.
- @param applier The callback function to call once for each child of
- the given tree. If this parameter is not a pointer to a
- function of the correct prototype, the behavior is undefined.
- If there are values in the tree 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 second 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 CFTreeApplyFunctionToChildren( tree: CFTreeRef; applier: CFTreeApplierFunction; context: UnivPtr ); external name '_CFTreeApplyFunctionToChildren';
- {!
- @function CFTreeFindRoot
- Returns the root tree of which the specified tree is a descendent.
- @param tree The tree to be queried. If this parameter is not a valid
- CFTree, the behavior is undefined.
- @result A reference to the root of the tree.
- }
- function CFTreeFindRoot( tree: CFTreeRef ): CFTreeRef; external name '_CFTreeFindRoot';
- {!
- @function CFTreeSetContext
- Replaces the context of a tree. The tree releases its retain on the
- info of the previous context, and retains the info of the new context.
- @param tree The tree to be operated on. If this parameter is not a valid
- CFTree, the behavior is undefined.
- @param context A C pointer to a CFTreeContext structure to be copied
- and used as the context of the new tree. The info parameter
- will be retained by the tree if a retain function is provided.
- If this value is not a valid C pointer to a CFTreeContext
- structure-sized block of storage, the result is undefined.
- If the version number of the storage is not a valid CFTreeContext
- version number, the result is undefined.
- }
- procedure CFTreeSetContext( tree: CFTreeRef; const (*var*) context: CFTreeContext ); external name '_CFTreeSetContext';
- {!
- @function CFTreePrependChild
- Adds the newChild to the specified tree as the first in its list of children.
- @param tree The tree to be operated on. If this parameter is not a valid
- CFTree, the behavior is undefined.
- @param newChild The child to be added.
- If this parameter is not a valid CFTree, the behavior is undefined.
- If this parameter is a tree which is already a child of any tree,
- the behavior is undefined.
- }
- procedure CFTreePrependChild( tree: CFTreeRef; newChild: CFTreeRef ); external name '_CFTreePrependChild';
- {!
- @function CFTreeAppendChild
- Adds the newChild to the specified tree as the last in its list of children.
- @param tree The tree to be operated on. If this parameter is not a valid
- CFTree, the behavior is undefined.
- @param newChild The child to be added.
- If this parameter is not a valid CFTree, the behavior is undefined.
- If this parameter is a tree which is already a child of any tree,
- the behavior is undefined.
- }
- procedure CFTreeAppendChild( tree: CFTreeRef; newChild: CFTreeRef ); external name '_CFTreeAppendChild';
- {!
- @function CFTreeInsertSibling
- Inserts newSibling into the the parent tree's linked list of children after
- tree. The newSibling will have the same parent as tree.
- @param tree The tree to insert newSibling after. If this parameter is not a valid
- CFTree, the behavior is undefined. If the tree does not have a
- parent, the behavior is undefined.
- @param newSibling The sibling to be added.
- If this parameter is not a valid CFTree, the behavior is undefined.
- If this parameter is a tree which is already a child of any tree,
- the behavior is undefined.
- }
- procedure CFTreeInsertSibling( tree: CFTreeRef; newSibling: CFTreeRef ); external name '_CFTreeInsertSibling';
- {!
- @function CFTreeRemove
- Removes the tree from its parent.
- @param tree The tree to be removed. If this parameter is not a valid
- CFTree, the behavior is undefined.
- }
- procedure CFTreeRemove( tree: CFTreeRef ); external name '_CFTreeRemove';
- {!
- @function CFTreeRemoveAllChildren
- Removes all the children of the tree.
- @param tree The tree to remove all children from. If this parameter is not a valid
- CFTree, the behavior is undefined.
- }
- procedure CFTreeRemoveAllChildren( tree: CFTreeRef ); external name '_CFTreeRemoveAllChildren';
- {!
- @function CFTreeSortChildren
- Sorts the children of the specified tree using the specified comparator function.
- @param tree The tree to be operated on. If this parameter is not a valid
- CFTree, the behavior is undefined.
- @param comparator The function with the comparator function type
- signature which is used in the sort operation to compare
- children of the tree with the given value. If this parameter
- is not a pointer to a function of the correct prototype, the
- the behavior is undefined. The children of the tree are sorted
- from least to greatest according to this function.
- @param context A pointer-sized user-defined value, which is passed
- as the third parameter to the comparator function, but is
- otherwise unused by this function. If the context is not
- what is expected by the comparator function, the behavior is
- undefined.
- }
- procedure CFTreeSortChildren( tree: CFTreeRef; comparator: CFComparatorFunction; context: UnivPtr ); external name '_CFTreeSortChildren';
- {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE}
- end.
- {$endc} {not MACOSALLINCLUDE}
|