| Return Type | Function name | Arguments |
|---|---|---|
| hzEcode | hdbObjRepos::InitMbrIndex | (const hdbMember*,bool,) |
Declared in file: hzDatabase.h
Defined in file : hdbObjRepos.cpp
Function Logic:
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 ;
}