//static Query* Query::mergeBooleanQueries(Query** queries) { CL_NS(util)::CLVector<BooleanClause*> allClauses; int32_t i = 0; while ( queries[i] != NULL ){ BooleanQuery* bq = (BooleanQuery*)queries[i]; int32_t size = bq->getClauseCount(); BooleanClause** clauses = _CL_NEWARRAY(BooleanClause*, size); bq->getClauses(clauses); for (int32_t j = 0;j<size;++j ){ allClauses.push_back(clauses[j]); j++; } _CLDELETE_ARRAY(clauses); i++; } BooleanQuery* result = _CLNEW BooleanQuery(); CL_NS(util)::CLVector<BooleanClause*>::iterator itr = allClauses.begin(); while (itr != allClauses.end() ) { result->add(*itr); } return result; }