Return TypeFunction nameArguments
hzEcodehdbObject::GetObject(hdbObject&,const hdbMember*,unsigned int,)

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

Function Logic:

0:START 1:!this 2:hzexit 3:!m_pClass 4:Return hzerr(E_NOINIT,Single object container not init to a data class) 5:!sub.m_pClass 6:Return hzerr(E_NOINIT,Subclass object container not init to a data class) 7:!pMbr 8:Return hzerr(E_ARGUMENT,No member supplied) 9:pMbr->Class()!=m_pClass 10:Return hzerr(E_CORRUPT,Member %s does not belong to class %s,pMbr->txtName(),m_pClass->txtName()) 11:pMbr->Basetype()!=BASETYPE_CLASS 12:Return hzerr(E_TYPE,Member %s is atomic,pMbr->txtName()) 13:pMbr->Datatype()!=sub.m_pClass 14:Return hzerr(E_TYPE,Member %s is not of type class %s,pMbr->txtName(),sub.m_pClass->txtName()) 15:hdbObject::Clear hdbMember::OsetStd pMCS hdbClass::CoreLen pLitmus hdbMember::Posn 16:pLitmus[pMbr->Posn()]&LITMUS_SET 17:pArr 18:nOset>=pArr->Count() 19:Return E_NOTFOUND 20:hzArray::operator[] pSub sub items 21:Return E_OK

Function body:

hzEcode hdbObject::GetObject (hdbObject& sub, const hdbMember* pMbr, unsigned int nOset)
{
   _hzfunc("hdbObject::GetObject") ;
   hzArray <_obj_data*>*   pArr ;
   _obj_data*  pSub ;
   uchar*      pMCS ;
   uchar*      pLitmus ;
   hzEcode     rc ;
   if (!this)          hzexit(E_CORRUPT, "No instance") ;
   if (!m_pClass)      return hzerr(E_NOINIT, "Single object container not init to a data class") ;
   if (!sub.m_pClass)  return hzerr(E_NOINIT, "Subclass object container not init to a data class") ;
   if (!pMbr)          return hzerr(E_ARGUMENT, "No member supplied") ;
   if (pMbr->Class() != m_pClass)
       return hzerr(E_CORRUPT, "Member %s does not belong to class %s", pMbr->txtName(), m_pClass->txtName()) ;
   if (pMbr->Basetype() != BASETYPE_CLASS)
       return hzerr(E_TYPE, "Member %s is atomic", pMbr->txtName()) ;
   if (pMbr->Datatype() != sub.m_pClass)
       return hzerr(E_TYPE, "Member %s is not of type class %s", pMbr->txtName(), sub.m_pClass->txtName()) ;
   sub.Clear() ;
   pMCS = m_pRoot->m_Core + pMbr->OsetStd() ;
   pLitmus = m_pRoot->m_Core + m_pClass->CoreLen() ;
   if (pLitmus[pMbr->Posn()] & LITMUS_SET)
   {
       pArr = (hzArray<_obj_data*>*) pMCS ;
       if (nOset >&eq; pArr->Count())
           return E_NOTFOUND ;
       pSub = pArr->operator[](nOset) ;
       sub.m_pRoot = pSub ;
       sub.m_pRoot->m_copy++ ;
   }
   return E_OK ;
}