Lines Matching full:enumerator
49 * synchronous will only return the next file in the enumerator.
74 static void g_file_enumerator_real_next_files_async (GFileEnumerator *enumerator,
80 static GList * g_file_enumerator_real_next_files_finish (GFileEnumerator *enumerator,
83 static void g_file_enumerator_real_close_async (GFileEnumerator *enumerator,
88 static gboolean g_file_enumerator_real_close_finish (GFileEnumerator *enumerator,
98 GFileEnumerator *enumerator;
100 enumerator = G_FILE_ENUMERATOR (object);
104 enumerator->priv->container = g_value_dup_object (value);
115 GFileEnumerator *enumerator;
117 enumerator = G_FILE_ENUMERATOR (object);
119 if (enumerator->priv->container) {
120 g_object_unref (enumerator->priv->container);
121 enumerator->priv->container = NULL;
130 GFileEnumerator *enumerator;
132 enumerator = G_FILE_ENUMERATOR (object);
134 if (!enumerator->priv->closed)
135 g_file_enumerator_close (enumerator, NULL, NULL);
167 g_file_enumerator_init (GFileEnumerator *enumerator)
169 enumerator->priv = G_TYPE_INSTANCE_GET_PRIVATE (enumerator,
176 * @enumerator: a #GFileEnumerator.
186 * enumerator is at the end, %NULL will be returned and @error will
189 * Return value: A #GFileInfo or %NULL on error or end of enumerator.
193 g_file_enumerator_next_file (GFileEnumerator *enumerator,
200 g_return_val_if_fail (G_IS_FILE_ENUMERATOR (enumerator), NULL);
201 g_return_val_if_fail (enumerator != NULL, NULL);
203 if (enumerator->priv->closed)
206 _("Enumerator is closed"));
210 if (enumerator->priv->pending)
213 _("File enumerator has outstanding operation"));
217 if (enumerator->priv->outstanding_error)
219 g_propagate_error (error, enumerator->priv->outstanding_error);
220 enumerator->priv->outstanding_error = NULL;
224 class = G_FILE_ENUMERATOR_GET_CLASS (enumerator);
229 enumerator->priv->pending = TRUE;
230 info = (* class->next_file) (enumerator, cancellable, error);
231 enumerator->priv->pending = FALSE;
241 * @enumerator: a #GFileEnumerator.
245 * Releases all resources used by this enumerator, making the
246 * enumerator return %G_IO_ERROR_CLOSED on all calls.
255 g_file_enumerator_close (GFileEnumerator *enumerator,
261 g_return_val_if_fail (G_IS_FILE_ENUMERATOR (enumerator), FALSE);
262 g_return_val_if_fail (enumerator != NULL, FALSE);
264 class = G_FILE_ENUMERATOR_GET_CLASS (enumerator);
266 if (enumerator->priv->closed)
269 if (enumerator->priv->pending)
272 _("File enumerator has outstanding operation"));
279 enumerator->priv->pending = TRUE;
280 (* class->close_fn) (enumerator, cancellable, error);
281 enumerator->priv->pending = FALSE;
282 enumerator->priv->closed = TRUE;
295 GFileEnumerator *enumerator = G_FILE_ENUMERATOR (source_object);
297 enumerator->priv->pending = FALSE;
298 if (enumerator->priv->outstanding_callback)
299 (*enumerator->priv->outstanding_callback) (source_object, res, user_data);
300 g_object_unref (enumerator);
305 * @enumerator: a #GFileEnumerator.
313 * Request information for a number of files from the enumerator asynchronously.
318 * or at the end of the enumerator. In case of a partial error the callback will
331 g_file_enumerator_next_files_async (GFileEnumerator *enumerator,
341 g_return_if_fail (G_IS_FILE_ENUMERATOR (enumerator));
342 g_return_if_fail (enumerator != NULL);
347 simple = g_simple_async_result_new (G_OBJECT (enumerator),
356 if (enumerator->priv->closed)
358 g_simple_async_report_error_in_idle (G_OBJECT (enumerator),
362 _("File enumerator is already closed"));
366 if (enumerator->priv->pending)
368 g_simple_async_report_error_in_idle (G_OBJECT (enumerator),
372 _("File enumerator has outstanding operation"));
376 class = G_FILE_ENUMERATOR_GET_CLASS (enumerator);
378 enumerator->priv->pending = TRUE;
379 enumerator->priv->outstanding_callback = callback;
380 g_object_ref (enumerator);
381 (* class->next_files_async) (enumerator, num_files, io_priority, cancellable,
387 * @enumerator: a #GFileEnumerator.
399 g_file_enumerator_next_files_finish (GFileEnumerator *enumerator,
406 g_return_val_if_fail (G_IS_FILE_ENUMERATOR (enumerator), NULL);
420 class = G_FILE_ENUMERATOR_GET_CLASS (enumerator);
421 return class->next_files_finish (enumerator, result, error);
429 GFileEnumerator *enumerator = G_FILE_ENUMERATOR (source_object);
431 enumerator->priv->pending = FALSE;
432 enumerator->priv->closed = TRUE;
433 if (enumerator->priv->outstanding_callback)
434 (*enumerator->priv->outstanding_callback) (source_object, res, user_data);
435 g_object_unref (enumerator);
440 * @enumerator: a #GFileEnumerator.
447 * Asynchronously closes the file enumerator.
455 g_file_enumerator_close_async (GFileEnumerator *enumerator,
463 g_return_if_fail (G_IS_FILE_ENUMERATOR (enumerator));
465 if (enumerator->priv->closed)
467 g_simple_async_report_error_in_idle (G_OBJECT (enumerator),
471 _("File enumerator is already closed"));
475 if (enumerator->priv->pending)
477 g_simple_async_report_error_in_idle (G_OBJECT (enumerator),
481 _("File enumerator has outstanding operation"));
485 class = G_FILE_ENUMERATOR_GET_CLASS (enumerator);
487 enumerator->priv->pending = TRUE;
488 enumerator->priv->outstanding_callback = callback;
489 g_object_ref (enumerator);
490 (* class->close_async) (enumerator, io_priority, cancellable,
496 * @enumerator: a #GFileEnumerator.
501 * Finishes closing a file enumerator, started from g_file_enumerator_close_async().
503 * If the file enumerator was already closed when g_file_enumerator_close_async()
505 * return %FALSE. If the file enumerator had pending operation when the close
515 g_file_enumerator_close_finish (GFileEnumerator *enumerator,
522 g_return_val_if_fail (G_IS_FILE_ENUMERATOR (enumerator), FALSE);
532 class = G_FILE_ENUMERATOR_GET_CLASS (enumerator);
533 return class->close_finish (enumerator, result, error);
538 * @enumerator: a #GFileEnumerator.
540 * Checks if the file enumerator has been closed.
542 * Returns: %TRUE if the @enumerator is closed.
545 g_file_enumerator_is_closed (GFileEnumerator *enumerator)
547 g_return_val_if_fail (G_IS_FILE_ENUMERATOR (enumerator), TRUE);
549 return enumerator->priv->closed;
554 * @enumerator: a #GFileEnumerator.
556 * Checks if the file enumerator has pending operations.
558 * Returns: %TRUE if the @enumerator has pending operations.
561 g_file_enumerator_has_pending (GFileEnumerator *enumerator)
563 g_return_val_if_fail (G_IS_FILE_ENUMERATOR (enumerator), TRUE);
565 return enumerator->priv->pending;
570 * @enumerator: a #GFileEnumerator.
573 * Sets the file enumerator as having pending operations.
576 g_file_enumerator_set_pending (GFileEnumerator *enumerator,
579 g_return_if_fail (G_IS_FILE_ENUMERATOR (enumerator));
581 enumerator->priv->pending = pending;
586 * @enumerator: a #GFileEnumerator
595 g_file_enumerator_get_container (GFileEnumerator *enumerator)
597 g_return_val_if_fail (G_IS_FILE_ENUMERATOR (enumerator), NULL);
599 return enumerator->priv->container;
628 GFileEnumerator *enumerator;
631 enumerator = G_FILE_ENUMERATOR (object);
641 info = class->next_file (enumerator, cancellable, &error);
652 enumerator->priv->outstanding_error = error;
664 g_file_enumerator_real_next_files_async (GFileEnumerator *enumerator,
679 res = g_simple_async_result_new (G_OBJECT (enumerator), callback, user_data, g_file_enumerator_real_next_files_async);
687 g_file_enumerator_real_next_files_finish (GFileEnumerator *enumerator,
730 g_file_enumerator_real_close_async (GFileEnumerator *enumerator,
738 res = g_simple_async_result_new (G_OBJECT (enumerator),
753 g_file_enumerator_real_close_finish (GFileEnumerator *enumerator,