/** Constructor from a raw pointer */ explicit memory_block_ptr(memory_block_data *memblock, bool add_ref = true) : m_memblock(memblock) { if (memblock != 0 && add_ref) { memory_block_incref(memblock); } }
/** Copy constructor */ memory_block_ptr(const memory_block_ptr& rhs) : m_memblock(rhs.m_memblock) { if (m_memblock != 0) { memory_block_incref(m_memblock); } }
/** Assignment from raw memory_block pointer */ memory_block_ptr &operator=(memory_block_data *rhs) { if (m_memblock != 0) { memory_block_decref(m_memblock); } m_memblock = rhs; if (rhs != 0) { memory_block_incref(rhs); } return *this; }
/** Assignment */ memory_block_ptr &operator=(const memory_block_ptr &rhs) { if (m_memblock != 0) { memory_block_decref(m_memblock); } if (rhs.m_memblock != 0) { m_memblock = rhs.m_memblock; memory_block_incref(m_memblock); } else { m_memblock = 0; } return *this; }
void init(const nd::arrfunc &rhs) { m_memblock = nd::array(rhs).get_memblock().get(); memory_block_incref(m_memblock); }