By default subclass data objects are embedded within host class data objects. This function directs the repository to hold subclass data objects in another repository. This is done on a per-member basis and only applies to member with of a CLASS data type.
| Return Type | Function name | Arguments |
|---|---|---|
| hzEcode | hdbObjRepos::InitMbrRepos | (hzString&,hzString&,) |
Declared in file: hzDatabase.h
Defined in file : hdbObjRepos.cpp
Function Logic:
Function body:
hzEcode hdbObjRepos::InitMbrRepos (hzString& mbrName)hzString& reposName,
{
// By default subclass data objects are embedded within host class data objects. This function directs the repository to hold subclass data objects in another repository. This
// is done on a per-member basis and only applies to member with of a CLASS data type.
//
// Arguments: 1) mbrName The member name. The named member must exist and be of a CLASS data type.
// 2) pRepos Pointer to the target repository
//
// Returns: E_NOTFOUND If the named member does not exist.
// E_TYPE If the named member is not of a BINARY data type
// E_OK If the operation was successful.
_hzfunc("hdbObjRepos::InitMbrRepos") ;
const hdbObjRepos* pRepos ; // External repository
const hdbMember* pMbr ; // Named class member
_hdb_ck_initstate(m_Name, m_eReposInit, HDB_REPOS_INIT_PROG) ;
pMbr = m_pClass->GetMember(mbrName) ;
if (!pMbr)
return hzerr(E_NOTFOUND, "No such member as %s in class %s\n", *mbrName, m_pClass->txtType()) ;
if (pMbr->Basetype() != BASETYPE_BINARY && pMbr->Basetype() != BASETYPE_TEXT && pMbr->Basetype() != BASETYPE_TXTDOC)
return hzerr(E_TYPE, "Member %s has non binary base type", *mbrName) ;
if (!reposName)
return hzerr(E_ARGUMENT, "No Binary Repository named") ;
// A pre-existing hdbObjRepos has been named so the member will use this.
pRepos = m_pADP->GetObjRepos(reposName) ;
if (!pRepos)
return hzerr(E_NOTFOUND, "Repository %s does not exist", *reposName) ;
m_mapRepos.Insert(pMbr->Posn(), pRepos) ;
return E_OK ;
}