template class axl::sl::ArrayRef

#include <axl_sl_Array.h>

template <
    typename T,
    typename Details0 = ArrayDetails<T>
    >
class ArrayRef
{
public:
    // typedefs

    typedef Details0 Details;
    typedef Details::Hdr Hdr;
    typedef Details::ValueArg ValueArg;

    // construction

    ArrayRef();
    ArrayRef(const ArrayRef& src);

    ArrayRef(
        const T* p,
        size_t count
        );

    ArrayRef(
        const T* p,
        const void* end
        );

    ArrayRef(
        Hdr* hdr,
        const T* p,
        size_t count
        );

    ArrayRef(
        Hdr* hdr,
        const T* p,
        const void* end
        );
    ~ArrayRef();

    // methods

    operator const T *() const;

    ArrayRef&
    operator=(const ArrayRef& src);

    const T&
    operator[](intptr_t i) const;

    const T*
    cp() const;

    size_t
    getCount() const;

    Hdr*
    getHdr() const;

    bool
    isEmpty() const;

    const T*
    getBegin() const;

    const T*
    getEnd() const;

    const T&
    getFront() const;

    const T&
    getBack() const;

    size_t
    find(ValueArg e) const;

    size_t
    findReverse(ValueArg e) const;

    void
    release();
};