示例#1
0
void params_ref::copy(params_ref const & src) {
    if (m_params == 0)
        operator=(src);
    else {
        init();
        copy_core(src.m_params);
    }
}
示例#2
0
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);
}