Exemple #1
0
 public static Handle InvokeMember(Handle type, [MarshalAs(UnmanagedType.BStr)] string name, BindingFlags bindingFlags, Handle binder, Handle target, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 6)] Handle[] providedArgs, uint argCount, out Handle exception)
 {
     try
     {
         Type     typeObj         = (Type)HandleTable.Get(type);
         Binder   binderObj       = (Binder)HandleTable.Get(binder);
         object   targetObj       = HandleTable.Get(target);
         object[] providedArgsObj = Array.ConvertAll(providedArgs, HandleTable.Get);
         object   result          = typeObj.InvokeMember(name, bindingFlags, binderObj, targetObj, providedArgsObj);
         exception = Handle.Zero;
         providedArgs.Zip(providedArgsObj, (h, o) => HandleTable.Set(h, o)).Count();
         if (result != null)
         {
             return(AddRef(result));
         }
         else
         {
             return(Handle.Zero);
         }
     }
     catch (Exception e)
     {
         exception = AddRef(e);
         return(Handle.Zero);
     }
 }
Exemple #2
0
 private static object ReceiveInvocation(IntPtr context, object[] args)
 {
     for (int i = 0; i < args.Length; ++i)
     {
         HandleTable.Set(new IntPtr(i + 1), args[i]);
     }
     return(HandleTable.Get(handler(context, (uint)args.Length)));
 }
Exemple #3
0
 public static Handle PutInt8(Handle handle, sbyte value)
 {
     return(HandleTable.Set(handle, value));
 }
Exemple #4
0
 public static Handle PutBool(Handle handle, byte value)
 {
     return(HandleTable.Set(handle, value != 0));
 }
Exemple #5
0
 public static Handle PutChar(Handle handle, char value)
 {
     return(HandleTable.Set(handle, value));
 }
Exemple #6
0
#pragma warning restore IDE0001

        public static Handle PutString(Handle handle, [MarshalAs(UnmanagedType.BStr)] string value)
        {
            return(HandleTable.Set(handle, value));
        }
Exemple #7
0
 public static Handle PutObject(Handle handle, Handle value)
 {
     return(HandleTable.Set(handle, HandleTable.Get(value)));
 }
Exemple #8
0
 public static Handle PutFloat64(Handle handle, double value)
 {
     return(HandleTable.Set(handle, value));
 }
Exemple #9
0
 public static Handle PutFloat32(Handle handle, float value)
 {
     return(HandleTable.Set(handle, value));
 }
Exemple #10
0
 public static Handle PutUInt64(Handle handle, ulong value)
 {
     return(HandleTable.Set(handle, value));
 }
Exemple #11
0
 public static Handle PutUInt32(Handle handle, uint value)
 {
     return(HandleTable.Set(handle, value));
 }
Exemple #12
0
 public static Handle PutUInt16(Handle handle, ushort value)
 {
     return(HandleTable.Set(handle, value));
 }