void params_ref::copy(params_ref const & src) { if (m_params == 0) operator=(src); else { init(); copy_core(src.m_params); } }
void params_ref::init() { if (!m_params) { m_params = alloc(params); m_params->inc_ref(); } else if (m_params->m_ref_count > 1) { params * old = m_params; m_params = alloc(params); m_params->inc_ref(); copy_core(old); old->dec_ref(); } SASSERT(m_params->m_ref_count == 1); }