OSLCountProcPtr
Defines a pointer to an object counting callback function. Your object counting function counts the number of Apple event objects of a specified class in a specified container object.
Declaration
typealias OSLCountProcPtr = (DescType, DescType, UnsafePointer<AEDesc>?, UnsafeMutablePointer<Int>?) -> OSErrParameters
- desiredType:
The object class of the Apple event objects to be counted. See Desctype.
- containerClass:
The object class of the container for the Apple event objects to be counted. See Desctype.
- container:
A pointer to a token that identifies the container for the Apple event objects to be counted. (Token is defined in 1446783 Aedisposetoken. See Aedesc.
- result:
A pointer to a variable where your object-counting function stores the number of Apple objects of the specified class in the specified container.
Return Value
A result code. See Result Codes. Your object counting function should return noErr if it successfully counted the objects and errAEEventNotHandled if it can’t count the objects. When the Apple Event Manager receives the result code errAEEventNotHandled after calling an object counting function, it attempts to use other methods of counting the specified objects, such as calling an equivalent system object counting function.
Discussion
If you want the Apple Event Manager to help your application resolve object specifiers of key form formTest (and if your application doesn’t specify kAEIDoWhose as described in Callback Constants for the AEResolve Function), you should provide an object comparison function, as described in OSLCompareProcPtr, and an object-counting function.
The Apple Event Manager calls your object-counting function when, in the course of resolving an object specifier, the manager requires a count of the number of Apple event objects of a given class in a given container.
To provide a pointer to your object counting callback function, you create a universal procedure pointer (UPP) of type OSLCountUPP, using the function NewOSLCountUPP(_:). You can do so with code like the following:
OSLCountObjectsUPP MyCountObjectsUPP;
MyCountObjectsUPP = NewOSLCountObjectsUPP (&MyCountObjectsCallback)You can then pass the UPP MyCountObjectsUPP as a parameter to the AESetObjectCallbacks(_:_:_:_:_:_:_:) function or the AEInstallSpecialHandler(_:_:_:) function.
If you wish to call your object counting callback function directly, you can use the InvokeOSLCountUPP(_:_:_:_:_:) function.
After you are finished with your object counting callback function, you can dispose of the UPP with the DisposeOSLCountUPP(_:) function. However, if you will use the same object counting function in subsequent calls to the function AESetObjectCallbacks or the function AEInstallSpecialHandler, you can reuse the same UPP, rather than dispose of it and later create a new UPP.