Extensible Firmware Interface Specification
H-14 12/01/02 Version 1.10
Arguments: (VOID)
Returns: (VOID)
--*/
{
NODE q, r, s, t, u;
if (mParent[mPos] == NIL) {
return;
}
r = mPrev[mPos];
s = mNext[mPos];
mNext[r] = s;
mPrev[s] = r;
r = mParent[mPos];
mParent[mPos] = NIL;
if (r >= WNDSIZ || --mChildCount[r] > 1) {
return;
}
t = (NODE)(mPosition[r] & ~PERC_FLAG);
if (t >= mPos) {
t -= WNDSIZ;
}
s = t;
q = mParent[r];
while ((u = mPosition[q]) & PERC_FLAG) {
u &= ~PERC_FLAG;
if (u >= mPos) {
u -= WNDSIZ;
}
if (u > s) {
s = u;
}
mPosition[q] = (INT16)(s | WNDSIZ);
q = mParent[q];
}
if (q < WNDSIZ) {
if (u >= mPos) {
u -= WNDSIZ;
}
if (u > s) {
s = u;
}
mPosition[q] = (INT16)(s | WNDSIZ | PERC_FLAG);
}
s = Child(r, mText[t + mLevel[r]]);
t = mPrev[s];
u = mNext[s];
mNext[t] = u;
mPrev[u] = t;
t = mPrev[r];
mNext[t] = s;
mPrev[s] = t;
t = mNext[r];
mPrev[t] = s;
mNext[s] = t;