Example #1
0
Bool testlist::Parent::insertAfterFreeParent(const Parent & child, const Parent & prev)  {
    if(!prev.isExists() || !child.isExists())
        return false;
    Parent nxt = prev.getNextParentFreeParent();
    child.setNextParentFreeParent(nxt);
    prev.setNextParentFreeParent(child);
    setNumFreeParents(getNumFreeParents() - 1);
    child.setupFreeParentHandler();
    return true;
}
Example #2
0
Bool testlist::Parent::removeFreeParent(const Parent & child)  {
    if( !child.isExists() )
        return false;
    Parent prev;
    Parent current;
    for(current = getFirstFreeParent(); current.isValid() && current != child; current = current.getNextParentFreeParent())
        prev = current;
    if(!current.isValid())
    {
        return false; //! data corrupted
    }
    current.removeFreeParentHandler();
    if(prev.isValid())
        prev.setNextParentFreeParent(current.getNextParentFreeParent());
    else
        setFirstFreeParent(current.getNextParentFreeParent());
    current.setNextParentFreeParent(Parent());
    setNumFreeParents(getNumFreeParents() - 1);
    return true;
}
Example #3
0
testlist::Parent testlist::Parent::popFreeParent()  {
    Parent result = getFirstFreeParent();
    if(result.isValid())
    {
        result.removeFreeParentHandler();
        setFirstFreeParent(result.getNextParentFreeParent());
        result.setNextParentFreeParent(Parent());
        setNumFreeParents(getNumFreeParents() - 1);
    }
    return result;
}