core_foundation_sys/
plugin.rs1use std::os::raw::c_void;
11
12use crate::array::CFArrayRef;
13use crate::base::{Boolean, CFAllocatorRef, CFIndex, CFTypeID};
14use crate::bundle::{CFBundleRef, CFPlugInRef};
15use crate::string::CFStringRef;
16use crate::url::CFURLRef;
17use crate::uuid::CFUUIDRef;
18
19#[repr(C)]
20pub struct __CFPlugInInstance(c_void);
21pub type CFPlugInInstanceRef = *mut __CFPlugInInstance;
22
23pub type CFPlugInDynamicRegisterFunction = extern "C" fn(plugIn: CFPlugInRef);
24pub type CFPlugInUnloadFunction = extern "C" fn(plugIn: CFPlugInRef);
25pub type CFPlugInFactoryFunction =
26 extern "C" fn(allocator: CFAllocatorRef, typeUUID: CFUUIDRef) -> *mut c_void;
27
28pub type CFPlugInInstanceGetInterfaceFunction = extern "C" fn(
29 instance: CFPlugInInstanceRef,
30 interfaceName: CFStringRef,
31 ftbl: *mut *mut c_void,
32) -> Boolean;
33pub type CFPlugInInstanceDeallocateInstanceDataFunction = extern "C" fn(instanceData: *mut c_void);
34
35extern "C" {
36 pub static kCFPlugInDynamicRegistrationKey: CFStringRef;
43 pub static kCFPlugInDynamicRegisterFunctionKey: CFStringRef;
44 pub static kCFPlugInUnloadFunctionKey: CFStringRef;
45 pub static kCFPlugInFactoriesKey: CFStringRef;
46 pub static kCFPlugInTypesKey: CFStringRef;
47
48 pub fn CFPlugInCreate(allocator: CFAllocatorRef, plugInURL: CFURLRef) -> CFPlugInRef;
50 pub fn CFPlugInInstanceCreate(
51 allocator: CFAllocatorRef,
52 factoryUUID: CFUUIDRef,
53 typeUUID: CFUUIDRef,
54 ) -> *mut c_void;
55
56 pub fn CFPlugInRegisterFactoryFunction(
58 factoryUUID: CFUUIDRef,
59 func: CFPlugInFactoryFunction,
60 ) -> Boolean;
61 pub fn CFPlugInRegisterFactoryFunctionByName(
62 CfactoryUUID: CFUUIDRef,
63 plugIn: CFPlugInRef,
64 functionName: CFStringRef,
65 ) -> Boolean;
66 pub fn CFPlugInRegisterPlugInType(factoryUUID: CFUUIDRef, typeUUID: CFUUIDRef) -> Boolean;
67 pub fn CFPlugInUnregisterFactory(factoryUUID: CFUUIDRef) -> Boolean;
68 pub fn CFPlugInUnregisterPlugInType(factoryUUID: CFUUIDRef, typeUUID: CFUUIDRef) -> Boolean;
69
70 pub fn CFPlugInAddInstanceForFactory(factoryID: CFUUIDRef);
72 pub fn CFPlugInFindFactoriesForPlugInType(typeUUID: CFUUIDRef) -> CFArrayRef;
73 pub fn CFPlugInFindFactoriesForPlugInTypeInPlugIn(
74 typeUUID: CFUUIDRef,
75 plugIn: CFPlugInRef,
76 ) -> CFArrayRef;
77 pub fn CFPlugInGetBundle(plugIn: CFPlugInRef) -> CFBundleRef;
78 pub fn CFPlugInGetTypeID() -> CFTypeID;
79 pub fn CFPlugInIsLoadOnDemand(plugIn: CFPlugInRef) -> Boolean;
80 pub fn CFPlugInRemoveInstanceForFactory(factoryID: CFUUIDRef);
81 pub fn CFPlugInSetLoadOnDemand(plugIn: CFPlugInRef, flag: Boolean);
82
83 pub fn CFPlugInInstanceCreateWithInstanceDataSize(
85 allocator: CFAllocatorRef,
86 instanceDataSize: CFIndex,
87 deallocateInstanceFunction: CFPlugInInstanceDeallocateInstanceDataFunction,
88 factoryName: CFStringRef,
89 getInterfaceFunction: CFPlugInInstanceGetInterfaceFunction,
90 ) -> CFPlugInInstanceRef;
91 pub fn CFPlugInInstanceGetFactoryName(instance: CFPlugInInstanceRef) -> CFStringRef;
92 pub fn CFPlugInInstanceGetInstanceData(instance: CFPlugInInstanceRef) -> *mut c_void;
93 pub fn CFPlugInInstanceGetInterfaceFunctionTable(
94 instance: CFPlugInInstanceRef,
95 interfaceName: CFStringRef,
96 ftbl: *mut *mut c_void,
97 ) -> Boolean;
98 pub fn CFPlugInInstanceGetTypeID() -> CFTypeID;
99}