static bool testListCopy() {
	ASSERT_TRUE(spListCopy(NULL) == NULL);
	SPList list = spListCreate();
	SPList copy = spListCopy(list);
	ASSERT_TRUE(copy != NULL);
	ASSERT_TRUE(0 == spListGetSize(copy));
	SPListElement e1 = spListElementCreate(1, 1.0);
	SPListElement e2 = spListElementCreate(2, 2.0);
	SPListElement e3 = spListElementCreate(3, 3.0);
	SPListElement e4 = spListElementCreate(4, 4.0);
	spListInsertFirst(list, e1);
	ASSERT_TRUE(0 == spListGetSize(copy));
	SPList list2 = quickList(4, e1, e2, e3, e4);
	SPList copy2 = spListCopy(list2);
	ASSERT_TRUE(4 == spListGetSize(copy2));
	ASSERT_TRUE(spListElementCompare(e1, spListGetFirst(copy2)) == 0);
	ASSERT_TRUE(spListElementCompare(e2, spListGetNext(copy2)) == 0);
	ASSERT_TRUE(spListElementCompare(e3, spListGetNext(copy2)) == 0);
	ASSERT_TRUE(spListElementCompare(e4, spListGetNext(copy2)) == 0);
	ASSERT_TRUE(spListGetNext(copy2) == NULL);
	spListDestroy(list);
	spListDestroy(list2);
	spListDestroy(copy);
	spListDestroy(copy2);
	spListElementDestroy(e1);
	spListElementDestroy(e2);
	spListElementDestroy(e3);
	spListElementDestroy(e4);
	return true;
}
SPBPQueue spBPQueueCopy(SPBPQueue source) {
	if (source == NULL) {
		return NULL;
	}
	SPList listCopy = spListCopy(source->innerList);
	if (listCopy == NULL) {
		return NULL;
	}
	return spBPQueueInnerCreate(listCopy, source->maxSize);
}
Exemple #3
0
SPBPQueue spBPQueueCopy(SPBPQueue source){
	assert(source);
	SPBPQueue copy = spBPQueueCreate(source->bound);
	if (copy == NULL){
		return NULL;
	}
	spListDestroy(copy->list);
	copy->list = spListCopy(source->list);
	return copy;
}
SPBPQueue spBPQueueCreateWrapper(int maxSize, SPBPQueue source_queue, bool createNewList) {
	SPBPQueue newQueue;
	spMinimalVerifyArgumentsRn(maxSize > 0);

	spCalloc(newQueue, sp_bp_queue_t, 1);

	newQueue->capacity = maxSize;


	if (createNewList) {
		newQueue->queue = spListCreate();
		newQueue->maxElement = NULL;
	}
	else {
		newQueue->queue = spListCopy(source_queue->queue);
		newQueue->maxElement = spListElementCopy(source_queue->maxElement);
	}

	//allocation error, or given source queue is NULL and createNewList if false
	if (newQueue->queue == NULL)
		return NULL;

	return newQueue;
}