@Override public Element replaceWith(Element elt) { if (_parent != null) { elt = _parent.checkChild(elt); } elt.setPrev(_prev); elt.setNext(_next); elt.setParent(_parent); if (_prev != null) { _prev.setNext(elt); } if (_next != null) { _next.setPrev(elt); } if (_parent != null && _parent.child() == this) { _parent.setChild(elt); } return elt; }
private void putElement(Element element) { if(_first == null) { _first = element; } else { if(_current == null) { if (_parent == null) { _first = _first.replaceWith(element); element = _first; } else { element = _parent.addChild(element); } } else { if(_parent!=null) { element = _parent.checkChild(element); } _current.setNext(element); } } _current = element; }
@Override public DataType next() { Element next = _current == null ? (_parent == null ? _first : _parent.child()) : _current.next(); if(next != null) { _current = next; } return next == null ? null : next.getDataType(); }
private void putElement(Element element) { if(_first == null) { _first = element; } else { if(_current == null) { element = _parent.addChild(element); } else { if(_parent!=null) { element = _parent.checkChild(element); } _current.setNext(element); } } _current = element; }
switch (element.getDataType()) return null; return new IntegerElement(element.parent(),element.prev(),i); switch (element.getDataType()) return null; return new LongElement(element.parent(),element.prev(),l);
public int count() { int count = 0; Element elt = _first; while(elt != null) { count++; elt = elt.next(); } return count; }
@Override public boolean isDescribed() { return _current != null && _current.getDataType() == DataType.DESCRIBED; }
@Override public DataType prev() { Element prev = _current == null ? null : _current.prev(); _current = prev; return prev == null ? null : prev.getDataType(); }
@Override public long size() { return _first == null ? 0 : _first.size(); }
public void reverse() { if (isEmpty() || top.getNext() == null) { return; } Element prev = top; Element cur = top.getNext(); Element end = null; // set the top of the stack to have it's next point to nothing prev.setNext(null); // while we have something to process, loop while (cur != null) { // keep the next from the current Element tmp = cur.getNext(); // update the next to point to the previous cur.setNext(prev); // set the previous to where we are now prev = cur; // need to find the end; update to where we are now end = cur; // update our current to the temp; could be null cur = tmp; } top = end; }
@Override public boolean enter() { if(_current != null && _current.canEnter()) { _parent = _current; _current = null; return true; } return false; }
@Override public Object getObject() { return _current == null ? null : _current.getValue(); }
protected boolean isElementOfArray() { return _parent instanceof ArrayElement && !(((ArrayElement)parent()).isDescribed() && this == _parent.child()); }