Class LatestFirstSystemMessageList


  • public class LatestFirstSystemMessageList
    extends scala.AnyVal
    INTERNAL API

    Value class supporting list operations on system messages. The next field of SystemMessage is hidden, and can only accessed through the value classes LatestFirstSystemMessageList and EarliestFirstSystemMessageList, abstracting over the fact that system messages are the list nodes themselves. If used properly, this stays a compile time construct without any allocation overhead.

    This list is mutable.

    The type of the list also encodes that the messages contained are in reverse order, i.e. the head of the list is the latest appended element.

    • Constructor Detail

      • LatestFirstSystemMessageList

        public LatestFirstSystemMessageList​(SystemMessage head)
    • Method Detail

      • getClass

        public static java.lang.Class<? extends java.lang.Object> getClass()
      • isEmpty

        public final boolean isEmpty()
        Indicates if the list is empty or not. This operation has constant cost.
        Returns:
        (undocumented)
      • nonEmpty

        public final boolean nonEmpty()
        Indicates if the list has at least one element or not. This operation has constant cost.
        Returns:
        (undocumented)
      • size

        public final int size()
        Indicates if the list is empty or not. This operation has constant cost.
        Returns:
        (undocumented)
      • tail

        public final LatestFirstSystemMessageList tail()
        Gives back the list containing all the elements except the first. This operation has constant cost.

        *Warning:* as the underlying list nodes (the SystemMessage instances) are mutable, care should be taken when passing the tail to other methods. SystemMessage.unlink() should be called on the head if one wants to detach the tail permanently.

        Returns:
        (undocumented)
      • reverse

        public final EarliestFirstSystemMessageList reverse()
        Reverses the list. This operation mutates the underlying list. The cost of the call to reverse is linear in the number of elements.

        The type of the returned list is of the opposite order: EarliestFirstSystemMessageList

        Returns:
        (undocumented)
      • $colon$colon

        public final LatestFirstSystemMessageList $colon$colon​(SystemMessage msg)
        Attaches a message to the current head of the list. This operation has constant cost.
        Parameters:
        msg - (undocumented)
        Returns:
        (undocumented)
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object x$1)
        Overrides:
        equals in class java.lang.Object