public FunctionWrapper(Atk.Function managed) { this.managed = managed; if (managed != null) { NativeDelegate = new FunctionNative(NativeCallback); } }
public static Atk.Function GetManagedDelegate(FunctionNative native) { if (native == null) { return(null); } FunctionWrapper wrapper = (FunctionWrapper)native.Target; if (wrapper == null) { return(null); } return(wrapper.managed); }
public void CreateFunction(string name, int numberOfArguments, Function function, bool deterministic) { name = name.ToUpperInvariant(); var nativeFunction = new FunctionNative((context, numberArguments, nativeArguments) => { object[] mangedArguments = ObtainManagedArguments(nativeArguments); try { var result = function.Invoke(mangedArguments); SetResult(context, result); } catch (Exception ex) { SetError(context, ex); } }); var functionDelegate = this.platformMarshal.ApplyNativeCallingConventionToFunction(nativeFunction); this.functionDelegates[name] = functionDelegate; var funcPtr = this.platformMarshal.MarshalDelegateToNativeFunctionPointer(functionDelegate); int nameLength; var namePtr = this.platformMarshal.MarshalStringManagedToNativeUTF8(name, out nameLength); try { this.sqlite3Provider.Sqlite3CreateFunction(this.db, namePtr, numberOfArguments, deterministic, funcPtr); } finally { if (namePtr != IntPtr.Zero) { this.platformMarshal.CleanUpStringNativeUTF8(namePtr); } } }
Delegate IPlatformMarshal.ApplyNativeCallingConventionToFunction(FunctionNative function) { return(new FunctionNativeCdecl(function)); }
internal FunctionInvoker(FunctionNative native_cb, IntPtr data, GLib.DestroyNotify notify) { this.native_cb = native_cb; __data = data; __notify = notify; }
internal FunctionInvoker(FunctionNative native_cb, IntPtr data) : this(native_cb, data, null) { }
internal FunctionInvoker(FunctionNative native_cb) : this(native_cb, IntPtr.Zero, null) { }
public void CreateFunction(string name, int numberOfArguments, Function function, bool deterministic) { name = name.ToUpperInvariant(); var nativeFunction = new FunctionNative((context, numberArguments, nativeArguments) => { object[] mangedArguments = ObtainManagedArguments(nativeArguments); try { var result = function.Invoke(mangedArguments); SetResult(context, result); } catch (Exception ex) { SetError(context, ex); } }); var functionDelegate = this.platformMarshal.ApplyNativeCallingConventionToFunction(nativeFunction); this.functionDelegates[name] = functionDelegate; var funcPtr = this.platformMarshal.MarshalDelegateToNativeFunctionPointer(functionDelegate); int nameLength; var namePtr = this.platformMarshal.MarshalStringManagedToNativeUTF8(name, out nameLength); try { this.sqlite3Provider.Sqlite3CreateFunction(this.db, namePtr, numberOfArguments, deterministic, funcPtr); } finally { if (namePtr != IntPtr.Zero) { this.platformMarshal.CleanUpStringNativeUTF8(namePtr); } } }
Delegate IPlatformMarshal.ApplyNativeCallingConventionToFunction(FunctionNative function) { return new FunctionNativeCdecl(function); }