template class axl::rc::BufRef

#include <axl_rc_Buf.h>

template <
    typename T,
    typename SizeOf = sl::SizeOf<T>
    >
class BufRef
{
public:
    // construction

    BufRef();
    BufRef(const BufRef& src);
    BufRef(const T* p);

    BufRef(
        const T* p,
        size_t size
        );

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

    BufRef(
        BufHdr* hdr,
        const T* p
        );

    BufRef(
        BufHdr* hdr,
        const T* p,
        size_t size
        );

    BufRef(
        BufHdr* hdr,
        const T* p,
        const void* end
        );
    ~BufRef();

    // methods

    operator const T *() const;

    const T*
    operator->() const;

    BufRef&
    operator=(const BufRef& src);

    const T*
    cp() const;

    size_t
    getSize() const;

    BufHdr*
    getHdr() const;

    const T*
    getEnd() const;

    bool
    isEmpty() const;

    void
    release();
};