public string[] PostCall(CodeGenerationOptions opt, string var_name) { string managed_name = opt.GetSafeIdentifier(var_name); string native_name = opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name)); if (opt.CodeGenerationTarget == CodeGenerationTarget.JavaInterop1) { if (IsParams) { return(new[] { $"if ({managed_name} != null) {{", $"\t{native_name}.CopyTo ({managed_name}, 0);", $"\t{native_name}.Dispose ();", $"}}", }); } return(new[] { $"if ({managed_name} != null) {{", $"\t{native_name}.DisposeUnlessReferenced ();", $"}}", }); } return(new[] { $"if ({managed_name} != null) {{", $"\tJNIEnv.CopyArray ({native_name}, {managed_name});", $"\tJNIEnv.DeleteLocalRef ({native_name});", $"}}", }); }
internal override void WriteFieldSetBody(Field field, string indent, GenBase type) { writer.WriteLine("{0}if ({1} == IntPtr.Zero)", indent, field.ID); writer.WriteLine("{0}\t{1} = JNIEnv.Get{2}FieldID (class_ref, \"{3}\", \"{4}\");", indent, field.ID, field.IsStatic ? "Static" : String.Empty, field.JavaName, field.Symbol.JniName); string arg; bool have_prep = false; if (field.Symbol.IsArray) { arg = opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName("value")); writer.WriteLine("{0}IntPtr {1} = global::Android.Runtime.JavaArray<{2}>.ToLocalJniHandle (value);", indent, arg, opt.GetOutputName(field.Symbol.ElementType)); } else { foreach (string prep in field.SetParameters.GetCallPrep(opt)) { have_prep = true; writer.WriteLine("{0}{1}", indent, prep); } arg = field.SetParameters [0].ToNative(opt); if (field.SetParameters.HasCleanup && !have_prep) { arg = opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName("value")); writer.WriteLine("{0}IntPtr {1} = JNIEnv.ToLocalJniHandle (value);", indent, arg); } } writer.WriteLine("{0}try {{", indent); writer.WriteLine("{0}\tJNIEnv.Set{1}Field ({2}, {3}, {4});", indent, field.IsStatic ? "Static" : String.Empty, field.IsStatic ? "class_ref" : type.GetObjectHandleProperty("this"), field.ID, arg); writer.WriteLine("{0}}} finally {{", indent); if (field.Symbol.IsArray) { writer.WriteLine("{0}\tJNIEnv.DeleteLocalRef ({1});", indent, arg); } else { foreach (string cleanup in field.SetParameters.GetCallCleanup(opt)) { writer.WriteLine("{0}\t{1}", indent, cleanup); } if (field.SetParameters.HasCleanup && !have_prep) { writer.WriteLine("{0}\tJNIEnv.DeleteLocalRef ({1});", indent, arg); } } writer.WriteLine("{0}}}", indent); }
public string[] PreCall(CodeGenerationOptions opt, string var_name) { return(new string[] { string.Format("var {0} = {1};", opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name)), opt.GetSafeIdentifier(var_name)), }); }
public string[] PreCall(CodeGenerationOptions opt, string var_name) { return(new string[] { string.Format("IntPtr {0} = JNIEnv.ToLocalJniHandle ({1});", opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name)), opt.GetSafeIdentifier(var_name)), }); }
public string[] PostCall(CodeGenerationOptions opt, string var_name) { return(new string[] { string.Format("JNIEnv.DeleteLocalRef ({0});", opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name))), }); }
internal override void WriteFieldSetBody(Field field, string indent, GenBase type) { writer.WriteLine("{0}const string __id = \"{1}.{2}\";", indent, field.JavaName, field.Symbol.JniName); writer.WriteLine(); var invokeType = GetInvokeType(field.GetMethodPrefix); var indirect = field.IsStatic ? "StaticFields" : "InstanceFields"; string arg; bool have_prep = false; if (field.Symbol.IsArray) { arg = opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName("value")); writer.WriteLine("{0}IntPtr {1} = global::Android.Runtime.JavaArray<{2}>.ToLocalJniHandle (value);", indent, arg, opt.GetOutputName(field.Symbol.ElementType)); } else { foreach (string prep in field.SetParameters.GetCallPrep(opt)) { have_prep = true; writer.WriteLine("{0}{1}", indent, prep); } arg = field.SetParameters [0].ToNative(opt); if (field.SetParameters.HasCleanup && !have_prep) { arg = opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName("value")); writer.WriteLine("{0}IntPtr {1} = global::Android.Runtime.JNIEnv.ToLocalJniHandle (value);", indent, arg); } } writer.WriteLine("{0}try {{", indent); writer.WriteLine("{0}\t_members.{1}.SetValue (__id{2}, {3});", indent, indirect, field.IsStatic ? "" : ", this", invokeType != "Object" ? arg : "new JniObjectReference (" + arg + ")"); writer.WriteLine("{0}}} finally {{", indent); if (field.Symbol.IsArray) { writer.WriteLine("{0}\tglobal::Android.Runtime.JNIEnv.DeleteLocalRef ({1});", indent, arg); } else { foreach (string cleanup in field.SetParameters.GetCallCleanup(opt)) { writer.WriteLine("{0}\t{1}", indent, cleanup); } if (field.SetParameters.HasCleanup && !have_prep) { writer.WriteLine("{0}\tglobal::Android.Runtime.JNIEnv.DeleteLocalRef ({1});", indent, arg); } } writer.WriteLine("{0}}}", indent); }
public string[] PreCall(CodeGenerationOptions opt, string var_name) { return(new string[] { string.Format("IntPtr {0} = global::Android.Runtime.{1}Adapter.ToLocalJniHandle ({2});", opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name)), base_name, opt.GetSafeIdentifier(var_name)), }); }
public string[] PostCall(CodeGenerationOptions opt, string var_name) { string native_name = opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name)); string[] result = new string [2]; result [0] = String.Format("if ({0} != null)", opt.GetSafeIdentifier(var_name)); result [1] = String.Format("\t{0}.CopyTo({1}, 0);", native_name, opt.GetSafeIdentifier(var_name)); return(result); }
public string[] PreCallback(CodeGenerationOptions opt, string var_name, bool owned) { return(new string[] { string.Format("System.IO.Stream {0} = global::Android.Runtime.{1}Invoker.FromJniHandle ({2}, {3});", var_name, base_name, opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name)), owned ? "JniHandleOwnership.TransferLocalRef" : "JniHandleOwnership.DoNotTransfer"), }); }
public string[] PreCallback(CodeGenerationOptions opt, string var_name, bool owned) { return(new string[] { string.Format("var {1} = global::Java.Lang.Object.GetObject<{0}> ({2}, {3});", opt.GetOutputName(FullName), var_name, opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name)), owned ? "JniHandleOwnership.TransferLocalRef" : "JniHandleOwnership.DoNotTransfer"), }); }
public string[] PreCallback(CodeGenerationOptions opt, string var_name, bool owned) { return(new string[] { string.Format("var {0} = global::Java.Util.InteroperableArrays.ToLocal{1} ({2}, {3});", opt.GetSafeIdentifier(var_name), GetManagedTypeName(opt), opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name)), owned ? "JniHandleOwnership.TransferLocalRef" : "JniHandleOwnership.DoNotTransfer"), }); }
public string[] PostCall(CodeGenerationOptions opt, string var_name) { string native_name = opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name)); string[] result = new string [4]; result [0] = String.Format("if ({0} != null) {{", opt.GetSafeIdentifier(var_name)); result [1] = String.Format("\tJNIEnv.CopyArray ({0}, {1});", native_name, opt.GetSafeIdentifier(var_name)); result [2] = String.Format("\tJNIEnv.DeleteLocalRef ({0});", native_name); result [3] = "}"; return(result); }
public string[] PreCall(CodeGenerationOptions opt, string var_name) { string managed_name = opt.GetSafeIdentifier(var_name); string native_name = opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name)); if (opt.CodeGenerationTarget == CodeGenerationTarget.JavaInterop1) { return(new[] { $"var {native_name} = global::{GetJavaInterop1MarshalMethod ()} ({managed_name});", }); } return(new string[] { String.Format("IntPtr {0} = JNIEnv.NewArray ({1});", opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name)), opt.GetSafeIdentifier(var_name)) }); }
public string[] PostCall(CodeGenerationOptions opt, string var_name) { string native_name = opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name)); if (opt.CodeGenerationTarget == CodeGenerationTarget.JavaInterop1) { return(new[] { $"global::Java.Interop.JniObjectReference.Dispose (ref {native_name});", }); } return(new string[] { string.Format("JNIEnv.DeleteLocalRef ({0});", opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name))), }); }
public string[] PreCall(CodeGenerationOptions opt, string var_name) { string managed_name = opt.GetSafeIdentifier(var_name); string native_name = opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name)); if (opt.CodeGenerationTarget == CodeGenerationTarget.JavaInterop1) { return(new[] { $"var {native_name} = global::Java.Interop.JniEnvironment.Strings.NewString ({managed_name});", }); } return(new[] { $"IntPtr {native_name} = JNIEnv.NewString ({managed_name});", }); }
public string[] PostCallback(CodeGenerationOptions opt, string var_name) { string managed_name = opt.GetSafeIdentifier(var_name); string native_name = opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name)); if (opt.CodeGenerationTarget == CodeGenerationTarget.JavaInterop1) { return(new string[] { $"throw new NotSupportedException (\"ArraySymbol.PostCallback\");", }); } return(new[] { $"if ({managed_name} != null)", $"\tJNIEnv.CopyArray ({managed_name}, {native_name});", }); }
public string[] PostCallback(CodeGenerationOptions opt, string var_name) { string[] result = new string [2]; result [0] = String.Format("if ({0} != null)", opt.GetSafeIdentifier(var_name)); result [1] = String.Format("\tglobal::Java.Util.InteroperableArrays.ArrayCopy({0}, {1});", opt.GetSafeIdentifier(var_name), opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name))); return(result); }
public string[] PostCallback(CodeGenerationOptions opt, string var_name) { string[] result = new string [2]; result [0] = String.Format("if ({0} != null)", opt.GetSafeIdentifier(var_name)); result [1] = String.Format("\tJNIEnv.CopyArray ({0}, {1});", opt.GetSafeIdentifier(var_name), opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name))); return(result); }
public string ToInteroperableJavaObject(string var_name) { return(GetGenericJavaObjectTypeOverride() != null?TypeNameUtilities.GetNativeName(var_name) : var_name); }
public string[] PreCallback(CodeGenerationOptions opt, string var_name, bool owned) { return(new string[] { String.Format("string {0} = JNIEnv.GetString ({1}, JniHandleOwnership.DoNotTransfer);", opt.GetSafeIdentifier(var_name), opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name))) }); }
public string[] PreCallback(CodeGenerationOptions opt, string var_name, bool owned) { return(new string[] { String.Format("var {1} = ({0}[]) JNIEnv.GetArray ({2}, JniHandleOwnership.DoNotTransfer, typeof ({3}));", opt.GetOutputName(ElementType), opt.GetSafeIdentifier(var_name), opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name)), opt.GetOutputName(sym.FullName)) }); }
public string[] PreCallback(CodeGenerationOptions opt, string var_name, bool owned) { return(new string[] { String.Format("global::Java.Lang.ICharSequence {0} = global::Java.Lang.Object.GetObject<global::Java.Lang.ICharSequence> ({1}, JniHandleOwnership.DoNotTransfer);", var_name, TypeNameUtilities.GetNativeName(var_name)) }); }
public string[] PreCall(CodeGenerationOptions opt, string var_name) { return(new string[] { String.Format("var {0} = global::Java.Util.InteroperableArrays.NewArray ({1});", opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name)), opt.GetSafeIdentifier(var_name)) }); }
public string[] PreCallback(CodeGenerationOptions opt, string var_name, bool owned) { return(new string[] { String.Format("var {1} = ({0}[]{4}) global::Java.Util.InteroperableArrays.GetArray<{3}> ({2}, JniHandleOwnership.DoNotTransfer);", opt.GetOutputName(ElementType), opt.GetSafeIdentifier(var_name), opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name)), opt.GetOutputName(sym.FullName), opt.NullableOperator) }); }
public string[] PreCallback(CodeGenerationOptions opt, string var_name, bool owned) { return(new string[] { String.Format("var {0} = global::Android.Runtime.XmlResourceParserReader.FromJniHandle ({1}, JniHandleOwnership.DoNotTransfer);", opt.GetSafeIdentifier(var_name), opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name))) }); }
public string[] PreCall(CodeGenerationOptions opt, string var_name) { return(new string[] { String.Format("JniObjectReference {0} = JniEnvironment.Strings.NewString ({1});", opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name)), opt.GetSafeIdentifier(var_name)) }); }
public string Call(CodeGenerationOptions opt, string var_name) { return(opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name))); }
public string ToInteroperableJavaObject(string var_name) { return(TypeNameUtilities.GetNativeName(var_name)); }
public string[] PreCall(CodeGenerationOptions opt, string var_name) { return(new string[] { String.Format("IntPtr {0} = global::Android.Runtime.XmlReaderResourceParser.ToLocalJniHandle ({1});", opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name)), opt.GetSafeIdentifier(var_name)) }); }
public string[] PreCallback(CodeGenerationOptions opt, string var_name, bool owned) { return(new string[] { String.Format("var {0} = JniEnvironment.Strings.ToString ({1});", opt.GetSafeIdentifier(var_name), opt.GetSafeIdentifier(TypeNameUtilities.GetNativeName(var_name))) }); }