Пример #1
0
Bool testhash::Parent::insertAfterTableListChild(const Child & child, const Child & prev) const  {
    if( !child.isExists() || !prev.isExists())
        return false;
    Child next = prev.getNextParentTableListChild();
    prev.setNextParentTableListChild(child);
    child.setPrevParentTableListChild(prev);
    child.setNextParentTableListChild(next);
    if(next.isValid())
        next.setPrevParentTableListChild(child);
    else
        setLastTableListChild(child);
    setNumTableListChilds(getNumTableListChilds() + 1);
    child.setupTableListParentHandler();
    return true;
}
Пример #2
0
Bool testhash::Parent::insertBeforeTableListChild(const Child & child, const Child & next) const  {
    if(!child.isExists() || !next.isExists())
        return false;
    Child prev = next.getPrevParentTableListChild();
    next.setPrevParentTableListChild(child);
    child.setNextParentTableListChild(next);
    child.setPrevParentTableListChild(prev);
    if(prev.isValid())
        prev.setNextParentTableListChild(child);
    else
        setFirstTableListChild(child);
    setNumTableListChilds(getNumTableListChilds() + 1);
    child.setupTableListParentHandler();
    return true;
}
Пример #3
0
testhash::Child testhash::Parent::popBackTableListChild() const  {
    Child result = getLastTableListChild();
    if(result.isValid())
    {
        result.removeTableListParentHandler();
        Child prev = result.getPrevParentTableListChild();
        result.setPrevParentTableListChild(Child());
        result.setNextParentTableListChild(Child());
        setLastTableListChild(prev);
        if(!prev.isValid())
            setFirstTableListChild(Child());
        else
            prev.setNextParentTableListChild(Child());
        setNumTableListChilds(getNumTableListChilds() - 1);
    }
    return result;
}
Пример #4
0
Bool testhash::Parent::pushFrontTableListChild(const Child & child) const  {
    if(!child.isExists())
        return false;
    Child first_child = getFirstTableListChild();
    child.setNextParentTableListChild(first_child);
    if(first_child.isValid())
        first_child.setPrevParentTableListChild(child);
    else
        setLastTableListChild(child);
    child.setPrevParentTableListChild(Child());
    setFirstTableListChild(child);
    setNumTableListChilds(getNumTableListChilds() + 1);
    child.setupTableListParentHandler();
    return true;
}
Пример #5
0
testhash::Child testhash::Parent::popFrontTableListChild() const  {
    Child result = getFirstTableListChild();
    if(result.isValid())
    {
        result.removeTableListParentHandler();
        Child next = result.getNextParentTableListChild();
        result.setNextParentTableListChild(Child());
        result.setPrevParentTableListChild(Child());
        setFirstTableListChild(next);
        if(!next.isValid())
            setLastTableListChild(Child());
        else
            next.setPrevParentTableListChild(Child());
        setNumTableListChilds(getNumTableListChilds() - 1);
    }
    return result;
}
Пример #6
0
Bool testhash::Parent::removeTableListChild(const Child & child) const  {
    if( !child.isExists())
        return false;
    child.removeTableListParentHandler();
    Child next = child.getNextParentTableListChild(), prev = child.getPrevParentTableListChild();
    if(next.isValid())
        next.setPrevParentTableListChild(prev);
    else if (getLastTableListChild() == child)
        setLastTableListChild(prev);
    else
        return false;
    if(prev.isValid())
        prev.setNextParentTableListChild(next);
    else if (getFirstTableListChild() == child)
        setFirstTableListChild(next);
    else
        return false;
    child.setNextParentTableListChild(Child());
    child.setPrevParentTableListChild(Child());
    setNumTableListChilds(getNumTableListChilds() - 1);
    return true;
}