/* internal */ bool OSOrderedSet::setObject(unsigned int index, const OSMetaClassBase *anObject) { unsigned int i; unsigned int newCount = count + 1; if ((index > count) || !anObject) return false; if (containsObject(anObject)) return false; // do we need more space? if (newCount > capacity && newCount > ensureCapacity(newCount)) return false; haveUpdated(); if (index != count) { for (i = count; i > index; i--) array[i] = array[i-1]; } array[index].obj = anObject; // array[index].pri = pri; anObject->taggedRetain(OSTypeID(OSCollection)); count++; return true; }
bool OSSet::isEqualTo(const OSSet *aSet) const { unsigned int count; unsigned int i; const OSMetaClassBase *obj1; const OSMetaClassBase *obj2; if ( this == aSet ) return true; count = members->count; if ( count != aSet->getCount() ) return false; for ( i = 0; i < count; i++ ) { obj1 = aSet->members->getObject(i); if (containsObject(obj1)) continue; obj2 = members->getObject(i); if ( !obj1 || !obj2 ) return false; if ( !obj1->isEqualTo(obj2) ) return false; } return true; }
void GenericDataCollection::removeObject(const int id) { if (containsObject(id)) { m_sortedIDs.removeOne(id); delete m_objects.take(id); } }
bool OSSet::setObject(const OSMetaClassBase *anObject) { if (containsObject(anObject)) { return false; } else { haveUpdated(); return members->setObject(anObject); } }
bool mergeArraysOfObjects(const QJsonArray &arrayFrom, QJsonArray &arrayTo, CompareValuesJson &comparer) { LOG_DEBUG << "#"; int minSize = qMin(arrayTo.size(), arrayFrom.size()); int i = 0; // skip same elements while (i < minSize) { QJsonObject objectTo = arrayTo[i].toObject(); QJsonObject objectFrom = arrayFrom[i].toObject(); if (comparer(objectTo, objectFrom) == 0) { i++; } else { break; } } LOG_DEBUG << i << "same elements skipped"; int maxIndexOfEqual = i; QJsonArray mergedArray = arrayTo; int sizeFrom = arrayFrom.size(); QJsonArray elementsToAdd; for (; i < sizeFrom; i++) { Q_ASSERT(arrayFrom[i].isObject()); QJsonObject objectToAdd = arrayFrom[i].toObject(); bool alreadyExists = containsObject(arrayTo, maxIndexOfEqual, objectToAdd, comparer); if (!alreadyExists) { elementsToAdd.append(objectToAdd); } } LOG_DEBUG << elementsToAdd.size() << "new elements to be added"; int sizeMergedAdd = elementsToAdd.size(); for (int t = 0; t < sizeMergedAdd; t++) { mergedArray.append(elementsToAdd[t]); } arrayTo = mergedArray; return true; }
bool OSSet::merge(const OSArray * array) { const OSMetaClassBase * anObject = 0; bool result = true; for (int i = 0; (anObject = array->getObject(i)); i++) { /* setObject() returns false if the object is already in the set, * so we have to check beforehand here with containsObject(). */ if (containsObject(anObject)) { continue; } if (!setObject(anObject)) { result = false; } } return result; }