TEST_F(GQueueTest, reverse) { int testData1 = 42; int testData2 = 1337; int testData3 = 27; GList *list = NULL; list = g_list_append(list, &testData1); list = g_list_append(list, &testData2); list = g_list_append(list, &testData3); queue->head = list; queue->tail = list->next->next; queue->length = 3; g_queue_reverse(queue); ASSERT_EQ(3, queue->length) << "reversed queue should still have length three"; ASSERT_EQ(list, queue->tail) << "reversed queue tail should be original head"; ASSERT_EQ(&testData3, queue->head->data) << "first reversed queue element data should be set"; ASSERT_TRUE(queue->head->prev == NULL) << "first reversed queue element should not have a previous element"; ASSERT_TRUE(queue->head->next != NULL) << "first reversed queue element should have a next element"; ASSERT_EQ(&testData2, queue->head->next->data) << "second reversed queue element data should be set"; ASSERT_EQ(queue->head, queue->head->next->prev) << "second reversed queue element should have first element as previous"; ASSERT_TRUE(queue->head->next->next != NULL) << "second queue element should have a next element"; ASSERT_EQ(queue->tail, queue->head->next->next) << "last element should be equal to queue tail"; ASSERT_EQ(&testData1, queue->tail->data) << "third reversed queue element data should be set"; ASSERT_EQ(queue->head->next, queue->tail->prev) << "third reversed queue element should have second element as previous"; ASSERT_TRUE(queue->tail->next == NULL) << "third reversed queue element should not have a next element"; g_queue_reverse(queue); ASSERT_EQ(list, queue->head) << "reverse of reversed queue should result in original queue"; }
static void on_scan_end (SymbolDBEngine *dbe, gint process_id, gpointer data) { SymbolDBViewLocals *dbvl; SymbolDBViewLocalsPriv *priv; TraverseData *tdata; dbvl = SYMBOL_DB_VIEW_LOCALS (data); g_return_if_fail (dbvl != NULL); priv = dbvl->priv; if (priv->display_nothing) { return; } tdata = g_new (TraverseData, 1); tdata->dbvl = dbvl; tdata->data = dbe; /*DEBUG_PRINT ("%s", "locals: on_scan_end");*/ if (priv->symbols_inserted_ids != NULL) { if (g_queue_get_length (priv->symbols_inserted_ids) > 0) { /* reverswe the queue */ g_queue_reverse (priv->symbols_inserted_ids); priv->insertion_idle_handler = g_idle_add_full (G_PRIORITY_LOW, (GSourceFunc) consume_symbols_inserted_queue_idle, (gpointer) tdata, (GDestroyNotify) consume_symbols_inserted_queue_idle_destroy); } } }
/** * anjuta_shell_thaw: * @shell: A #AnjutaShell interface. * @error: Error propagation object. * * Reduces the freeze count by one and performs pending widget additions * when the count reaches 0. */ void anjuta_shell_thaw (AnjutaShell *shell, GError **error) { gint freeze_count; g_return_if_fail (shell != NULL); freeze_count = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (shell), "__freeze_count")); freeze_count--; if (freeze_count < 0) freeze_count = 0; g_object_set_data (G_OBJECT (shell), "__freeze_count", GINT_TO_POINTER (freeze_count)); if (freeze_count <= 0) { /* Add all pending widgets */ /* DEBUG_PRINT ("%s", "Thawing shell ..."); */ GQueue *queue; queue = g_object_get_data (G_OBJECT (shell), "__widget_queue"); if (queue) { g_queue_reverse (queue); g_queue_foreach (queue, (GFunc)on_widget_data_add, shell); g_object_set_data (G_OBJECT (shell), "__widget_queue", NULL); } } }