diff options
author | Jon Bratseth <bratseth@gmail.com> | 2022-02-16 16:43:20 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2022-02-16 16:43:20 +0100 |
commit | e25d913b884339afc4f8e3073e4e4b795e55d930 (patch) | |
tree | 408e9fded165a07fae202fd691f6f2864680ac63 /vespajlib/src/main/java/com/yahoo/tensor/functions/ToStringContext.java | |
parent | 6f99bd502132cd378124a40060ac1d74d54f5e92 (diff) |
Resolve slice dimension
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; } } |