All Known Subinterfaces:
BiTuple<A,B>, QuadTuple<A,B,C,D>, TriTuple<A,B,C>, UniTuple<A>

@NullMarked public sealed interface Tuple permits BiTuple<A,B>, QuadTuple<A,B,C,D>, TriTuple<A,B,C>, UniTuple<A>
A tuple is an out tuple in exactly one node and an in tuple in one or more nodes.

A tuple must not implement equals()/hashCode() to fact equality, because some stream operations (UniConstraintStream.map(Function), ...) might create 2 different tuple instances to contain the same facts and because a tuple's origin may replace a tuple's fact.

A tuple is modifiable. However, only the origin node of a tuple (the node where the tuple is the out tuple) may modify it.

  • Method Details

    • getState

      TupleState getState()
    • setState

      void setState(TupleState state)
    • getStore

      <Value_> @Nullable Value_ getStore(int index)
    • setStore

      void setStore(int index, @Nullable Object value)
    • removeStore

      <Value_> @Nullable Value_ removeStore(int index)