aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-03-31 14:51:20 +0100
committerMichael Williamson <mike@zwobble.org>2016-03-31 14:51:20 +0100
commit1d3f9768d5db906b4ba6e3c77345e4af4adddcd2 (patch)
tree47afa24e00a466a11cec8e32bea98b687793f1c8 /src/main
parentfaa90ead17943487a1f126d4403d5f1399fcd898 (diff)
Add array serialisation to C# backend
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java7
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java10
2 files changed, 16 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java b/src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java
index 3908f72..393cdc2 100644
--- a/src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java
+++ b/src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java
@@ -93,6 +93,13 @@ public class SourceCodeWriter {
action.run(this);
}
+ public <T> void writeCommaSeparated(Iterable<T> values, Consumer<T> writeValue) {
+ writeWithSeparator(values, writeValue, () -> {
+ writeSymbol(",");
+ writeSpace();
+ });
+ }
+
public <T> void writeWithSeparator(Iterable<T> values, Consumer<T> writeValue, Action separator) {
Iterator<T> iterator = values.iterator();
if (iterator.hasNext()) {
diff --git a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
index e7ac3d7..499121c 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
@@ -88,7 +88,15 @@ public class CsharpSerializer implements NodeVisitor {
@Override
public void visit(ArrayNode array) {
- throw new UnsupportedOperationException();
+ writer.writeKeyword("new");
+ writer.writeSpace();
+ writeTypeReference(array.getElementType());
+ writer.writeSymbol("[");
+ writer.writeSymbol("]");
+ writer.writeSpace();
+ writer.writeSymbol("{");
+ writer.writeCommaSeparated(array.getElements(), this::write);
+ writer.writeSymbol("}");
}
@Override