本文整理汇总了C++中CComObject::AddValue方法的典型用法代码示例。如果您正苦于以下问题:C++ CComObject::AddValue方法的具体用法?C++ CComObject::AddValue怎么用?C++ CComObject::AddValue使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CComObject
的用法示例。
在下文中一共展示了CComObject::AddValue方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: nextResults
STDMETHODIMP CLDAPQuery::nextResults(
/* [in] */ LONG results_id,
/* [in] */ ULONG num_results,
/* [retval][out] */ SAFEARRAY** result)
{
CComSafeArray<VARIANT> dnList(0UL);
ÑConnectInfo *cinfo = NULL;
ÑResultsInfo *presinfo = NULL;
m_errorCode = 0L;
for(int i = 0; i < m_connections.GetSize(); i++)
{
ÑConnectInfo * const currentConnectInfo = m_connections.GetValueAt(i);
if(currentConnectInfo)
{
ÑResultsInfo * const resInfo = currentConnectInfo->findResult(results_id);
if(resInfo)
{
cinfo = currentConnectInfo;
presinfo = resInfo;
break;
}
}
}
if(cinfo && presinfo && presinfo->pages())
{
const PLDAP ld = cinfo->ld();
const PLDAPSearch pPages = presinfo->pages();
PLDAPMessage pMsg = NULL;
const BOOL allResults = (num_results == 0UL);
while((allResults || num_results > 0UL) &&
(m_errorCode = ldap_get_next_page_s(ld, pPages, NULL, (num_results < 1000UL && num_results > 0UL ? num_results : 1000UL), NULL, &pMsg)) == LDAP_SUCCESS) //not more the 1k results per query
{
if(pMsg)
{
for(PLDAPMessage entry = ldap_first_entry(ld, pMsg); entry != NULL && (allResults || num_results-- > 0UL); entry = ldap_next_entry(ld, entry))
{
CComObject<CAssocObject> *obj;
CComObject<CAssocObject>::CreateInstance(&obj);
const PTCHAR dn = ldap_get_dn(ld, entry);
obj->AddValue(_T("dn"), CComVariant(dn));
PTCHAR attr;
BerElement* berElem = NULL;
for(attr = ldap_first_attribute(ld, entry, &berElem); attr != NULL; attr = ldap_next_attribute(ld, entry, berElem))
{
bool single = false;
const AttrSchema* const schema = cinfo->attrSchemaLookup(attr);
if(schema)
{
single = schema->single;
if(schema->type == OctetString) //we need to work different only with binary data
{
PBERVAL *vals;
if((vals = ldap_get_values_len(ld, entry, attr)) != NULL)
{
if(!single)
{
CComSafeArray<VARIANT> attrValues(ldap_count_values_len(vals));
for(LONG i = 0L; vals[i] != NULL; i++)
{
attrValues[i] = CAttributesSchema::getAttributeVariant(vals[i], schema->type);
}
obj->AddValue(attr, CComVariant(attrValues));
}
else
{
obj->AddValue(attr, CAttributesSchema::getAttributeVariant(vals[0], schema->type));
}
ldap_value_free_len(vals);
}
ldap_memfree(attr);
continue;
}
}
PTCHAR *vals;
if((vals = ldap_get_values(ld, entry, attr)) != NULL && ldap_count_values(vals) > 0UL)
{
if(!single)
{
CComSafeArray<VARIANT> attrValues(ldap_count_values(vals));
for(LONG i = 0L; vals[i] != NULL; i++)
{
attrValues[i] = CComVariant(vals[i]);
}
obj->AddValue(attr, CComVariant(attrValues));
}
else
{
obj->AddValue(attr, CComVariant(vals[0]));
}
ldap_value_free(vals);
}
else
{
BOOL last = FALSE;
LONG start = 0L;
CComSafeArray<VARIANT> attrValues(0UL);
do
//.........这里部分代码省略.........