Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,12 @@ static string GetInvokeType (string type)

internal override string GetAllInterfaceImplements () => "IJavaObject, IJavaPeerable";

protected virtual string GetPeerMembersType () => "JniPeerMembers";

internal override void WriteClassHandle (ClassGen type, string indent, bool requireNew)
{
writer.WriteLine ("{0}\tinternal {1} static readonly JniPeerMembers _members = new {2} (\"{3}\", typeof ({4}));",
indent,
requireNew ? "new" : " ",
GetPeerMembersType (),
type.RawJniName,
type.Name);
WritePeerMembers (indent + '\t', true, requireNew, type.RawJniName, type.Name);

writer.WriteLine ("{0}\tinternal static {1}IntPtr class_ref {{", indent, requireNew ? "new " : string.Empty);
writer.WriteLine ("{0}\t\tget {{", indent);
writer.WriteLine ("{0}\t\t\treturn _members.JniPeerType.PeerReference.Handle;", indent);
Expand All @@ -55,22 +53,15 @@ internal override void WriteClassHandle (ClassGen type, string indent, bool requ
}
}

protected virtual string GetPeerMembersType ()
{
return "JniPeerMembers";
}

internal override void WriteClassHandle (InterfaceGen type, string indent, string declaringType)
{
writer.WriteLine ("{0}new static JniPeerMembers _members = new JniPeerMembers (\"{1}\", typeof ({2}));",indent, type.RawJniName, declaringType);
WritePeerMembers (indent, false, true, type.RawJniName, declaringType);
}

