MCPcopy Create free account
hub / github.com/BaseXdb/basex / delete

Method delete

basex-core/src/main/java/org/basex/data/NSNode.java:176–200  ·  view source on GitHub ↗

Deletes nodes in the specified range (p .. p + s - 1) and updates the following PRE values. @param p PRE value @param s number of nodes to be deleted, or actually the size of the pre value which is to be deleted

(final int p, final int s)

Source from the content-addressed store, hash-verified

174 * value which is to be deleted
175 */
176 void delete(final int p, final int s) {
177 final int sz = size;
178 // find the node to deleted
179 int i = find(p);
180 // if the node is not directly contained as a child, either start at array index 0 or
181 // proceed with the next node in the child array to search for descendants of pre
182 if(i == -1 || nodes[i].pre != p) ++i;
183 // first PRE value which is not deleted
184 final int upper = p + s;
185 // number of nodes to be deleted
186 int num = 0;
187 // determine number of nodes to be deleted
188 for(int n = i; n < sz && nodes[n].pre < upper; ++n, ++num);
189 // new size of child array
190 size -= num;
191
192 if(size == 0) {
193 // if all nodes are deleted, just create an empty array
194 nodes = new NSNode[0];
195 } else if(num > 0) {
196 // otherwise remove nodes from the child array
197 Array.remove(nodes, i, num, sz);
198 for(int n = size; n < sz; n++) nodes[n] = null;
199 }
200 }
201
202 /**
203 * Adds the specified node into the child array, which is sorted by PRE values.

Callers 1

deleteMethod · 0.95

Calls 3

findMethod · 0.95
removeMethod · 0.95
copyMethod · 0.95

Tested by

no test coverage detected