static int corto_compare_key_ptr( void* ctx, const void *o1, const void *o2) { return corto_ptr_compare(&o1, ctx, &o2); }
static int corto_compare_key( void* ctx, const void *o1, const void *o2) { return corto_ptr_compare(o1, ctx, o2); }
static corto_equalityKind corto_collection_compareListWithList(corto_collection t, corto_ll list1, corto_ll list2) { corto_equalityKind result = CORTO_EQ; corto_iter iter1, iter2; void *e1, *e2; corto_type elementType = t->elementType; iter1 = corto_ll_iter(list1); iter2 = corto_ll_iter(list2); while(corto_iter_hasNext(&iter1) && corto_iter_hasNext(&iter2)) { if (corto_collection_requiresAlloc(elementType)) { e1 = corto_iter_next(&iter1); e2 = corto_iter_next(&iter2); } else { e1 = corto_iter_nextPtr(&iter1); e2 = corto_iter_nextPtr(&iter2); } result = corto_ptr_compare(e1, elementType, e2); if (result != CORTO_EQ) { break; } } return result; }
static corto_equalityKind corto_collection_compareArrayWithList(corto_collection t, void *array, corto_uint32 elementSize, corto_ll list) { corto_equalityKind result = CORTO_EQ; corto_uint32 i=0; corto_iter iter; void *e1, *e2; corto_type elementType = t->elementType; iter = corto_ll_iter(list); while(corto_iter_hasNext(&iter)) { if (corto_collection_requiresAlloc(elementType)) { e1 = corto_iter_next(&iter); } else { e1 = corto_iter_nextPtr(&iter); } e2 = CORTO_OFFSET(array, elementSize * i); result = corto_ptr_compare(e2, elementType, e1); if (result != CORTO_EQ) { break; } i++; } return result; }