Skip to content

Commit

Permalink
Mark IOSurface functions and methods as safe
Browse files Browse the repository at this point in the history
  • Loading branch information
madsmtm committed Jan 28, 2025
1 parent 783e2da commit 8febe1e
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 1 deletion.
88 changes: 88 additions & 0 deletions framework-crates/objc2-io-surface/translation-config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,91 @@ typedef.IOSurfaceRef.renamed = "IOSurfaceRef" # TODO: Merge IOSurface and IOSurf
typedef.IOSurfaceRef.skipped = true
struct.__IOSurface.skipped = true
external.IOSurfaceRef.module = "IOSurface.IOSurfaceRef"

##
## Safety
##

# IOSurfaceRef
fn.IOSurfaceCreate.unsafe = true # CFDictionary can contain anything
fn.IOSurfaceLookup.unsafe = false
fn.IOSurfaceGetID.unsafe = false
fn.IOSurfaceGetAllocSize.unsafe = false
fn.IOSurfaceGetWidth.unsafe = false
fn.IOSurfaceGetHeight.unsafe = false
fn.IOSurfaceGetBytesPerElement.unsafe = false
fn.IOSurfaceGetBytesPerRow.unsafe = false
fn.IOSurfaceGetBaseAddress.unsafe = false
fn.IOSurfaceGetElementWidth.unsafe = false
fn.IOSurfaceGetElementHeight.unsafe = false
fn.IOSurfaceGetPixelFormat.unsafe = false
fn.IOSurfaceGetSeed.unsafe = false
fn.IOSurfaceGetPlaneCount.unsafe = false
# Handles index out of bounds
fn.IOSurfaceGetWidthOfPlane.unsafe = false
fn.IOSurfaceGetHeightOfPlane.unsafe = false
fn.IOSurfaceGetBytesPerElementOfPlane.unsafe = false
fn.IOSurfaceGetBytesPerRowOfPlane.unsafe = false
fn.IOSurfaceGetBaseAddressOfPlane.unsafe = false
fn.IOSurfaceGetElementWidthOfPlane.unsafe = false
fn.IOSurfaceGetElementHeightOfPlane.unsafe = false
fn.IOSurfaceGetNumberOfComponentsOfPlane.unsafe = false
fn.IOSurfaceGetNameOfComponentOfPlane.unsafe = false
fn.IOSurfaceGetTypeOfComponentOfPlane.unsafe = false
fn.IOSurfaceGetRangeOfComponentOfPlane.unsafe = false
fn.IOSurfaceGetBitDepthOfComponentOfPlane.unsafe = false
fn.IOSurfaceGetBitOffsetOfComponentOfPlane.unsafe = false
fn.IOSurfaceGetSubsampling.unsafe = false
fn.IOSurfaceSetValue.unsafe = true # CFType can be anything, while there is probably an implicit type for each value (?)
fn.IOSurfaceCopyValue.unsafe = false
fn.IOSurfaceRemoveValue.unsafe = false
fn.IOSurfaceSetValues.unsafe = true # CFDictionary can contain anything (not just CFType)
fn.IOSurfaceCopyAllValues.unsafe = false
fn.IOSurfaceRemoveAllValues.unsafe = false
fn.IOSurfaceCreateMachPort.unsafe = false
fn.IOSurfaceLookupFromMachPort.unsafe = false
fn.IOSurfaceGetPropertyMaximum.unsafe = false
fn.IOSurfaceGetPropertyAlignment.unsafe = false
fn.IOSurfaceAlignProperty.unsafe = false
fn.IOSurfaceIncrementUseCount.unsafe = false
fn.IOSurfaceDecrementUseCount.unsafe = false
fn.IOSurfaceGetUseCount.unsafe = false
fn.IOSurfaceIsInUse.unsafe = false
fn.IOSurfaceAllowsPixelSizeCasting.unsafe = false

# ObjC
class.IOSurface.methods."initWithProperties:".unsafe = false
class.IOSurface.methods."lockWithOptions:seed:".unsafe = false
class.IOSurface.methods."unlockWithOptions:seed:".unsafe = false
class.IOSurface.methods.allocationSize.unsafe = false
class.IOSurface.methods.width.unsafe = false
class.IOSurface.methods.height.unsafe = false
class.IOSurface.methods.baseAddress.unsafe = false
class.IOSurface.methods.pixelFormat.unsafe = false
class.IOSurface.methods.bytesPerRow.unsafe = false
class.IOSurface.methods.bytesPerElement.unsafe = false
class.IOSurface.methods.elementWidth.unsafe = false
class.IOSurface.methods.elementHeight.unsafe = false
class.IOSurface.methods.surfaceID.unsafe = false
class.IOSurface.methods.seed.unsafe = false
class.IOSurface.methods.planeCount.unsafe = false
class.IOSurface.methods."widthOfPlaneAtIndex:".unsafe = false
class.IOSurface.methods."heightOfPlaneAtIndex:".unsafe = false
class.IOSurface.methods."bytesPerRowOfPlaneAtIndex:".unsafe = false
class.IOSurface.methods."bytesPerElementOfPlaneAtIndex:".unsafe = false
class.IOSurface.methods."elementWidthOfPlaneAtIndex:".unsafe = false
class.IOSurface.methods."elementHeightOfPlaneAtIndex:".unsafe = false
class.IOSurface.methods."baseAddressOfPlaneAtIndex:".unsafe = false
class.IOSurface.methods."setAttachment:forKey:".unsafe = true # Unsure if AnyObject is safe here?
class.IOSurface.methods."attachmentForKey:".unsafe = false
class.IOSurface.methods."removeAttachmentForKey:".unsafe = false
class.IOSurface.methods."setAllAttachments:".unsafe = false
class.IOSurface.methods.allAttachments.unsafe = false
class.IOSurface.methods.removeAllAttachments.unsafe = false
class.IOSurface.methods.isInUse.unsafe = false
class.IOSurface.methods.incrementUseCount.unsafe = false
class.IOSurface.methods.decrementUseCount.unsafe = false
class.IOSurface.methods.localUseCount.unsafe = false
class.IOSurface.methods.allowsPixelSizeCasting.unsafe = false
class.IOSurface.methods.init.unsafe = false
class.IOSurface.methods.new.unsafe = false
2 changes: 1 addition & 1 deletion generated

0 comments on commit 8febe1e

Please sign in to comment.