---
title: OSLCountProcPtr
framework: coreservices
role: symbol
role_heading: Type Alias
path: coreservices/oslcountprocptr
---

# 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

```swift
typealias OSLCountProcPtr = (DescType, DescType, UnsafePointer<AEDesc>?, UnsafeMutablePointer<Int>?) -> OSErr
```

## Parameters

- `desiredType`: The object class of the Apple event objects to be counted. See doc://com.apple.documentation/documentation/coreservices/desctype.
- `containerClass`: The object class of the container for the Apple event objects to be counted. See doc://com.apple.documentation/documentation/coreservices/desctype.
- `container`: A pointer to a token that identifies the container for the Apple event objects to be counted. (Token is defined in doc://com.apple.documentation/documentation/coreservices/1446783-aedisposetoken. See doc://com.apple.documentation/documentation/coreservices/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

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

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.

## See Also

### Callbacks

- [AERemoteProcessResolverCallback](coreservices/aeremoteprocessresolvercallback.md)
- [AEDisposeExternalProcPtr](coreservices/aedisposeexternalprocptr.md)
- [AECoerceDescProcPtr](coreservices/aecoercedescprocptr.md)
- [AECoercePtrProcPtr](coreservices/aecoerceptrprocptr.md)
- [AEEventHandlerProcPtr](coreservices/aeeventhandlerprocptr.md)
- [OSLAccessorProcPtr](coreservices/oslaccessorprocptr.md)
- [OSLAdjustMarksProcPtr](coreservices/osladjustmarksprocptr.md)
- [OSLCompareProcPtr](coreservices/oslcompareprocptr.md)
- [OSLDisposeTokenProcPtr](coreservices/osldisposetokenprocptr.md)
- [OSLGetErrDescProcPtr](coreservices/oslgeterrdescprocptr.md)
- [OSLGetMarkTokenProcPtr](coreservices/oslgetmarktokenprocptr.md)
- [OSLMarkProcPtr](coreservices/oslmarkprocptr.md)
