diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-04-03 13:38:53 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-04-03 13:38:53 +0100 |
| commit | 3c42c0a7c1196cc290dbcdc55dcb84379ad523e4 (patch) | |
| tree | f746640db075a3d613f21581d0c392b16d024439 /src/main/resources/csharp | |
| parent | 26f7b223ebfcf3e514ffa8c2b81ccaaa7a6605cc (diff) | |
C# backend: Implement for-each loops
Diffstat (limited to 'src/main/resources/csharp')
| -rw-r--r-- | src/main/resources/csharp/runtime/java/lang/Iterable.cs | 6 | ||||
| -rw-r--r-- | src/main/resources/csharp/runtime/java/lang/Iterator.cs | 7 | ||||
| -rw-r--r-- | src/main/resources/csharp/runtime/java/util/Arrays.cs | 37 |
3 files changed, 50 insertions, 0 deletions
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<T> { + Iterator<T> 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<T> { + 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<T> asList<T>(T[] values) { + return new _ArrayList<T>(values); + } + } + + internal class _ArrayList<T> : java.lang.Iterable<T> { + private readonly T[] values; + + internal _ArrayList(T[] values) { + this.values = values; + } + + public java.lang.Iterator<T> iterator() { + return new _ArrayIterator<T>(values); + } + } + + internal class _ArrayIterator<T> : java.lang.Iterator<T> { + 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++]; + } + } +} |
