diff options
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/tensor/functions/ToStringContext.java')
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/tensor/functions/ToStringContext.java | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/ToStringContext.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/ToStringContext.java index 1c8da9a1dca..233779fcebe 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/functions/ToStringContext.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/ToStringContext.java @@ -1,31 +1,42 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.tensor.functions; +import com.yahoo.tensor.evaluation.Name; +import com.yahoo.tensor.evaluation.TypeContext; + +import java.util.Optional; + /** * A context which is passed down to all nested functions when returning a string representation. * * @author bratseth */ -public interface ToStringContext { +public interface ToStringContext<NAMETYPE extends Name> { - static ToStringContext empty() { return new EmptyStringContext(); } + static <NAMETYPE extends Name> ToStringContext<NAMETYPE> empty() { return new EmptyStringContext<NAMETYPE>(); } /** Returns the name an identifier is bound to, or null if not bound in this context */ String getBinding(String name); /** + * Returns the context used to resolve types in this, if present. + * In some functions serialization depends on type information. + */ + default Optional<TypeContext<NAMETYPE>> typeContext() { return Optional.empty(); } + + /** * Returns the parent context of this (the context we're in scope of when this is created), * or null if this is the root. */ - ToStringContext parent(); + ToStringContext<NAMETYPE> parent(); - class EmptyStringContext implements ToStringContext { + class EmptyStringContext<NAMETYPE extends Name> implements ToStringContext<NAMETYPE> { @Override public String getBinding(String name) { return null; } @Override - public ToStringContext parent() { return null; } + public ToStringContext<NAMETYPE> parent() { return null; } } |