| Return Type | Function name | Arguments |
|---|---|---|
| hzEcode | hdbClass::InitMember | (const hzString&,const hdbDatatype*,hdbPopCtl,) |
Declared in file: hzDatabase.h
Defined in file : hdbClass.cpp
Function Logic:
Function body:
hzEcode hdbClass::InitMember (const hzString& mbrName, const hdbDatatype* pType, hdbPopCtl popCtl)
{
_hzfunc("hdbClass::InitMember(1)") ;
const hdbClass* pSub ;
hdbMember* pMbr ;
hzString S ;
hzEcode rc ;
if (m_eClassInit != HDB_CLASS_INIT_PROG)
return hzerr(E_INITFAIL, "Init state %d Called out of sequence (must be after InitStart() and before InitDone()", m_eClassInit) ;
if (!m_pADP)
return hzerr(E_NOINIT, "No Host ADP Found") ;
if (!mbrName)
return hzerr(E_ARGUMENT, "No member name supplied") ;
if (!pType)
return hzerr(E_ARGUMENT, "No member data type supplies for %s", *mbrName) ;
if (GetMember(mbrName))
return hzerr(E_INITDUP, "Member (%s) already defined", *mbrName) ;
pMbr = new hdbMember() ;
if (!pMbr)
return hzerr(E_MEMORY, "Member allocation") ;
rc = pMbr->Init(this, pType, mbrName, m_arrMembers.Count(), popCtl) ;
if (rc != E_OK)
return hzerr(rc, "Please examine arguments for column [%s]", *mbrName) ;
m_mapMembers.Insert(mbrName, pMbr) ;
m_pADP->RegisterMember(pMbr) ;
m_mapMembers.Insert(mbrName, pMbr) ;
m_arrMembers.Add(pMbr) ;
threadLog("Added member %s (of %d) to class %s\n", *mbrName, MbrCount(), txtType()) ;
if (pMbr->IsClass())
{
pSub = (const hdbClass*) pMbr->Datatype() ;
m_pADP->NoteSub(strType(), pSub) ;
}
if (pMbr->Basetype() == BASETYPE_BINARY || pMbr->Basetype() == BASETYPE_TXTDOC)
m_nBinaries++ ;
if (pMbr->Multiple())
m_nArrays++ ;
m_eClassInit = HDB_CLASS_INIT_PROG ;
return E_OK ;
}