Return Type | Function name | Arguments |
---|---|---|
hzEcode | hdbIndexUkey::Select | (unsigned int&,const hzAtom&,) |
Declared in file: hzDatabase.h
Defined in file : hdbIndex.cpp
Function Logic:
Function body:
hzEcode hdbIndexUkey::Select (unsigned int& Result, const hzAtom& key) { _hzfunc("hdbIndexUkey::Select") ; hzString str ; hzDomain dom ; hzEmaddr ema ; hzUrl url ; hzEcode rc = E_OK ; Result = 0; if (!m_bInit) return E_NOINIT ; if (key.IsNull()) return hzerr(E_NODATA, "No key supplied") ; if (key.Type() != m_eBasetype) return hzerr(E_TYPE, "Index type %s - supplied value type %s", Basetype2Txt(m_eBasetype), Basetype2Txt(key.Type())) ; threadLog("Selecting [%s, %s]\n", key.Show(), *key.Str()) ; switch (m_eBasetype) { case BASETYPE_DOMAIN: dom = _hzGlobal_setDomains[key.Domain()] ; if (dom) { if (m_keys.pDom->Exists(dom)) Result = m_keys.pDom->operator[](dom) ; } break ; case BASETYPE_EMADDR: ema = _hzGlobal_setEmaddrs[key.Emaddr()] ; if (ema) { if (m_keys.pEma->Exists(ema)) Result = m_keys.pEma->operator[](ema) ; } break ; case BASETYPE_URL: url = key.Url() ; if (url) { if (m_keys.pUrl->Exists(url)) Result = m_keys.pUrl->operator[](url) ; } break ; case BASETYPE_STRING: str = _hzGlobal_setStrings[key.Str()] ; threadLog("Selecting [%s]\n", *str) ; if (!str) str = key.Str() ; if (str) { if (m_keys.pStr->Exists(str)) { Result = m_keys.pStr->operator[](str) ; threadLog("Selected %u\n", Result) ; } else threadLog("Select failed\n") ; } break ; case BASETYPE_DOUBLE: case BASETYPE_XDATE: case BASETYPE_INT64: case BASETYPE_UINT64: if (m_keys.pUI64->Exists(key.Unt64())) Result = m_keys.pUI64->operator[](key.Unt64()) ; break ; case BASETYPE_IPADDR: case BASETYPE_TIME: case BASETYPE_SDATE: case BASETYPE_INT32: case BASETYPE_UINT32: if (m_keys.pUI32->Exists(key.Unt32())) Result = m_keys.pUI32->operator[](key.Unt32()) ; break ; } ; return rc ; }