| Return Type | Function name | Arguments |
|---|---|---|
| hzEcode | hdbClass::InitDone | (void) |
Declared in file: hzDatabase.h
Defined in file : hdbClass.cpp
Function Logic:
Function body:
hzEcode hdbClass::InitDone (void)
{
_hzfunc("hdbClass::InitDone") ;
const hdbMember* pMbr ;
uint32_t mbrNo ;
uint32_t nSofar ;
if (m_eClassInit != HDB_CLASS_INIT_PROG)
return hzerr(E_SEQUENCE, "Called out of sequence (must be after InitStart() and at least one call to InitMember()") ;
nSofar = 0;
for (mbrNo = 0; mbrNo < m_arrMembers.Count() ; mbrNo++)
{
pMbr = m_arrMembers[mbrNo] ;
if (pMbr->Basetype() == BASETYPE_ENUM)
continue ;
if (pMbr->SizeCore() < 16)
continue ;
pMbr->_setOset(nSofar) ;
nSofar += 16;
}
for (mbrNo = 0; mbrNo < m_arrMembers.Count() ; mbrNo++)
{
pMbr = m_arrMembers[mbrNo] ;
if (pMbr->Basetype() == BASETYPE_ENUM)
continue ;
if (pMbr->Basetype() == BASETYPE_BINARY || pMbr->Basetype() == BASETYPE_TXTDOC)
{
pMbr->_setAux(nSofar) ;
nSofar += 8;
continue ;
}
if (pMbr->SizeCore() != 8)
continue ;
pMbr->_setOset(nSofar) ;
nSofar += 8;
}
for (mbrNo = 0; mbrNo < m_arrMembers.Count() ; mbrNo++)
{
pMbr = m_arrMembers[mbrNo] ;
if (pMbr->Basetype() == BASETYPE_BINARY || pMbr->Basetype() == BASETYPE_TXTDOC)
{
pMbr->_setOset(nSofar) ;
nSofar += 4;
continue ;
}
if (pMbr->Basetype() == BASETYPE_ENUM)
continue ;
if (pMbr->SizeCore() != 4)
continue ;
pMbr->_setOset(nSofar) ;
nSofar += 4;
}
for (mbrNo = 0; mbrNo < m_arrMembers.Count() ; mbrNo++)
{
pMbr = m_arrMembers[mbrNo] ;
if (pMbr->Basetype() == BASETYPE_ENUM)
continue ;
if (pMbr->SizeCore() != 2)
continue ;
pMbr->_setOset(nSofar) ;
nSofar += 2;
}
for (mbrNo = 0; mbrNo < m_arrMembers.Count() ; mbrNo++)
{
pMbr = m_arrMembers[mbrNo] ;
if (pMbr->Basetype() != BASETYPE_ENUM)
continue ;
pMbr->_setOset(nSofar) ;
nSofar += pMbr->SizeCore() ;
}
for (mbrNo = 0; mbrNo < m_arrMembers.Count() ; mbrNo++)
{
pMbr = m_arrMembers[mbrNo] ;
if (pMbr->Basetype() == BASETYPE_BOOL)
continue ;
if (pMbr->Basetype() == BASETYPE_TBOOL)
{
m_nLitmusBits++ ;
continue ;
}
}
m_nLitmusBits += m_arrMembers.Count() ;
m_nLitmusSize = m_nLitmusBits/8;
if (m_nLitmusBits%8)
m_nLitmusSize++ ;
m_nCoreLen = nSofar ;
for (mbrNo = 0; mbrNo < m_arrMembers.Count() ; mbrNo++)
{
pMbr = m_arrMembers[mbrNo] ;
threadLog("Mbr %u %s: Posn %u Datum %u Core %u oset %d aux %d\n", mbrNo, pMbr->txtName(), pMbr->Posn(), pMbr->SizeDatum(), pMbr->SizeCore(), pMbr->OsetStd(), pMbr->OsetAux()) ;
}
threadLog("Class %s complete, core len %u\n", txtName(), m_nCoreLen) ;
m_eClassInit = HDB_CLASS_INIT_DONE ;
return E_OK ;
}