From 3c42c0a7c1196cc290dbcdc55dcb84379ad523e4 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 3 Apr 2016 13:38:53 +0100 Subject: C# backend: Implement for-each loops --- .../resources/csharp/runtime/java/lang/Iterable.cs | 6 ++++ .../resources/csharp/runtime/java/lang/Iterator.cs | 7 ++++ .../resources/csharp/runtime/java/util/Arrays.cs | 37 ++++++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 src/main/resources/csharp/runtime/java/lang/Iterable.cs create mode 100644 src/main/resources/csharp/runtime/java/lang/Iterator.cs create mode 100644 src/main/resources/csharp/runtime/java/util/Arrays.cs (limited to 'src/main/resources/csharp/runtime/java') diff --git a/src/main/resources/csharp/runtime/java/lang/Iterable.cs b/src/main/resources/csharp/runtime/java/lang/Iterable.cs new file mode 100644 index 0000000..090b3e5 --- /dev/null +++ b/src/main/resources/csharp/runtime/java/lang/Iterable.cs @@ -0,0 +1,6 @@ +namespace Couscous.java.lang { + // TODO: implement in Java + internal interface Iterable { + Iterator iterator(); + } +} diff --git a/src/main/resources/csharp/runtime/java/lang/Iterator.cs b/src/main/resources/csharp/runtime/java/lang/Iterator.cs new file mode 100644 index 0000000..75d985f --- /dev/null +++ b/src/main/resources/csharp/runtime/java/lang/Iterator.cs @@ -0,0 +1,7 @@ +namespace Couscous.java.lang { + // TODO: implement in Java + internal interface Iterator { + bool hasNext(); + T next(); + } +} diff --git a/src/main/resources/csharp/runtime/java/util/Arrays.cs b/src/main/resources/csharp/runtime/java/util/Arrays.cs new file mode 100644 index 0000000..6833582 --- /dev/null +++ b/src/main/resources/csharp/runtime/java/util/Arrays.cs @@ -0,0 +1,37 @@ +namespace Couscous.java.util { + internal static class Arrays { + internal static java.lang.Iterable asList(T[] values) { + return new _ArrayList(values); + } + } + + internal class _ArrayList : java.lang.Iterable { + private readonly T[] values; + + internal _ArrayList(T[] values) { + this.values = values; + } + + public java.lang.Iterator iterator() { + return new _ArrayIterator(values); + } + } + + internal class _ArrayIterator : java.lang.Iterator { + private readonly T[] values; + private int nextIndex; + + internal _ArrayIterator(T[] values) { + this.values = values; + this.nextIndex = 0; + } + + public bool hasNext() { + return nextIndex < values.Length; + } + + public T next() { + return values[nextIndex++]; + } + } +} -- cgit v1.2.3