public class EarliestFirstSystemMessageList
extends scala.AnyVal
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.
This list type also encodes that the messages contained are in reverse order, i.e. the head of the list is the latest appended element.
Constructor and Description |
---|
EarliestFirstSystemMessageList(SystemMessage head) |
Modifier and Type | Method and Description |
---|---|
static java.lang.Class<? extends java.lang.Object> |
getClass() |
SystemMessage |
head() |
boolean |
isEmpty()
Indicates if the list is empty or not.
|
boolean |
nonEmpty()
Indicates if the list has at least one element or not.
|
LatestFirstSystemMessageList |
reverse()
Reverses the list.
|
int |
size()
Indicates if the list is empty or not.
|
EarliestFirstSystemMessageList |
tail()
Gives back the list containing all the elements except the first.
|
public EarliestFirstSystemMessageList(SystemMessage head)
public static java.lang.Class<? extends java.lang.Object> getClass()
public SystemMessage head()
public final boolean isEmpty()
public final boolean nonEmpty()
public final int size()
public final EarliestFirstSystemMessageList tail()
*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.
public final LatestFirstSystemMessageList reverse()
The type of the returned list is of the opposite order: LatestFirstSystemMessageList