/** * \file * A pointer queue that can be sorted. * * Copyright (C) 2014 Xamarin Inc * * Licensed under the MIT license. See LICENSE file in the project root for full license information. */ #ifndef __MONO_SGEN_POINTER_QUEUE_H__ #define __MONO_SGEN_POINTER_QUEUE_H__ #include typedef struct { void **data; size_t size; size_t next_slot; int mem_type; } SgenPointerQueue; #define SGEN_POINTER_QUEUE_INIT(mem_type) { NULL, 0, 0, (mem_type) } void sgen_pointer_queue_add (SgenPointerQueue *queue, void *ptr); void sgen_pointer_queue_clear (SgenPointerQueue *queue); void sgen_pointer_queue_remove_nulls (SgenPointerQueue *queue); void sgen_pointer_queue_sort_uniq (SgenPointerQueue *queue); size_t sgen_pointer_queue_search (SgenPointerQueue *queue, void *addr); size_t sgen_pointer_queue_find (SgenPointerQueue *queue, void *ptr); void sgen_pointer_queue_init (SgenPointerQueue *queue, int mem_type); void* sgen_pointer_queue_pop (SgenPointerQueue *queue); gboolean sgen_pointer_queue_is_empty (SgenPointerQueue *queue); void sgen_pointer_queue_free (SgenPointerQueue *queue); gboolean sgen_pointer_queue_will_grow (SgenPointerQueue *queue); #endif