template class axl::sl::BoxList

#include <axl_sl_BoxList.h>

template <
    typename T,
    typename ValueArg = typename ArgType<T>::Type
    >
class BoxList: public axl::sl::OwningListBase
{
public:
    // typedefs

    typedef OwningListBase<BoxListEntry<T>, ImplicitPtrCast<BoxListEntry<T>, ListLink>, BoxIterator<T>, ConstBoxIterator<T>, typename mem::StdDelete<BoxListEntry<T>>> BaseType;
    typedef BaseType::Entry Entry;
    typedef BaseType::Iterator Iterator;

    // methods

    template <typename L>
    void
    copy(const L& list);

    T
    remove(Iterator it);

    T
    removeHead();

    T
    removeTail();

    Iterator
    insertHead(ValueArg value);

    Iterator
    insertTail(ValueArg value);

    Iterator
    insertBefore(
        ValueArg value,
        Iterator before
        );

    Iterator
    insertAfter(
        ValueArg value,
        Iterator after
        );

    Iterator
    insertHead();

    Iterator
    insertTail();

    Iterator
    insertBefore(Iterator before);

    Iterator
    insertAfter(Iterator after);

    Entry*
    removeEntry(Iterator it);

    Entry*
    removeHeadEntry();

    Entry*
    removeTailEntry();

    Iterator
    insertHeadEntry(Entry* entry);

    Iterator
    insertTailEntry(Entry* entry);

    Iterator
    insertBeforeEntry(
        Entry* entry,
        Iterator before
        );

    Iterator
    insertAfterEntry(
        Entry* entry,
        Iterator after
        );

    bool
    sort();

    template <typename Compare>
    bool
    sort(Compare compare);
};

Inherited Members

public:
    // typedefs

    typedef T Entry;
    typedef GetLink0 GetLink;
    typedef Iterator0 Iterator;
    typedef ConstIterator0 ConstIterator;
    typedef sl::ListData<T> ListData;
    typedef Delete0 Delete;

    // fields

    T* m_head;
    T* m_tail;
    size_t m_count;

    // methods

    bool
    isEmpty() const;

    const ListData*
    getListData() const;

    size_t
    getCount() const;

    Iterator
    getHead();

    ConstIterator
    getHead() const;

    Iterator
    getTail();

    ConstIterator
    getTail() const;

    T*
    remove(Iterator it);

    T*
    removeHead();

    T*
    removeTail();

    Iterator
    insertHead(T* p);

    Iterator
    insertTail(T* p);

    Iterator
    insertBefore(
        T* p,
        Iterator before
        );

    Iterator
    insertAfter(
        T* p,
        Iterator after
        );

    void
    insertListHead(ListBase* src);

    void
    insertListTail(ListBase* src);

    void
    moveBefore(
        Iterator it,
        Iterator before
        );

    void
    moveAfter(
        Iterator it,
        Iterator after
        );

    void
    moveToHead(Iterator it);

    void
    moveToTail(Iterator it);

    bool
    sort();

    template <typename Compare>
    bool
    sort(Compare compare);

    void
    clear();

    bool
    clearButHead();

    bool
    clearButTail();

    void
    erase(Iterator it);

    void
    eraseHead();

    void
    eraseTail();