6 template <
typename T>
class ref {
8 ref() : m_data(
nullptr), m_len(0) {}
9 ref(T *data,
size_t len)
15 inline size_t &len() {
return m_len; }
16 inline const size_t &len()
const {
return m_len; }
18 inline size_t &size() {
return m_len; }
19 inline const size_t &size()
const {
return m_len; }
21 inline T *data() {
return m_data; }
22 inline const T *data()
const {
return m_data; }
24 static void delete_wild_pointer(T *p) { free(p); }
29 std::shared_ptr<T> m_holder;