internal override void WriteClassInvokerHandle (ClassGen type, string indent, string declaringType)
{
writer.WriteLine ("{0}internal new static readonly JniPeerMembers _members = new JniPeerMembers (\"{1}\", typeof ({2}));",
indent,
type.RawJniName,
declaringType);
WritePeerMembers (indent, true, true, type.RawJniName, declaringType);

writer.WriteLine ();
writer.WriteLine ("{0}public override global::Java.Interop.JniPeerMembers JniPeerMembers {{", indent);
writer.WriteLine ("{0}\tget {{ return _members; }}", indent);
Expand All @@ -84,10 +75,8 @@ internal override void WriteClassInvokerHandle (ClassGen type, string indent, st

internal override void WriteInterfaceInvokerHandle (InterfaceGen type, string indent, string declaringType)
{
writer.WriteLine ("{0}internal new static readonly JniPeerMembers _members = new JniPeerMembers (\"{1}\", typeof ({2}));",
indent,
type.RawJniName,
declaringType);
WritePeerMembers (indent, true, true, type.RawJniName, declaringType);

writer.WriteLine ();
writer.WriteLine ("{0}static IntPtr java_class_ref {{", indent);
writer.WriteLine ("{0}\tget {{ return _members.JniPeerType.PeerReference.Handle; }}", indent);
Expand Down Expand Up @@ -272,6 +261,14 @@ internal override void WriteFieldSetBody (Field field, string indent, GenBase ty
}
writer.WriteLine ("{0}}}", indent);
}

void WritePeerMembers (string indent, bool isInternal, bool isNew, string rawJniType, string declaringType)
{
var signature = $"{(isInternal ? "internal " : "")}static {(isNew ? "new " : "")}readonly JniPeerMembers _members = ";
var type = $"new {GetPeerMembersType ()} (\"{rawJniType}\", typeof ({declaringType}));";

writer.WriteLine ($"{indent}{signature}{type}");
}
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,7 @@ public XAJavaInteropCodeGenerator (TextWriter writer, CodeGenerationOptions opti
{
}

protected override string GetPeerMembersType ()
{
return "XAPeerMembers";
}
protected override string GetPeerMembersType () => "XAPeerMembers";
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public partial interface ISpannable : Android.Text.ISpanned {
[global::Android.Runtime.Register ("android/text/Spannable", DoNotGenerateAcw=true)]
internal partial class ISpannableInvoker : global::Java.Lang.Object, ISpannable {

internal new static readonly JniPeerMembers _members = new JniPeerMembers ("android/text/Spannable", typeof (ISpannableInvoker));
internal static new readonly JniPeerMembers _members = new JniPeerMembers ("android/text/Spannable", typeof (ISpannableInvoker));

static IntPtr java_class_ref {
get { return _members.JniPeerType.PeerReference.Handle; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public partial interface ISpanned : IJavaObject, IJavaPeerable {
[global::Android.Runtime.Register ("android/text/Spanned", DoNotGenerateAcw=true)]
internal partial class ISpannedInvoker : global::Java.Lang.Object, ISpanned {

internal new static readonly JniPeerMembers _members = new JniPeerMembers ("android/text/Spanned", typeof (ISpannedInvoker));
internal static new readonly JniPeerMembers _members = new JniPeerMembers ("android/text/Spanned", typeof (ISpannedInvoker));

static IntPtr java_class_ref {
get { return _members.JniPeerType.PeerReference.Handle; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Android.Text {
[global::Android.Runtime.Register ("android/text/SpannableString", DoNotGenerateAcw=true)]
public partial class SpannableString : Android.Text.SpannableStringInternal, Android.Text.ISpannable {

internal new static readonly JniPeerMembers _members = new JniPeerMembers ("android/text/SpannableString", typeof (SpannableString));
internal static new readonly JniPeerMembers _members = new JniPeerMembers ("android/text/SpannableString", typeof (SpannableString));
internal static new IntPtr class_ref {
get {
return _members.JniPeerType.PeerReference.Handle;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Android.Text {
[global::Android.Runtime.Register ("android/text/SpannableStringInternal", DoNotGenerateAcw=true)]
public abstract partial class SpannableStringInternal : Java.Lang.Object {

internal new static readonly JniPeerMembers _members = new JniPeerMembers ("android/text/SpannableStringInternal", typeof (SpannableStringInternal));
internal static new readonly JniPeerMembers _members = new JniPeerMembers ("android/text/SpannableStringInternal", typeof (SpannableStringInternal));
internal static new IntPtr class_ref {
get {
return _members.JniPeerType.PeerReference.Handle;
Expand Down Expand Up @@ -70,7 +70,7 @@ internal partial class SpannableStringInternalInvoker : SpannableStringInternal

public SpannableStringInternalInvoker (IntPtr handle, JniHandleOwnership transfer) : base (handle, transfer) {}

internal new static readonly JniPeerMembers _members = new JniPeerMembers ("android/text/SpannableStringInternal", typeof (SpannableStringInternalInvoker));
internal static new readonly JniPeerMembers _members = new JniPeerMembers ("android/text/SpannableStringInternal", typeof (SpannableStringInternalInvoker));

public override global::Java.Interop.JniPeerMembers JniPeerMembers {
get { return _members; }
Expand Down
4 changes: 2 additions & 2 deletions tools/generator/Tests-Core/expected.ji/Android.Views.View.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public partial interface IOnClickListener : IJavaObject, IJavaPeerable {
[global::Android.Runtime.Register ("android/view/View$OnClickListener", DoNotGenerateAcw=true)]
internal partial class IOnClickListenerInvoker : global::Java.Lang.Object, IOnClickListener {

internal new static readonly JniPeerMembers _members = new JniPeerMembers ("android/view/View$OnClickListener", typeof (IOnClickListenerInvoker));
internal static new readonly JniPeerMembers _members = new JniPeerMembers ("android/view/View$OnClickListener", typeof (IOnClickListenerInvoker));

static IntPtr java_class_ref {
get { return _members.JniPeerType.PeerReference.Handle; }
Expand Down Expand Up @@ -128,7 +128,7 @@ internal static bool __IsEmpty (IOnClickListenerImplementor value)
}


internal new static readonly JniPeerMembers _members = new JniPeerMembers ("android/view/View", typeof (View));
internal static new readonly JniPeerMembers _members = new JniPeerMembers ("android/view/View", typeof (View));
internal static new IntPtr class_ref {
get {
return _members.JniPeerType.PeerReference.Handle;
Expand Down
2 changes: 1 addition & 1 deletion tools/generator/Tests-Core/expected.ji/Java.Lang.Object.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Java.Lang {
[global::Android.Runtime.Register ("java/lang/Object", DoNotGenerateAcw=true)]
public partial class Object {

internal static readonly JniPeerMembers _members = new JniPeerMembers ("java/lang/Object", typeof (Object));
internal static readonly JniPeerMembers _members = new JniPeerMembers ("java/lang/Object", typeof (Object));
internal static IntPtr class_ref {
get {
return _members.JniPeerType.PeerReference.Handle;
Expand Down
2 changes: 1 addition & 1 deletion tools/generator/Tests/Integration-Tests/CSharpKeywords.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System;
using System;
using NUnit.Framework;

namespace generatortests
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
[global::Android.Runtime.Register ("java/code/MyClass", DoNotGenerateAcw=true)]
public partial class MyClass {

internal new static readonly JniPeerMembers _members = new JniPeerMembers ("java/code/MyClass", typeof (MyClass));
internal static new readonly JniPeerMembers _members = new JniPeerMembers ("java/code/MyClass", typeof (MyClass));
internal static new IntPtr class_ref {
get {
return _members.JniPeerType.PeerReference.Handle;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
internal static readonly JniPeerMembers _members = new JniPeerMembers ("com/mypackage/foo", typeof (foo));
internal static readonly JniPeerMembers _members = new JniPeerMembers ("com/mypackage/foo", typeof (foo));
internal static IntPtr class_ref {
get {
return _members.JniPeerType.PeerReference.Handle;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ internal partial class MyClassInvoker : MyClass {

public MyClassInvoker (IntPtr handle, JniHandleOwnership transfer) : base (handle, transfer) {}

internal new static readonly JniPeerMembers _members = new JniPeerMembers ("java/code/MyClass", typeof (MyClassInvoker));
internal static new readonly JniPeerMembers _members = new JniPeerMembers ("java/code/MyClass", typeof (MyClassInvoker));

public override global::Java.Interop.JniPeerMembers JniPeerMembers {
get { return _members; }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
internal new static readonly JniPeerMembers _members = new JniPeerMembers ("com/mypackage/foo", typeof (Com.MyPackage.Foo));
internal static new readonly JniPeerMembers _members = new JniPeerMembers ("com/mypackage/foo", typeof (Com.MyPackage.Foo));

public override global::Java.Interop.JniPeerMembers JniPeerMembers {
get { return _members; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public abstract class MyInterface : Java.Lang.Object {
}


new static JniPeerMembers _members = new JniPeerMembers ("java/code/IMyInterface", typeof (MyInterface));
static new readonly JniPeerMembers _members = new JniPeerMembers ("java/code/IMyInterface", typeof (MyInterface));
}

[Register ("java/code/IMyInterface", DoNotGenerateAcw=true)]
Expand Down Expand Up @@ -70,7 +70,7 @@ public partial interface IMyInterface : IJavaObject, IJavaPeerable {
[global::Android.Runtime.Register ("java/code/IMyInterface", DoNotGenerateAcw=true)]
internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterface {

internal new static readonly JniPeerMembers _members = new JniPeerMembers ("java/code/IMyInterface", typeof (IMyInterfaceInvoker));
internal static new readonly JniPeerMembers _members = new JniPeerMembers ("java/code/IMyInterface", typeof (IMyInterfaceInvoker));

static IntPtr java_class_ref {
get { return _members.JniPeerType.PeerReference.Handle; }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[global::Android.Runtime.Register ("java/code/IMyInterface", DoNotGenerateAcw=true)]
internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterface {

internal new static readonly JniPeerMembers _members = new JniPeerMembers ("java/code/IMyInterface", typeof (IMyInterfaceInvoker));
internal static new readonly JniPeerMembers _members = new JniPeerMembers ("java/code/IMyInterface", typeof (IMyInterfaceInvoker));

static IntPtr java_class_ref {
get { return _members.JniPeerType.PeerReference.Handle; }
Expand Down
Loading