Return Type | Function name | Arguments |
---|---|---|
void | hzChain::Clear | (void) |
Declared in file: hzChain.h
Defined in file : hzChain.cpp
Function Logic:
Function body:
void hzChain::Clear (void) { _hzfunc("hzChain::Clear") ; _chain* cx ; _zblk* zp ; _zblk* np ; if (!mx) return ; cx = mx ; mx = 0; if (cx->m_Test != cx) hzexit(E_CORRUPT, "Chain is not self addressing") ; if (cx->m_copy <&eq; 0) hzexit(E_CORRUPT, "Copy count must be at least 1 in live chain") ; if (_hzGlobal_MT) { __sync_add_and_fetch(&(cx->m_copy), -1); if (cx->m_copy) return ; } else { cx->m_copy-- ; if (cx->m_copy) return ; } if (cx->m_Begin) { s_chain_mutex.LockWrite() ; if (!cx->m_End) hzexit(E_CORRUPT, "No end block") ; for (zp = (_zblk*) cx->m_Begin ; zp ; zp = np) { np = zp->Next() ; delete zp ; _hzGlobal_Memstats.m_numChainBlks-- ; } s_chain_mutex.Unlock() ; } delete cx ; }