Ejemplo n.º 1
0
 public FunctionWrapper(Atk.Function managed)
 {
     this.managed = managed;
     if (managed != null)
     {
         NativeDelegate = new FunctionNative(NativeCallback);
     }
 }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
                }
            }
        }
Ejemplo n.º 4
0
 Delegate IPlatformMarshal.ApplyNativeCallingConventionToFunction(FunctionNative function)
 {
     return(new FunctionNativeCdecl(function));
 }
Ejemplo n.º 5
0
 internal FunctionInvoker(FunctionNative native_cb, IntPtr data, GLib.DestroyNotify notify)
 {
     this.native_cb = native_cb;
     __data         = data;
     __notify       = notify;
 }
Ejemplo n.º 6
0
 internal FunctionInvoker(FunctionNative native_cb, IntPtr data) : this(native_cb, data, null)
 {
 }
Ejemplo n.º 7
0
 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);
 }