Package org.apache.lucene.util.fst

# Class Outputs<T>

java.lang.Object
org.apache.lucene.util.fst.Outputs<T>

Direct Known Subclasses:
  `ByteSequenceOutputs`, `CharSequenceOutputs`, `IntSequenceOutputs`, `NoOutputs`, `PairOutputs`, `PositiveIntOutputs`

public abstract class Outputs<T> extends Object
Represents the outputs for an FST, providing the basic algebra required for building and traversing the FST.

Note that any operation that returns NO_OUTPUT must return the same singleton object from `getNoOutput()`.

WARNING: This API is experimental and might change in incompatible ways in the next release.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Outputs()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `abstract T`
  `add(T prefix, T output)`
  Eg add("foo", "bar") -> "foobar"
  `abstract T`
  `common(T output1, T output2)`
  Eg common("foobar", "food") -> "foo"
  `abstract T`
  `getNoOutput()`
  NOTE: this output is compared with == so you must ensure that all methods return the single object if it's really no output
  `T`
  `merge(T first, T second)`
  `abstract String`
  `outputToString(T output)`
  `abstract long`
  `ramBytesUsed(T output)`
  Return memory usage for the provided output.
  `abstract T`
  `read(DataInput in)`
  Decode an output value previously written with `write(Object, DataOutput)`.
  `T`
  `readFinalOutput(DataInput in)`
  Decode an output value previously written with `writeFinalOutput(Object, DataOutput)`.
  `void`
  `skipFinalOutput(DataInput in)`
  Skip the output previously written with `writeFinalOutput(T, org.apache.lucene.store.DataOutput)`; defaults to just calling `readFinalOutput(org.apache.lucene.store.DataInput)` and discarding the result.
  `void`
  `skipOutput(DataInput in)`
  Skip the output; defaults to just calling `read(org.apache.lucene.store.DataInput)` and discarding the result.
  `abstract T`
  `subtract(T output, T inc)`
  Eg subtract("foobar", "foo") -> "bar"
  `abstract void`
  `write(T output, DataOutput out)`
  Encode an output value into a `DataOutput`.
  `void`
  `writeFinalOutput(T output, DataOutput out)`
  Encode an final node output value into a `DataOutput`.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### Outputs

    public Outputs()

- ## Method Details

  - ### common

    public abstract T common(T output1, T output2)
    Eg common("foobar", "food") -> "foo"

  - ### subtract

    public abstract T subtract(T output, T inc)
    Eg subtract("foobar", "foo") -> "bar"

  - ### add

    public abstract T add(T prefix, T output)
    Eg add("foo", "bar") -> "foobar"

  - ### write

    public abstract void write(T output, DataOutput out) throws IOException
    Encode an output value into a `DataOutput`.
    Throws:
      `IOException`

  - ### writeFinalOutput

    public void writeFinalOutput(T output, DataOutput out) throws IOException
    Encode an final node output value into a `DataOutput`. By default this just calls `write(Object, DataOutput)`.
    Throws:
      `IOException`

  - ### read

    public abstract T read(DataInput in) throws IOException
    Decode an output value previously written with `write(Object, DataOutput)`.
    Throws:
      `IOException`

  - ### skipOutput

    public void skipOutput(DataInput in) throws IOException
    Skip the output; defaults to just calling `read(org.apache.lucene.store.DataInput)` and discarding the result.
    Throws:
      `IOException`

  - ### readFinalOutput

    public T readFinalOutput(DataInput in) throws IOException
    Decode an output value previously written with `writeFinalOutput(Object, DataOutput)`. By default this just calls `read(DataInput)`.
    Throws:
      `IOException`

  - ### skipFinalOutput

    public void skipFinalOutput(DataInput in) throws IOException
    Skip the output previously written with `writeFinalOutput(T, org.apache.lucene.store.DataOutput)`; defaults to just calling `readFinalOutput(org.apache.lucene.store.DataInput)` and discarding the result.
    Throws:
      `IOException`

  - ### getNoOutput

    public abstract T getNoOutput()
    NOTE: this output is compared with == so you must ensure that all methods return the single object if it's really no output

  - ### outputToString

    public abstract String outputToString(T output)

  - ### merge

    public T merge(T first, T second)

  - ### ramBytesUsed

    public abstract long ramBytesUsed(T output)
    Return memory usage for the provided output.
    See Also:
      - `Accountable`