java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractList<E>
java.util.ArrayList<TokenFilter>
io.github.douira.glsl_transformer.print.filter.MultiFilter
All Implemented Interfaces:
TokenFilter, Serializable, Cloneable, Iterable<TokenFilter>, Collection<TokenFilter>, List<TokenFilter>, RandomAccess

public class MultiFilter extends ArrayList<TokenFilter> implements TokenFilter
A multi filter checks all contained filters with either requiring all of them or at least one of them to allow the token. It can also be configured to short-circuit, meaning that it stops checking the filters if the result can't change anymore. By default it's a conjunction that doesn't short-circuit checking all filters to allow the token and continuing even if an earlier filter has disallowed it. Since filters can have state, it can be desirerable to notify all of them of all tokens.
See Also:
  • Constructor Details

    • MultiFilter

      public MultiFilter(Collection<? extends TokenFilter> subfilters, boolean conjunction, boolean shortCircuit)
      Creates a new multi filter with the given list of subfilters and the behavior options.
      Parameters:
      subfilters - The subfilters to add initially
      conjunction - The conjunction flag state
      shortCircuit - The short circuit flag state
      See Also:
    • MultiFilter

      public MultiFilter(int initialCapacity, boolean conjunction, boolean shortCircuit)
      Creates a new multi filter with an initial size capacity and the behavior options.
      Parameters:
      initialCapacity - The initial list capacity
      conjunction - The conjunction flag state
      shortCircuit - The short circuit flag state
      See Also:
    • MultiFilter

      public MultiFilter(boolean conjunction, boolean shortCircuit)
      Creates a new multi filter the behavior options.
      Parameters:
      conjunction - The conjunction flag state
      shortCircuit - The short circuit flag state
      See Also:
    • MultiFilter

      public MultiFilter(Collection<? extends TokenFilter> subfilters)
      Creates a new default multi filter with the given list of subfilters.
      Parameters:
      subfilters - The subfilters to add initially
      See Also:
    • MultiFilter

      public MultiFilter(int initialCapacity)
      Creates a new default multi filter with an initial size capacity.
      Parameters:
      initialCapacity - The initial list capacity
      See Also:
    • MultiFilter

      public MultiFilter()
      Creates a new empty default multi filter.
      See Also:
  • Method Details

    • setConjunction

      public void setConjunction(boolean conjunction)
      Sets the conjunction behavior flag
      Parameters:
      conjunction - The new conjunction flag state
    • setShortCircuit

      public void setShortCircuit(boolean shortCircuit)
      Sets the conjunction short circuit flag
      Parameters:
      shortCircuit - The new short circuit flag state
    • resetState

      public void resetState()
      Description copied from interface: TokenFilter
      Resets the filter's state. Does nothing by default.
      Specified by:
      resetState in interface TokenFilter
    • isTokenAllowed

      public boolean isTokenAllowed(Token token)
      Description copied from interface: TokenFilter
      Checks if the token should be printed.
      Specified by:
      isTokenAllowed in interface TokenFilter
      Parameters:
      token - The token to check
      Returns:
      true if the given token should be printed