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
3 changes: 2 additions & 1 deletion tools/generator/Parameter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@ public string GetCall (CodeGenerationOptions opt)

public string ToNative (CodeGenerationOptions opt)
{
return NeedsPrep ? sym.Call (opt, Name) : sym.ToNative (opt, Name, null);
var safeName = opt.GetSafeIdentifier (Name);
return NeedsPrep ? sym.Call (opt, safeName) : sym.ToNative (opt, safeName, null);
}

public string GenericType {
Expand Down
19 changes: 19 additions & 0 deletions tools/generator/Tests/CSharpKeywords.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using System;
using NUnit.Framework;

namespace generatortests
{
[TestFixture]
public class CSharpKeywords : BaseGeneratorTest
{
[Test]
public void GeneratedOK ()
{
RunAllTargets (
outputRelativePath: "CSharpKeywords",
apiDescriptionFile: "expected/CSharpKeywords/CSharpKeywords.xml",
expectedRelativePath: "CSharpKeywords");
}
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" ?>
<api>
<package name="java.lang">
<class abstract="false" deprecated="not deprecated" final="false" name="Object" static="false" visibility="public">
</class>
<class abstract="false" deprecated="not deprecated" extends="java.lang.Object" final="false" name="Throwable" static="false" visibility="public">
<method abstract="false" deprecated="not deprecated" final="false" name="getMessage" native="false" return="java.lang.String" static="false" synchronized="false" visibility="public">
</method>
</class>
</package>
<package name="xamarin.test">
<class abstract="false" deprecated="not deprecated" final="false" name="CSharpKeywords" static="false" visibility="public">
<method abstract="false" deprecated="not deprecated" final="false" name="usePartial" native="false" return="java.lang.String" static="false" synchronized="false" visibility="public">
<parameter name="partial" type="int">
</parameter>
</method>
</class>
</package>
</api>
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<DefineConstants>$(DefineConstants);ANDROID_1;ANDROID_2;ANDROID_3;ANDROID_4</DefineConstants>
</PropertyGroup>
<!-- Classes -->
<ItemGroup>
<Compile Include="$(MSBuildThisFileDirectory)\Java.Interop.__TypeRegistrations.cs" />
<Compile Include="$(MSBuildThisFileDirectory)\Java.Lang.Object.cs" />
<Compile Include="$(MSBuildThisFileDirectory)\Java.Lang.Throwable.cs" />
<Compile Include="$(MSBuildThisFileDirectory)\Xamarin.Test.CSharpKeywords.cs" />
<Compile Include="$(MSBuildThisFileDirectory)\__NamespaceMapping__.cs" />
</ItemGroup>
<!-- Enums -->
<ItemGroup />
</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
using System;
using System.Collections.Generic;
using Android.Runtime;
using Java.Interop;

namespace Xamarin.Test {

// Metadata.xml XPath class reference: path="/api/package[@name='xamarin.test']/class[@name='CSharpKeywords']"
[global::Android.Runtime.Register ("xamarin/test/CSharpKeywords", DoNotGenerateAcw=true)]
public partial class CSharpKeywords : global::Java.Lang.Object {

internal static readonly JniPeerMembers _members = new JniPeerMembers ("xamarin/test/CSharpKeywords", typeof (CSharpKeywords));
internal static IntPtr class_ref {
get {
return _members.JniPeerType.PeerReference.Handle;
}
}

public override global::Java.Interop.JniPeerMembers JniPeerMembers {
get { return _members; }
}

protected override IntPtr ThresholdClass {
get { return _members.JniPeerType.PeerReference.Handle; }
}

protected override global::System.Type ThresholdType {
get { return _members.ManagedPeerType; }
}

protected CSharpKeywords (IntPtr javaReference, JniHandleOwnership transfer) : base (javaReference, transfer) {}

static Delegate cb_usePartial_I;
#pragma warning disable 0169
static Delegate GetUsePartial_IHandler ()
{
if (cb_usePartial_I == null)
cb_usePartial_I = JNINativeWrapper.CreateDelegate ((Func<IntPtr, IntPtr, int, IntPtr>) n_UsePartial_I);
return cb_usePartial_I;
}

static IntPtr n_UsePartial_I (IntPtr jnienv, IntPtr native__this, int partial_)
{
global::Xamarin.Test.CSharpKeywords __this = global::Java.Lang.Object.GetObject<global::Xamarin.Test.CSharpKeywords> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
return JNIEnv.NewString (__this.UsePartial (partial_));
}
#pragma warning restore 0169

// Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/class[@name='CSharpKeywords']/method[@name='usePartial' and count(parameter)=1 and parameter[1][@type='int']]"
[Register ("usePartial", "(I)Ljava/lang/String;", "GetUsePartial_IHandler")]
public virtual unsafe string UsePartial (int partial_)
{
const string __id = "usePartial.(I)Ljava/lang/String;";
try {
JniArgumentValue* __args = stackalloc JniArgumentValue [1];
__args [0] = new JniArgumentValue (partial_);
var __rm = _members.InstanceMethods.InvokeVirtualObjectMethod (__id, this, __args);
return JNIEnv.GetString (__rm.Handle, JniHandleOwnership.TransferLocalRef);
} finally {
}
}

}
}
Loading