package org.basex.query.up.primitives; import org.basex.data.Data; import org.basex.query.item.DBNode; import org.basex.query.up.NamePool; import org.basex.util.InputInfo; import org.basex.util.Util; /** * Delete primitive. * * @author BaseX Team 2005-12, BSD License * @author Lukas Kircher */ public final class DeleteNode extends StructuralUpdate { /** * Constructor. * @param p pre * @param d data * @param i input info */ public DeleteNode(final int p, final Data d, final InputInfo i) { super(PrimitiveType.DELETENODE, p, d, i); } @Override public void merge(final UpdatePrimitive p) { /* Multiple delete primitives can operate on the same * target node. */ } @Override public void apply() { shifts = -data.size(pre, data.kind(pre)); data.delete(pre); } @Override public boolean adjacentTexts(final int c) { // take pre value shifts into account final int p = pre + c; return mergeTexts(data, p - 1, p); } @Override public void update(final NamePool pool) { pool.remove(new DBNode(data, pre)); } @Override public String toString() { return Util.name(this) + '[' + targetNode() + ']'; } @Override public int size() { return 1; } }