internal static void RegisterInstance(IJavaObject instance, IntPtr value, JniHandleOwnership transfer, out IntPtr handle) { if (value == IntPtr.Zero) { handle = value; return; } var transferType = transfer & (JniHandleOwnership.DoNotTransfer | JniHandleOwnership.TransferLocalRef | JniHandleOwnership.TransferGlobalRef); switch (transferType) { case JniHandleOwnership.DoNotTransfer: handle = JNIEnv.NewGlobalRef(value); break; case JniHandleOwnership.TransferLocalRef: handle = JNIEnv.NewGlobalRef(value); JNIEnv.DeleteLocalRef(value); break; case JniHandleOwnership.TransferGlobalRef: handle = value; break; default: throw new ArgumentOutOfRangeException("transfer", transfer, "Invalid `transfer` value: " + transfer + " on type " + instance.GetType()); } if (handle == IntPtr.Zero) { throw new InvalidOperationException("Unable to allocate Global Reference for object '" + instance.ToString() + "'!"); } IntPtr key = JNIEnv.IdentityHash(handle); if ((transfer & JniHandleOwnership.DoNotRegister) == 0) { _RegisterInstance(instance, key, handle); } var ex = instance as IJavaObjectEx; if (ex != null) { ex.KeyHandle = key; } if (Logger.LogGlobalRef) { JNIEnv._monodroid_gref_log("handle 0x" + handle.ToString("x") + "; key_handle 0x" + key.ToString("x") + ": Java Type: `" + JNIEnv.GetClassNameFromInstance(handle) + "`; " + "MCW type: `" + instance.GetType().FullName + "`\n"); } }
public GremlinScript(IJavaObject javaObject) { _sb.Append(javaObject.ToString()); }
public JavaObject(IJavaObject javaObject) { _sb.Append(javaObject.ToString()); }
public JavaString(IJavaObject javaObject) { _sb.Append(javaObject.ToString()); }