Return TypeFunction nameArguments
hzEcodehdbClass::InitDone(void)

Declared in file: hzDatabase.h
Defined in file : hdbClass.cpp

Function Logic:

0:START 1:m_eClassInit!=HDB_CLASS_INIT_PROG 2:Return hzerr(E_SEQUENCE,Called out of sequence (must be after InitStart() and at least one call to InitMember()) 3:nSofar mbrNo 4:mbrNo 5:pMbr 6:pMbr->Basetype()==BASETYPE_ENUM 7:pMbr->SizeCore()<16 8:hdbMember::_setOset nSofar mbrNo 9:mbrNo 10:pMbr 11:pMbr->Basetype()==BASETYPE_ENUM 12:pMbr->Basetype()==BASETYPE_BINARY||pMbr->Basetype()==BASETYPE_TXTDOC 13:hdbMember::_setAux nSofar 14:pMbr->SizeCore()!=8 15:hdbMember::_setOset nSofar mbrNo 16:mbrNo 17:pMbr 18:pMbr->Basetype()==BASETYPE_BINARY||pMbr->Basetype()==BASETYPE_TXTDOC 19:hdbMember::_setOset nSofar 20:pMbr->Basetype()==BASETYPE_ENUM 21:pMbr->SizeCore()!=4 22:hdbMember::_setOset nSofar mbrNo 23:mbrNo 24:pMbr 25:pMbr->Basetype()==BASETYPE_ENUM 26:pMbr->SizeCore()!=2 27:hdbMember::_setOset nSofar mbrNo 28:mbrNo 29:pMbr 30:pMbr->Basetype()!=BASETYPE_ENUM 31:hdbMember::_setOset hdbMember::SizeCore nSofar mbrNo 32:mbrNo 33:pMbr 34:pMbr->Basetype()==BASETYPE_BOOL 35:pMbr->Basetype()==BASETYPE_TBOOL 36:items 37:hzArray::Count m_nLitmusBits m_nLitmusSize 38:m_nLitmusBits%8 39:items 40:m_nCoreLen mbrNo 41:mbrNo 42:pMbr hdbMember::txtName hdbMember::Posn hdbMember::SizeDatum hdbMember::SizeCore hdbMember::OsetStd hdbMember::OsetAux 43:hdbDatatype::txtName m_eClassInit 44:Return E_OK

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 ;
}