1 { CFMachPort.h 2 Copyright (c) 1998-2013, Apple Inc. All rights reserved. 3 } 4 { 5 Modified for use with Free Pascal 6 Version 308 7 Please report any bugs to <gpc@microbizz.nl> 8 } 9 10 {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE} 11 {$mode macpas} 12 {$modeswitch cblocks} 13 {$packenum 1} 14 {$macro on} 15 {$inline on} 16 {$calling mwpascal} 17 18 unit CFMachPort; 19 interface 20 {$setc UNIVERSAL_INTERFACES_VERSION := $0400} 21 {$setc GAP_INTERFACES_VERSION := $0308} 22 23 {$ifc not defined USE_CFSTR_CONSTANT_MACROS} 24 {$setc USE_CFSTR_CONSTANT_MACROS := TRUE} 25 {$endc} 26 27 {$ifc defined CPUPOWERPC and defined CPUI386} 28 {$error Conflicting initial definitions for CPUPOWERPC and CPUI386} 29 {$endc} 30 {$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN} 31 {$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN} 32 {$endc} 33 34 {$ifc not defined __ppc__ and defined CPUPOWERPC32} 35 {$setc __ppc__ := 1} 36 {$elsec} 37 {$setc __ppc__ := 0} 38 {$endc} 39 {$ifc not defined __ppc64__ and defined CPUPOWERPC64} 40 {$setc __ppc64__ := 1} 41 {$elsec} 42 {$setc __ppc64__ := 0} 43 {$endc} 44 {$ifc not defined __i386__ and defined CPUI386} 45 {$setc __i386__ := 1} 46 {$elsec} 47 {$setc __i386__ := 0} 48 {$endc} 49 {$ifc not defined __x86_64__ and defined CPUX86_64} 50 {$setc __x86_64__ := 1} 51 {$elsec} 52 {$setc __x86_64__ := 0} 53 {$endc} 54 {$ifc not defined __arm__ and defined CPUARM} 55 {$setc __arm__ := 1} 56 {$elsec} 57 {$setc __arm__ := 0} 58 {$endc} 59 {$ifc not defined __arm64__ and defined CPUAARCH64} 60 {$setc __arm64__ := 1} 61 {$elsec} 62 {$setc __arm64__ := 0} 63 {$endc} 64 65 {$ifc defined cpu64} 66 {$setc __LP64__ := 1} 67 {$elsec} 68 {$setc __LP64__ := 0} 69 {$endc} 70 71 72 {$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__} 73 {$error Conflicting definitions for __ppc__ and __i386__} 74 {$endc} 75 76 {$ifc defined __ppc__ and __ppc__} 77 {$setc TARGET_CPU_PPC := TRUE} 78 {$setc TARGET_CPU_PPC64 := FALSE} 79 {$setc TARGET_CPU_X86 := FALSE} 80 {$setc TARGET_CPU_X86_64 := FALSE} 81 {$setc TARGET_CPU_ARM := FALSE} 82 {$setc TARGET_CPU_ARM64 := FALSE} 83 {$setc TARGET_OS_MAC := TRUE} 84 {$setc TARGET_OS_IPHONE := FALSE} 85 {$setc TARGET_IPHONE_SIMULATOR := FALSE} 86 {$setc TARGET_OS_EMBEDDED := FALSE} 87 {$elifc defined __ppc64__ and __ppc64__} 88 {$setc TARGET_CPU_PPC := FALSE} 89 {$setc TARGET_CPU_PPC64 := TRUE} 90 {$setc TARGET_CPU_X86 := FALSE} 91 {$setc TARGET_CPU_X86_64 := FALSE} 92 {$setc TARGET_CPU_ARM := FALSE} 93 {$setc TARGET_CPU_ARM64 := FALSE} 94 {$setc TARGET_OS_MAC := TRUE} 95 {$setc TARGET_OS_IPHONE := FALSE} 96 {$setc TARGET_IPHONE_SIMULATOR := FALSE} 97 {$setc TARGET_OS_EMBEDDED := FALSE} 98 {$elifc defined __i386__ and __i386__} 99 {$setc TARGET_CPU_PPC := FALSE} 100 {$setc TARGET_CPU_PPC64 := FALSE} 101 {$setc TARGET_CPU_X86 := TRUE} 102 {$setc TARGET_CPU_X86_64 := FALSE} 103 {$setc TARGET_CPU_ARM := FALSE} 104 {$setc TARGET_CPU_ARM64 := FALSE} 105 {$ifc defined iphonesim} 106 {$setc TARGET_OS_MAC := FALSE} 107 {$setc TARGET_OS_IPHONE := TRUE} 108 {$setc TARGET_IPHONE_SIMULATOR := TRUE} 109 {$elsec} 110 {$setc TARGET_OS_MAC := TRUE} 111 {$setc TARGET_OS_IPHONE := FALSE} 112 {$setc TARGET_IPHONE_SIMULATOR := FALSE} 113 {$endc} 114 {$setc TARGET_OS_EMBEDDED := FALSE} 115 {$elifc defined __x86_64__ and __x86_64__} 116 {$setc TARGET_CPU_PPC := FALSE} 117 {$setc TARGET_CPU_PPC64 := FALSE} 118 {$setc TARGET_CPU_X86 := FALSE} 119 {$setc TARGET_CPU_X86_64 := TRUE} 120 {$setc TARGET_CPU_ARM := FALSE} 121 {$setc TARGET_CPU_ARM64 := FALSE} 122 {$ifc defined iphonesim} 123 {$setc TARGET_OS_MAC := FALSE} 124 {$setc TARGET_OS_IPHONE := TRUE} 125 {$setc TARGET_IPHONE_SIMULATOR := TRUE} 126 {$elsec} 127 {$setc TARGET_OS_MAC := TRUE} 128 {$setc TARGET_OS_IPHONE := FALSE} 129 {$setc TARGET_IPHONE_SIMULATOR := FALSE} 130 {$endc} 131 {$setc TARGET_OS_EMBEDDED := FALSE} 132 {$elifc defined __arm__ and __arm__} 133 {$setc TARGET_CPU_PPC := FALSE} 134 {$setc TARGET_CPU_PPC64 := FALSE} 135 {$setc TARGET_CPU_X86 := FALSE} 136 {$setc TARGET_CPU_X86_64 := FALSE} 137 {$setc TARGET_CPU_ARM := TRUE} 138 {$setc TARGET_CPU_ARM64 := FALSE} 139 {$setc TARGET_OS_MAC := FALSE} 140 {$setc TARGET_OS_IPHONE := TRUE} 141 {$setc TARGET_IPHONE_SIMULATOR := FALSE} 142 {$setc TARGET_OS_EMBEDDED := TRUE} 143 {$elifc defined __arm64__ and __arm64__} 144 {$setc TARGET_CPU_PPC := FALSE} 145 {$setc TARGET_CPU_PPC64 := FALSE} 146 {$setc TARGET_CPU_X86 := FALSE} 147 {$setc TARGET_CPU_X86_64 := FALSE} 148 {$setc TARGET_CPU_ARM := FALSE} 149 {$setc TARGET_CPU_ARM64 := TRUE} 150 {$ifc defined ios} 151 {$setc TARGET_OS_MAC := FALSE} 152 {$setc TARGET_OS_IPHONE := TRUE} 153 {$setc TARGET_OS_EMBEDDED := TRUE} 154 {$elsec} 155 {$setc TARGET_OS_MAC := TRUE} 156 {$setc TARGET_OS_IPHONE := FALSE} 157 {$setc TARGET_OS_EMBEDDED := FALSE} 158 {$endc} 159 {$setc TARGET_IPHONE_SIMULATOR := FALSE} 160 {$elsec} 161 {$error __ppc__ nor __ppc64__ nor __i386__ nor __x86_64__ nor __arm__ nor __arm64__ is defined.} 162 {$endc} 163 164 {$ifc defined __LP64__ and __LP64__ } 165 {$setc TARGET_CPU_64 := TRUE} 166 {$elsec} 167 {$setc TARGET_CPU_64 := FALSE} 168 {$endc} 169 170 {$ifc defined FPC_BIG_ENDIAN} 171 {$setc TARGET_RT_BIG_ENDIAN := TRUE} 172 {$setc TARGET_RT_LITTLE_ENDIAN := FALSE} 173 {$elifc defined FPC_LITTLE_ENDIAN} 174 {$setc TARGET_RT_BIG_ENDIAN := FALSE} 175 {$setc TARGET_RT_LITTLE_ENDIAN := TRUE} 176 {$elsec} 177 {$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.} 178 {$endc} 179 {$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE} 180 {$setc CALL_NOT_IN_CARBON := FALSE} 181 {$setc OLDROUTINENAMES := FALSE} 182 {$setc OPAQUE_TOOLBOX_STRUCTS := TRUE} 183 {$setc OPAQUE_UPP_TYPES := TRUE} 184 {$setc OTCARBONAPPLICATION := TRUE} 185 {$setc OTKERNEL := FALSE} 186 {$setc PM_USE_SESSION_APIS := TRUE} 187 {$setc TARGET_API_MAC_CARBON := TRUE} 188 {$setc TARGET_API_MAC_OS8 := FALSE} 189 {$setc TARGET_API_MAC_OSX := TRUE} 190 {$setc TARGET_CARBON := TRUE} 191 {$setc TARGET_CPU_68K := FALSE} 192 {$setc TARGET_CPU_MIPS := FALSE} 193 {$setc TARGET_CPU_SPARC := FALSE} 194 {$setc TARGET_OS_UNIX := FALSE} 195 {$setc TARGET_OS_WIN32 := FALSE} 196 {$setc TARGET_RT_MAC_68881 := FALSE} 197 {$setc TARGET_RT_MAC_CFM := FALSE} 198 {$setc TARGET_RT_MAC_MACHO := TRUE} 199 {$setc TYPED_FUNCTION_POINTERS := TRUE} 200 {$setc TYPE_BOOL := FALSE} 201 {$setc TYPE_EXTENDED := FALSE} 202 {$setc TYPE_LONGLONG := TRUE} 203 uses MacTypes,CFBase,CFRunLoop,MacOSXPosix; 204 {$endc} {not MACOSALLINCLUDE} 205 206 {$ALIGN POWER} 207 208 209 type 210 CFMachPortRef = ^__CFMachPort; { an opaque type } 211 __CFMachPort = record end; 212 213 type 214 CFMachPortContext = record 215 version: CFIndex; 216 info: UnivPtr; infonull217 retain: function( info: {const} UnivPtr ): UnivPtr; 218 release: procedure( info: {const} UnivPtr ); infonull219 copyDescription: function( info: {const} UnivPtr ): CFStringRef; 220 end; 221 CFMachPortContextPtr = ^CFMachPortContext; 222 223 type 224 CFMachPortCallBack = procedure( port: CFMachPortRef; msg: UnivPtr; size: CFIndex; info: UnivPtr ); 225 CFMachPortInvalidationCallBack = procedure( port: CFMachPortRef; info: UnivPtr ); 226 CFMachPortGetTypeIDnull227function CFMachPortGetTypeID: CFTypeID; external name '_CFMachPortGetTypeID'; 228 CFMachPortCreatenull229function CFMachPortCreate( allocator: CFAllocatorRef; callout: CFMachPortCallBack; var context: CFMachPortContext; var shouldFreeInfo: Boolean ): CFMachPortRef; external name '_CFMachPortCreate'; CFMachPortCreateWithPortnull230function CFMachPortCreateWithPort( allocator: CFAllocatorRef; portNum: mach_port_t; callout: CFMachPortCallBack; var context: CFMachPortContext; var shouldFreeInfo: Boolean ): CFMachPortRef; external name '_CFMachPortCreateWithPort'; 231 CFMachPortGetPortnull232function CFMachPortGetPort( port: CFMachPortRef ): mach_port_t; external name '_CFMachPortGetPort'; 233 procedure CFMachPortGetContext( port: CFMachPortRef; var context: CFMachPortContext ); external name '_CFMachPortGetContext'; 234 procedure CFMachPortInvalidate( port: CFMachPortRef ); external name '_CFMachPortInvalidate'; CFMachPortIsValidnull235function CFMachPortIsValid( port: CFMachPortRef ): Boolean; external name '_CFMachPortIsValid'; CFMachPortGetInvalidationCallBacknull236function CFMachPortGetInvalidationCallBack( port: CFMachPortRef ): CFMachPortInvalidationCallBack; external name '_CFMachPortGetInvalidationCallBack'; 237 procedure CFMachPortSetInvalidationCallBack( port: CFMachPortRef; callout: CFMachPortInvalidationCallBack ); external name '_CFMachPortSetInvalidationCallBack'; 238 CFMachPortCreateRunLoopSourcenull239function CFMachPortCreateRunLoopSource( allocator: CFAllocatorRef; port: CFMachPortRef; order: CFIndex ): CFRunLoopSourceRef; external name '_CFMachPortCreateRunLoopSource'; 240 241 {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE} 242 243 end. 244 {$endc} {not MACOSALLINCLUDE} 245