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