Return TypeFunction nameArguments
hzEcodehdbObjRepos::InitMbrIndex(const hdbMember*,bool,)

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

Function Logic:

0:START 1:_hdb_ck_initstate 2:!m_pClass 3:Return hzerr(E_NOINIT,No cache class set up) 4:!pMbr 5:Return hzerr(E_ARGUMENT,No member supplied) 6:pMbr->Class()!=m_pClass 7:Return hzerr(E_NOTFOUND,No such member as %s in class %s\n,pMbr->txtName(),m_pClass->txtType()) 8:pMbr->Posn()<0||pMbr->Posn()>=m_pClass->MbrCount() 9:Return hzerr(E_NOTFOUND,Member %s has no defined position within the class\n,pMbr->txtName()) 10:pIdx hdbMember::Basetype 11:pMbr->Basetype() 12:BASETYPE_EMADDR 13:BASETYPE_URL 14:pIdx

Function body:

hzEcode hdbObjRepos::InitMbrIndex (const hdbMember* pMbr, bool bUnique)
{
   _hzfunc("hdbObjRepos::InitMbrIndex") ;
   hdbIndex*           pIdx ;
   hzString            iname ;
   hzEcode             rc = E_OK ;
   _hdb_ck_initstate(m_Name, m_eReposInit, HDB_REPOS_INIT_PROG) ;
   if (!m_pClass)  return hzerr(E_NOINIT, "No cache class set up") ;
   if (!pMbr)      return hzerr(E_ARGUMENT, "No member supplied") ;
   if (pMbr->Class() != m_pClass)
       return hzerr(E_NOTFOUND, "No such member as %s in class %s\n", pMbr->txtName(), m_pClass->txtType()) ;
   if (pMbr->Posn() < 0|| pMbr->Posn() >&eq; m_pClass->MbrCount())
       return hzerr(E_NOTFOUND, "Member %s has no defined position within the class\n", pMbr->txtName()) ;
   pIdx = 0;
   switch  (pMbr->Basetype())
   {
   case BASETYPE_EMADDR:
   case BASETYPE_URL:      pIdx = new hdbIndexUkey() ;
                           break ;
   case BASETYPE_STRING:
   case BASETYPE_IPADDR:
   case BASETYPE_TIME:
   case BASETYPE_SDATE:
   case BASETYPE_XDATE:
   case BASETYPE_DOUBLE:
   case BASETYPE_INT64:
   case BASETYPE_INT32:
   case BASETYPE_UINT64:
   case BASETYPE_UINT32:
   case BASETYPE_UINT16:
   case BASETYPE_UBYTE:    pIdx = new hdbIndexUkey() ;
                           break ;
   case BASETYPE_INT16:
   case BASETYPE_BYTE:
   case BASETYPE_ENUM:     pIdx = new hdbIndexEnum() ;
                           break ;
   case BASETYPE_TEXT:
   case BASETYPE_TXTDOC:   pIdx = new hdbIndexText() ;
                           break ;
   case BASETYPE_CLASS:
   case BASETYPE_BINARY:   hzerr(E_TYPE, "Invalid member type. No Index allowed") ;
                           rc = E_TYPE ;
                           break ;
   default:
       break ;
   }
   m_mapIndex.Insert(pMbr->DeltaId(), pIdx) ;
   m_eReposInit = HDB_REPOS_INIT_PROG ;
   return rc ;
}