org.jmlspecs.samples.list.node2
Class TwoWayNode
java.lang.Object
org.jmlspecs.samples.list.node2.OneWayNode
org.jmlspecs.samples.list.node2.TwoWayNode
- public class TwoWayNode
- extends OneWayNode
Class Specifications |
protected invariant (this.prevNode == null)||(this.prevNode.nextNode == this);
protected invariant (this.nextNode == null)||(this.nextDL.prevNode == this);
public invariant (this.nextNode == null||this.nextNode instanceof org.jmlspecs.samples.list.node2.TwoWayNode);
public invariant_redundantly this.prevEntries != null;
protected represents prevNode <- this.prevNode_;
protected represents nextDL <- (org.jmlspecs.samples.list.node2.TwoWayNode)this.nextNode_;
protected represents prevEntries <- (this.prevNode_ == null) ? new org.jmlspecs.models.JMLObjectSequence() : this.prevNode_.prevEntries.insertBack(this.prevNode_.entry_);
public represents nextDL <- (org.jmlspecs.samples.list.node2.TwoWayNode)this.nextNode; |
Specifications inherited from class OneWayNode |
protected invariant_redundantly this.nextLink_ != null;
protected invariant this.nextNode_ == this.nextLink_.node;
public invariant_redundantly this.entries != null&&this.allButFirst != null;
public invariant this.entries.equals(this.allButFirst.insertFront(this.theEntry));
protected represents theEntry <- this.entry_;
protected represents nextNode <- this.nextNode_;
protected represents entries <- this.allButFirst.insertFront(this.entry_);
protected represents allButFirst <- (this.nextNode_ == null) ? new org.jmlspecs.models.JMLObjectSequence() : this.nextNode_.entries; |
Specifications inherited from class Object |
represents objectState <- org.jmlspecs.lang.JMLDataGroup.IT;
public represents _getClass <- \typeof(this); |
prevEntries
public JMLObjectSequence prevEntries
- Specifications: non_null
is in groups: entries
datagroup contains: prevNode prevNode_.prevEntries prevNode_.entry_
nextDL
public TwoWayNode nextDL
- Specifications: nullable
is in groups: nextNode
prevNode
public TwoWayNode prevNode
- Specifications: nullable
is in groups: prevEntries
datagroup contains: prevNode_
prevNode_
protected TwoWayNode prevNode_
- Specifications: nullable
is in groups: prevNode
maps prevNode_.prevEntries \into prevEntries, prevNode_.entry_ \into prevEntries
TwoWayNode
public TwoWayNode(nullable Object ent)
- Specifications:
-
public normal_behavior
assignable entries;
ensures this.theEntry == ent&&this.entries.itemAt(0) == ent&&this.entries.int_size() == 1&&this.prevEntries.isEmpty()&&this.allButFirst.isEmpty();
TwoWayNode
protected TwoWayNode(nullable Object ent,
nullable TwoWayNode prvNode,
nullable TwoWayNode nxtNode)
- Specifications:
-
protected normal_behavior
requires (prvNode == null||prvNode.nextNode == null||prvNode.nextNode == nxtNode)&&(nxtNode == null||nxtNode.prevNode == null||nxtNode.prevNode == prvNode);
assignable entries;
ensures this.theEntry == ent&&this.entries.itemAt(0) == ent&&this.prevNode == prvNode&&this.nextNode == nxtNode;
insertAfter
public void insertAfter(nullable Object newEntry)
- Overrides:
insertAfter
in class OneWayNode
- Specifications:
- also
-
public normal_behavior
assignable allButFirst;
ensures \not_modified(prevEntries);
- Specifications inherited from overridden method insertAfter(Object newEntry) in class OneWayNode:
-
public normal_behavior
assignable allButFirst;
ensures this.allButFirst.equals(\old(this.allButFirst).insertFront(newEntry));
removeNextNode
public void removeNextNode()
- Overrides:
removeNextNode
in class OneWayNode
- Specifications:
- also
-
public normal_behavior
assignable allButFirst;
ensures \not_modified(prevEntries);
- Specifications inherited from overridden method in class OneWayNode:
-
public normal_behavior
requires !this.allButFirst.isEmpty();
assignable allButFirst;
ensures this.allButFirst.equals(\old(this.allButFirst).trailer());
- also
-
requires this.allButFirst.isEmpty();
assignable \nothing;
ensures this.allButFirst.isEmpty();
getPrevNode
public TwoWayNode getPrevNode()
- Specifications: pure nullable
-
public normal_behavior
assignable \nothing;
ensures \result == this.prevNode;
getPrevLink
public DualLink getPrevLink()
- Specifications: pure nullable
-
public normal_behavior
requires this.prevNode != null;
assignable \nothing;
ensures \result .node == this;
- also
-
requires this.prevNode == null;
assignable \nothing;
ensures \result == null;
insertBefore
public void insertBefore(nullable Object newEntry)
- Specifications:
-
public normal_behavior
assignable prevEntries;
ensures this.prevEntries.equals(\old(this.prevEntries).insertBack(newEntry))&&\not_modified(allButFirst);
removePrevNode
public void removePrevNode()
toString
public String toString()
- Overrides:
toString
in class OneWayNode
- Specifications: non_null (inherited)pure
- Specifications inherited from overridden method in class OneWayNode:
pure non_null- Specifications inherited from overridden method in class Object:
non_null -
public normal_behavior
assignable objectState;
ensures \result != null;
ensures \result == this.theString;
ensures (* \result is a string representation of this object *);
- also
-
public code normal_behavior
assignable \nothing;
ensures \result != null&&(* \result is the instance's class name, followed by an @, followed by the instance's hashcode in hex *);
- also
-
public code model_program { ... }
- implies_that
-
assignable objectState;
ensures \result != null;
stringOfPrevEntries
protected String stringOfPrevEntries(nullable TwoWayNode curr)
- Specifications: pure non_null
linkTo
protected void linkTo(nullable TwoWayNode nxtNode)
- Specifications:
-
protected normal_behavior
requires nxtNode != null;
assignable nextNode, nxtNode.prevNode;
ensures this.nextNode == nxtNode&&this.nextDL.prevNode == this;
- also
-
requires nxtNode == null;
assignable nextNode;
ensures this.nextNode == null;
JML is Copyright (C) 1998-2002 by Iowa State University and is distributed under the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This release depends on code from the MultiJava project and is based in part on the Kopi project Copyright (C) 1990-99 DMS Decision Management Systems Ges.m.b.H.