100 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			100 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|  | /* PIKA - Photo and Image Kooker Application
 | ||
|  |  * a rebranding of The GNU Image Manipulation Program (created with heckimp) | ||
|  |  * A derived work which may be trivial. However, any changes may be (C)2023 by Aldercone Studio | ||
|  |  * | ||
|  |  * Original copyright, applying to most contents (license remains unchanged):  | ||
|  |  * Copyright (C) 1995 Spencer Kimball and Peter Mattis | ||
|  |  * | ||
|  |  * pikaasync.h | ||
|  |  * Copyright (C) 2018 Ell | ||
|  |  * | ||
|  |  * This program is free software: you can redistribute it and/or modify | ||
|  |  * it under the terms of the GNU General Public License as published by | ||
|  |  * the Free Software Foundation; either version 3 of the License, or | ||
|  |  * (at your option) any later version. | ||
|  |  * | ||
|  |  * This program is distributed in the hope that it will be useful, | ||
|  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
|  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||
|  |  * GNU General Public License for more details. | ||
|  |  * | ||
|  |  * You should have received a copy of the GNU General Public License | ||
|  |  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 | ||
|  |  */ | ||
|  | 
 | ||
|  | #ifndef __PIKA_ASYNC_H__
 | ||
|  | #define __PIKA_ASYNC_H__
 | ||
|  | 
 | ||
|  | 
 | ||
|  | #define PIKA_TYPE_ASYNC            (pika_async_get_type ())
 | ||
|  | #define PIKA_ASYNC(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIKA_TYPE_ASYNC, PikaAsync))
 | ||
|  | #define PIKA_ASYNC_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), PIKA_TYPE_ASYNC, PikaAsyncClass))
 | ||
|  | #define PIKA_IS_ASYNC(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIKA_TYPE_ASYNC))
 | ||
|  | #define PIKA_IS_ASYNC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIKA_TYPE_ASYNC))
 | ||
|  | #define PIKA_ASYNC_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), PIKA_TYPE_ASYNC, PikaAsyncClass))
 | ||
|  | 
 | ||
|  | 
 | ||
|  | typedef void (* PikaAsyncCallback) (PikaAsync *async, | ||
|  |                                     gpointer   data); | ||
|  | 
 | ||
|  | 
 | ||
|  | typedef struct _PikaAsyncPrivate PikaAsyncPrivate; | ||
|  | typedef struct _PikaAsyncClass   PikaAsyncClass; | ||
|  | 
 | ||
|  | struct _PikaAsync | ||
|  | { | ||
|  |   GObject           parent_instance; | ||
|  | 
 | ||
|  |   PikaAsyncPrivate *priv; | ||
|  | }; | ||
|  | 
 | ||
|  | struct _PikaAsyncClass | ||
|  | { | ||
|  |   GObjectClass  parent_class; | ||
|  | 
 | ||
|  |   /*  signals  */ | ||
|  |   void   (* waiting) (PikaAsync *async); | ||
|  | }; | ||
|  | 
 | ||
|  | 
 | ||
|  | GType       pika_async_get_type                (void) G_GNUC_CONST; | ||
|  | 
 | ||
|  | PikaAsync * pika_async_new                     (void); | ||
|  | 
 | ||
|  | gboolean    pika_async_is_synced               (PikaAsync         *async); | ||
|  | 
 | ||
|  | void        pika_async_add_callback            (PikaAsync         *async, | ||
|  |                                                 PikaAsyncCallback  callback, | ||
|  |                                                 gpointer           data); | ||
|  | void        pika_async_add_callback_for_object (PikaAsync         *async, | ||
|  |                                                 PikaAsyncCallback  callback, | ||
|  |                                                 gpointer           data, | ||
|  |                                                 gpointer           gobject); | ||
|  | void        pika_async_remove_callback         (PikaAsync         *async, | ||
|  |                                                 PikaAsyncCallback  callback, | ||
|  |                                                 gpointer           data); | ||
|  | 
 | ||
|  | gboolean    pika_async_is_stopped              (PikaAsync         *async); | ||
|  | 
 | ||
|  | void        pika_async_finish                  (PikaAsync         *async, | ||
|  |                                                 gpointer           result); | ||
|  | void        pika_async_finish_full             (PikaAsync         *async, | ||
|  |                                                 gpointer           result, | ||
|  |                                                 GDestroyNotify     result_destroy_func); | ||
|  | gboolean    pika_async_is_finished             (PikaAsync         *async); | ||
|  | gpointer    pika_async_get_result              (PikaAsync         *async); | ||
|  | 
 | ||
|  | void        pika_async_abort                   (PikaAsync         *async); | ||
|  | 
 | ||
|  | gboolean    pika_async_is_canceled             (PikaAsync         *async); | ||
|  | 
 | ||
|  | void        pika_async_cancel_and_wait         (PikaAsync         *async); | ||
|  | 
 | ||
|  | 
 | ||
|  | /*  stats  */ | ||
|  | 
 | ||
|  | gint        pika_async_get_n_running           (void); | ||
|  | 
 | ||
|  | 
 | ||
|  | #endif /* __PIKA_ASYNC_H__ */
 |