From 5fe2fa7934197d73bc1f6a3e361149923279b35a Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 24 Jan 2016 16:13:33 +0000 Subject: Implement negation in C# backend --- .../backends/csharp/CsharpPrimitiveMethods.java | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/main/java/org/zwobble/couscous/backends/csharp/CsharpPrimitiveMethods.java') diff --git a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpPrimitiveMethods.java b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpPrimitiveMethods.java index 9424b2d..e094258 100644 --- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpPrimitiveMethods.java +++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpPrimitiveMethods.java @@ -3,6 +3,8 @@ package org.zwobble.couscous.backends.csharp; import com.google.common.collect.ImmutableMap; import org.zwobble.couscous.ast.ExpressionNode; import org.zwobble.couscous.ast.TypeName; +import org.zwobble.couscous.backends.python.ast.PythonExpressionNode; +import org.zwobble.couscous.values.BooleanValue; import org.zwobble.couscous.values.ObjectValues; import java.util.List; @@ -13,6 +15,18 @@ import static org.zwobble.couscous.ast.MethodCallNode.staticMethodCall; import static org.zwobble.couscous.util.ExtraLists.list; public class CsharpPrimitiveMethods { + private static final Map BOOLEAN_METHODS; + + static { + ImmutableMap.Builder methods = ImmutableMap.builder(); + BOOLEAN_METHODS = methods.build(); + } + + private static final Map> METHODS = + ImmutableMap.>builder() + .put(BooleanValue.REF, BOOLEAN_METHODS) + .build(); + private static final Map STATIC_INT_METHODS = ImmutableMap.builder() @@ -29,6 +43,16 @@ public class CsharpPrimitiveMethods { .put(ObjectValues.BOXED_INT, STATIC_INT_METHODS) .build(); + public static Optional getPrimitiveMethod(TypeName type, String methodName) { + return Optional.ofNullable(METHODS.get(type)) + .flatMap(methodsForType -> Optional.ofNullable(methodsForType.get(methodName))); + } + + @FunctionalInterface + public interface PrimitiveMethodGenerator { + ExpressionNode generate(ExpressionNode receiver, List arguments); + } + public static Optional getPrimitiveStaticMethod(TypeName type, String methodName) { return Optional.ofNullable(STATIC_METHODS.get(type)) .flatMap(methodsForType -> Optional.ofNullable(methodsForType.get(methodName))); -- cgit v1.2.3