/* unrolledlinkedlist.c generated by valac 0.36.11, the Vala compiler
* generated from unrolledlinkedlist.vala, do not modify */
/* unrolledlinkedlist.vala
*
* Copyright (C) 2013-2014 Maciej Piechotka
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* Author:
* Maciej Piechotka <uzytkownik2@gmail.com>
*/
#include <glib.h>
#include <glib-object.h>
#include <string.h>
#define GEE_TYPE_TRAVERSABLE (gee_traversable_get_type ())
#define GEE_TRAVERSABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_TRAVERSABLE, GeeTraversable))
#define GEE_IS_TRAVERSABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_TRAVERSABLE))
#define GEE_TRAVERSABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_TRAVERSABLE, GeeTraversableIface))
typedef struct _GeeTraversable GeeTraversable;
typedef struct _GeeTraversableIface GeeTraversableIface;
#define GEE_TRAVERSABLE_TYPE_STREAM (gee_traversable_stream_get_type ())
#define GEE_TYPE_LAZY (gee_lazy_get_type ())
#define GEE_LAZY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_LAZY, GeeLazy))
#define GEE_LAZY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_LAZY, GeeLazyClass))
#define GEE_IS_LAZY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_LAZY))
#define GEE_IS_LAZY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_LAZY))
#define GEE_LAZY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_LAZY, GeeLazyClass))
typedef struct _GeeLazy GeeLazy;
typedef struct _GeeLazyClass GeeLazyClass;
#define GEE_TYPE_ITERATOR (gee_iterator_get_type ())
#define GEE_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ITERATOR, GeeIterator))
#define GEE_IS_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ITERATOR))
#define GEE_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_ITERATOR, GeeIteratorIface))
typedef struct _GeeIterator GeeIterator;
typedef struct _GeeIteratorIface GeeIteratorIface;
#define GEE_TYPE_ITERABLE (gee_iterable_get_type ())
#define GEE_ITERABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ITERABLE, GeeIterable))
#define GEE_IS_ITERABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ITERABLE))
#define GEE_ITERABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_ITERABLE, GeeIterableIface))
typedef struct _GeeIterable GeeIterable;
typedef struct _GeeIterableIface GeeIterableIface;
#define GEE_TYPE_COLLECTION (gee_collection_get_type ())
#define GEE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_COLLECTION, GeeCollection))
#define GEE_IS_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_COLLECTION))
#define GEE_COLLECTION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_COLLECTION, GeeCollectionIface))
typedef struct _GeeCollection GeeCollection;
typedef struct _GeeCollectionIface GeeCollectionIface;
#define GEE_TYPE_ABSTRACT_COLLECTION (gee_abstract_collection_get_type ())
#define GEE_ABSTRACT_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection))
#define GEE_ABSTRACT_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollectionClass))
#define GEE_IS_ABSTRACT_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_COLLECTION))
#define GEE_IS_ABSTRACT_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_COLLECTION))
#define GEE_ABSTRACT_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollectionClass))
typedef struct _GeeAbstractCollection GeeAbstractCollection;
typedef struct _GeeAbstractCollectionClass GeeAbstractCollectionClass;
typedef struct _GeeAbstractCollectionPrivate GeeAbstractCollectionPrivate;
#define GEE_TYPE_LIST (gee_list_get_type ())
#define GEE_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_LIST, GeeList))
#define GEE_IS_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_LIST))
#define GEE_LIST_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_LIST, GeeListIface))
typedef struct _GeeList GeeList;
typedef struct _GeeListIface GeeListIface;
#define GEE_TYPE_LIST_ITERATOR (gee_list_iterator_get_type ())
#define GEE_LIST_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_LIST_ITERATOR, GeeListIterator))
#define GEE_IS_LIST_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_LIST_ITERATOR))
#define GEE_LIST_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_LIST_ITERATOR, GeeListIteratorIface))
typedef struct _GeeListIterator GeeListIterator;
typedef struct _GeeListIteratorIface GeeListIteratorIface;
#define GEE_TYPE_ABSTRACT_LIST (gee_abstract_list_get_type ())
#define GEE_ABSTRACT_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_LIST, GeeAbstractList))
#define GEE_ABSTRACT_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_LIST, GeeAbstractListClass))
#define GEE_IS_ABSTRACT_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_LIST))
#define GEE_IS_ABSTRACT_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_LIST))
#define GEE_ABSTRACT_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_LIST, GeeAbstractListClass))
typedef struct _GeeAbstractList GeeAbstractList;
typedef struct _GeeAbstractListClass GeeAbstractListClass;
typedef struct _GeeAbstractListPrivate GeeAbstractListPrivate;
#define GEE_TYPE_BIDIR_LIST (gee_bidir_list_get_type ())
#define GEE_BIDIR_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_BIDIR_LIST, GeeBidirList))
#define GEE_IS_BIDIR_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_BIDIR_LIST))
#define GEE_BIDIR_LIST_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_BIDIR_LIST, GeeBidirListIface))
typedef struct _GeeBidirList GeeBidirList;
typedef struct _GeeBidirListIface GeeBidirListIface;
#define GEE_TYPE_BIDIR_ITERATOR (gee_bidir_iterator_get_type ())
#define GEE_BIDIR_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_BIDIR_ITERATOR, GeeBidirIterator))
#define GEE_IS_BIDIR_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_BIDIR_ITERATOR))
#define GEE_BIDIR_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_BIDIR_ITERATOR, GeeBidirIteratorIface))
typedef struct _GeeBidirIterator GeeBidirIterator;
typedef struct _GeeBidirIteratorIface GeeBidirIteratorIface;
#define GEE_TYPE_BIDIR_LIST_ITERATOR (gee_bidir_list_iterator_get_type ())
#define GEE_BIDIR_LIST_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_BIDIR_LIST_ITERATOR, GeeBidirListIterator))
#define GEE_IS_BIDIR_LIST_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_BIDIR_LIST_ITERATOR))
#define GEE_BIDIR_LIST_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_BIDIR_LIST_ITERATOR, GeeBidirListIteratorIface))
typedef struct _GeeBidirListIterator GeeBidirListIterator;
typedef struct _GeeBidirListIteratorIface GeeBidirListIteratorIface;
#define GEE_TYPE_ABSTRACT_BIDIR_LIST (gee_abstract_bidir_list_get_type ())
#define GEE_ABSTRACT_BIDIR_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_BIDIR_LIST, GeeAbstractBidirList))
#define GEE_ABSTRACT_BIDIR_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_BIDIR_LIST, GeeAbstractBidirListClass))
#define GEE_IS_ABSTRACT_BIDIR_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_BIDIR_LIST))
#define GEE_IS_ABSTRACT_BIDIR_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_BIDIR_LIST))
#define GEE_ABSTRACT_BIDIR_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_BIDIR_LIST, GeeAbstractBidirListClass))
typedef struct _GeeAbstractBidirList GeeAbstractBidirList;
typedef struct _GeeAbstractBidirListClass GeeAbstractBidirListClass;
typedef struct _GeeAbstractBidirListPrivate GeeAbstractBidirListPrivate;
#define GEE_TYPE_QUEUE (gee_queue_get_type ())
#define GEE_QUEUE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_QUEUE, GeeQueue))
#define GEE_IS_QUEUE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_QUEUE))
#define GEE_QUEUE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_QUEUE, GeeQueueIface))
typedef struct _GeeQueue GeeQueue;
typedef struct _GeeQueueIface GeeQueueIface;
#define GEE_TYPE_DEQUE (gee_deque_get_type ())
#define GEE_DEQUE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_DEQUE, GeeDeque))
#define GEE_IS_DEQUE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_DEQUE))
#define GEE_DEQUE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_DEQUE, GeeDequeIface))
typedef struct _GeeDeque GeeDeque;
typedef struct _GeeDequeIface GeeDequeIface;
#define GEE_TYPE_UNROLLED_LINKED_LIST (gee_unrolled_linked_list_get_type ())
#define GEE_UNROLLED_LINKED_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_UNROLLED_LINKED_LIST, GeeUnrolledLinkedList))
#define GEE_UNROLLED_LINKED_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_UNROLLED_LINKED_LIST, GeeUnrolledLinkedListClass))
#define GEE_IS_UNROLLED_LINKED_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_UNROLLED_LINKED_LIST))
#define GEE_IS_UNROLLED_LINKED_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_UNROLLED_LINKED_LIST))
#define GEE_UNROLLED_LINKED_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_UNROLLED_LINKED_LIST, GeeUnrolledLinkedListClass))
typedef struct _GeeUnrolledLinkedList GeeUnrolledLinkedList;
typedef struct _GeeUnrolledLinkedListClass GeeUnrolledLinkedListClass;
typedef struct _GeeUnrolledLinkedListPrivate GeeUnrolledLinkedListPrivate;
typedef struct _GeeUnrolledLinkedListNode GeeUnrolledLinkedListNode;
#define GEE_FUNCTIONS_TYPE_EQUAL_DATA_FUNC_CLOSURE (gee_functions_equal_data_func_closure_get_type ())
#define GEE_FUNCTIONS_EQUAL_DATA_FUNC_CLOSURE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_FUNCTIONS_TYPE_EQUAL_DATA_FUNC_CLOSURE, GeeFunctionsEqualDataFuncClosure))
#define GEE_FUNCTIONS_EQUAL_DATA_FUNC_CLOSURE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_FUNCTIONS_TYPE_EQUAL_DATA_FUNC_CLOSURE, GeeFunctionsEqualDataFuncClosureClass))
#define GEE_FUNCTIONS_IS_EQUAL_DATA_FUNC_CLOSURE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_FUNCTIONS_TYPE_EQUAL_DATA_FUNC_CLOSURE))
#define GEE_FUNCTIONS_IS_EQUAL_DATA_FUNC_CLOSURE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_FUNCTIONS_TYPE_EQUAL_DATA_FUNC_CLOSURE))
#define GEE_FUNCTIONS_EQUAL_DATA_FUNC_CLOSURE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_FUNCTIONS_TYPE_EQUAL_DATA_FUNC_CLOSURE, GeeFunctionsEqualDataFuncClosureClass))
typedef struct _GeeFunctionsEqualDataFuncClosure GeeFunctionsEqualDataFuncClosure;
typedef struct _GeeFunctionsEqualDataFuncClosureClass GeeFunctionsEqualDataFuncClosureClass;
#define _gee_unrolled_linked_list_node_free0(var) ((var == NULL) ? NULL : (var = (gee_unrolled_linked_list_node_free (var), NULL)))
#define _gee_functions_equal_data_func_closure_unref0(var) ((var == NULL) ? NULL : (var = (gee_functions_equal_data_func_closure_unref (var), NULL)))
#define GEE_UNROLLED_LINKED_LIST_TYPE_ITERATOR (gee_unrolled_linked_list_iterator_get_type ())
#define GEE_UNROLLED_LINKED_LIST_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_UNROLLED_LINKED_LIST_TYPE_ITERATOR, GeeUnrolledLinkedListIterator))
#define GEE_UNROLLED_LINKED_LIST_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_UNROLLED_LINKED_LIST_TYPE_ITERATOR, GeeUnrolledLinkedListIteratorClass))
#define GEE_UNROLLED_LINKED_LIST_IS_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_UNROLLED_LINKED_LIST_TYPE_ITERATOR))
#define GEE_UNROLLED_LINKED_LIST_IS_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_UNROLLED_LINKED_LIST_TYPE_ITERATOR))
#define GEE_UNROLLED_LINKED_LIST_ITERATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_UNROLLED_LINKED_LIST_TYPE_ITERATOR, GeeUnrolledLinkedListIteratorClass))
typedef struct _GeeUnrolledLinkedListIterator GeeUnrolledLinkedListIterator;
typedef struct _GeeUnrolledLinkedListIteratorClass GeeUnrolledLinkedListIteratorClass;
#define _g_free0(var) ((var == NULL) ? NULL : (var = (g_free (var), NULL)))
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
typedef struct _GeeFunctionsEqualDataFuncClosurePrivate GeeFunctionsEqualDataFuncClosurePrivate;
typedef struct _GeeUnrolledLinkedListIteratorPrivate GeeUnrolledLinkedListIteratorPrivate;
#define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);
#define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; }
#define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; }
#define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);
typedef gboolean (*GeeForallFunc) (gpointer g, void* user_data);
typedef enum {
GEE_TRAVERSABLE_STREAM_YIELD,
GEE_TRAVERSABLE_STREAM_CONTINUE,
GEE_TRAVERSABLE_STREAM_END,
GEE_TRAVERSABLE_STREAM_WAIT
} GeeTraversableStream;
typedef GeeTraversableStream (*GeeStreamFunc) (GeeTraversableStream state, GeeLazy* g, GeeLazy* * lazy, void* user_data);
struct _GeeIteratorIface {
GTypeInterface parent_iface;
gboolean (*next) (GeeIterator* self);
gboolean (*has_next) (GeeIterator* self);
gpointer (*get) (GeeIterator* self);
void (*remove) (GeeIterator* self);
gboolean (*get_valid) (GeeIterator* self);
gboolean (*get_read_only) (GeeIterator* self);
};
typedef gpointer (*GeeFoldFunc) (gpointer g, gpointer a, void* user_data);
typedef gpointer (*GeeMapFunc) (gpointer g, void* user_data);
typedef gboolean (*GeePredicate) (gconstpointer g, void* user_data);
typedef GeeIterator* (*GeeFlatMapFunc) (gpointer g, void* user_data);
struct _GeeTraversableIface {
GTypeInterface parent_iface;
GType (*get_g_type) (GeeTraversable* self);
GBoxedCopyFunc (*get_g_dup_func) (GeeTraversable* self);
GDestroyNotify (*get_g_destroy_func) (GeeTraversable* self);
gboolean (*foreach) (GeeTraversable* self, GeeForallFunc f, void* f_target);
GeeIterator* (*stream) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeStreamFunc f, void* f_target, GDestroyNotify f_target_destroy_notify);
gpointer (*fold) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeFoldFunc f, void* f_target, gpointer seed);
GeeIterator* (*map) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeMapFunc f, void* f_target);
GeeIterator* (*scan) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeFoldFunc f, void* f_target, gpointer seed);
GeeIterator* (*filter) (GeeTraversable* self, GeePredicate pred, void* pred_target, GDestroyNotify pred_target_destroy_notify);
GeeIterator* (*chop) (GeeTraversable* self, gint offset, gint length);
GType (*get_element_type) (GeeTraversable* self);
GeeIterator* (*flat_map) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeFlatMapFunc f, void* f_target, GDestroyNotify f_target_destroy_notify);
GeeIterator** (*tee) (GeeTraversable* self, guint forks, int* result_length1);
gpointer (*first_match) (GeeTraversable* self, GeePredicate pred, void* pred_target, GDestroyNotify pred_target_destroy_notify);
gboolean (*any_match) (GeeTraversable* self, GeePredicate pred, void* pred_target, GDestroyNotify pred_target_destroy_notify);
gboolean (*all_match) (GeeTraversable* self, GeePredicate pred, void* pred_target, GDestroyNotify pred_target_destroy_notify);
gpointer (*max) (GeeTraversable* self, GCompareDataFunc compare, void* compare_target, GDestroyNotify compare_target_destroy_notify);
gpointer (*min) (GeeTraversable* self, GCompareDataFunc compare, void* compare_target, GDestroyNotify compare_target_destroy_notify);
GeeIterator* (*order_by) (GeeTraversable* self, GCompareDataFunc compare, void* compare_target, GDestroyNotify compare_target_destroy_notify);
};
struct _GeeIterableIface {
GTypeInterface parent_iface;
GType (*get_g_type) (GeeIterable* self);
GBoxedCopyFunc (*get_g_dup_func) (GeeIterable* self);
GDestroyNotify (*get_g_destroy_func) (GeeIterable* self);
GeeIterator* (*iterator) (GeeIterable* self);
};
struct _GeeCollectionIface {
GTypeInterface parent_iface;
GType (*get_g_type) (GeeCollection* self);
GBoxedCopyFunc (*get_g_dup_func) (GeeCollection* self);
GDestroyNotify (*get_g_destroy_func) (GeeCollection* self);
gboolean (*contains) (GeeCollection* self, gconstpointer item);
gboolean (*add) (GeeCollection* self, gconstpointer item);
gboolean (*remove) (GeeCollection* self, gconstpointer item);
void (*clear) (GeeCollection* self);
gboolean (*add_all) (GeeCollection* self, GeeCollection* collection);
gboolean (*contains_all) (GeeCollection* self, GeeCollection* collection);
gboolean (*remove_all) (GeeCollection* self, GeeCollection* collection);
gboolean (*retain_all) (GeeCollection* self, GeeCollection* collection);
gpointer* (*to_array) (GeeCollection* self, int* result_length1);
gint (*get_size) (GeeCollection* self);
gboolean (*get_is_empty) (GeeCollection* self);
gboolean (*get_read_only) (GeeCollection* self);
GeeCollection* (*get_read_only_view) (GeeCollection* self);
gboolean (*add_all_array) (GeeCollection* self, gpointer* array, int array_length1);
gboolean (*contains_all_array) (GeeCollection* self, gpointer* array, int array_length1);
gboolean (*remove_all_array) (GeeCollection* self, gpointer* array, int array_length1);
gboolean (*add_all_iterator) (GeeCollection* self, GeeIterator* iter);
gboolean (*contains_all_iterator) (GeeCollection* self, GeeIterator* iter);
gboolean (*remove_all_iterator) (GeeCollection* self, GeeIterator* iter);
};
struct _GeeAbstractCollection {
GObject parent_instance;
GeeAbstractCollectionPrivate * priv;
};
struct _GeeAbstractCollectionClass {
GObjectClass parent_class;
gboolean (*contains) (GeeAbstractCollection* self, gconstpointer item);
gboolean (*add) (GeeAbstractCollection* self, gconstpointer item);
gboolean (*remove) (GeeAbstractCollection* self, gconstpointer item);
void (*clear) (GeeAbstractCollection* self);
GeeIterator* (*iterator) (GeeAbstractCollection* self);
gboolean (*foreach) (GeeAbstractCollection* self, GeeForallFunc f, void* f_target);
void (*reserved0) (GeeAbstractCollection* self);
void (*reserved1) (GeeAbstractCollection* self);
void (*reserved2) (GeeAbstractCollection* self);
void (*reserved3) (GeeAbstractCollection* self);
void (*reserved4) (GeeAbstractCollection* self);
void (*reserved5) (GeeAbstractCollection* self);
void (*reserved6) (GeeAbstractCollection* self);
void (*reserved7) (GeeAbstractCollection* self);
void (*reserved8) (GeeAbstractCollection* self);
void (*reserved9) (GeeAbstractCollection* self);
gint (*get_size) (GeeAbstractCollection* self);
gboolean (*get_read_only) (GeeAbstractCollection* self);
GeeCollection* (*get_read_only_view) (GeeAbstractCollection* self);
};
struct _GeeListIteratorIface {
GTypeInterface parent_iface;
void (*set) (GeeListIterator* self, gconstpointer item);
void (*add) (GeeListIterator* self, gconstpointer item);
gint (*index) (GeeListIterator* self);
};
struct _GeeListIface {
GTypeInterface parent_iface;
GType (*get_g_type) (GeeList* self);
GBoxedCopyFunc (*get_g_dup_func) (GeeList* self);
GDestroyNotify (*get_g_destroy_func) (GeeList* self);
GeeListIterator* (*list_iterator) (GeeList* self);
gpointer (*get) (GeeList* self, gint index);
void (*set) (GeeList* self, gint index, gconstpointer item);
gint (*index_of) (GeeList* self, gconstpointer item);
void (*insert) (GeeList* self, gint index, gconstpointer item);
gpointer (*remove_at) (GeeList* self, gint index);
GeeList* (*slice) (GeeList* self, gint start, gint stop);
gpointer (*first) (GeeList* self);
gpointer (*last) (GeeList* self);
void (*insert_all) (GeeList* self, gint index, GeeCollection* collection);
void (*sort) (GeeList* self, GCompareDataFunc compare_func, void* compare_func_target, GDestroyNotify compare_func_target_destroy_notify);
GeeList* (*get_read_only_view) (GeeList* self);
};
struct _GeeAbstractList {
GeeAbstractCollection parent_instance;
GeeAbstractListPrivate * priv;
};
struct _GeeAbstractListClass {
GeeAbstractCollectionClass parent_class;
GeeListIterator* (*list_iterator) (GeeAbstractList* self);
gpointer (*get) (GeeAbstractList* self, gint index);
void (*set) (GeeAbstractList* self, gint index, gconstpointer item);
gint (*index_of) (GeeAbstractList* self, gconstpointer item);
void (*insert) (GeeAbstractList* self, gint index, gconstpointer item);
gpointer (*remove_at) (GeeAbstractList* self, gint index);
GeeList* (*slice) (GeeAbstractList* self, gint start, gint stop);
void (*reserved0) (GeeAbstractList* self);
void (*reserved1) (GeeAbstractList* self);
void (*reserved2) (GeeAbstractList* self);
void (*reserved3) (GeeAbstractList* self);
void (*reserved4) (GeeAbstractList* self);
void (*reserved5) (GeeAbstractList* self);
void (*reserved6) (GeeAbstractList* self);
void (*reserved7) (GeeAbstractList* self);
void (*reserved8) (GeeAbstractList* self);
void (*reserved9) (GeeAbstractList* self);
GeeList* (*get_read_only_view) (GeeAbstractList* self);
};
struct _GeeBidirIteratorIface {
GTypeInterface parent_iface;
GType (*get_g_type) (GeeBidirIterator* self);
GBoxedCopyFunc (*get_g_dup_func) (GeeBidirIterator* self);
GDestroyNotify (*get_g_destroy_func) (GeeBidirIterator* self);
gboolean (*previous) (GeeBidirIterator* self);
gboolean (*has_previous) (GeeBidirIterator* self);
gboolean (*first) (GeeBidirIterator* self);
gboolean (*last) (GeeBidirIterator* self);
};
struct _GeeBidirListIteratorIface {
GTypeInterface parent_iface;
GType (*get_g_type) (GeeBidirListIterator* self);
GBoxedCopyFunc (*get_g_dup_func) (GeeBidirListIterator* self);
GDestroyNotify (*get_g_destroy_func) (GeeBidirListIterator* self);
void (*insert) (GeeBidirListIterator* self, gconstpointer item);
};
struct _GeeBidirListIface {
GTypeInterface parent_iface;
GType (*get_g_type) (GeeBidirList* self);
GBoxedCopyFunc (*get_g_dup_func) (GeeBidirList* self);
GDestroyNotify (*get_g_destroy_func) (GeeBidirList* self);
GeeBidirListIterator* (*bidir_list_iterator) (GeeBidirList* self);
GeeBidirList* (*get_read_only_view) (GeeBidirList* self);
};
struct _GeeAbstractBidirList {
GeeAbstractList parent_instance;
GeeAbstractBidirListPrivate * priv;
};
struct _GeeAbstractBidirListClass {
GeeAbstractListClass parent_class;
GeeBidirListIterator* (*bidir_list_iterator) (GeeAbstractBidirList* self);
void (*reserved0) (GeeAbstractBidirList* self);
void (*reserved1) (GeeAbstractBidirList* self);
void (*reserved2) (GeeAbstractBidirList* self);
void (*reserved3) (GeeAbstractBidirList* self);
void (*reserved4) (GeeAbstractBidirList* self);
void (*reserved5) (GeeAbstractBidirList* self);
void (*reserved6) (GeeAbstractBidirList* self);
void (*reserved7) (GeeAbstractBidirList* self);
void (*reserved8) (GeeAbstractBidirList* self);
void (*reserved9) (GeeAbstractBidirList* self);
GeeBidirList* (*get_read_only_view) (GeeAbstractBidirList* self);
};
struct _GeeQueueIface {
GTypeInterface parent_iface;
GType (*get_g_type) (GeeQueue* self);
GBoxedCopyFunc (*get_g_dup_func) (GeeQueue* self);
GDestroyNotify (*get_g_destroy_func) (GeeQueue* self);
gboolean (*offer) (GeeQueue* self, gconstpointer element);
gpointer (*peek) (GeeQueue* self);
gpointer (*poll) (GeeQueue* self);
gint (*drain) (GeeQueue* self, GeeCollection* recipient, gint amount);
gint (*get_capacity) (GeeQueue* self);
gint (*get_remaining_capacity) (GeeQueue* self);
gboolean (*get_is_full) (GeeQueue* self);
};
struct _GeeDequeIface {
GTypeInterface parent_iface;
GType (*get_g_type) (GeeDeque* self);
GBoxedCopyFunc (*get_g_dup_func) (GeeDeque* self);
GDestroyNotify (*get_g_destroy_func) (GeeDeque* self);
gboolean (*offer_head) (GeeDeque* self, gconstpointer element);
gpointer (*peek_head) (GeeDeque* self);
gpointer (*poll_head) (GeeDeque* self);
gint (*drain_head) (GeeDeque* self, GeeCollection* recipient, gint amount);
gboolean (*offer_tail) (GeeDeque* self, gconstpointer element);
gpointer (*peek_tail) (GeeDeque* self);
gpointer (*poll_tail) (GeeDeque* self);
gint (*drain_tail) (GeeDeque* self, GeeCollection* recipient, gint amount);
};
struct _GeeUnrolledLinkedList {
GeeAbstractBidirList parent_instance;
GeeUnrolledLinkedListPrivate * priv;
};
struct _GeeUnrolledLinkedListClass {
GeeAbstractBidirListClass parent_class;
};
struct _GeeUnrolledLinkedListPrivate {
GType g_type;
GBoxedCopyFunc g_dup_func;
GDestroyNotify g_destroy_func;
gint _size;
gint _stamp;
GeeUnrolledLinkedListNode* _head;
GeeUnrolledLinkedListNode* _tail;
GeeFunctionsEqualDataFuncClosure* _equal_func;
};
typedef gboolean (*GeeEqualDataFunc) (gconstpointer a, gconstpointer b, void* user_data);
struct _GeeUnrolledLinkedListNode {
GeeUnrolledLinkedListNode* _prev;
GeeUnrolledLinkedListNode* _next;
gint _size;
gpointer _data[29];
};
struct _GeeFunctionsEqualDataFuncClosure {
GTypeInstance parent_instance;
volatile int ref_count;
GeeFunctionsEqualDataFuncClosurePrivate * priv;
GeeEqualDataFunc func;
gpointer func_target;
GDestroyNotify func_target_destroy_notify;
};
struct _GeeFunctionsEqualDataFuncClosureClass {
GTypeClass parent_class;
void (*finalize) (GeeFunctionsEqualDataFuncClosure *self);
};
struct _GeeUnrolledLinkedListIterator {
GObject parent_instance;
GeeUnrolledLinkedListIteratorPrivate * priv;
};
struct _GeeUnrolledLinkedListIteratorClass {
GObjectClass parent_class;
};
struct _GeeUnrolledLinkedListIteratorPrivate {
GType g_type;
GBoxedCopyFunc g_dup_func;
GDestroyNotify g_destroy_func;
GeeUnrolledLinkedList* _list;
gint _stamp;
GeeUnrolledLinkedListNode* _current;
gint _pos;
gboolean _deleted;
gint _index;
};
static gpointer gee_unrolled_linked_list_parent_class = NULL;
static gpointer gee_unrolled_linked_list_iterator_parent_class = NULL;
static GeeTraversableIface * gee_unrolled_linked_list_iterator_gee_traversable_parent_iface = NULL;
static GeeIteratorIface * gee_unrolled_linked_list_iterator_gee_iterator_parent_iface = NULL;
static GeeListIteratorIface * gee_unrolled_linked_list_iterator_gee_list_iterator_parent_iface = NULL;
static GeeBidirIteratorIface * gee_unrolled_linked_list_iterator_gee_bidir_iterator_parent_iface = NULL;
static GeeBidirListIteratorIface * gee_unrolled_linked_list_iterator_gee_bidir_list_iterator_parent_iface = NULL;
static GeeQueueIface * gee_unrolled_linked_list_gee_queue_parent_iface = NULL;
static GeeDequeIface * gee_unrolled_linked_list_gee_deque_parent_iface = NULL;
GType gee_traversable_stream_get_type (void) G_GNUC_CONST;
gpointer gee_lazy_ref (gpointer instance);
void gee_lazy_unref (gpointer instance);
GParamSpec* gee_param_spec_lazy (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void gee_value_set_lazy (GValue* value, gpointer v_object);
void gee_value_take_lazy (GValue* value, gpointer v_object);
gpointer gee_value_get_lazy (const GValue* value);
GType gee_lazy_get_type (void) G_GNUC_CONST;
GType gee_iterator_get_type (void) G_GNUC_CONST;
GType gee_traversable_get_type (void) G_GNUC_CONST;
GType gee_iterable_get_type (void) G_GNUC_CONST;
GType gee_collection_get_type (void) G_GNUC_CONST;
GType gee_abstract_collection_get_type (void) G_GNUC_CONST;
GType gee_list_iterator_get_type (void) G_GNUC_CONST;
GType gee_list_get_type (void) G_GNUC_CONST;
GType gee_abstract_list_get_type (void) G_GNUC_CONST;
GType gee_bidir_iterator_get_type (void) G_GNUC_CONST;
GType gee_bidir_list_iterator_get_type (void) G_GNUC_CONST;
GType gee_bidir_list_get_type (void) G_GNUC_CONST;
GType gee_abstract_bidir_list_get_type (void) G_GNUC_CONST;
GType gee_queue_get_type (void) G_GNUC_CONST;
GType gee_deque_get_type (void) G_GNUC_CONST;
GType gee_unrolled_linked_list_get_type (void) G_GNUC_CONST;
static void gee_unrolled_linked_list_node_free (GeeUnrolledLinkedListNode * self);
G_GNUC_INTERNAL gpointer gee_functions_equal_data_func_closure_ref (gpointer instance);
G_GNUC_INTERNAL void gee_functions_equal_data_func_closure_unref (gpointer instance);
G_GNUC_INTERNAL GParamSpec* gee_functions_param_spec_equal_data_func_closure (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
G_GNUC_INTERNAL void gee_functions_value_set_equal_data_func_closure (GValue* value, gpointer v_object) G_GNUC_UNUSED;
G_GNUC_INTERNAL void gee_functions_value_take_equal_data_func_closure (GValue* value, gpointer v_object);
G_GNUC_INTERNAL gpointer gee_functions_value_get_equal_data_func_closure (const GValue* value) G_GNUC_UNUSED;
G_GNUC_INTERNAL GType gee_functions_equal_data_func_closure_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
#define GEE_UNROLLED_LINKED_LIST_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GEE_TYPE_UNROLLED_LINKED_LIST, GeeUnrolledLinkedListPrivate))
enum {
GEE_UNROLLED_LINKED_LIST_0_PROPERTY,
GEE_UNROLLED_LINKED_LIST_G_TYPE,
GEE_UNROLLED_LINKED_LIST_G_DUP_FUNC,
GEE_UNROLLED_LINKED_LIST_G_DESTROY_FUNC,
GEE_UNROLLED_LINKED_LIST_SIZE_PROPERTY,
GEE_UNROLLED_LINKED_LIST_READ_ONLY_PROPERTY,
GEE_UNROLLED_LINKED_LIST_CAPACITY_PROPERTY,
GEE_UNROLLED_LINKED_LIST_REMAINING_CAPACITY_PROPERTY,
GEE_UNROLLED_LINKED_LIST_IS_FULL_PROPERTY
};
void gee_abstract_collection_clear (GeeAbstractCollection* self);
#define GEE_UNROLLED_LINKED_LIST_NODE_SIZE 29
#define GEE_UNROLLED_LINKED_LIST_SPLIT_POS (((GEE_UNROLLED_LINKED_LIST_NODE_SIZE - 1) / 2) + 1)
#define GEE_UNROLLED_LINKED_LIST_MERGE_THRESHOLD ((GEE_UNROLLED_LINKED_LIST_NODE_SIZE * 4) / 5)
GeeUnrolledLinkedList* gee_unrolled_linked_list_new (GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeEqualDataFunc equal_func, void* equal_func_target, GDestroyNotify equal_func_target_destroy_notify);
GeeUnrolledLinkedList* gee_unrolled_linked_list_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeEqualDataFunc equal_func, void* equal_func_target, GDestroyNotify equal_func_target_destroy_notify);
GeeAbstractBidirList* gee_abstract_bidir_list_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func);
GeeEqualDataFunc gee_functions_get_equal_func_for (GType t, void** result_target, GDestroyNotify* result_target_destroy_notify);
G_GNUC_INTERNAL GeeFunctionsEqualDataFuncClosure* gee_functions_equal_data_func_closure_new (GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeEqualDataFunc func, void* func_target, GDestroyNotify func_target_destroy_notify);
G_GNUC_INTERNAL GeeFunctionsEqualDataFuncClosure* gee_functions_equal_data_func_closure_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeEqualDataFunc func, void* func_target, GDestroyNotify func_target_destroy_notify);
static GeeUnrolledLinkedList* gee_unrolled_linked_list_new_with_closures (GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeFunctionsEqualDataFuncClosure* equal_func);
static GeeUnrolledLinkedList* gee_unrolled_linked_list_construct_with_closures (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeFunctionsEqualDataFuncClosure* equal_func);
static gboolean gee_unrolled_linked_list_real_foreach (GeeAbstractCollection* base, GeeForallFunc f, void* f_target);
static GeeIterator* gee_unrolled_linked_list_real_iterator (GeeAbstractCollection* base);
static GeeUnrolledLinkedListIterator* gee_unrolled_linked_list_iterator_new (GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeUnrolledLinkedList* list);
static GeeUnrolledLinkedListIterator* gee_unrolled_linked_list_iterator_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeUnrolledLinkedList* list);
static GType gee_unrolled_linked_list_iterator_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
static gboolean gee_unrolled_linked_list_real_contains (GeeAbstractCollection* base, gconstpointer item);
static GeeUnrolledLinkedListNode* gee_unrolled_linked_list_find_node (GeeUnrolledLinkedList* self, gconstpointer item, gint* pos, gint* idx);
static gboolean gee_unrolled_linked_list_real_add (GeeAbstractCollection* base, gconstpointer item);
static GeeUnrolledLinkedListNode* gee_unrolled_linked_list_node_new (void);
static void gee_unrolled_linked_list_add_to_node (GeeUnrolledLinkedList* self, GeeUnrolledLinkedListNode* node, gconstpointer item, gint pos, GeeUnrolledLinkedListNode* * new_node, gint* new_pos);
static gboolean gee_unrolled_linked_list_real_remove (GeeAbstractCollection* base, gconstpointer item);
static gpointer gee_unrolled_linked_list_remove_from_node (GeeUnrolledLinkedList* self, GeeUnrolledLinkedListNode* node, gint pos, GeeUnrolledLinkedListNode* * new_node, gint* new_pos);
static void gee_unrolled_linked_list_real_clear (GeeAbstractCollection* base);
static GeeListIterator* gee_unrolled_linked_list_real_list_iterator (GeeAbstractList* base);
static gpointer gee_unrolled_linked_list_real_get (GeeAbstractList* base, gint index);
static GeeUnrolledLinkedListNode* gee_unrolled_linked_list_find_node_by_idx (GeeUnrolledLinkedList* self, gint idx, gint** pos);
static void gee_unrolled_linked_list_real_set (GeeAbstractList* base, gint index, gconstpointer item);
static gint gee_unrolled_linked_list_real_index_of (GeeAbstractList* base, gconstpointer item);
static void gee_unrolled_linked_list_real_insert (GeeAbstractList* base, gint index, gconstpointer item);
static gpointer gee_unrolled_linked_list_real_remove_at (GeeAbstractList* base, gint index);
static GeeList* gee_unrolled_linked_list_real_slice (GeeAbstractList* base, gint start, gint stop);
static GeeBidirListIterator* gee_unrolled_linked_list_real_bidir_list_iterator (GeeAbstractBidirList* base);
static gboolean gee_unrolled_linked_list_real_offer (GeeQueue* base, gconstpointer element);
static gpointer gee_unrolled_linked_list_real_peek (GeeQueue* base);
static gpointer gee_unrolled_linked_list_real_poll (GeeQueue* base);
static gint gee_unrolled_linked_list_real_drain (GeeQueue* base, GeeCollection* recipient, gint amount);
gboolean gee_collection_add (GeeCollection* self, gconstpointer item);
static void gee_unrolled_linked_list_merge_with_next (GeeUnrolledLinkedList* self, GeeUnrolledLinkedListNode* node);
static gboolean gee_unrolled_linked_list_real_offer_head (GeeDeque* base, gconstpointer element);
static gpointer gee_unrolled_linked_list_real_peek_head (GeeDeque* base);
gpointer gee_queue_peek (GeeQueue* self);
static gpointer gee_unrolled_linked_list_real_poll_head (GeeDeque* base);
gpointer gee_queue_poll (GeeQueue* self);
static gint gee_unrolled_linked_list_real_drain_head (GeeDeque* base, GeeCollection* recipient, gint amount);
gint gee_queue_drain (GeeQueue* self, GeeCollection* recipient, gint amount);
static gboolean gee_unrolled_linked_list_real_offer_tail (GeeDeque* base, gconstpointer element);
gboolean gee_queue_offer (GeeQueue* self, gconstpointer element);
static gpointer gee_unrolled_linked_list_real_peek_tail (GeeDeque* base);
static gpointer gee_unrolled_linked_list_real_poll_tail (GeeDeque* base);
static gint gee_unrolled_linked_list_real_drain_tail (GeeDeque* base, GeeCollection* recipient, gint amount);
GeeEqualDataFunc gee_unrolled_linked_list_get_equal_func (GeeUnrolledLinkedList* self, gpointer* result_target);
gint gee_abstract_collection_get_size (GeeAbstractCollection* self);
static gint* _int_dup (gint* self);
static void gee_unrolled_linked_list_delete_node (GeeUnrolledLinkedList* self, GeeUnrolledLinkedListNode* node);
static void gee_unrolled_linked_list_set_equal_func (GeeUnrolledLinkedList* self, GeeEqualDataFunc value, gpointer value_target);
#define GEE_QUEUE_UNBOUNDED_CAPACITY -1
#define GEE_UNROLLED_LINKED_LIST_ITERATOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GEE_UNROLLED_LINKED_LIST_TYPE_ITERATOR, GeeUnrolledLinkedListIteratorPrivate))
enum {
GEE_UNROLLED_LINKED_LIST_ITERATOR_0_PROPERTY,
GEE_UNROLLED_LINKED_LIST_ITERATOR_G_TYPE,
GEE_UNROLLED_LINKED_LIST_ITERATOR_G_DUP_FUNC,
GEE_UNROLLED_LINKED_LIST_ITERATOR_G_DESTROY_FUNC,
GEE_UNROLLED_LINKED_LIST_ITERATOR_VALID_PROPERTY,
GEE_UNROLLED_LINKED_LIST_ITERATOR_READ_ONLY_PROPERTY
};
static GeeUnrolledLinkedListIterator* gee_unrolled_linked_list_iterator_new_from_iterator (GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeUnrolledLinkedListIterator* iter);
static GeeUnrolledLinkedListIterator* gee_unrolled_linked_list_iterator_construct_from_iterator (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeUnrolledLinkedListIterator* iter);
static gboolean gee_unrolled_linked_list_iterator_real_foreach (GeeTraversable* base, GeeForallFunc f, void* f_target);
static GeeIterator** gee_unrolled_linked_list_iterator_real_tee (GeeTraversable* base, guint forks, int* result_length1);
static gboolean gee_unrolled_linked_list_iterator_real_next (GeeIterator* base);
static gboolean gee_unrolled_linked_list_iterator_real_has_next (GeeIterator* base);
static gpointer gee_unrolled_linked_list_iterator_real_get (GeeIterator* base);
static void gee_unrolled_linked_list_iterator_real_remove (GeeIterator* base);
static gboolean gee_unrolled_linked_list_iterator_real_previous (GeeBidirIterator* base);
static gboolean gee_unrolled_linked_list_iterator_real_has_previous (GeeBidirIterator* base);
static gboolean gee_unrolled_linked_list_iterator_real_first (GeeBidirIterator* base);
static gboolean gee_unrolled_linked_list_iterator_real_last (GeeBidirIterator* base);
static void gee_unrolled_linked_list_iterator_real_set (GeeListIterator* base, gconstpointer item);
static void gee_unrolled_linked_list_iterator_real_add (GeeListIterator* base, gconstpointer item);
static gint gee_unrolled_linked_list_iterator_real_index (GeeListIterator* base);
static void gee_unrolled_linked_list_iterator_real_insert (GeeBidirListIterator* base, gconstpointer item);
static void gee_unrolled_linked_list_iterator_finalize (GObject * obj);
gboolean gee_iterator_get_valid (GeeIterator* self);
gboolean gee_iterator_get_read_only (GeeIterator* self);
static void _vala_gee_unrolled_linked_list_iterator_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
static void _vala_gee_unrolled_linked_list_iterator_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
static void gee_unrolled_linked_list_node_instance_init (GeeUnrolledLinkedListNode * self);
static void gee_unrolled_linked_list_finalize (GObject * obj);
gboolean gee_abstract_collection_get_read_only (GeeAbstractCollection* self);
gint gee_queue_get_capacity (GeeQueue* self);
gint gee_queue_get_remaining_capacity (GeeQueue* self);
gboolean gee_queue_get_is_full (GeeQueue* self);
static void _vala_gee_unrolled_linked_list_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
static void _vala_gee_unrolled_linked_list_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
/**
* Constructs a new, empty linked list.
*
* If not provided, the function parameter is requested to the
* {@link Functions} function factory methods.
*
* @param equal_func an optional element equality testing function
*/
GeeUnrolledLinkedList* gee_unrolled_linked_list_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeEqualDataFunc equal_func, void* equal_func_target, GDestroyNotify equal_func_target_destroy_notify) {
GeeUnrolledLinkedList * self = NULL;
GeeEqualDataFunc _tmp0_;
void* _tmp0__target;
GeeEqualDataFunc _tmp4_;
void* _tmp4__target;
GDestroyNotify _tmp4__target_destroy_notify;
GeeFunctionsEqualDataFuncClosure* _tmp5_;
self = (GeeUnrolledLinkedList*) gee_abstract_bidir_list_construct (object_type, g_type, (GBoxedCopyFunc) g_dup_func, (GDestroyNotify) g_destroy_func);
self->priv->g_type = g_type;
self->priv->g_dup_func = g_dup_func;
self->priv->g_destroy_func = g_destroy_func;
_tmp0_ = equal_func;
_tmp0__target = equal_func_target;
if (_tmp0_ == NULL) {
void* _tmp1_;
GDestroyNotify _tmp2_;
GeeEqualDataFunc _tmp3_;
_tmp3_ = gee_functions_get_equal_func_for (g_type, &_tmp1_, &_tmp2_);
(equal_func_target_destroy_notify == NULL) ? NULL : (equal_func_target_destroy_notify (equal_func_target), NULL);
equal_func = NULL;
equal_func_target = NULL;
equal_func_target_destroy_notify = NULL;
equal_func = _tmp3_;
equal_func_target = _tmp1_;
equal_func_target_destroy_notify = _tmp2_;
}
_tmp4_ = equal_func;
_tmp4__target = equal_func_target;
_tmp4__target_destroy_notify = equal_func_target_destroy_notify;
equal_func = NULL;
equal_func_target = NULL;
equal_func_target_destroy_notify = NULL;
_tmp5_ = gee_functions_equal_data_func_closure_new (g_type, (GBoxedCopyFunc) g_dup_func, (GDestroyNotify) g_destroy_func, _tmp4_, _tmp4__target, _tmp4__target_destroy_notify);
_gee_functions_equal_data_func_closure_unref0 (self->priv->_equal_func);
self->priv->_equal_func = _tmp5_;
(equal_func_target_destroy_notify == NULL) ? NULL : (equal_func_target_destroy_notify (equal_func_target), NULL);
equal_func = NULL;
equal_func_target = NULL;
equal_func_target_destroy_notify = NULL;
return self;
}
GeeUnrolledLinkedList* gee_unrolled_linked_list_new (GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeEqualDataFunc equal_func, void* equal_func_target, GDestroyNotify equal_func_target_destroy_notify) {
return gee_unrolled_linked_list_construct (GEE_TYPE_UNROLLED_LINKED_LIST, g_type, g_dup_func, g_destroy_func, equal_func, equal_func_target, equal_func_target_destroy_notify);
}
static gpointer _gee_functions_equal_data_func_closure_ref0 (gpointer self) {
return self ? gee_functions_equal_data_func_closure_ref (self) : NULL;
}
static GeeUnrolledLinkedList* gee_unrolled_linked_list_construct_with_closures (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeFunctionsEqualDataFuncClosure* equal_func) {
GeeUnrolledLinkedList * self = NULL;
GeeFunctionsEqualDataFuncClosure* _tmp0_;
GeeFunctionsEqualDataFuncClosure* _tmp1_;
g_return_val_if_fail (equal_func != NULL, NULL);
self = (GeeUnrolledLinkedList*) gee_abstract_bidir_list_construct (object_type, g_type, (GBoxedCopyFunc) g_dup_func, (GDestroyNotify) g_destroy_func);
self->priv->g_type = g_type;
self->priv->g_dup_func = g_dup_func;
self->priv->g_destroy_func = g_destroy_func;
_tmp0_ = equal_func;
_tmp1_ = _gee_functions_equal_data_func_closure_ref0 (_tmp0_);
_gee_functions_equal_data_func_closure_unref0 (self->priv->_equal_func);
self->priv->_equal_func = _tmp1_;
_gee_functions_equal_data_func_closure_unref0 (equal_func);
return self;
}
static GeeUnrolledLinkedList* gee_unrolled_linked_list_new_with_closures (GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeFunctionsEqualDataFuncClosure* equal_func) {
return gee_unrolled_linked_list_construct_with_closures (GEE_TYPE_UNROLLED_LINKED_LIST, g_type, g_dup_func, g_destroy_func, equal_func);
}
static gboolean gee_unrolled_linked_list_real_foreach (GeeAbstractCollection* base, GeeForallFunc f, void* f_target) {
GeeUnrolledLinkedList * self;
gboolean result = FALSE;
self = (GeeUnrolledLinkedList*) base;
{
GeeUnrolledLinkedListNode* node = NULL;
GeeUnrolledLinkedListNode* _tmp0_;
_tmp0_ = self->priv->_head;
node = _tmp0_;
{
gboolean _tmp1_ = FALSE;
_tmp1_ = TRUE;
while (TRUE) {
GeeUnrolledLinkedListNode* _tmp4_;
if (!_tmp1_) {
GeeUnrolledLinkedListNode* _tmp2_;
GeeUnrolledLinkedListNode* _tmp3_;
_tmp2_ = node;
_tmp3_ = _tmp2_->_next;
node = _tmp3_;
}
_tmp1_ = FALSE;
_tmp4_ = node;
if (!(_tmp4_ != NULL)) {
break;
}
{
gint pos = 0;
pos = 0;
{
gboolean _tmp5_ = FALSE;
_tmp5_ = TRUE;
while (TRUE) {
gint _tmp7_;
GeeUnrolledLinkedListNode* _tmp8_;
gint _tmp9_;
GeeForallFunc _tmp10_;
void* _tmp10__target;
GeeUnrolledLinkedListNode* _tmp11_;
gint _tmp12_;
gconstpointer _tmp13_;
gpointer _tmp14_;
gboolean _tmp15_;
if (!_tmp5_) {
gint _tmp6_;
_tmp6_ = pos;
pos = _tmp6_ + 1;
}
_tmp5_ = FALSE;
_tmp7_ = pos;
_tmp8_ = node;
_tmp9_ = _tmp8_->_size;
if (!(_tmp7_ < _tmp9_)) {
break;
}
_tmp10_ = f;
_tmp10__target = f_target;
_tmp11_ = node;
_tmp12_ = pos;
_tmp13_ = _tmp11_->_data[_tmp12_];
_tmp14_ = ((_tmp13_ != NULL) && (self->priv->g_dup_func != NULL)) ? self->priv->g_dup_func ((gpointer) _tmp13_) : ((gpointer) _tmp13_);
_tmp15_ = _tmp10_ (_tmp14_, _tmp10__target);
if (!_tmp15_) {
result = FALSE;
return result;
}
}
}
}
}
}
}
result = TRUE;
return result;
}
static GeeIterator* gee_unrolled_linked_list_real_iterator (GeeAbstractCollection* base) {
GeeUnrolledLinkedList * self;
GeeIterator* result = NULL;
GeeUnrolledLinkedListIterator* _tmp0_;
self = (GeeUnrolledLinkedList*) base;
_tmp0_ = gee_unrolled_linked_list_iterator_new (self->priv->g_type, (GBoxedCopyFunc) self->priv->g_dup_func, (GDestroyNotify) self->priv->g_destroy_func, self);
result = (GeeIterator*) _tmp0_;
return result;
}
static gboolean gee_unrolled_linked_list_real_contains (GeeAbstractCollection* base, gconstpointer item) {
GeeUnrolledLinkedList * self;
gboolean result = FALSE;
gconstpointer _tmp0_;
GeeUnrolledLinkedListNode* _tmp1_;
self = (GeeUnrolledLinkedList*) base;
_tmp0_ = item;
_tmp1_ = gee_unrolled_linked_list_find_node (self, _tmp0_, NULL, NULL);
result = _tmp1_ != NULL;
return result;
}
static gboolean gee_unrolled_linked_list_real_add (GeeAbstractCollection* base, gconstpointer item) {
GeeUnrolledLinkedList * self;
gboolean result = FALSE;
GeeUnrolledLinkedListNode* _tmp0_;
GeeUnrolledLinkedListNode* _tmp4_;
gconstpointer _tmp5_;
GeeUnrolledLinkedListNode* _tmp6_;
gint _tmp7_;
self = (GeeUnrolledLinkedList*) base;
_tmp0_ = self->priv->_tail;
if (_tmp0_ == NULL) {
GeeUnrolledLinkedListNode* _tmp1_;
GeeUnrolledLinkedListNode* _tmp2_;
GeeUnrolledLinkedListNode* _tmp3_;
_tmp1_ = self->priv->_head;
_vala_assert (_tmp1_ == NULL, "_head == null");
_tmp2_ = gee_unrolled_linked_list_node_new ();
_gee_unrolled_linked_list_node_free0 (self->priv->_head);
self->priv->_head = _tmp2_;
_tmp3_ = self->priv->_head;
self->priv->_tail = _tmp3_;
}
_tmp4_ = self->priv->_tail;
_tmp5_ = item;
_tmp6_ = self->priv->_tail;
_tmp7_ = _tmp6_->_size;
gee_unrolled_linked_list_add_to_node (self, _tmp4_, _tmp5_, _tmp7_, NULL, NULL);
result = TRUE;
return result;
}
static gboolean gee_unrolled_linked_list_real_remove (GeeAbstractCollection* base, gconstpointer item) {
GeeUnrolledLinkedList * self;
gboolean result = FALSE;
gint pos = 0;
GeeUnrolledLinkedListNode* node = NULL;
gconstpointer _tmp0_;
gint _tmp1_ = 0;
GeeUnrolledLinkedListNode* _tmp2_;
GeeUnrolledLinkedListNode* _tmp3_;
GeeUnrolledLinkedListNode* _tmp8_;
self = (GeeUnrolledLinkedList*) base;
_tmp0_ = item;
_tmp2_ = gee_unrolled_linked_list_find_node (self, _tmp0_, &_tmp1_, NULL);
pos = _tmp1_;
node = _tmp2_;
_tmp3_ = node;
if (_tmp3_ != NULL) {
GeeUnrolledLinkedListNode* _tmp4_;
gint _tmp5_;
gpointer _tmp6_;
gpointer _tmp7_;
_tmp4_ = node;
_tmp5_ = pos;
_tmp6_ = gee_unrolled_linked_list_remove_from_node (self, _tmp4_, _tmp5_, NULL, NULL);
_tmp7_ = _tmp6_;
((_tmp7_ == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (_tmp7_ = (self->priv->g_destroy_func (_tmp7_), NULL));
}
_tmp8_ = node;
result = _tmp8_ != NULL;
return result;
}
static void gee_unrolled_linked_list_real_clear (GeeAbstractCollection* base) {
GeeUnrolledLinkedList * self;
gint _tmp13_;
self = (GeeUnrolledLinkedList*) base;
{
GeeUnrolledLinkedListNode* node = NULL;
GeeUnrolledLinkedListNode* _tmp0_;
_tmp0_ = self->priv->_head;
self->priv->_head = NULL;
node = _tmp0_;
{
gboolean _tmp1_ = FALSE;
_tmp1_ = TRUE;
while (TRUE) {
GeeUnrolledLinkedListNode* _tmp4_;
if (!_tmp1_) {
GeeUnrolledLinkedListNode* _tmp2_;
GeeUnrolledLinkedListNode* _tmp3_;
_tmp2_ = node;
_tmp3_ = _tmp2_->_next;
_tmp2_->_next = NULL;
_gee_unrolled_linked_list_node_free0 (node);
node = _tmp3_;
}
_tmp1_ = FALSE;
_tmp4_ = node;
if (!(_tmp4_ != NULL)) {
break;
}
{
guint pos = 0U;
pos = (guint) 0;
{
gboolean _tmp5_ = FALSE;
_tmp5_ = TRUE;
while (TRUE) {
guint _tmp7_;
GeeUnrolledLinkedListNode* _tmp8_;
gint _tmp9_;
GeeUnrolledLinkedListNode* _tmp10_;
guint _tmp11_;
gpointer _tmp12_;
if (!_tmp5_) {
guint _tmp6_;
_tmp6_ = pos;
pos = _tmp6_ + 1;
}
_tmp5_ = FALSE;
_tmp7_ = pos;
_tmp8_ = node;
_tmp9_ = _tmp8_->_size;
if (!(_tmp7_ < ((guint) _tmp9_))) {
break;
}
_tmp10_ = node;
_tmp11_ = pos;
((_tmp10_->_data[_tmp11_] == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (_tmp10_->_data[_tmp11_] = (self->priv->g_destroy_func (_tmp10_->_data[_tmp11_]), NULL));
_tmp10_->_data[_tmp11_] = NULL;
_tmp12_ = _tmp10_->_data[_tmp11_];
}
}
}
}
}
_gee_unrolled_linked_list_node_free0 (node);
}
_gee_unrolled_linked_list_node_free0 (self->priv->_head);
self->priv->_head = NULL;
self->priv->_tail = NULL;
_tmp13_ = self->priv->_stamp;
self->priv->_stamp = _tmp13_ + 1;
self->priv->_size = 0;
}
static GeeListIterator* gee_unrolled_linked_list_real_list_iterator (GeeAbstractList* base) {
GeeUnrolledLinkedList * self;
GeeListIterator* result = NULL;
GeeUnrolledLinkedListIterator* _tmp0_;
self = (GeeUnrolledLinkedList*) base;
_tmp0_ = gee_unrolled_linked_list_iterator_new (self->priv->g_type, (GBoxedCopyFunc) self->priv->g_dup_func, (GDestroyNotify) self->priv->g_destroy_func, self);
result = (GeeListIterator*) _tmp0_;
return result;
}
static gpointer gee_unrolled_linked_list_real_get (GeeAbstractList* base, gint index) {
GeeUnrolledLinkedList * self;
gpointer result = NULL;
gint _tmp0_;
gint _tmp1_;
gint _tmp2_;
gint pos = 0;
GeeUnrolledLinkedListNode* node = NULL;
gint _tmp3_;
gint* _tmp4_ = NULL;
GeeUnrolledLinkedListNode* _tmp5_;
gint* _tmp6_;
GeeUnrolledLinkedListNode* _tmp7_;
gconstpointer _tmp8_;
gpointer _tmp9_;
self = (GeeUnrolledLinkedList*) base;
_tmp0_ = index;
_vala_assert (_tmp0_ >= 0, "index >= 0");
_tmp1_ = index;
_tmp2_ = self->priv->_size;
_vala_assert (_tmp1_ < _tmp2_, "index < this._size");
_tmp3_ = index;
_tmp5_ = gee_unrolled_linked_list_find_node_by_idx (self, _tmp3_, &_tmp4_);
_tmp6_ = _tmp4_;
pos = *_tmp6_;
_tmp7_ = _tmp5_;
_g_free0 (_tmp6_);
node = _tmp7_;
_vala_assert (node != NULL, "node != null");
_tmp8_ = node->_data[pos];
_tmp9_ = ((_tmp8_ != NULL) && (self->priv->g_dup_func != NULL)) ? self->priv->g_dup_func ((gpointer) _tmp8_) : ((gpointer) _tmp8_);
result = _tmp9_;
return result;
}
static void gee_unrolled_linked_list_real_set (GeeAbstractList* base, gint index, gconstpointer item) {
GeeUnrolledLinkedList * self;
gint _tmp0_;
gint _tmp1_;
gint _tmp2_;
gint pos = 0;
GeeUnrolledLinkedListNode* node = NULL;
gint _tmp3_;
gint* _tmp4_ = NULL;
GeeUnrolledLinkedListNode* _tmp5_;
gint* _tmp6_;
GeeUnrolledLinkedListNode* _tmp7_;
gconstpointer _tmp8_;
gpointer _tmp9_;
gpointer _tmp10_;
self = (GeeUnrolledLinkedList*) base;
_tmp0_ = index;
_vala_assert (_tmp0_ >= 0, "index >= 0");
_tmp1_ = index;
_tmp2_ = self->priv->_size;
_vala_assert (_tmp1_ < _tmp2_, "index < this._size");
_tmp3_ = index;
_tmp5_ = gee_unrolled_linked_list_find_node_by_idx (self, _tmp3_, &_tmp4_);
_tmp6_ = _tmp4_;
pos = *_tmp6_;
_tmp7_ = _tmp5_;
_g_free0 (_tmp6_);
node = _tmp7_;
_vala_assert (node != NULL, "node != null");
_tmp8_ = item;
_tmp9_ = ((_tmp8_ != NULL) && (self->priv->g_dup_func != NULL)) ? self->priv->g_dup_func ((gpointer) _tmp8_) : ((gpointer) _tmp8_);
((node->_data[pos] == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (node->_data[pos] = (self->priv->g_destroy_func (node->_data[pos]), NULL));
node->_data[pos] = _tmp9_;
_tmp10_ = node->_data[pos];
}
static gint gee_unrolled_linked_list_real_index_of (GeeAbstractList* base, gconstpointer item) {
GeeUnrolledLinkedList * self;
gint result = 0;
gint idx = 0;
gconstpointer _tmp0_;
gint _tmp1_ = 0;
GeeUnrolledLinkedListNode* _tmp2_;
self = (GeeUnrolledLinkedList*) base;
_tmp0_ = item;
_tmp2_ = gee_unrolled_linked_list_find_node (self, _tmp0_, NULL, &_tmp1_);
idx = _tmp1_;
if (_tmp2_ != NULL) {
result = idx;
return result;
} else {
result = -1;
return result;
}
}
static void gee_unrolled_linked_list_real_insert (GeeAbstractList* base, gint index, gconstpointer item) {
GeeUnrolledLinkedList * self;
gint _tmp0_;
gint _tmp1_;
gint _tmp2_;
gint _tmp3_;
gint _tmp4_;
self = (GeeUnrolledLinkedList*) base;
_tmp0_ = index;
_vala_assert (_tmp0_ >= 0, "index >= 0");
_tmp1_ = index;
_tmp2_ = self->priv->_size;
_vala_assert (_tmp1_ <= _tmp2_, "index <= this._size");
_tmp3_ = index;
_tmp4_ = self->priv->_size;
if (_tmp3_ != _tmp4_) {
gint pos = 0;
GeeUnrolledLinkedListNode* node = NULL;
gint _tmp5_;
gint* _tmp6_ = NULL;
GeeUnrolledLinkedListNode* _tmp7_;
gint* _tmp8_;
GeeUnrolledLinkedListNode* _tmp9_;
GeeUnrolledLinkedListNode* _tmp10_;
GeeUnrolledLinkedListNode* _tmp11_;
gconstpointer _tmp12_;
gint _tmp13_;
_tmp5_ = index;
_tmp7_ = gee_unrolled_linked_list_find_node_by_idx (self, _tmp5_, &_tmp6_);
_tmp8_ = _tmp6_;
pos = *_tmp8_;
_tmp9_ = _tmp7_;
_g_free0 (_tmp8_);
node = _tmp9_;
_tmp10_ = node;
_vala_assert (_tmp10_ != NULL, "node != null");
_tmp11_ = node;
_tmp12_ = item;
_tmp13_ = pos;
gee_unrolled_linked_list_add_to_node (self, _tmp11_, _tmp12_, _tmp13_, NULL, NULL);
} else {
gint _tmp14_;
GeeUnrolledLinkedListNode* _tmp20_;
gconstpointer _tmp21_;
GeeUnrolledLinkedListNode* _tmp22_;
gint _tmp23_;
_tmp14_ = index;
if (_tmp14_ == 0) {
gboolean _tmp15_ = FALSE;
GeeUnrolledLinkedListNode* _tmp16_;
GeeUnrolledLinkedListNode* _tmp18_;
GeeUnrolledLinkedListNode* _tmp19_;
_tmp16_ = self->priv->_head;
if (_tmp16_ == NULL) {
GeeUnrolledLinkedListNode* _tmp17_;
_tmp17_ = self->priv->_tail;
_tmp15_ = _tmp17_ == NULL;
} else {
_tmp15_ = FALSE;
}
_vala_assert (_tmp15_, "_head == null && _tail == null");
_tmp18_ = gee_unrolled_linked_list_node_new ();
_gee_unrolled_linked_list_node_free0 (self->priv->_head);
self->priv->_head = _tmp18_;
_tmp19_ = self->priv->_head;
self->priv->_tail = _tmp19_;
}
_tmp20_ = self->priv->_tail;
_tmp21_ = item;
_tmp22_ = self->priv->_tail;
_tmp23_ = _tmp22_->_size;
gee_unrolled_linked_list_add_to_node (self, _tmp20_, _tmp21_, _tmp23_, NULL, NULL);
}
}
static gpointer gee_unrolled_linked_list_real_remove_at (GeeAbstractList* base, gint index) {
GeeUnrolledLinkedList * self;
gpointer result = NULL;
gint _tmp0_;
gint _tmp1_;
gint _tmp2_;
gint pos = 0;
GeeUnrolledLinkedListNode* node = NULL;
gint _tmp3_;
gint* _tmp4_ = NULL;
GeeUnrolledLinkedListNode* _tmp5_;
gint* _tmp6_;
GeeUnrolledLinkedListNode* _tmp7_;
gpointer _tmp8_;
self = (GeeUnrolledLinkedList*) base;
_tmp0_ = index;
_vala_assert (_tmp0_ >= 0, "index >= 0");
_tmp1_ = index;
_tmp2_ = self->priv->_size;
_vala_assert (_tmp1_ < _tmp2_, "index < this._size");
_tmp3_ = index;
_tmp5_ = gee_unrolled_linked_list_find_node_by_idx (self, _tmp3_, &_tmp4_);
_tmp6_ = _tmp4_;
pos = *_tmp6_;
_tmp7_ = _tmp5_;
_g_free0 (_tmp6_);
node = _tmp7_;
_vala_assert (node != NULL, "node != null");
_tmp8_ = gee_unrolled_linked_list_remove_from_node (self, node, pos, NULL, NULL);
result = _tmp8_;
return result;
}
static GeeList* gee_unrolled_linked_list_real_slice (GeeAbstractList* base, gint start, gint stop) {
GeeUnrolledLinkedList * self;
GeeList* result = NULL;
gboolean _tmp0_ = FALSE;
gboolean _tmp1_ = FALSE;
gint _tmp2_;
GeeUnrolledLinkedList* slice = NULL;
GeeFunctionsEqualDataFuncClosure* _tmp7_;
GeeFunctionsEqualDataFuncClosure* _tmp8_;
GeeUnrolledLinkedList* _tmp9_;
GeeUnrolledLinkedList* _tmp10_;
gint _tmp11_;
gint _tmp12_;
GeeUnrolledLinkedListNode* copy = NULL;
GeeUnrolledLinkedList* _tmp13_;
GeeUnrolledLinkedListNode* _tmp14_;
GeeUnrolledLinkedListNode* _tmp15_;
gint orig_pos = 0;
GeeUnrolledLinkedListNode* orig = NULL;
gint _tmp16_;
gint* _tmp17_ = NULL;
GeeUnrolledLinkedListNode* _tmp18_;
gint* _tmp19_;
GeeUnrolledLinkedListNode* _tmp20_;
GeeUnrolledLinkedListNode* _tmp21_;
gint i = 0;
GeeUnrolledLinkedList* _tmp56_;
GeeUnrolledLinkedListNode* _tmp57_;
self = (GeeUnrolledLinkedList*) base;
_tmp2_ = start;
if (0 <= _tmp2_) {
gint _tmp3_;
gint _tmp4_;
_tmp3_ = start;
_tmp4_ = stop;
_tmp1_ = _tmp3_ <= _tmp4_;
} else {
_tmp1_ = FALSE;
}
if (_tmp1_) {
gint _tmp5_;
gint _tmp6_;
_tmp5_ = stop;
_tmp6_ = self->priv->_size;
_tmp0_ = _tmp5_ <= _tmp6_;
} else {
_tmp0_ = FALSE;
}
_vala_assert (_tmp0_, "0 <= start && start <= stop && stop <= _size");
_tmp7_ = self->priv->_equal_func;
_tmp8_ = _gee_functions_equal_data_func_closure_ref0 (_tmp7_);
_tmp9_ = gee_unrolled_linked_list_new_with_closures (self->priv->g_type, (GBoxedCopyFunc) self->priv->g_dup_func, (GDestroyNotify) self->priv->g_destroy_func, _tmp8_);
slice = _tmp9_;
_tmp10_ = slice;
_tmp11_ = stop;
_tmp12_ = start;
_tmp10_->priv->_size = _tmp11_ - _tmp12_;
_tmp13_ = slice;
_tmp14_ = gee_unrolled_linked_list_node_new ();
_gee_unrolled_linked_list_node_free0 (_tmp13_->priv->_head);
_tmp13_->priv->_head = _tmp14_;
_tmp15_ = _tmp13_->priv->_head;
copy = _tmp15_;
_tmp16_ = start;
_tmp18_ = gee_unrolled_linked_list_find_node_by_idx (self, _tmp16_, &_tmp17_);
_tmp19_ = _tmp17_;
orig_pos = *_tmp19_;
_tmp20_ = _tmp18_;
_g_free0 (_tmp19_);
orig = _tmp20_;
_tmp21_ = orig;
_vala_assert (_tmp21_ != NULL, "orig != null");
i = 0;
while (TRUE) {
gint j = 0;
GeeUnrolledLinkedListNode* _tmp43_;
gint _tmp44_;
gint _tmp45_;
gint _tmp46_;
gint _tmp47_;
gboolean _tmp48_;
GeeUnrolledLinkedListNode* _tmp49_;
GeeUnrolledLinkedListNode* _tmp50_;
GeeUnrolledLinkedListNode* _tmp51_;
GeeUnrolledLinkedListNode* _tmp52_;
GeeUnrolledLinkedListNode* _tmp53_;
GeeUnrolledLinkedListNode* _tmp54_;
GeeUnrolledLinkedListNode* _tmp55_;
j = 0;
while (TRUE) {
gboolean _tmp22_ = FALSE;
gint _tmp23_;
GeeUnrolledLinkedListNode* _tmp27_;
gint _tmp28_;
GeeUnrolledLinkedListNode* _tmp29_;
gint _tmp30_;
gconstpointer _tmp31_;
gpointer _tmp32_;
gpointer _tmp33_;
gint _tmp34_;
gint _tmp35_;
gint _tmp36_;
gint _tmp37_;
GeeUnrolledLinkedListNode* _tmp38_;
gint _tmp39_;
gboolean _tmp40_;
_tmp23_ = j;
if (_tmp23_ < GEE_UNROLLED_LINKED_LIST_NODE_SIZE) {
gint _tmp24_;
gint _tmp25_;
gint _tmp26_;
_tmp24_ = i;
_tmp25_ = stop;
_tmp26_ = start;
_tmp22_ = _tmp24_ < (_tmp25_ - _tmp26_);
} else {
_tmp22_ = FALSE;
}
if (!_tmp22_) {
break;
}
_tmp27_ = copy;
_tmp28_ = j;
_tmp29_ = orig;
_tmp30_ = orig_pos;
_tmp31_ = _tmp29_->_data[_tmp30_];
_tmp32_ = ((_tmp31_ != NULL) && (self->priv->g_dup_func != NULL)) ? self->priv->g_dup_func ((gpointer) _tmp31_) : ((gpointer) _tmp31_);
((_tmp27_->_data[_tmp28_] == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (_tmp27_->_data[_tmp28_] = (self->priv->g_destroy_func (_tmp27_->_data[_tmp28_]), NULL));
_tmp27_->_data[_tmp28_] = _tmp32_;
_tmp33_ = _tmp27_->_data[_tmp28_];
_tmp34_ = i;
i = _tmp34_ + 1;
_tmp35_ = j;
j = _tmp35_ + 1;
_tmp36_ = orig_pos;
orig_pos = _tmp36_ + 1;
_tmp37_ = orig_pos;
_tmp38_ = orig;
_tmp39_ = _tmp38_->_size;
_tmp40_ = G_UNLIKELY (_tmp37_ == _tmp39_);
if (_tmp40_) {
GeeUnrolledLinkedListNode* _tmp41_;
GeeUnrolledLinkedListNode* _tmp42_;
_tmp41_ = orig;
_tmp42_ = _tmp41_->_next;
orig = _tmp42_;
orig_pos = 0;
}
}
_tmp43_ = copy;
_tmp44_ = j;
_tmp43_->_size = _tmp44_;
_tmp45_ = i;
_tmp46_ = stop;
_tmp47_ = start;
_tmp48_ = G_UNLIKELY (!(_tmp45_ < (_tmp46_ - _tmp47_)));
if (_tmp48_) {
break;
}
_tmp49_ = copy;
_tmp50_ = gee_unrolled_linked_list_node_new ();
_gee_unrolled_linked_list_node_free0 (_tmp49_->_next);
_tmp49_->_next = _tmp50_;
_tmp51_ = copy;
_tmp52_ = _tmp51_->_next;
_tmp53_ = copy;
_tmp52_->_prev = _tmp53_;
_tmp54_ = copy;
_tmp55_ = _tmp54_->_next;
copy = _tmp55_;
}
_tmp56_ = slice;
_tmp57_ = copy;
_tmp56_->priv->_tail = _tmp57_;
result = (GeeList*) slice;
return result;
}
static GeeBidirListIterator* gee_unrolled_linked_list_real_bidir_list_iterator (GeeAbstractBidirList* base) {
GeeUnrolledLinkedList * self;
GeeBidirListIterator* result = NULL;
GeeUnrolledLinkedListIterator* _tmp0_;
self = (GeeUnrolledLinkedList*) base;
_tmp0_ = gee_unrolled_linked_list_iterator_new (self->priv->g_type, (GBoxedCopyFunc) self->priv->g_dup_func, (GDestroyNotify) self->priv->g_destroy_func, self);
result = (GeeBidirListIterator*) _tmp0_;
return result;
}
static gboolean gee_unrolled_linked_list_real_offer (GeeQueue* base, gconstpointer element) {
GeeUnrolledLinkedList * self;
gboolean result = FALSE;
GeeUnrolledLinkedListNode* _tmp0_;
gboolean _tmp4_ = FALSE;
GeeUnrolledLinkedListNode* _tmp5_;
GeeUnrolledLinkedListNode* _tmp7_;
gconstpointer _tmp8_;
GeeUnrolledLinkedListNode* _tmp9_;
gint _tmp10_;
self = (GeeUnrolledLinkedList*) base;
_tmp0_ = self->priv->_tail;
if (_tmp0_ == NULL) {
GeeUnrolledLinkedListNode* _tmp1_;
GeeUnrolledLinkedListNode* _tmp2_;
GeeUnrolledLinkedListNode* _tmp3_;
_tmp1_ = self->priv->_head;
_vala_assert (_tmp1_ == NULL, "_head == null");
_tmp2_ = gee_unrolled_linked_list_node_new ();
_gee_unrolled_linked_list_node_free0 (self->priv->_head);
self->priv->_head = _tmp2_;
_tmp3_ = self->priv->_head;
self->priv->_tail = _tmp3_;
}
_tmp5_ = self->priv->_head;
if (_tmp5_ != NULL) {
GeeUnrolledLinkedListNode* _tmp6_;
_tmp6_ = self->priv->_tail;
_tmp4_ = _tmp6_ != NULL;
} else {
_tmp4_ = FALSE;
}
_vala_assert (_tmp4_, "_head != null && _tail != null");
_tmp7_ = self->priv->_tail;
_tmp8_ = element;
_tmp9_ = self->priv->_tail;
_tmp10_ = _tmp9_->_size;
gee_unrolled_linked_list_add_to_node (self, _tmp7_, _tmp8_, _tmp10_, NULL, NULL);
result = TRUE;
return result;
}
static gpointer gee_unrolled_linked_list_real_peek (GeeQueue* base) {
GeeUnrolledLinkedList * self;
gpointer result = NULL;
GeeUnrolledLinkedListNode* _tmp0_;
self = (GeeUnrolledLinkedList*) base;
_tmp0_ = self->priv->_head;
if (_tmp0_ != NULL) {
GeeUnrolledLinkedListNode* _tmp1_;
gconstpointer _tmp2_;
gpointer _tmp3_;
_tmp1_ = self->priv->_head;
_tmp2_ = _tmp1_->_data[0];
_tmp3_ = ((_tmp2_ != NULL) && (self->priv->g_dup_func != NULL)) ? self->priv->g_dup_func ((gpointer) _tmp2_) : ((gpointer) _tmp2_);
result = _tmp3_;
return result;
} else {
result = NULL;
return result;
}
}
static gpointer gee_unrolled_linked_list_real_poll (GeeQueue* base) {
GeeUnrolledLinkedList * self;
gpointer result = NULL;
GeeUnrolledLinkedListNode* _tmp0_;
self = (GeeUnrolledLinkedList*) base;
_tmp0_ = self->priv->_head;
if (_tmp0_ != NULL) {
GeeUnrolledLinkedListNode* _tmp1_;
gpointer _tmp2_;
_tmp1_ = self->priv->_head;
_tmp2_ = gee_unrolled_linked_list_remove_from_node (self, _tmp1_, 0, NULL, NULL);
result = _tmp2_;
return result;
} else {
result = NULL;
return result;
}
}
static gint gee_unrolled_linked_list_real_drain (GeeQueue* base, GeeCollection* recipient, gint amount) {
GeeUnrolledLinkedList * self;
gint result = 0;
gint drained = 0;
gint _tmp0_;
self = (GeeUnrolledLinkedList*) base;
g_return_val_if_fail (recipient != NULL, 0);
drained = 0;
_tmp0_ = amount;
if (_tmp0_ < 0) {
gint _tmp16_;
gint _tmp17_;
{
GeeUnrolledLinkedListNode* node = NULL;
GeeUnrolledLinkedListNode* _tmp1_;
_tmp1_ = self->priv->_head;
self->priv->_head = NULL;
node = _tmp1_;
{
gboolean _tmp2_ = FALSE;
_tmp2_ = TRUE;
while (TRUE) {
GeeUnrolledLinkedListNode* _tmp5_;
if (!_tmp2_) {
GeeUnrolledLinkedListNode* _tmp3_;
GeeUnrolledLinkedListNode* _tmp4_;
_tmp3_ = node;
_tmp4_ = _tmp3_->_next;
_tmp3_->_next = NULL;
_gee_unrolled_linked_list_node_free0 (node);
node = _tmp4_;
}
_tmp2_ = FALSE;
_tmp5_ = node;
if (!(_tmp5_ != NULL)) {
break;
}
{
gint i = 0;
i = 0;
{
gboolean _tmp6_ = FALSE;
_tmp6_ = TRUE;
while (TRUE) {
gint _tmp8_;
GeeUnrolledLinkedListNode* _tmp9_;
gint _tmp10_;
gpointer data = NULL;
GeeUnrolledLinkedListNode* _tmp11_;
gint _tmp12_;
gpointer _tmp13_;
GeeCollection* _tmp14_;
gconstpointer _tmp15_;
if (!_tmp6_) {
gint _tmp7_;
_tmp7_ = i;
i = _tmp7_ + 1;
}
_tmp6_ = FALSE;
_tmp8_ = i;
_tmp9_ = node;
_tmp10_ = _tmp9_->_size;
if (!(_tmp8_ < _tmp10_)) {
break;
}
_tmp11_ = node;
_tmp12_ = i;
_tmp13_ = _tmp11_->_data[_tmp12_];
_tmp11_->_data[_tmp12_] = NULL;
data = _tmp13_;
_tmp14_ = recipient;
_tmp15_ = data;
gee_collection_add (_tmp14_, _tmp15_);
((data == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (data = (self->priv->g_destroy_func (data), NULL));
}
}
}
}
}
_gee_unrolled_linked_list_node_free0 (node);
}
_tmp16_ = self->priv->_size;
drained = _tmp16_;
self->priv->_tail = NULL;
self->priv->_size = 0;
_tmp17_ = self->priv->_stamp;
self->priv->_stamp = _tmp17_ + 1;
result = drained;
return result;
} else {
GeeUnrolledLinkedListNode* node = NULL;
gint _tmp83_;
{
GeeUnrolledLinkedListNode* _tmp18_;
gboolean _tmp19_ = FALSE;
_tmp18_ = self->priv->_head;
self->priv->_head = NULL;
_gee_unrolled_linked_list_node_free0 (node);
node = _tmp18_;
_tmp19_ = TRUE;
while (TRUE) {
GeeUnrolledLinkedListNode* _tmp22_;
GeeUnrolledLinkedListNode* _tmp23_;
gint _tmp24_;
gint _tmp25_;
gboolean _tmp26_;
if (!_tmp19_) {
GeeUnrolledLinkedListNode* _tmp20_;
GeeUnrolledLinkedListNode* _tmp21_;
_tmp20_ = node;
_tmp21_ = _tmp20_->_next;
_tmp20_->_next = NULL;
_gee_unrolled_linked_list_node_free0 (node);
node = _tmp21_;
}
_tmp19_ = FALSE;
_tmp22_ = node;
if (!(_tmp22_ != NULL)) {
break;
}
_tmp23_ = node;
_tmp24_ = _tmp23_->_size;
_tmp25_ = amount;
_tmp26_ = G_LIKELY (_tmp24_ <= _tmp25_);
if (_tmp26_) {
gint _tmp37_;
GeeUnrolledLinkedListNode* _tmp38_;
gint _tmp39_;
gint _tmp40_;
GeeUnrolledLinkedListNode* _tmp41_;
gint _tmp42_;
gint _tmp43_;
GeeUnrolledLinkedListNode* _tmp44_;
gint _tmp45_;
{
gint i = 0;
i = 0;
{
gboolean _tmp27_ = FALSE;
_tmp27_ = TRUE;
while (TRUE) {
gint _tmp29_;
GeeUnrolledLinkedListNode* _tmp30_;
gint _tmp31_;
gpointer data = NULL;
GeeUnrolledLinkedListNode* _tmp32_;
gint _tmp33_;
gpointer _tmp34_;
GeeCollection* _tmp35_;
gconstpointer _tmp36_;
if (!_tmp27_) {
gint _tmp28_;
_tmp28_ = i;
i = _tmp28_ + 1;
}
_tmp27_ = FALSE;
_tmp29_ = i;
_tmp30_ = node;
_tmp31_ = _tmp30_->_size;
if (!(_tmp29_ < _tmp31_)) {
break;
}
_tmp32_ = node;
_tmp33_ = i;
_tmp34_ = _tmp32_->_data[_tmp33_];
_tmp32_->_data[_tmp33_] = NULL;
data = _tmp34_;
_tmp35_ = recipient;
_tmp36_ = data;
gee_collection_add (_tmp35_, _tmp36_);
((data == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (data = (self->priv->g_destroy_func (data), NULL));
}
}
}
_tmp37_ = amount;
_tmp38_ = node;
_tmp39_ = _tmp38_->_size;
amount = _tmp37_ - _tmp39_;
_tmp40_ = drained;
_tmp41_ = node;
_tmp42_ = _tmp41_->_size;
drained = _tmp40_ + _tmp42_;
_tmp43_ = self->priv->_size;
_tmp44_ = node;
_tmp45_ = _tmp44_->_size;
self->priv->_size = _tmp43_ - _tmp45_;
} else {
GeeUnrolledLinkedListNode* _tmp55_;
GeeUnrolledLinkedListNode* _tmp56_;
gint _tmp57_;
GeeUnrolledLinkedListNode* _tmp58_;
gint _tmp59_;
gint _tmp60_;
gint _tmp61_;
gint _tmp62_;
gint _tmp63_;
gint _tmp64_;
GeeUnrolledLinkedListNode* _tmp65_;
GeeUnrolledLinkedListNode* _tmp66_;
gint _tmp67_;
gint _tmp68_;
GeeUnrolledLinkedListNode* n = NULL;
GeeUnrolledLinkedListNode* _tmp69_;
GeeUnrolledLinkedListNode* _tmp70_;
gboolean _tmp71_ = FALSE;
GeeUnrolledLinkedListNode* _tmp72_;
GeeUnrolledLinkedListNode* _tmp73_;
gboolean _tmp74_;
gint _tmp82_;
{
gint i = 0;
i = 0;
{
gboolean _tmp46_ = FALSE;
_tmp46_ = TRUE;
while (TRUE) {
gint _tmp48_;
gint _tmp49_;
gpointer data = NULL;
GeeUnrolledLinkedListNode* _tmp50_;
gint _tmp51_;
gpointer _tmp52_;
GeeCollection* _tmp53_;
gconstpointer _tmp54_;
if (!_tmp46_) {
gint _tmp47_;
_tmp47_ = i;
i = _tmp47_ + 1;
}
_tmp46_ = FALSE;
_tmp48_ = i;
_tmp49_ = amount;
if (!(_tmp48_ < _tmp49_)) {
break;
}
_tmp50_ = node;
_tmp51_ = i;
_tmp52_ = _tmp50_->_data[_tmp51_];
_tmp50_->_data[_tmp51_] = NULL;
data = _tmp52_;
_tmp53_ = recipient;
_tmp54_ = data;
gee_collection_add (_tmp53_, _tmp54_);
((data == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (data = (self->priv->g_destroy_func (data), NULL));
}
}
}
_tmp55_ = node;
_tmp56_ = node;
_tmp57_ = amount;
_tmp58_ = node;
_tmp59_ = _tmp58_->_size;
_tmp60_ = amount;
g_memmove (_tmp55_->_data, &_tmp56_->_data[_tmp57_], (gsize) (sizeof (gpointer) * (_tmp59_ - _tmp60_)));
_tmp61_ = drained;
_tmp62_ = amount;
drained = _tmp61_ + _tmp62_;
_tmp63_ = self->priv->_size;
_tmp64_ = amount;
self->priv->_size = _tmp63_ - _tmp64_;
_tmp65_ = node;
_tmp66_ = node;
_tmp67_ = _tmp66_->_size;
_tmp68_ = amount;
_tmp66_->_size = _tmp67_ - _tmp68_;
_tmp69_ = node;
n = _tmp69_;
_tmp70_ = node;
node = NULL;
_gee_unrolled_linked_list_node_free0 (self->priv->_head);
self->priv->_head = _tmp70_;
_tmp72_ = n;
_tmp73_ = _tmp72_->_next;
_tmp74_ = G_LIKELY (_tmp73_ != NULL);
if (_tmp74_) {
GeeUnrolledLinkedListNode* _tmp75_;
gint _tmp76_;
GeeUnrolledLinkedListNode* _tmp77_;
GeeUnrolledLinkedListNode* _tmp78_;
gint _tmp79_;
gboolean _tmp80_;
_tmp75_ = n;
_tmp76_ = _tmp75_->_size;
_tmp77_ = n;
_tmp78_ = _tmp77_->_next;
_tmp79_ = _tmp78_->_size;
_tmp80_ = G_UNLIKELY ((_tmp76_ + _tmp79_) < GEE_UNROLLED_LINKED_LIST_MERGE_THRESHOLD);
_tmp71_ = _tmp80_;
} else {
_tmp71_ = FALSE;
}
if (_tmp71_) {
GeeUnrolledLinkedListNode* _tmp81_;
_tmp81_ = node;
gee_unrolled_linked_list_merge_with_next (self, _tmp81_);
}
_tmp82_ = self->priv->_stamp;
self->priv->_stamp = _tmp82_ + 1;
result = drained;
_gee_unrolled_linked_list_node_free0 (node);
return result;
}
}
}
self->priv->_tail = NULL;
_tmp83_ = self->priv->_stamp;
self->priv->_stamp = _tmp83_ + 1;
result = drained;
_gee_unrolled_linked_list_node_free0 (node);
return result;
}
}
static gboolean gee_unrolled_linked_list_real_offer_head (GeeDeque* base, gconstpointer element) {
GeeUnrolledLinkedList * self;
gboolean result = FALSE;
GeeUnrolledLinkedListNode* _tmp0_;
GeeUnrolledLinkedListNode* _tmp4_;
gconstpointer _tmp5_;
self = (GeeUnrolledLinkedList*) base;
_tmp0_ = self->priv->_head;
if (_tmp0_ == NULL) {
GeeUnrolledLinkedListNode* _tmp1_;
GeeUnrolledLinkedListNode* _tmp2_;
GeeUnrolledLinkedListNode* _tmp3_;
_tmp1_ = self->priv->_tail;
_vala_assert (_tmp1_ == NULL, "_tail == null");
_tmp2_ = gee_unrolled_linked_list_node_new ();
_gee_unrolled_linked_list_node_free0 (self->priv->_head);
self->priv->_head = _tmp2_;
_tmp3_ = self->priv->_head;
self->priv->_tail = _tmp3_;
}
_tmp4_ = self->priv->_head;
_tmp5_ = element;
gee_unrolled_linked_list_add_to_node (self, _tmp4_, _tmp5_, 0, NULL, NULL);
result = TRUE;
return result;
}
static gpointer gee_unrolled_linked_list_real_peek_head (GeeDeque* base) {
GeeUnrolledLinkedList * self;
gpointer result = NULL;
gpointer _tmp0_;
self = (GeeUnrolledLinkedList*) base;
_tmp0_ = gee_queue_peek ((GeeQueue*) self);
result = _tmp0_;
return result;
}
static gpointer gee_unrolled_linked_list_real_poll_head (GeeDeque* base) {
GeeUnrolledLinkedList * self;
gpointer result = NULL;
gpointer _tmp0_;
self = (GeeUnrolledLinkedList*) base;
_tmp0_ = gee_queue_poll ((GeeQueue*) self);
result = _tmp0_;
return result;
}
static gint gee_unrolled_linked_list_real_drain_head (GeeDeque* base, GeeCollection* recipient, gint amount) {
GeeUnrolledLinkedList * self;
gint result = 0;
GeeCollection* _tmp0_;
gint _tmp1_;
gint _tmp2_;
self = (GeeUnrolledLinkedList*) base;
g_return_val_if_fail (recipient != NULL, 0);
_tmp0_ = recipient;
_tmp1_ = amount;
_tmp2_ = gee_queue_drain ((GeeQueue*) self, _tmp0_, _tmp1_);
result = _tmp2_;
return result;
}
static gboolean gee_unrolled_linked_list_real_offer_tail (GeeDeque* base, gconstpointer element) {
GeeUnrolledLinkedList * self;
gboolean result = FALSE;
gconstpointer _tmp0_;
gboolean _tmp1_;
self = (GeeUnrolledLinkedList*) base;
_tmp0_ = element;
_tmp1_ = gee_queue_offer ((GeeQueue*) self, _tmp0_);
result = _tmp1_;
return result;
}
static gpointer gee_unrolled_linked_list_real_peek_tail (GeeDeque* base) {
GeeUnrolledLinkedList * self;
gpointer result = NULL;
GeeUnrolledLinkedListNode* _tmp0_;
self = (GeeUnrolledLinkedList*) base;
_tmp0_ = self->priv->_tail;
if (_tmp0_ != NULL) {
GeeUnrolledLinkedListNode* _tmp1_;
GeeUnrolledLinkedListNode* _tmp2_;
gint _tmp3_;
gconstpointer _tmp4_;
gpointer _tmp5_;
_tmp1_ = self->priv->_tail;
_tmp2_ = self->priv->_tail;
_tmp3_ = _tmp2_->_size;
_tmp4_ = _tmp1_->_data[_tmp3_ - 1];
_tmp5_ = ((_tmp4_ != NULL) && (self->priv->g_dup_func != NULL)) ? self->priv->g_dup_func ((gpointer) _tmp4_) : ((gpointer) _tmp4_);
result = _tmp5_;
return result;
} else {
result = NULL;
return result;
}
}
static gpointer gee_unrolled_linked_list_real_poll_tail (GeeDeque* base) {
GeeUnrolledLinkedList * self;
gpointer result = NULL;
GeeUnrolledLinkedListNode* _tmp0_;
self = (GeeUnrolledLinkedList*) base;
_tmp0_ = self->priv->_head;
if (_tmp0_ != NULL) {
GeeUnrolledLinkedListNode* _tmp1_;
GeeUnrolledLinkedListNode* _tmp2_;
gint _tmp3_;
gpointer _tmp4_;
_tmp1_ = self->priv->_tail;
_tmp2_ = self->priv->_tail;
_tmp3_ = _tmp2_->_size;
_tmp4_ = gee_unrolled_linked_list_remove_from_node (self, _tmp1_, _tmp3_ - 1, NULL, NULL);
result = _tmp4_;
return result;
} else {
result = NULL;
return result;
}
}
static gint gee_unrolled_linked_list_real_drain_tail (GeeDeque* base, GeeCollection* recipient, gint amount) {
GeeUnrolledLinkedList * self;
gint result = 0;
gint drained = 0;
gint _tmp0_;
self = (GeeUnrolledLinkedList*) base;
g_return_val_if_fail (recipient != NULL, 0);
drained = 0;
_tmp0_ = amount;
if (_tmp0_ < 0) {
gint _tmp16_;
gint _tmp17_;
{
GeeUnrolledLinkedListNode* node = NULL;
GeeUnrolledLinkedListNode* _tmp1_;
_tmp1_ = self->priv->_tail;
node = _tmp1_;
{
gboolean _tmp2_ = FALSE;
_tmp2_ = TRUE;
while (TRUE) {
GeeUnrolledLinkedListNode* _tmp5_;
GeeUnrolledLinkedListNode* _tmp15_;
if (!_tmp2_) {
GeeUnrolledLinkedListNode* _tmp3_;
GeeUnrolledLinkedListNode* _tmp4_;
_tmp3_ = node;
_tmp4_ = _tmp3_->_prev;
node = _tmp4_;
}
_tmp2_ = FALSE;
_tmp5_ = node;
if (!(_tmp5_ != NULL)) {
break;
}
{
gint i = 0;
GeeUnrolledLinkedListNode* _tmp6_;
gint _tmp7_;
_tmp6_ = node;
_tmp7_ = _tmp6_->_size;
i = _tmp7_;
{
gboolean _tmp8_ = FALSE;
_tmp8_ = TRUE;
while (TRUE) {
gint _tmp9_;
gpointer data = NULL;
GeeUnrolledLinkedListNode* _tmp10_;
gint _tmp11_;
gpointer _tmp12_;
GeeCollection* _tmp13_;
gconstpointer _tmp14_;
if (!_tmp8_) {
}
_tmp8_ = FALSE;
_tmp9_ = i;
i = _tmp9_ - 1;
if (!(_tmp9_ > 0)) {
break;
}
_tmp10_ = node;
_tmp11_ = i;
_tmp12_ = _tmp10_->_data[_tmp11_];
_tmp10_->_data[_tmp11_] = NULL;
data = _tmp12_;
_tmp13_ = recipient;
_tmp14_ = data;
gee_collection_add (_tmp13_, _tmp14_);
((data == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (data = (self->priv->g_destroy_func (data), NULL));
}
}
}
_tmp15_ = node;
_gee_unrolled_linked_list_node_free0 (_tmp15_->_next);
_tmp15_->_next = NULL;
}
}
}
_tmp16_ = self->priv->_size;
drained = _tmp16_;
_gee_unrolled_linked_list_node_free0 (self->priv->_head);
self->priv->_head = NULL;
self->priv->_tail = NULL;
self->priv->_size = 0;
_tmp17_ = self->priv->_stamp;
self->priv->_stamp = _tmp17_ + 1;
result = drained;
return result;
} else {
gint _tmp79_;
{
GeeUnrolledLinkedListNode* node = NULL;
GeeUnrolledLinkedListNode* _tmp18_;
_tmp18_ = self->priv->_tail;
node = _tmp18_;
{
gboolean _tmp19_ = FALSE;
_tmp19_ = TRUE;
while (TRUE) {
GeeUnrolledLinkedListNode* _tmp20_;
GeeUnrolledLinkedListNode* _tmp21_;
gint _tmp22_;
gint _tmp23_;
if (!_tmp19_) {
}
_tmp19_ = FALSE;
_tmp20_ = node;
if (!(_tmp20_ != NULL)) {
break;
}
_tmp21_ = node;
_tmp22_ = _tmp21_->_size;
_tmp23_ = amount;
if (_tmp22_ <= _tmp23_) {
gint _tmp33_;
GeeUnrolledLinkedListNode* _tmp34_;
gint _tmp35_;
gint _tmp36_;
GeeUnrolledLinkedListNode* _tmp37_;
gint _tmp38_;
gint _tmp39_;
GeeUnrolledLinkedListNode* _tmp40_;
gint _tmp41_;
GeeUnrolledLinkedListNode* _tmp42_;
GeeUnrolledLinkedListNode* _tmp43_;
GeeUnrolledLinkedListNode* _tmp44_;
{
gint i = 0;
GeeUnrolledLinkedListNode* _tmp24_;
gint _tmp25_;
_tmp24_ = node;
_tmp25_ = _tmp24_->_size;
i = _tmp25_;
{
gboolean _tmp26_ = FALSE;
_tmp26_ = TRUE;
while (TRUE) {
gint _tmp27_;
gpointer data = NULL;
GeeUnrolledLinkedListNode* _tmp28_;
gint _tmp29_;
gpointer _tmp30_;
GeeCollection* _tmp31_;
gconstpointer _tmp32_;
if (!_tmp26_) {
}
_tmp26_ = FALSE;
_tmp27_ = i;
i = _tmp27_ - 1;
if (!(_tmp27_ > 0)) {
break;
}
_tmp28_ = node;
_tmp29_ = i;
_tmp30_ = _tmp28_->_data[_tmp29_];
_tmp28_->_data[_tmp29_] = NULL;
data = _tmp30_;
_tmp31_ = recipient;
_tmp32_ = data;
gee_collection_add (_tmp31_, _tmp32_);
((data == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (data = (self->priv->g_destroy_func (data), NULL));
}
}
}
_tmp33_ = amount;
_tmp34_ = node;
_tmp35_ = _tmp34_->_size;
amount = _tmp33_ - _tmp35_;
_tmp36_ = drained;
_tmp37_ = node;
_tmp38_ = _tmp37_->_size;
drained = _tmp36_ + _tmp38_;
_tmp39_ = self->priv->_size;
_tmp40_ = node;
_tmp41_ = _tmp40_->_size;
self->priv->_size = _tmp39_ - _tmp41_;
_tmp42_ = node;
_tmp43_ = _tmp42_->_prev;
node = _tmp43_;
_tmp44_ = node;
if (_tmp44_ != NULL) {
GeeUnrolledLinkedListNode* _tmp45_;
_tmp45_ = node;
_gee_unrolled_linked_list_node_free0 (_tmp45_->_next);
_tmp45_->_next = NULL;
}
} else {
gint _tmp57_;
gint _tmp58_;
gint _tmp59_;
gint _tmp60_;
GeeUnrolledLinkedListNode* _tmp61_;
GeeUnrolledLinkedListNode* _tmp62_;
gint _tmp63_;
gint _tmp64_;
GeeUnrolledLinkedListNode* _tmp65_;
gboolean _tmp66_ = FALSE;
GeeUnrolledLinkedListNode* _tmp67_;
GeeUnrolledLinkedListNode* _tmp68_;
gboolean _tmp69_;
gint _tmp78_;
{
gint i = 0;
i = 0;
{
gboolean _tmp46_ = FALSE;
_tmp46_ = TRUE;
while (TRUE) {
gint _tmp48_;
gint _tmp49_;
gpointer data = NULL;
GeeUnrolledLinkedListNode* _tmp50_;
GeeUnrolledLinkedListNode* _tmp51_;
gint _tmp52_;
gint _tmp53_;
gpointer _tmp54_;
GeeCollection* _tmp55_;
gconstpointer _tmp56_;
if (!_tmp46_) {
gint _tmp47_;
_tmp47_ = i;
i = _tmp47_ + 1;
}
_tmp46_ = FALSE;
_tmp48_ = i;
_tmp49_ = amount;
if (!(_tmp48_ < _tmp49_)) {
break;
}
_tmp50_ = node;
_tmp51_ = node;
_tmp52_ = _tmp51_->_size;
_tmp53_ = i;
_tmp54_ = _tmp50_->_data[(_tmp52_ - _tmp53_) - 1];
_tmp50_->_data[(_tmp52_ - _tmp53_) - 1] = NULL;
data = _tmp54_;
_tmp55_ = recipient;
_tmp56_ = data;
gee_collection_add (_tmp55_, _tmp56_);
((data == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (data = (self->priv->g_destroy_func (data), NULL));
}
}
}
_tmp57_ = drained;
_tmp58_ = amount;
drained = _tmp57_ + _tmp58_;
_tmp59_ = self->priv->_size;
_tmp60_ = amount;
self->priv->_size = _tmp59_ - _tmp60_;
_tmp61_ = node;
_tmp62_ = node;
_tmp63_ = _tmp62_->_size;
_tmp64_ = amount;
_tmp62_->_size = _tmp63_ - _tmp64_;
_tmp65_ = node;
self->priv->_tail = _tmp65_;
_tmp67_ = node;
_tmp68_ = _tmp67_->_prev;
_tmp69_ = G_LIKELY (_tmp68_ != NULL);
if (_tmp69_) {
GeeUnrolledLinkedListNode* _tmp70_;
gint _tmp71_;
GeeUnrolledLinkedListNode* _tmp72_;
GeeUnrolledLinkedListNode* _tmp73_;
gint _tmp74_;
gboolean _tmp75_;
_tmp70_ = node;
_tmp71_ = _tmp70_->_size;
_tmp72_ = node;
_tmp73_ = _tmp72_->_prev;
_tmp74_ = _tmp73_->_size;
_tmp75_ = G_UNLIKELY ((_tmp71_ + _tmp74_) < GEE_UNROLLED_LINKED_LIST_MERGE_THRESHOLD);
_tmp66_ = _tmp75_;
} else {
_tmp66_ = FALSE;
}
if (_tmp66_) {
GeeUnrolledLinkedListNode* _tmp76_;
GeeUnrolledLinkedListNode* _tmp77_;
_tmp76_ = node;
_tmp77_ = _tmp76_->_prev;
gee_unrolled_linked_list_merge_with_next (self, _tmp77_);
}
_tmp78_ = self->priv->_stamp;
self->priv->_stamp = _tmp78_ + 1;
result = drained;
return result;
}
}
}
}
_gee_unrolled_linked_list_node_free0 (self->priv->_head);
self->priv->_head = NULL;
self->priv->_tail = NULL;
_tmp79_ = self->priv->_stamp;
self->priv->_stamp = _tmp79_ + 1;
result = drained;
return result;
}
}
static GeeUnrolledLinkedListNode* gee_unrolled_linked_list_find_node (GeeUnrolledLinkedList* self, gconstpointer item, gint* pos, gint* idx) {
gint _vala_pos = 0;
gint _vala_idx = 0;
GeeUnrolledLinkedListNode* result = NULL;
g_return_val_if_fail (self != NULL, NULL);
_vala_idx = 0;
{
GeeUnrolledLinkedListNode* node = NULL;
GeeUnrolledLinkedListNode* _tmp0_;
_tmp0_ = self->priv->_head;
node = _tmp0_;
{
gboolean _tmp1_ = FALSE;
_tmp1_ = TRUE;
while (TRUE) {
GeeUnrolledLinkedListNode* _tmp4_;
if (!_tmp1_) {
GeeUnrolledLinkedListNode* _tmp2_;
GeeUnrolledLinkedListNode* _tmp3_;
_tmp2_ = node;
_tmp3_ = _tmp2_->_next;
node = _tmp3_;
}
_tmp1_ = FALSE;
_tmp4_ = node;
if (!(_tmp4_ != NULL)) {
break;
}
{
gboolean _tmp5_ = FALSE;
_vala_pos = 0;
_tmp5_ = TRUE;
while (TRUE) {
gint _tmp8_;
GeeUnrolledLinkedListNode* _tmp9_;
gint _tmp10_;
GeeEqualDataFunc _tmp11_;
void* _tmp11__target;
GeeEqualDataFunc _tmp12_;
void* _tmp12__target;
gconstpointer _tmp13_;
GeeUnrolledLinkedListNode* _tmp14_;
gint _tmp15_;
gconstpointer _tmp16_;
gboolean _tmp17_;
if (!_tmp5_) {
gint _tmp6_;
gint _tmp7_;
_tmp6_ = _vala_pos;
_vala_pos = _tmp6_ + 1;
_tmp7_ = _vala_idx;
_vala_idx = _tmp7_ + 1;
}
_tmp5_ = FALSE;
_tmp8_ = _vala_pos;
_tmp9_ = node;
_tmp10_ = _tmp9_->_size;
if (!(_tmp8_ < _tmp10_)) {
break;
}
_tmp11_ = gee_unrolled_linked_list_get_equal_func (self, &_tmp11__target);
_tmp12_ = _tmp11_;
_tmp12__target = _tmp11__target;
_tmp13_ = item;
_tmp14_ = node;
_tmp15_ = _vala_pos;
_tmp16_ = _tmp14_->_data[_tmp15_];
_tmp17_ = _tmp12_ (_tmp13_, _tmp16_, _tmp12__target);
if (_tmp17_) {
GeeUnrolledLinkedListNode* _tmp18_;
_tmp18_ = node;
result = _tmp18_;
if (pos) {
*pos = _vala_pos;
}
if (idx) {
*idx = _vala_idx;
}
return result;
}
}
}
}
}
}
_vala_pos = -1;
result = NULL;
if (pos) {
*pos = _vala_pos;
}
if (idx) {
*idx = _vala_idx;
}
return result;
}
static gint* _int_dup (gint* self) {
gint* dup;
dup = g_new0 (gint, 1);
memcpy (dup, self, sizeof (gint));
return dup;
}
static gpointer __int_dup0 (gpointer self) {
return self ? _int_dup (self) : NULL;
}
static GeeUnrolledLinkedListNode* gee_unrolled_linked_list_find_node_by_idx (GeeUnrolledLinkedList* self, gint idx, gint** pos) {
gint* _vala_pos = NULL;
GeeUnrolledLinkedListNode* result = NULL;
gboolean _tmp0_ = FALSE;
gint _tmp1_;
gint _tmp4_;
gint _tmp5_;
gint _tmp6_;
g_return_val_if_fail (self != NULL, NULL);
_tmp1_ = idx;
if (0 <= _tmp1_) {
gint _tmp2_;
gint _tmp3_;
_tmp2_ = idx;
_tmp3_ = self->priv->_size;
_tmp0_ = _tmp2_ < _tmp3_;
} else {
_tmp0_ = FALSE;
}
_vala_assert (_tmp0_, "0 <= idx && idx < _size");
_tmp4_ = idx;
_tmp5_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) self);
_tmp6_ = _tmp5_;
if (_tmp4_ <= (_tmp6_ / 2)) {
{
GeeUnrolledLinkedListNode* node = NULL;
GeeUnrolledLinkedListNode* _tmp7_;
_tmp7_ = self->priv->_head;
node = _tmp7_;
{
gboolean _tmp8_ = FALSE;
_tmp8_ = TRUE;
while (TRUE) {
GeeUnrolledLinkedListNode* _tmp11_;
gint _tmp12_;
GeeUnrolledLinkedListNode* _tmp13_;
gint _tmp14_;
gint _tmp18_;
GeeUnrolledLinkedListNode* _tmp19_;
gint _tmp20_;
if (!_tmp8_) {
GeeUnrolledLinkedListNode* _tmp9_;
GeeUnrolledLinkedListNode* _tmp10_;
_tmp9_ = node;
_tmp10_ = _tmp9_->_next;
node = _tmp10_;
}
_tmp8_ = FALSE;
_tmp11_ = node;
if (!(_tmp11_ != NULL)) {
break;
}
_tmp12_ = idx;
_tmp13_ = node;
_tmp14_ = _tmp13_->_size;
if (_tmp12_ < _tmp14_) {
gint _tmp15_;
gint* _tmp16_;
GeeUnrolledLinkedListNode* _tmp17_;
_tmp15_ = idx;
_tmp16_ = __int_dup0 (&_tmp15_);
_g_free0 (_vala_pos);
_vala_pos = _tmp16_;
_tmp17_ = node;
result = _tmp17_;
if (pos) {
*pos = _vala_pos;
} else {
_g_free0 (_vala_pos);
}
return result;
}
_tmp18_ = idx;
_tmp19_ = node;
_tmp20_ = _tmp19_->_size;
idx = _tmp18_ - _tmp20_;
}
}
}
} else {
gint start_of_node = 0;
gint _tmp21_;
gint count = 0;
gint _tmp45_;
_tmp21_ = self->priv->_size;
start_of_node = _tmp21_;
count = 0;
{
GeeUnrolledLinkedListNode* node = NULL;
GeeUnrolledLinkedListNode* _tmp22_;
_tmp22_ = self->priv->_tail;
node = _tmp22_;
{
gboolean _tmp23_ = FALSE;
_tmp23_ = TRUE;
while (TRUE) {
GeeUnrolledLinkedListNode* _tmp26_;
gint _tmp27_;
GeeUnrolledLinkedListNode* _tmp28_;
gint _tmp29_;
gint _tmp30_;
GeeUnrolledLinkedListNode* _tmp31_;
gint _tmp32_;
gint _tmp33_;
gint _tmp34_;
if (!_tmp23_) {
GeeUnrolledLinkedListNode* _tmp24_;
GeeUnrolledLinkedListNode* _tmp25_;
_tmp24_ = node;
_tmp25_ = _tmp24_->_prev;
node = _tmp25_;
}
_tmp23_ = FALSE;
_tmp26_ = node;
if (!(_tmp26_ != NULL)) {
break;
}
_tmp27_ = start_of_node;
_tmp28_ = node;
_tmp29_ = _tmp28_->_size;
start_of_node = _tmp27_ - _tmp29_;
_tmp30_ = count;
_tmp31_ = node;
_tmp32_ = _tmp31_->_size;
count = _tmp30_ + _tmp32_;
_tmp33_ = idx;
_tmp34_ = start_of_node;
if (_tmp33_ >= _tmp34_) {
gint _tmp35_;
gint _tmp36_;
gint _tmp37_;
gint* _tmp38_;
gboolean _tmp39_ = FALSE;
gint* _tmp40_;
GeeUnrolledLinkedListNode* _tmp44_;
_tmp35_ = idx;
_tmp36_ = start_of_node;
_tmp37_ = _tmp35_ - _tmp36_;
_tmp38_ = __int_dup0 (&_tmp37_);
_g_free0 (_vala_pos);
_vala_pos = _tmp38_;
_tmp40_ = _vala_pos;
if (0 <= (*_tmp40_)) {
gint* _tmp41_;
GeeUnrolledLinkedListNode* _tmp42_;
gint _tmp43_;
_tmp41_ = _vala_pos;
_tmp42_ = node;
_tmp43_ = _tmp42_->_size;
_tmp39_ = (*_tmp41_) < _tmp43_;
} else {
_tmp39_ = FALSE;
}
_vala_assert (_tmp39_, "0 <= pos && pos < node._size");
_tmp44_ = node;
result = _tmp44_;
if (pos) {
*pos = _vala_pos;
} else {
_g_free0 (_vala_pos);
}
return result;
}
}
}
}
_tmp45_ = start_of_node;
_vala_assert (_tmp45_ == 0, "start_of_node == 0");
}
g_assert_not_reached ();
if (pos) {
*pos = _vala_pos;
} else {
_g_free0 (_vala_pos);
}
}
static void gee_unrolled_linked_list_add_to_node (GeeUnrolledLinkedList* self, GeeUnrolledLinkedListNode* node, gconstpointer item, gint pos, GeeUnrolledLinkedListNode* * new_node, gint* new_pos) {
GeeUnrolledLinkedListNode* _vala_new_node = NULL;
gint _vala_new_pos = 0;
gboolean _tmp0_ = FALSE;
gboolean _tmp1_ = FALSE;
gint _tmp2_;
GeeUnrolledLinkedListNode* _tmp8_;
gint _tmp9_;
gboolean _tmp33_ = FALSE;
gboolean _tmp34_ = FALSE;
gint _tmp35_;
GeeUnrolledLinkedListNode* _tmp41_;
gint _tmp42_;
GeeUnrolledLinkedListNode* _tmp43_;
gint _tmp44_;
GeeUnrolledLinkedListNode* _tmp45_;
gint _tmp46_;
gint _tmp47_;
GeeUnrolledLinkedListNode* _tmp48_;
gint _tmp49_;
GeeUnrolledLinkedListNode* _tmp50_;
gint _tmp51_;
gconstpointer _tmp52_;
gpointer _tmp53_;
gpointer _tmp54_;
GeeUnrolledLinkedListNode* _tmp55_;
gint _tmp56_;
gint _tmp57_;
gint _tmp58_;
GeeUnrolledLinkedListNode* _tmp59_;
gint _tmp60_;
GeeUnrolledLinkedListNode* _tmp61_;
gint _tmp62_;
g_return_if_fail (self != NULL);
g_return_if_fail (node != NULL);
_tmp2_ = pos;
if (0 <= _tmp2_) {
gint _tmp3_;
GeeUnrolledLinkedListNode* _tmp4_;
gint _tmp5_;
_tmp3_ = pos;
_tmp4_ = node;
_tmp5_ = _tmp4_->_size;
_tmp1_ = _tmp3_ <= _tmp5_;
} else {
_tmp1_ = FALSE;
}
if (_tmp1_) {
GeeUnrolledLinkedListNode* _tmp6_;
gint _tmp7_;
_tmp6_ = node;
_tmp7_ = _tmp6_->_size;
_tmp0_ = _tmp7_ <= GEE_UNROLLED_LINKED_LIST_NODE_SIZE;
} else {
_tmp0_ = FALSE;
}
_vala_assert (_tmp0_, "0 <= pos && pos <= node._size && node._size <= NODE_SIZE");
_tmp8_ = node;
_tmp9_ = _tmp8_->_size;
if (_tmp9_ == GEE_UNROLLED_LINKED_LIST_NODE_SIZE) {
GeeUnrolledLinkedListNode* next = NULL;
GeeUnrolledLinkedListNode* _tmp10_;
GeeUnrolledLinkedListNode* _tmp11_;
GeeUnrolledLinkedListNode* _tmp12_;
GeeUnrolledLinkedListNode* _tmp13_;
GeeUnrolledLinkedListNode* _tmp14_;
GeeUnrolledLinkedListNode* _tmp15_;
GeeUnrolledLinkedListNode* _tmp16_;
GeeUnrolledLinkedListNode* _tmp17_;
gboolean _tmp18_;
GeeUnrolledLinkedListNode* _tmp23_;
GeeUnrolledLinkedListNode* _tmp24_;
GeeUnrolledLinkedListNode* _tmp25_;
GeeUnrolledLinkedListNode* _tmp26_;
GeeUnrolledLinkedListNode* _tmp27_;
GeeUnrolledLinkedListNode* _tmp28_;
gint _tmp29_;
_tmp10_ = gee_unrolled_linked_list_node_new ();
next = _tmp10_;
_tmp11_ = next;
_tmp12_ = node;
_tmp13_ = _tmp12_->_next;
_tmp12_->_next = NULL;
_gee_unrolled_linked_list_node_free0 (_tmp11_->_next);
_tmp11_->_next = _tmp13_;
_tmp14_ = next;
_tmp15_ = node;
_tmp14_->_prev = _tmp15_;
_tmp16_ = next;
_tmp17_ = _tmp16_->_next;
_tmp18_ = G_UNLIKELY (_tmp17_ == NULL);
if (_tmp18_) {
GeeUnrolledLinkedListNode* _tmp19_;
_tmp19_ = next;
self->priv->_tail = _tmp19_;
} else {
GeeUnrolledLinkedListNode* _tmp20_;
GeeUnrolledLinkedListNode* _tmp21_;
GeeUnrolledLinkedListNode* _tmp22_;
_tmp20_ = next;
_tmp21_ = _tmp20_->_next;
_tmp22_ = next;
_tmp21_->_prev = _tmp22_;
}
_tmp23_ = next;
_tmp24_ = node;
memcpy (_tmp23_->_data, &_tmp24_->_data[GEE_UNROLLED_LINKED_LIST_SPLIT_POS], (gsize) (sizeof (gpointer) * (GEE_UNROLLED_LINKED_LIST_NODE_SIZE - GEE_UNROLLED_LINKED_LIST_SPLIT_POS)));
_tmp25_ = node;
_tmp25_->_size = GEE_UNROLLED_LINKED_LIST_SPLIT_POS;
_tmp26_ = next;
_tmp26_->_size = GEE_UNROLLED_LINKED_LIST_NODE_SIZE - GEE_UNROLLED_LINKED_LIST_SPLIT_POS;
_tmp27_ = node;
_tmp28_ = next;
next = NULL;
_gee_unrolled_linked_list_node_free0 (_tmp27_->_next);
_tmp27_->_next = _tmp28_;
_tmp29_ = pos;
if (_tmp29_ > GEE_UNROLLED_LINKED_LIST_SPLIT_POS) {
GeeUnrolledLinkedListNode* _tmp30_;
GeeUnrolledLinkedListNode* _tmp31_;
gint _tmp32_;
_tmp30_ = node;
_tmp31_ = _tmp30_->_next;
node = _tmp31_;
_tmp32_ = pos;
pos = _tmp32_ - GEE_UNROLLED_LINKED_LIST_SPLIT_POS;
}
_gee_unrolled_linked_list_node_free0 (next);
}
_tmp35_ = pos;
if (0 <= _tmp35_) {
gint _tmp36_;
GeeUnrolledLinkedListNode* _tmp37_;
gint _tmp38_;
_tmp36_ = pos;
_tmp37_ = node;
_tmp38_ = _tmp37_->_size;
_tmp34_ = _tmp36_ <= _tmp38_;
} else {
_tmp34_ = FALSE;
}
if (_tmp34_) {
GeeUnrolledLinkedListNode* _tmp39_;
gint _tmp40_;
_tmp39_ = node;
_tmp40_ = _tmp39_->_size;
_tmp33_ = _tmp40_ < GEE_UNROLLED_LINKED_LIST_NODE_SIZE;
} else {
_tmp33_ = FALSE;
}
_vala_assert (_tmp33_, "0 <= pos && pos <= node._size && node._size < NODE_SIZE");
_tmp41_ = node;
_tmp42_ = pos;
_tmp43_ = node;
_tmp44_ = pos;
_tmp45_ = node;
_tmp46_ = _tmp45_->_size;
_tmp47_ = pos;
g_memmove (&_tmp41_->_data[_tmp42_ + 1], &_tmp43_->_data[_tmp44_], (gsize) (sizeof (gpointer) * (_tmp46_ - _tmp47_)));
_tmp48_ = node;
_tmp49_ = pos;
memset (&_tmp48_->_data[_tmp49_], 0, (gsize) sizeof (gpointer));
_tmp50_ = node;
_tmp51_ = pos;
_tmp52_ = item;
_tmp53_ = ((_tmp52_ != NULL) && (self->priv->g_dup_func != NULL)) ? self->priv->g_dup_func ((gpointer) _tmp52_) : ((gpointer) _tmp52_);
((_tmp50_->_data[_tmp51_] == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (_tmp50_->_data[_tmp51_] = (self->priv->g_destroy_func (_tmp50_->_data[_tmp51_]), NULL));
_tmp50_->_data[_tmp51_] = _tmp53_;
_tmp54_ = _tmp50_->_data[_tmp51_];
_tmp55_ = node;
_tmp56_ = _tmp55_->_size;
_tmp55_->_size = _tmp56_ + 1;
_tmp57_ = self->priv->_size;
self->priv->_size = _tmp57_ + 1;
_tmp58_ = self->priv->_stamp;
self->priv->_stamp = _tmp58_ + 1;
_tmp59_ = node;
_tmp60_ = _tmp59_->_size;
_vala_assert (_tmp60_ <= GEE_UNROLLED_LINKED_LIST_NODE_SIZE, "node._size <= NODE_SIZE");
_tmp61_ = node;
_vala_new_node = _tmp61_;
_tmp62_ = pos;
_vala_new_pos = _tmp62_;
if (new_node) {
*new_node = _vala_new_node;
}
if (new_pos) {
*new_pos = _vala_new_pos;
}
}
static gpointer gee_unrolled_linked_list_remove_from_node (GeeUnrolledLinkedList* self, GeeUnrolledLinkedListNode* node, gint pos, GeeUnrolledLinkedListNode* * new_node, gint* new_pos) {
GeeUnrolledLinkedListNode* _vala_new_node = NULL;
gint _vala_new_pos = 0;
gpointer result = NULL;
gboolean _tmp0_ = FALSE;
gboolean _tmp1_ = FALSE;
gint _tmp2_;
gpointer item = NULL;
GeeUnrolledLinkedListNode* _tmp7_;
gint _tmp8_;
gpointer _tmp9_;
GeeUnrolledLinkedListNode* _tmp10_;
gint _tmp11_;
GeeUnrolledLinkedListNode* _tmp12_;
gint _tmp13_;
GeeUnrolledLinkedListNode* _tmp14_;
gint _tmp15_;
gint _tmp16_;
GeeUnrolledLinkedListNode* _tmp17_;
gint _tmp18_;
gint _tmp19_;
gint _tmp20_;
GeeUnrolledLinkedListNode* _tmp21_;
gint _tmp22_;
gint _tmp23_;
GeeUnrolledLinkedListNode* _tmp24_;
gint _tmp25_;
gboolean _tmp26_;
g_return_val_if_fail (self != NULL, NULL);
g_return_val_if_fail (node != NULL, NULL);
_tmp2_ = pos;
if (0 <= _tmp2_) {
gint _tmp3_;
GeeUnrolledLinkedListNode* _tmp4_;
gint _tmp5_;
_tmp3_ = pos;
_tmp4_ = node;
_tmp5_ = _tmp4_->_size;
_tmp1_ = _tmp3_ <= _tmp5_;
} else {
_tmp1_ = FALSE;
}
if (_tmp1_) {
gint _tmp6_;
_tmp6_ = pos;
_tmp0_ = _tmp6_ <= GEE_UNROLLED_LINKED_LIST_NODE_SIZE;
} else {
_tmp0_ = FALSE;
}
_vala_assert (_tmp0_, "(0 <= pos && pos <= node._size) && pos <= NODE_SIZE");
_tmp7_ = node;
_tmp8_ = pos;
_tmp9_ = _tmp7_->_data[_tmp8_];
_tmp7_->_data[_tmp8_] = NULL;
item = _tmp9_;
_tmp10_ = node;
_tmp11_ = pos;
_tmp12_ = node;
_tmp13_ = pos;
_tmp14_ = node;
_tmp15_ = _tmp14_->_size;
_tmp16_ = pos;
g_memmove (&_tmp10_->_data[_tmp11_], &_tmp12_->_data[_tmp13_ + 1], (gsize) (sizeof (gpointer) * (_tmp15_ - (_tmp16_ + 1))));
_tmp17_ = node;
_tmp18_ = _tmp17_->_size;
_tmp17_->_size = _tmp18_ - 1;
_tmp19_ = self->priv->_size;
self->priv->_size = _tmp19_ - 1;
_tmp20_ = self->priv->_stamp;
self->priv->_stamp = _tmp20_ + 1;
_tmp21_ = node;
_tmp22_ = _tmp21_->_size;
_vala_assert (_tmp22_ >= 0, "node._size >= 0");
_tmp23_ = self->priv->_size;
_vala_assert (_tmp23_ >= 0, "_size >= 0");
_tmp24_ = node;
_tmp25_ = _tmp24_->_size;
_tmp26_ = G_UNLIKELY (_tmp25_ == 0);
if (_tmp26_) {
GeeUnrolledLinkedListNode* _tmp27_;
GeeUnrolledLinkedListNode* _tmp28_;
GeeUnrolledLinkedListNode* _tmp29_;
GeeUnrolledLinkedListNode* _tmp30_;
gboolean _tmp31_;
GeeUnrolledLinkedListNode* _tmp35_;
_tmp27_ = node;
_tmp28_ = _tmp27_->_prev;
_vala_new_node = _tmp28_;
_tmp29_ = node;
_tmp30_ = _tmp29_->_prev;
_tmp31_ = G_LIKELY (_tmp30_ != NULL);
if (_tmp31_) {
GeeUnrolledLinkedListNode* _tmp32_;
GeeUnrolledLinkedListNode* _tmp33_;
gint _tmp34_;
_tmp32_ = node;
_tmp33_ = _tmp32_->_prev;
_tmp34_ = _tmp33_->_size;
_vala_new_pos = _tmp34_ - 1;
} else {
_vala_new_pos = -1;
}
_tmp35_ = node;
gee_unrolled_linked_list_delete_node (self, _tmp35_);
} else {
gboolean _tmp36_ = FALSE;
GeeUnrolledLinkedListNode* _tmp37_;
GeeUnrolledLinkedListNode* _tmp38_;
gboolean _tmp39_;
_tmp37_ = node;
_tmp38_ = _tmp37_->_prev;
_tmp39_ = G_LIKELY (_tmp38_ != NULL);
if (_tmp39_) {
GeeUnrolledLinkedListNode* _tmp40_;
gint _tmp41_;
GeeUnrolledLinkedListNode* _tmp42_;
GeeUnrolledLinkedListNode* _tmp43_;
gint _tmp44_;
gboolean _tmp45_;
_tmp40_ = node;
_tmp41_ = _tmp40_->_size;
_tmp42_ = node;
_tmp43_ = _tmp42_->_prev;
_tmp44_ = _tmp43_->_size;
_tmp45_ = G_UNLIKELY ((_tmp41_ + _tmp44_) < GEE_UNROLLED_LINKED_LIST_MERGE_THRESHOLD);
_tmp36_ = _tmp45_;
} else {
_tmp36_ = FALSE;
}
if (_tmp36_) {
GeeUnrolledLinkedListNode* _tmp46_;
GeeUnrolledLinkedListNode* _tmp47_;
GeeUnrolledLinkedListNode* _tmp48_;
GeeUnrolledLinkedListNode* _tmp49_;
gint _tmp50_;
gint _tmp51_;
GeeUnrolledLinkedListNode* _tmp52_;
GeeUnrolledLinkedListNode* _tmp53_;
_tmp46_ = node;
_tmp47_ = _tmp46_->_prev;
_vala_new_node = _tmp47_;
_tmp48_ = node;
_tmp49_ = _tmp48_->_prev;
_tmp50_ = _tmp49_->_size;
_tmp51_ = pos;
_vala_new_pos = (_tmp50_ + _tmp51_) - 1;
_tmp52_ = node;
_tmp53_ = _tmp52_->_prev;
gee_unrolled_linked_list_merge_with_next (self, _tmp53_);
} else {
gboolean _tmp54_ = FALSE;
GeeUnrolledLinkedListNode* _tmp55_;
GeeUnrolledLinkedListNode* _tmp56_;
gboolean _tmp57_;
_tmp55_ = node;
_tmp56_ = _tmp55_->_next;
_tmp57_ = G_LIKELY (_tmp56_ != NULL);
if (_tmp57_) {
GeeUnrolledLinkedListNode* _tmp58_;
gint _tmp59_;
GeeUnrolledLinkedListNode* _tmp60_;
GeeUnrolledLinkedListNode* _tmp61_;
gint _tmp62_;
gboolean _tmp63_;
_tmp58_ = node;
_tmp59_ = _tmp58_->_size;
_tmp60_ = node;
_tmp61_ = _tmp60_->_next;
_tmp62_ = _tmp61_->_size;
_tmp63_ = G_UNLIKELY ((_tmp59_ + _tmp62_) < GEE_UNROLLED_LINKED_LIST_MERGE_THRESHOLD);
_tmp54_ = _tmp63_;
} else {
_tmp54_ = FALSE;
}
if (_tmp54_) {
GeeUnrolledLinkedListNode* _tmp64_;
GeeUnrolledLinkedListNode* _tmp65_;
gint _tmp66_;
_tmp64_ = node;
gee_unrolled_linked_list_merge_with_next (self, _tmp64_);
_tmp65_ = node;
_vala_new_node = _tmp65_;
_tmp66_ = pos;
_vala_new_pos = _tmp66_ - 1;
} else {
gint _tmp67_;
_tmp67_ = pos;
if (_tmp67_ != 0) {
GeeUnrolledLinkedListNode* _tmp68_;
gint _tmp69_;
_tmp68_ = node;
_vala_new_node = _tmp68_;
_tmp69_ = pos;
_vala_new_pos = _tmp69_ - 1;
} else {
GeeUnrolledLinkedListNode* _tmp70_;
GeeUnrolledLinkedListNode* _tmp71_;
GeeUnrolledLinkedListNode* _tmp72_;
GeeUnrolledLinkedListNode* _tmp73_;
gboolean _tmp74_;
_tmp70_ = node;
_tmp71_ = _tmp70_->_prev;
_vala_new_node = _tmp71_;
_tmp72_ = node;
_tmp73_ = _tmp72_->_prev;
_tmp74_ = G_LIKELY (_tmp73_ != NULL);
if (_tmp74_) {
GeeUnrolledLinkedListNode* _tmp75_;
GeeUnrolledLinkedListNode* _tmp76_;
gint _tmp77_;
_tmp75_ = node;
_tmp76_ = _tmp75_->_prev;
_tmp77_ = _tmp76_->_size;
_vala_new_pos = _tmp77_ - 1;
} else {
_vala_new_pos = -1;
}
}
}
}
}
result = item;
if (new_node) {
*new_node = _vala_new_node;
}
if (new_pos) {
*new_pos = _vala_new_pos;
}
return result;
}
static void gee_unrolled_linked_list_merge_with_next (GeeUnrolledLinkedList* self, GeeUnrolledLinkedListNode* node) {
GeeUnrolledLinkedListNode* _tmp0_;
GeeUnrolledLinkedListNode* _tmp1_;
GeeUnrolledLinkedListNode* _tmp2_;
gint _tmp3_;
GeeUnrolledLinkedListNode* _tmp4_;
GeeUnrolledLinkedListNode* _tmp5_;
gint _tmp6_;
GeeUnrolledLinkedListNode* next = NULL;
GeeUnrolledLinkedListNode* _tmp7_;
GeeUnrolledLinkedListNode* _tmp8_;
GeeUnrolledLinkedListNode* _tmp9_;
GeeUnrolledLinkedListNode* _tmp10_;
gint _tmp11_;
gint _tmp12_;
GeeUnrolledLinkedListNode* _tmp13_;
GeeUnrolledLinkedListNode* _tmp14_;
gint _tmp15_;
gint _tmp16_;
GeeUnrolledLinkedListNode* _tmp17_;
gint _tmp18_;
g_return_if_fail (self != NULL);
_tmp0_ = node;
_tmp1_ = _tmp0_->_next;
_vala_assert (_tmp1_ != NULL, "node._next != null");
_tmp2_ = node;
_tmp3_ = _tmp2_->_size;
_tmp4_ = node;
_tmp5_ = _tmp4_->_next;
_tmp6_ = _tmp5_->_size;
_vala_assert ((_tmp3_ + _tmp6_) <= GEE_UNROLLED_LINKED_LIST_NODE_SIZE, "node._size + node._next._size <= NODE_SIZE");
_tmp7_ = node;
_tmp8_ = _tmp7_->_next;
next = _tmp8_;
_tmp9_ = node;
_tmp10_ = node;
_tmp11_ = _tmp10_->_size;
_tmp12_ = next->_size;
memcpy (&_tmp9_->_data[_tmp11_], next->_data, (gsize) (sizeof (gpointer) * _tmp12_));
_tmp13_ = node;
_tmp14_ = node;
_tmp15_ = _tmp14_->_size;
_tmp16_ = next->_size;
_tmp14_->_size = _tmp15_ + _tmp16_;
_tmp17_ = node;
_tmp18_ = _tmp17_->_size;
_vala_assert (_tmp18_ <= GEE_UNROLLED_LINKED_LIST_NODE_SIZE, "node._size <= NODE_SIZE");
gee_unrolled_linked_list_delete_node (self, next);
}
static void gee_unrolled_linked_list_delete_node (GeeUnrolledLinkedList* self, GeeUnrolledLinkedListNode* node) {
GeeUnrolledLinkedListNode* _tmp0_;
GeeUnrolledLinkedListNode* _tmp1_;
gboolean _tmp2_;
GeeUnrolledLinkedListNode* _tmp9_;
GeeUnrolledLinkedListNode* _tmp10_;
gboolean _tmp11_;
g_return_if_fail (self != NULL);
_tmp0_ = node;
_tmp1_ = _tmp0_->_next;
_tmp2_ = G_LIKELY (_tmp1_ != NULL);
if (_tmp2_) {
GeeUnrolledLinkedListNode* _tmp3_;
GeeUnrolledLinkedListNode* _tmp4_;
GeeUnrolledLinkedListNode* _tmp5_;
GeeUnrolledLinkedListNode* _tmp6_;
_tmp3_ = node;
_tmp4_ = _tmp3_->_next;
_tmp5_ = node;
_tmp6_ = _tmp5_->_prev;
_tmp4_->_prev = _tmp6_;
} else {
GeeUnrolledLinkedListNode* _tmp7_;
GeeUnrolledLinkedListNode* _tmp8_;
_tmp7_ = node;
_tmp8_ = _tmp7_->_prev;
self->priv->_tail = _tmp8_;
}
_tmp9_ = node;
_tmp10_ = _tmp9_->_prev;
_tmp11_ = G_LIKELY (_tmp10_ != NULL);
if (_tmp11_) {
GeeUnrolledLinkedListNode* _tmp12_;
GeeUnrolledLinkedListNode* _tmp13_;
GeeUnrolledLinkedListNode* _tmp14_;
GeeUnrolledLinkedListNode* _tmp15_;
_tmp12_ = node;
_tmp13_ = _tmp12_->_prev;
_tmp14_ = node;
_tmp15_ = _tmp14_->_next;
_tmp14_->_next = NULL;
_gee_unrolled_linked_list_node_free0 (_tmp13_->_next);
_tmp13_->_next = _tmp15_;
} else {
GeeUnrolledLinkedListNode* _tmp16_;
GeeUnrolledLinkedListNode* _tmp17_;
_tmp16_ = node;
_tmp17_ = _tmp16_->_next;
_tmp16_->_next = NULL;
_gee_unrolled_linked_list_node_free0 (self->priv->_head);
self->priv->_head = _tmp17_;
}
}
GeeEqualDataFunc gee_unrolled_linked_list_get_equal_func (GeeUnrolledLinkedList* self, gpointer* result_target) {
GeeEqualDataFunc result;
GeeFunctionsEqualDataFuncClosure* _tmp0_;
GeeEqualDataFunc _tmp1_;
void* _tmp1__target;
GeeEqualDataFunc _tmp2_;
void* _tmp2__target;
g_return_val_if_fail (self != NULL, NULL);
_tmp0_ = self->priv->_equal_func;
_tmp1_ = _tmp0_->func;
_tmp1__target = _tmp0_->func_target;
_tmp2_ = _tmp1_;
_tmp2__target = _tmp1__target;
*result_target = _tmp2__target;
result = _tmp2_;
return result;
}
static void gee_unrolled_linked_list_set_equal_func (GeeUnrolledLinkedList* self, GeeEqualDataFunc value, gpointer value_target) {
g_return_if_fail (self != NULL);
}
static gint gee_unrolled_linked_list_real_get_size (GeeAbstractCollection* base) {
gint result;
GeeUnrolledLinkedList* self;
gint _tmp0_;
self = (GeeUnrolledLinkedList*) base;
_tmp0_ = self->priv->_size;
result = _tmp0_;
return result;
}
static gboolean gee_unrolled_linked_list_real_get_read_only (GeeAbstractCollection* base) {
gboolean result;
GeeUnrolledLinkedList* self;
self = (GeeUnrolledLinkedList*) base;
result = FALSE;
return result;
}
static gint gee_unrolled_linked_list_real_get_capacity (GeeQueue* base) {
gint result;
GeeUnrolledLinkedList* self;
self = (GeeUnrolledLinkedList*) base;
result = GEE_QUEUE_UNBOUNDED_CAPACITY;
return result;
}
static gint gee_unrolled_linked_list_real_get_remaining_capacity (GeeQueue* base) {
gint result;
GeeUnrolledLinkedList* self;
self = (GeeUnrolledLinkedList*) base;
result = GEE_QUEUE_UNBOUNDED_CAPACITY;
return result;
}
static gboolean gee_unrolled_linked_list_real_get_is_full (GeeQueue* base) {
gboolean result;
GeeUnrolledLinkedList* self;
self = (GeeUnrolledLinkedList*) base;
result = FALSE;
return result;
}
static gpointer _g_object_ref0 (gpointer self) {
return self ? g_object_ref (self) : NULL;
}
static GeeUnrolledLinkedListIterator* gee_unrolled_linked_list_iterator_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeUnrolledLinkedList* list) {
GeeUnrolledLinkedListIterator * self = NULL;
GeeUnrolledLinkedList* _tmp0_;
GeeUnrolledLinkedList* _tmp1_;
GeeUnrolledLinkedList* _tmp2_;
gint _tmp3_;
g_return_val_if_fail (list != NULL, NULL);
self = (GeeUnrolledLinkedListIterator*) g_object_new (object_type, NULL);
self->priv->g_type = g_type;
self->priv->g_dup_func = g_dup_func;
self->priv->g_destroy_func = g_destroy_func;
_tmp0_ = list;
_tmp1_ = _g_object_ref0 (_tmp0_);
_g_object_unref0 (self->priv->_list);
self->priv->_list = _tmp1_;
_tmp2_ = list;
_tmp3_ = _tmp2_->priv->_stamp;
self->priv->_stamp = _tmp3_;
return self;
}
static GeeUnrolledLinkedListIterator* gee_unrolled_linked_list_iterator_new (GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeUnrolledLinkedList* list) {
return gee_unrolled_linked_list_iterator_construct (GEE_UNROLLED_LINKED_LIST_TYPE_ITERATOR, g_type, g_dup_func, g_destroy_func, list);
}
static GeeUnrolledLinkedListIterator* gee_unrolled_linked_list_iterator_construct_from_iterator (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeUnrolledLinkedListIterator* iter) {
GeeUnrolledLinkedListIterator * self = NULL;
GeeUnrolledLinkedListIterator* _tmp0_;
GeeUnrolledLinkedList* _tmp1_;
GeeUnrolledLinkedList* _tmp2_;
GeeUnrolledLinkedListIterator* _tmp3_;
gint _tmp4_;
GeeUnrolledLinkedListIterator* _tmp5_;
GeeUnrolledLinkedListNode* _tmp6_;
GeeUnrolledLinkedListIterator* _tmp7_;
gint _tmp8_;
GeeUnrolledLinkedListIterator* _tmp9_;
gboolean _tmp10_;
GeeUnrolledLinkedListIterator* _tmp11_;
gint _tmp12_;
g_return_val_if_fail (iter != NULL, NULL);
self = (GeeUnrolledLinkedListIterator*) g_object_new (object_type, NULL);
self->priv->g_type = g_type;
self->priv->g_dup_func = g_dup_func;
self->priv->g_destroy_func = g_destroy_func;
_tmp0_ = iter;
_tmp1_ = _tmp0_->priv->_list;
_tmp2_ = _g_object_ref0 (_tmp1_);
_g_object_unref0 (self->priv->_list);
self->priv->_list = _tmp2_;
_tmp3_ = iter;
_tmp4_ = _tmp3_->priv->_stamp;
self->priv->_stamp = _tmp4_;
_tmp5_ = iter;
_tmp6_ = _tmp5_->priv->_current;
self->priv->_current = _tmp6_;
_tmp7_ = iter;
_tmp8_ = _tmp7_->priv->_pos;
self->priv->_pos = _tmp8_;
_tmp9_ = iter;
_tmp10_ = _tmp9_->priv->_deleted;
self->priv->_deleted = _tmp10_;
_tmp11_ = iter;
_tmp12_ = _tmp11_->priv->_index;
self->priv->_index = _tmp12_;
return self;
}
static GeeUnrolledLinkedListIterator* gee_unrolled_linked_list_iterator_new_from_iterator (GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeUnrolledLinkedListIterator* iter) {
return gee_unrolled_linked_list_iterator_construct_from_iterator (GEE_UNROLLED_LINKED_LIST_TYPE_ITERATOR, g_type, g_dup_func, g_destroy_func, iter);
}
static gboolean gee_unrolled_linked_list_iterator_real_foreach (GeeTraversable* base, GeeForallFunc f, void* f_target) {
GeeUnrolledLinkedListIterator * self;
gboolean result = FALSE;
GeeUnrolledLinkedList* _tmp0_;
gint _tmp1_;
gint _tmp2_;
gboolean _tmp3_ = FALSE;
GeeUnrolledLinkedListNode* _tmp4_;
gboolean _tmp6_ = FALSE;
GeeUnrolledLinkedListNode* _tmp7_;
GeeUnrolledLinkedListNode* current = NULL;
GeeUnrolledLinkedListNode* _tmp13_;
GeeUnrolledLinkedListNode* prev = NULL;
gint pos = 0;
gint _tmp14_;
gint prev_pos = 0;
gint index = 0;
gint _tmp15_;
gint prev_index = 0;
gboolean deleted = FALSE;
gboolean _tmp16_;
GeeUnrolledLinkedListNode* _tmp17_;
GeeUnrolledLinkedListNode* _tmp62_;
gint _tmp63_;
gboolean _tmp64_;
gint _tmp65_;
self = (GeeUnrolledLinkedListIterator*) base;
_tmp0_ = self->priv->_list;
_tmp1_ = _tmp0_->priv->_stamp;
_tmp2_ = self->priv->_stamp;
_vala_assert (_tmp1_ == _tmp2_, "_list._stamp == _stamp");
_tmp4_ = self->priv->_current;
if (!(_tmp4_ == NULL)) {
_tmp3_ = TRUE;
} else {
gint _tmp5_;
_tmp5_ = self->priv->_pos;
_tmp3_ = _tmp5_ == -1;
}
_vala_assert (_tmp3_, "!(_current == null) || _pos == -1");
_tmp7_ = self->priv->_current;
if (!(_tmp7_ != NULL)) {
_tmp6_ = TRUE;
} else {
gboolean _tmp8_ = FALSE;
gint _tmp9_;
_tmp9_ = self->priv->_pos;
if (0 <= _tmp9_) {
gint _tmp10_;
GeeUnrolledLinkedListNode* _tmp11_;
gint _tmp12_;
_tmp10_ = self->priv->_pos;
_tmp11_ = self->priv->_current;
_tmp12_ = _tmp11_->_size;
_tmp8_ = _tmp10_ <= _tmp12_;
} else {
_tmp8_ = FALSE;
}
_tmp6_ = _tmp8_;
}
_vala_assert (_tmp6_, "!(_current != null) || (0 <= _pos && _pos <= _current._size)");
_tmp13_ = self->priv->_current;
current = _tmp13_;
prev = NULL;
_tmp14_ = self->priv->_pos;
pos = _tmp14_;
prev_pos = -1;
_tmp15_ = self->priv->_index;
index = _tmp15_;
prev_index = -1;
_tmp16_ = self->priv->_deleted;
deleted = _tmp16_;
_tmp17_ = current;
if (_tmp17_ == NULL) {
GeeUnrolledLinkedList* _tmp18_;
GeeUnrolledLinkedListNode* _tmp19_;
GeeUnrolledLinkedListNode* _tmp20_;
gboolean _tmp21_;
_tmp18_ = self->priv->_list;
_tmp19_ = _tmp18_->priv->_head;
current = _tmp19_;
pos = 0;
deleted = FALSE;
index = 0;
_tmp20_ = current;
_tmp21_ = G_UNLIKELY (_tmp20_ == NULL);
if (_tmp21_) {
result = TRUE;
return result;
}
} else {
gboolean _tmp22_;
gboolean _tmp23_;
_tmp22_ = deleted;
_tmp23_ = G_UNLIKELY (_tmp22_);
if (_tmp23_) {
GeeUnrolledLinkedListNode* _tmp24_;
gint _tmp25_;
gint _tmp26_;
gboolean _tmp27_;
_tmp24_ = self->priv->_current;
_tmp25_ = _tmp24_->_size;
_tmp26_ = self->priv->_pos;
_tmp27_ = G_UNLIKELY (_tmp25_ == (_tmp26_ + 1));
if (_tmp27_) {
GeeUnrolledLinkedListNode* _tmp28_;
GeeUnrolledLinkedListNode* _tmp29_;
gboolean _tmp30_;
GeeUnrolledLinkedListNode* _tmp31_;
GeeUnrolledLinkedListNode* _tmp32_;
GeeUnrolledLinkedListNode* _tmp33_;
gint _tmp34_;
gint _tmp35_;
_tmp28_ = self->priv->_current;
_tmp29_ = _tmp28_->_next;
_tmp30_ = G_UNLIKELY (_tmp29_ != NULL);
if (_tmp30_) {
result = TRUE;
return result;
}
_tmp31_ = current;
prev = _tmp31_;
_tmp32_ = self->priv->_current;
_tmp33_ = _tmp32_->_next;
current = _tmp33_;
_tmp34_ = pos;
prev_pos = _tmp34_;
pos = 0;
deleted = FALSE;
_tmp35_ = index;
index = _tmp35_ + 1;
prev_index = _tmp35_;
} else {
GeeUnrolledLinkedListNode* _tmp36_;
gint _tmp37_;
gint _tmp38_;
_tmp36_ = current;
prev = _tmp36_;
_tmp37_ = pos;
pos = _tmp37_ + 1;
prev_pos = _tmp37_;
deleted = FALSE;
_tmp38_ = index;
index = _tmp38_ + 1;
prev_index = _tmp38_;
}
}
}
{
gboolean _tmp39_ = FALSE;
_tmp39_ = TRUE;
while (TRUE) {
GeeUnrolledLinkedListNode* _tmp43_;
gint size = 0;
GeeUnrolledLinkedListNode* _tmp44_;
gint _tmp45_;
if (!_tmp39_) {
GeeUnrolledLinkedListNode* _tmp40_;
GeeUnrolledLinkedListNode* _tmp41_;
GeeUnrolledLinkedListNode* _tmp42_;
_tmp40_ = current;
prev = _tmp40_;
_tmp41_ = current;
_tmp42_ = _tmp41_->_next;
current = _tmp42_;
pos = 0;
}
_tmp39_ = FALSE;
_tmp43_ = current;
if (!(_tmp43_ != NULL)) {
break;
}
_tmp44_ = current;
_tmp45_ = _tmp44_->_size;
size = _tmp45_;
{
gboolean _tmp46_ = FALSE;
_tmp46_ = TRUE;
while (TRUE) {
gint _tmp50_;
gint _tmp51_;
GeeForallFunc _tmp52_;
void* _tmp52__target;
GeeUnrolledLinkedListNode* _tmp53_;
gint _tmp54_;
gconstpointer _tmp55_;
gpointer _tmp56_;
gboolean _tmp57_;
if (!_tmp46_) {
GeeUnrolledLinkedListNode* _tmp47_;
gint _tmp48_;
gint _tmp49_;
_tmp47_ = current;
prev = _tmp47_;
_tmp48_ = pos;
pos = _tmp48_ + 1;
prev_pos = _tmp48_;
_tmp49_ = index;
index = _tmp49_ + 1;
prev_index = _tmp49_;
}
_tmp46_ = FALSE;
_tmp50_ = pos;
_tmp51_ = size;
if (!(_tmp50_ < _tmp51_)) {
break;
}
deleted = FALSE;
_tmp52_ = f;
_tmp52__target = f_target;
_tmp53_ = current;
_tmp54_ = pos;
_tmp55_ = _tmp53_->_data[_tmp54_];
_tmp56_ = ((_tmp55_ != NULL) && (self->priv->g_dup_func != NULL)) ? self->priv->g_dup_func ((gpointer) _tmp55_) : ((gpointer) _tmp55_);
_tmp57_ = _tmp52_ (_tmp56_, _tmp52__target);
if (!_tmp57_) {
GeeUnrolledLinkedListNode* _tmp58_;
gint _tmp59_;
gboolean _tmp60_;
gint _tmp61_;
_tmp58_ = current;
self->priv->_current = _tmp58_;
_tmp59_ = pos;
self->priv->_pos = _tmp59_;
_tmp60_ = deleted;
self->priv->_deleted = _tmp60_;
_tmp61_ = index;
self->priv->_index = _tmp61_;
result = FALSE;
return result;
}
}
}
}
}
_tmp62_ = prev;
self->priv->_current = _tmp62_;
_tmp63_ = prev_pos;
self->priv->_pos = _tmp63_;
_tmp64_ = deleted;
self->priv->_deleted = _tmp64_;
_tmp65_ = prev_index;
self->priv->_index = _tmp65_;
result = TRUE;
return result;
}
static GeeIterator** gee_unrolled_linked_list_iterator_real_tee (GeeTraversable* base, guint forks, int* result_length1) {
GeeUnrolledLinkedListIterator * self;
GeeIterator** result = NULL;
guint _tmp0_;
self = (GeeUnrolledLinkedListIterator*) base;
_tmp0_ = forks;
if (_tmp0_ == ((guint) 0)) {
GeeIterator** _tmp1_;
GeeIterator** _tmp2_;
gint _tmp2__length1;
_tmp1_ = g_new0 (GeeIterator*, 0 + 1);
_tmp2_ = _tmp1_;
_tmp2__length1 = 0;
if (result_length1) {
*result_length1 = _tmp2__length1;
}
result = _tmp2_;
return result;
} else {
GeeIterator** _result_ = NULL;
guint _tmp3_;
GeeIterator** _tmp4_;
gint _result__length1;
gint __result__size_;
GeeIterator** _tmp5_;
gint _tmp5__length1;
GeeIterator* _tmp6_;
GeeIterator* _tmp7_;
GeeIterator** _tmp16_;
gint _tmp16__length1;
_tmp3_ = forks;
_tmp4_ = g_new0 (GeeIterator*, _tmp3_ + 1);
_result_ = _tmp4_;
_result__length1 = _tmp3_;
__result__size_ = _result__length1;
_tmp5_ = _result_;
_tmp5__length1 = _result__length1;
_tmp6_ = _g_object_ref0 ((GeeIterator*) self);
_g_object_unref0 (_tmp5_[0]);
_tmp5_[0] = _tmp6_;
_tmp7_ = _tmp5_[0];
{
guint i = 0U;
i = (guint) 1;
{
gboolean _tmp8_ = FALSE;
_tmp8_ = TRUE;
while (TRUE) {
guint _tmp10_;
guint _tmp11_;
GeeIterator** _tmp12_;
gint _tmp12__length1;
guint _tmp13_;
GeeUnrolledLinkedListIterator* _tmp14_;
GeeIterator* _tmp15_;
if (!_tmp8_) {
guint _tmp9_;
_tmp9_ = i;
i = _tmp9_ + 1;
}
_tmp8_ = FALSE;
_tmp10_ = i;
_tmp11_ = forks;
if (!(_tmp10_ < _tmp11_)) {
break;
}
_tmp12_ = _result_;
_tmp12__length1 = _result__length1;
_tmp13_ = i;
_tmp14_ = gee_unrolled_linked_list_iterator_new_from_iterator (self->priv->g_type, (GBoxedCopyFunc) self->priv->g_dup_func, (GDestroyNotify) self->priv->g_destroy_func, self);
_g_object_unref0 (_tmp12_[_tmp13_]);
_tmp12_[_tmp13_] = (GeeIterator*) _tmp14_;
_tmp15_ = _tmp12_[_tmp13_];
}
}
}
_tmp16_ = _result_;
_tmp16__length1 = _result__length1;
if (result_length1) {
*result_length1 = _tmp16__length1;
}
result = _tmp16_;
return result;
}
}
static gboolean gee_unrolled_linked_list_iterator_real_next (GeeIterator* base) {
GeeUnrolledLinkedListIterator * self;
gboolean result = FALSE;
GeeUnrolledLinkedList* _tmp0_;
gint _tmp1_;
gint _tmp2_;
gboolean _tmp3_ = FALSE;
GeeUnrolledLinkedListNode* _tmp4_;
gboolean _tmp6_ = FALSE;
GeeUnrolledLinkedListNode* _tmp7_;
GeeUnrolledLinkedListNode* _tmp13_;
gboolean _tmp14_;
self = (GeeUnrolledLinkedListIterator*) base;
_tmp0_ = self->priv->_list;
_tmp1_ = _tmp0_->priv->_stamp;
_tmp2_ = self->priv->_stamp;
_vala_assert (_tmp1_ == _tmp2_, "_list._stamp == _stamp");
_tmp4_ = self->priv->_current;
if (!(_tmp4_ == NULL)) {
_tmp3_ = TRUE;
} else {
gint _tmp5_;
_tmp5_ = self->priv->_pos;
_tmp3_ = _tmp5_ == -1;
}
_vala_assert (_tmp3_, "!(_current == null) || _pos == -1");
_tmp7_ = self->priv->_current;
if (!(_tmp7_ != NULL)) {
_tmp6_ = TRUE;
} else {
gboolean _tmp8_ = FALSE;
gint _tmp9_;
_tmp9_ = self->priv->_pos;
if (0 <= _tmp9_) {
gint _tmp10_;
GeeUnrolledLinkedListNode* _tmp11_;
gint _tmp12_;
_tmp10_ = self->priv->_pos;
_tmp11_ = self->priv->_current;
_tmp12_ = _tmp11_->_size;
_tmp8_ = _tmp10_ <= _tmp12_;
} else {
_tmp8_ = FALSE;
}
_tmp6_ = _tmp8_;
}
_vala_assert (_tmp6_, "!(_current != null) || (0 <= _pos && _pos <= _current._size)");
_tmp13_ = self->priv->_current;
_tmp14_ = G_UNLIKELY (_tmp13_ == NULL);
if (_tmp14_) {
GeeUnrolledLinkedList* _tmp15_;
GeeUnrolledLinkedListNode* _tmp16_;
GeeUnrolledLinkedListNode* _tmp17_;
GeeUnrolledLinkedListNode* _tmp18_;
_tmp15_ = self->priv->_list;
_tmp16_ = _tmp15_->priv->_head;
self->priv->_current = _tmp16_;
_tmp17_ = self->priv->_current;
if (_tmp17_ != NULL) {
self->priv->_pos = 0;
self->priv->_deleted = FALSE;
self->priv->_index = 0;
}
_tmp18_ = self->priv->_current;
result = _tmp18_ != NULL;
return result;
} else {
GeeUnrolledLinkedListNode* _tmp19_;
gint _tmp20_;
gint _tmp21_;
gboolean _tmp22_;
_tmp19_ = self->priv->_current;
_tmp20_ = _tmp19_->_size;
_tmp21_ = self->priv->_pos;
_tmp22_ = G_UNLIKELY (_tmp20_ == (_tmp21_ + 1));
if (_tmp22_) {
GeeUnrolledLinkedListNode* _tmp23_;
GeeUnrolledLinkedListNode* _tmp24_;
gboolean _tmp25_;
_tmp23_ = self->priv->_current;
_tmp24_ = _tmp23_->_next;
_tmp25_ = G_LIKELY (_tmp24_ != NULL);
if (_tmp25_) {
GeeUnrolledLinkedListNode* _tmp26_;
GeeUnrolledLinkedListNode* _tmp27_;
gint _tmp28_;
_tmp26_ = self->priv->_current;
_tmp27_ = _tmp26_->_next;
self->priv->_current = _tmp27_;
self->priv->_pos = 0;
self->priv->_deleted = FALSE;
_tmp28_ = self->priv->_index;
self->priv->_index = _tmp28_ + 1;
result = TRUE;
return result;
} else {
result = FALSE;
return result;
}
} else {
gint _tmp29_;
gint _tmp30_;
_tmp29_ = self->priv->_pos;
self->priv->_pos = _tmp29_ + 1;
self->priv->_deleted = FALSE;
_tmp30_ = self->priv->_index;
self->priv->_index = _tmp30_ + 1;
result = TRUE;
return result;
}
}
}
static gboolean gee_unrolled_linked_list_iterator_real_has_next (GeeIterator* base) {
GeeUnrolledLinkedListIterator * self;
gboolean result = FALSE;
GeeUnrolledLinkedList* _tmp0_;
gint _tmp1_;
gint _tmp2_;
gboolean _tmp3_ = FALSE;
GeeUnrolledLinkedListNode* _tmp4_;
gboolean _tmp6_ = FALSE;
GeeUnrolledLinkedListNode* _tmp7_;
GeeUnrolledLinkedListNode* _tmp13_;
gboolean _tmp14_;
self = (GeeUnrolledLinkedListIterator*) base;
_tmp0_ = self->priv->_list;
_tmp1_ = _tmp0_->priv->_stamp;
_tmp2_ = self->priv->_stamp;
_vala_assert (_tmp1_ == _tmp2_, "_list._stamp == _stamp");
_tmp4_ = self->priv->_current;
if (!(_tmp4_ == NULL)) {
_tmp3_ = TRUE;
} else {
gint _tmp5_;
_tmp5_ = self->priv->_pos;
_tmp3_ = _tmp5_ == -1;
}
_vala_assert (_tmp3_, "!(_current == null) || _pos == -1");
_tmp7_ = self->priv->_current;
if (!(_tmp7_ != NULL)) {
_tmp6_ = TRUE;
} else {
gboolean _tmp8_ = FALSE;
gint _tmp9_;
_tmp9_ = self->priv->_pos;
if (0 <= _tmp9_) {
gint _tmp10_;
GeeUnrolledLinkedListNode* _tmp11_;
gint _tmp12_;
_tmp10_ = self->priv->_pos;
_tmp11_ = self->priv->_current;
_tmp12_ = _tmp11_->_size;
_tmp8_ = _tmp10_ <= _tmp12_;
} else {
_tmp8_ = FALSE;
}
_tmp6_ = _tmp8_;
}
_vala_assert (_tmp6_, "!(_current != null) || (0 <= _pos && _pos <= _current._size)");
_tmp13_ = self->priv->_current;
_tmp14_ = G_UNLIKELY (_tmp13_ == NULL);
if (_tmp14_) {
GeeUnrolledLinkedList* _tmp15_;
GeeUnrolledLinkedListNode* _tmp16_;
_tmp15_ = self->priv->_list;
_tmp16_ = _tmp15_->priv->_head;
result = _tmp16_ != NULL;
return result;
} else {
GeeUnrolledLinkedListNode* _tmp17_;
gint _tmp18_;
gint _tmp19_;
gboolean _tmp20_;
_tmp17_ = self->priv->_current;
_tmp18_ = _tmp17_->_size;
_tmp19_ = self->priv->_pos;
_tmp20_ = G_UNLIKELY (_tmp18_ == (_tmp19_ + 1));
if (_tmp20_) {
GeeUnrolledLinkedListNode* _tmp21_;
GeeUnrolledLinkedListNode* _tmp22_;
_tmp21_ = self->priv->_current;
_tmp22_ = _tmp21_->_next;
result = _tmp22_ != NULL;
return result;
} else {
result = TRUE;
return result;
}
}
}
static gpointer gee_unrolled_linked_list_iterator_real_get (GeeIterator* base) {
GeeUnrolledLinkedListIterator * self;
gpointer result = NULL;
GeeUnrolledLinkedList* _tmp0_;
gint _tmp1_;
gint _tmp2_;
gboolean _tmp3_ = FALSE;
GeeUnrolledLinkedListNode* _tmp4_;
gboolean _tmp6_ = FALSE;
gint _tmp7_;
GeeUnrolledLinkedListNode* _tmp11_;
gint _tmp12_;
gconstpointer _tmp13_;
gpointer _tmp14_;
self = (GeeUnrolledLinkedListIterator*) base;
_tmp0_ = self->priv->_list;
_tmp1_ = _tmp0_->priv->_stamp;
_tmp2_ = self->priv->_stamp;
_vala_assert (_tmp1_ == _tmp2_, "_list._stamp == _stamp");
_tmp4_ = self->priv->_current;
if (_tmp4_ != NULL) {
gboolean _tmp5_;
_tmp5_ = self->priv->_deleted;
_tmp3_ = !_tmp5_;
} else {
_tmp3_ = FALSE;
}
_vala_assert (_tmp3_, "_current != null && !_deleted");
_tmp7_ = self->priv->_pos;
if (0 <= _tmp7_) {
gint _tmp8_;
GeeUnrolledLinkedListNode* _tmp9_;
gint _tmp10_;
_tmp8_ = self->priv->_pos;
_tmp9_ = self->priv->_current;
_tmp10_ = _tmp9_->_size;
_tmp6_ = _tmp8_ < _tmp10_;
} else {
_tmp6_ = FALSE;
}
_vala_assert (_tmp6_, "0 <= _pos && _pos < _current._size");
_tmp11_ = self->priv->_current;
_tmp12_ = self->priv->_pos;
_tmp13_ = _tmp11_->_data[_tmp12_];
_tmp14_ = ((_tmp13_ != NULL) && (self->priv->g_dup_func != NULL)) ? self->priv->g_dup_func ((gpointer) _tmp13_) : ((gpointer) _tmp13_);
result = _tmp14_;
return result;
}
static void gee_unrolled_linked_list_iterator_real_remove (GeeIterator* base) {
GeeUnrolledLinkedListIterator * self;
GeeUnrolledLinkedList* _tmp0_;
gint _tmp1_;
gint _tmp2_;
gboolean _tmp3_ = FALSE;
GeeUnrolledLinkedListNode* _tmp4_;
gboolean _tmp6_ = FALSE;
gint _tmp7_;
GeeUnrolledLinkedList* _tmp11_;
GeeUnrolledLinkedListNode* _tmp12_;
gint _tmp13_;
GeeUnrolledLinkedListNode* _tmp14_ = NULL;
gint _tmp15_ = 0;
gpointer _tmp16_;
gpointer _tmp17_;
gint _tmp18_;
gint _tmp19_;
self = (GeeUnrolledLinkedListIterator*) base;
_tmp0_ = self->priv->_list;
_tmp1_ = _tmp0_->priv->_stamp;
_tmp2_ = self->priv->_stamp;
_vala_assert (_tmp1_ == _tmp2_, "_list._stamp == _stamp");
_tmp4_ = self->priv->_current;
if (_tmp4_ != NULL) {
gboolean _tmp5_;
_tmp5_ = self->priv->_deleted;
_tmp3_ = !_tmp5_;
} else {
_tmp3_ = FALSE;
}
_vala_assert (_tmp3_, "_current != null && !_deleted");
_tmp7_ = self->priv->_pos;
if (0 <= _tmp7_) {
gint _tmp8_;
GeeUnrolledLinkedListNode* _tmp9_;
gint _tmp10_;
_tmp8_ = self->priv->_pos;
_tmp9_ = self->priv->_current;
_tmp10_ = _tmp9_->_size;
_tmp6_ = _tmp8_ <= _tmp10_;
} else {
_tmp6_ = FALSE;
}
_vala_assert (_tmp6_, "0 <= _pos && _pos <= _current._size");
_tmp11_ = self->priv->_list;
_tmp12_ = self->priv->_current;
_tmp13_ = self->priv->_pos;
_tmp16_ = gee_unrolled_linked_list_remove_from_node (_tmp11_, _tmp12_, _tmp13_, &_tmp14_, &_tmp15_);
self->priv->_current = _tmp14_;
self->priv->_pos = _tmp15_;
_tmp17_ = _tmp16_;
((_tmp17_ == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (_tmp17_ = (self->priv->g_destroy_func (_tmp17_), NULL));
self->priv->_deleted = TRUE;
_tmp18_ = self->priv->_index;
self->priv->_index = _tmp18_ - 1;
_tmp19_ = self->priv->_stamp;
self->priv->_stamp = _tmp19_ + 1;
}
static gboolean gee_unrolled_linked_list_iterator_real_previous (GeeBidirIterator* base) {
GeeUnrolledLinkedListIterator * self;
gboolean result = FALSE;
GeeUnrolledLinkedList* _tmp0_;
gint _tmp1_;
gint _tmp2_;
gboolean _tmp3_ = FALSE;
GeeUnrolledLinkedListNode* _tmp4_;
gboolean _tmp6_ = FALSE;
GeeUnrolledLinkedListNode* _tmp7_;
gboolean _tmp13_;
gboolean _tmp14_;
self = (GeeUnrolledLinkedListIterator*) base;
_tmp0_ = self->priv->_list;
_tmp1_ = _tmp0_->priv->_stamp;
_tmp2_ = self->priv->_stamp;
_vala_assert (_tmp1_ == _tmp2_, "_list._stamp == _stamp");
_tmp4_ = self->priv->_current;
if (!(_tmp4_ == NULL)) {
_tmp3_ = TRUE;
} else {
gint _tmp5_;
_tmp5_ = self->priv->_pos;
_tmp3_ = _tmp5_ == -1;
}
_vala_assert (_tmp3_, "!(_current == null) || _pos == -1");
_tmp7_ = self->priv->_current;
if (!(_tmp7_ != NULL)) {
_tmp6_ = TRUE;
} else {
gboolean _tmp8_ = FALSE;
gint _tmp9_;
_tmp9_ = self->priv->_pos;
if (0 <= _tmp9_) {
gint _tmp10_;
GeeUnrolledLinkedListNode* _tmp11_;
gint _tmp12_;
_tmp10_ = self->priv->_pos;
_tmp11_ = self->priv->_current;
_tmp12_ = _tmp11_->_size;
_tmp8_ = _tmp10_ <= _tmp12_;
} else {
_tmp8_ = FALSE;
}
_tmp6_ = _tmp8_;
}
_vala_assert (_tmp6_, "!(_current != null) || (0 <= _pos && _pos <= _current._size)");
_tmp13_ = self->priv->_deleted;
_tmp14_ = G_UNLIKELY (_tmp13_);
if (_tmp14_) {
GeeUnrolledLinkedListNode* _tmp15_;
self->priv->_deleted = FALSE;
_tmp15_ = self->priv->_current;
result = _tmp15_ != NULL;
return result;
} else {
GeeUnrolledLinkedListNode* _tmp16_;
gboolean _tmp17_;
_tmp16_ = self->priv->_current;
_tmp17_ = G_UNLIKELY (_tmp16_ == NULL);
if (_tmp17_) {
result = FALSE;
return result;
} else {
gint _tmp18_;
gboolean _tmp19_;
_tmp18_ = self->priv->_pos;
_tmp19_ = G_UNLIKELY (_tmp18_ == 0);
if (_tmp19_) {
GeeUnrolledLinkedListNode* _tmp20_;
GeeUnrolledLinkedListNode* _tmp21_;
gboolean _tmp22_;
_tmp20_ = self->priv->_current;
_tmp21_ = _tmp20_->_prev;
_tmp22_ = G_LIKELY (_tmp21_ != NULL);
if (_tmp22_) {
GeeUnrolledLinkedListNode* _tmp23_;
GeeUnrolledLinkedListNode* _tmp24_;
GeeUnrolledLinkedListNode* _tmp25_;
gint _tmp26_;
gint _tmp27_;
_tmp23_ = self->priv->_current;
_tmp24_ = _tmp23_->_prev;
self->priv->_current = _tmp24_;
_tmp25_ = self->priv->_current;
_tmp26_ = _tmp25_->_size;
self->priv->_pos = _tmp26_ - 1;
_tmp27_ = self->priv->_index;
self->priv->_index = _tmp27_ - 1;
result = TRUE;
return result;
} else {
result = FALSE;
return result;
}
} else {
gint _tmp28_;
gint _tmp29_;
_tmp28_ = self->priv->_pos;
self->priv->_pos = _tmp28_ - 1;
_tmp29_ = self->priv->_index;
self->priv->_index = _tmp29_ - 1;
result = TRUE;
return result;
}
}
}
}
static gboolean gee_unrolled_linked_list_iterator_real_has_previous (GeeBidirIterator* base) {
GeeUnrolledLinkedListIterator * self;
gboolean result = FALSE;
GeeUnrolledLinkedList* _tmp0_;
gint _tmp1_;
gint _tmp2_;
gboolean _tmp3_ = FALSE;
GeeUnrolledLinkedListNode* _tmp4_;
gboolean _tmp6_ = FALSE;
GeeUnrolledLinkedListNode* _tmp7_;
gboolean _tmp13_;
gboolean _tmp14_;
self = (GeeUnrolledLinkedListIterator*) base;
_tmp0_ = self->priv->_list;
_tmp1_ = _tmp0_->priv->_stamp;
_tmp2_ = self->priv->_stamp;
_vala_assert (_tmp1_ == _tmp2_, "_list._stamp == _stamp");
_tmp4_ = self->priv->_current;
if (!(_tmp4_ == NULL)) {
_tmp3_ = TRUE;
} else {
gint _tmp5_;
_tmp5_ = self->priv->_pos;
_tmp3_ = _tmp5_ == -1;
}
_vala_assert (_tmp3_, "!(_current == null) || _pos == -1");
_tmp7_ = self->priv->_current;
if (!(_tmp7_ != NULL)) {
_tmp6_ = TRUE;
} else {
gboolean _tmp8_ = FALSE;
gint _tmp9_;
_tmp9_ = self->priv->_pos;
if (0 <= _tmp9_) {
gint _tmp10_;
GeeUnrolledLinkedListNode* _tmp11_;
gint _tmp12_;
_tmp10_ = self->priv->_pos;
_tmp11_ = self->priv->_current;
_tmp12_ = _tmp11_->_size;
_tmp8_ = _tmp10_ <= _tmp12_;
} else {
_tmp8_ = FALSE;
}
_tmp6_ = _tmp8_;
}
_vala_assert (_tmp6_, "!(_current != null) || (0 <= _pos && _pos <= _current._size)");
_tmp13_ = self->priv->_deleted;
_tmp14_ = G_UNLIKELY (_tmp13_);
if (_tmp14_) {
GeeUnrolledLinkedListNode* _tmp15_;
_tmp15_ = self->priv->_current;
result = _tmp15_ != NULL;
return result;
} else {
GeeUnrolledLinkedListNode* _tmp16_;
gboolean _tmp17_;
_tmp16_ = self->priv->_current;
_tmp17_ = G_UNLIKELY (_tmp16_ == NULL);
if (_tmp17_) {
result = FALSE;
return result;
} else {
gint _tmp18_;
gboolean _tmp19_;
_tmp18_ = self->priv->_pos;
_tmp19_ = G_UNLIKELY (_tmp18_ == 0);
if (_tmp19_) {
GeeUnrolledLinkedListNode* _tmp20_;
GeeUnrolledLinkedListNode* _tmp21_;
_tmp20_ = self->priv->_current;
_tmp21_ = _tmp20_->_prev;
result = _tmp21_ != NULL;
return result;
} else {
result = TRUE;
return result;
}
}
}
}
static gboolean gee_unrolled_linked_list_iterator_real_first (GeeBidirIterator* base) {
GeeUnrolledLinkedListIterator * self;
gboolean result = FALSE;
GeeUnrolledLinkedList* _tmp0_;
gint _tmp1_;
gint _tmp2_;
gboolean _tmp3_ = FALSE;
GeeUnrolledLinkedListNode* _tmp4_;
gboolean _tmp6_ = FALSE;
GeeUnrolledLinkedListNode* _tmp7_;
GeeUnrolledLinkedList* _tmp13_;
GeeUnrolledLinkedListNode* _tmp14_;
GeeUnrolledLinkedListNode* _tmp15_;
GeeUnrolledLinkedListNode* _tmp16_;
self = (GeeUnrolledLinkedListIterator*) base;
_tmp0_ = self->priv->_list;
_tmp1_ = _tmp0_->priv->_stamp;
_tmp2_ = self->priv->_stamp;
_vala_assert (_tmp1_ == _tmp2_, "_list._stamp == _stamp");
_tmp4_ = self->priv->_current;
if (!(_tmp4_ == NULL)) {
_tmp3_ = TRUE;
} else {
gint _tmp5_;
_tmp5_ = self->priv->_pos;
_tmp3_ = _tmp5_ == -1;
}
_vala_assert (_tmp3_, "!(_current == null) || _pos == -1");
_tmp7_ = self->priv->_current;
if (!(_tmp7_ != NULL)) {
_tmp6_ = TRUE;
} else {
gboolean _tmp8_ = FALSE;
gint _tmp9_;
_tmp9_ = self->priv->_pos;
if (0 <= _tmp9_) {
gint _tmp10_;
GeeUnrolledLinkedListNode* _tmp11_;
gint _tmp12_;
_tmp10_ = self->priv->_pos;
_tmp11_ = self->priv->_current;
_tmp12_ = _tmp11_->_size;
_tmp8_ = _tmp10_ <= _tmp12_;
} else {
_tmp8_ = FALSE;
}
_tmp6_ = _tmp8_;
}
_vala_assert (_tmp6_, "!(_current != null) || (0 <= _pos && _pos <= _current._size)");
_tmp13_ = self->priv->_list;
_tmp14_ = _tmp13_->priv->_head;
self->priv->_current = _tmp14_;
self->priv->_deleted = FALSE;
_tmp15_ = self->priv->_current;
if (_tmp15_ != NULL) {
self->priv->_pos = 0;
} else {
self->priv->_pos = -1;
}
self->priv->_index = 0;
_tmp16_ = self->priv->_current;
result = _tmp16_ != NULL;
return result;
}
static gboolean gee_unrolled_linked_list_iterator_real_last (GeeBidirIterator* base) {
GeeUnrolledLinkedListIterator * self;
gboolean result = FALSE;
GeeUnrolledLinkedList* _tmp0_;
gint _tmp1_;
gint _tmp2_;
gboolean _tmp3_ = FALSE;
GeeUnrolledLinkedListNode* _tmp4_;
gboolean _tmp6_ = FALSE;
GeeUnrolledLinkedListNode* _tmp7_;
GeeUnrolledLinkedList* _tmp13_;
GeeUnrolledLinkedListNode* _tmp14_;
GeeUnrolledLinkedListNode* _tmp15_;
GeeUnrolledLinkedList* _tmp18_;
gint _tmp19_;
GeeUnrolledLinkedListNode* _tmp20_;
self = (GeeUnrolledLinkedListIterator*) base;
_tmp0_ = self->priv->_list;
_tmp1_ = _tmp0_->priv->_stamp;
_tmp2_ = self->priv->_stamp;
_vala_assert (_tmp1_ == _tmp2_, "_list._stamp == _stamp");
_tmp4_ = self->priv->_current;
if (!(_tmp4_ == NULL)) {
_tmp3_ = TRUE;
} else {
gint _tmp5_;
_tmp5_ = self->priv->_pos;
_tmp3_ = _tmp5_ == -1;
}
_vala_assert (_tmp3_, "!(_current == null) || _pos == -1");
_tmp7_ = self->priv->_current;
if (!(_tmp7_ != NULL)) {
_tmp6_ = TRUE;
} else {
gboolean _tmp8_ = FALSE;
gint _tmp9_;
_tmp9_ = self->priv->_pos;
if (0 <= _tmp9_) {
gint _tmp10_;
GeeUnrolledLinkedListNode* _tmp11_;
gint _tmp12_;
_tmp10_ = self->priv->_pos;
_tmp11_ = self->priv->_current;
_tmp12_ = _tmp11_->_size;
_tmp8_ = _tmp10_ <= _tmp12_;
} else {
_tmp8_ = FALSE;
}
_tmp6_ = _tmp8_;
}
_vala_assert (_tmp6_, "!(_current != null) || (0 <= _pos && _pos <= _current._size)");
_tmp13_ = self->priv->_list;
_tmp14_ = _tmp13_->priv->_tail;
self->priv->_current = _tmp14_;
self->priv->_deleted = FALSE;
_tmp15_ = self->priv->_current;
if (_tmp15_ != NULL) {
GeeUnrolledLinkedListNode* _tmp16_;
gint _tmp17_;
_tmp16_ = self->priv->_current;
_tmp17_ = _tmp16_->_size;
self->priv->_pos = _tmp17_ - 1;
} else {
self->priv->_pos = -1;
}
_tmp18_ = self->priv->_list;
_tmp19_ = _tmp18_->priv->_size;
self->priv->_index = _tmp19_ - 1;
_tmp20_ = self->priv->_current;
result = _tmp20_ != NULL;
return result;
}
static void gee_unrolled_linked_list_iterator_real_set (GeeListIterator* base, gconstpointer item) {
GeeUnrolledLinkedListIterator * self;
GeeUnrolledLinkedList* _tmp0_;
gint _tmp1_;
gint _tmp2_;
gboolean _tmp3_ = FALSE;
GeeUnrolledLinkedListNode* _tmp4_;
gboolean _tmp6_ = FALSE;
GeeUnrolledLinkedListNode* _tmp7_;
GeeUnrolledLinkedListNode* _tmp13_;
gint _tmp14_;
gconstpointer _tmp15_;
gpointer _tmp16_;
gpointer _tmp17_;
GeeUnrolledLinkedList* _tmp18_;
gint _tmp19_;
gint _tmp20_;
self = (GeeUnrolledLinkedListIterator*) base;
_tmp0_ = self->priv->_list;
_tmp1_ = _tmp0_->priv->_stamp;
_tmp2_ = self->priv->_stamp;
_vala_assert (_tmp1_ == _tmp2_, "_list._stamp == _stamp");
_tmp4_ = self->priv->_current;
if (!(_tmp4_ == NULL)) {
_tmp3_ = TRUE;
} else {
gint _tmp5_;
_tmp5_ = self->priv->_pos;
_tmp3_ = _tmp5_ == -1;
}
_vala_assert (_tmp3_, "!(_current == null) || _pos == -1");
_tmp7_ = self->priv->_current;
if (!(_tmp7_ != NULL)) {
_tmp6_ = TRUE;
} else {
gboolean _tmp8_ = FALSE;
gint _tmp9_;
_tmp9_ = self->priv->_pos;
if (0 <= _tmp9_) {
gint _tmp10_;
GeeUnrolledLinkedListNode* _tmp11_;
gint _tmp12_;
_tmp10_ = self->priv->_pos;
_tmp11_ = self->priv->_current;
_tmp12_ = _tmp11_->_size;
_tmp8_ = _tmp10_ <= _tmp12_;
} else {
_tmp8_ = FALSE;
}
_tmp6_ = _tmp8_;
}
_vala_assert (_tmp6_, "!(_current != null) || (0 <= _pos && _pos <= _current._size)");
_tmp13_ = self->priv->_current;
_tmp14_ = self->priv->_pos;
_tmp15_ = item;
_tmp16_ = ((_tmp15_ != NULL) && (self->priv->g_dup_func != NULL)) ? self->priv->g_dup_func ((gpointer) _tmp15_) : ((gpointer) _tmp15_);
((_tmp13_->_data[_tmp14_] == NULL) || (self->priv->g_destroy_func == NULL)) ? NULL : (_tmp13_->_data[_tmp14_] = (self->priv->g_destroy_func (_tmp13_->_data[_tmp14_]), NULL));
_tmp13_->_data[_tmp14_] = _tmp16_;
_tmp17_ = _tmp13_->_data[_tmp14_];
_tmp18_ = self->priv->_list;
_tmp19_ = _tmp18_->priv->_stamp;
_tmp18_->priv->_stamp = _tmp19_ + 1;
_tmp20_ = self->priv->_stamp;
self->priv->_stamp = _tmp20_ + 1;
}
static void gee_unrolled_linked_list_iterator_real_add (GeeListIterator* base, gconstpointer item) {
GeeUnrolledLinkedListIterator * self;
GeeUnrolledLinkedList* _tmp0_;
gint _tmp1_;
gint _tmp2_;
gboolean _tmp3_ = FALSE;
GeeUnrolledLinkedListNode* _tmp4_;
gboolean _tmp6_ = FALSE;
GeeUnrolledLinkedListNode* _tmp7_;
GeeUnrolledLinkedListNode* _tmp13_;
gboolean _tmp14_;
gint _tmp34_;
gint _tmp35_;
self = (GeeUnrolledLinkedListIterator*) base;
_tmp0_ = self->priv->_list;
_tmp1_ = _tmp0_->priv->_stamp;
_tmp2_ = self->priv->_stamp;
_vala_assert (_tmp1_ == _tmp2_, "_list._stamp == _stamp");
_tmp4_ = self->priv->_current;
if (!(_tmp4_ == NULL)) {
_tmp3_ = TRUE;
} else {
gint _tmp5_;
_tmp5_ = self->priv->_pos;
_tmp3_ = _tmp5_ == -1;
}
_vala_assert (_tmp3_, "!(_current == null) || _pos == -1");
_tmp7_ = self->priv->_current;
if (!(_tmp7_ != NULL)) {
_tmp6_ = TRUE;
} else {
gboolean _tmp8_ = FALSE;
gint _tmp9_;
_tmp9_ = self->priv->_pos;
if (0 <= _tmp9_) {
gint _tmp10_;
GeeUnrolledLinkedListNode* _tmp11_;
gint _tmp12_;
_tmp10_ = self->priv->_pos;
_tmp11_ = self->priv->_current;
_tmp12_ = _tmp11_->_size;
_tmp8_ = _tmp10_ <= _tmp12_;
} else {
_tmp8_ = FALSE;
}
_tmp6_ = _tmp8_;
}
_vala_assert (_tmp6_, "!(_current != null) || (0 <= _pos && _pos <= _current._size)");
_tmp13_ = self->priv->_current;
_tmp14_ = G_LIKELY (_tmp13_ != NULL);
if (_tmp14_) {
GeeUnrolledLinkedList* _tmp15_;
GeeUnrolledLinkedListNode* _tmp16_;
gconstpointer _tmp17_;
gint _tmp18_;
GeeUnrolledLinkedListNode* _tmp19_ = NULL;
gint _tmp20_ = 0;
_tmp15_ = self->priv->_list;
_tmp16_ = self->priv->_current;
_tmp17_ = item;
_tmp18_ = self->priv->_pos;
gee_unrolled_linked_list_add_to_node (_tmp15_, _tmp16_, _tmp17_, _tmp18_ + 1, &_tmp19_, &_tmp20_);
self->priv->_current = _tmp19_;
self->priv->_pos = _tmp20_;
} else {
GeeUnrolledLinkedList* _tmp21_;
GeeUnrolledLinkedListNode* _tmp22_;
gboolean _tmp23_;
GeeUnrolledLinkedList* _tmp31_;
GeeUnrolledLinkedListNode* _tmp32_;
gconstpointer _tmp33_;
_tmp21_ = self->priv->_list;
_tmp22_ = _tmp21_->priv->_head;
_tmp23_ = G_LIKELY (_tmp22_ != NULL);
if (_tmp23_) {
GeeUnrolledLinkedList* _tmp24_;
GeeUnrolledLinkedListNode* _tmp25_;
_tmp24_ = self->priv->_list;
_tmp25_ = _tmp24_->priv->_head;
self->priv->_current = _tmp25_;
} else {
GeeUnrolledLinkedList* _tmp26_;
GeeUnrolledLinkedList* _tmp27_;
GeeUnrolledLinkedListNode* _tmp28_;
GeeUnrolledLinkedListNode* _tmp29_;
GeeUnrolledLinkedListNode* _tmp30_;
_tmp26_ = self->priv->_list;
_tmp27_ = self->priv->_list;
_tmp28_ = gee_unrolled_linked_list_node_new ();
_gee_unrolled_linked_list_node_free0 (_tmp27_->priv->_head);
_tmp27_->priv->_head = _tmp28_;
_tmp29_ = _tmp27_->priv->_head;
_tmp26_->priv->_tail = _tmp29_;
_tmp30_ = _tmp26_->priv->_tail;
self->priv->_current = _tmp30_;
}
_tmp31_ = self->priv->_list;
_tmp32_ = self->priv->_current;
_tmp33_ = item;
gee_unrolled_linked_list_add_to_node (_tmp31_, _tmp32_, _tmp33_, 0, NULL, NULL);
self->priv->_pos = 0;
}
_tmp34_ = self->priv->_stamp;
self->priv->_stamp = _tmp34_ + 1;
_tmp35_ = self->priv->_index;
self->priv->_index = _tmp35_ + 1;
self->priv->_deleted = FALSE;
}
static gint gee_unrolled_linked_list_iterator_real_index (GeeListIterator* base) {
GeeUnrolledLinkedListIterator * self;
gint result = 0;
GeeUnrolledLinkedList* _tmp0_;
gint _tmp1_;
gint _tmp2_;
GeeUnrolledLinkedListNode* _tmp3_;
gboolean _tmp4_ = FALSE;
gint _tmp5_;
gint _tmp9_;
self = (GeeUnrolledLinkedListIterator*) base;
_tmp0_ = self->priv->_list;
_tmp1_ = _tmp0_->priv->_stamp;
_tmp2_ = self->priv->_stamp;
_vala_assert (_tmp1_ == _tmp2_, "_list._stamp == _stamp");
_tmp3_ = self->priv->_current;
_vala_assert (_tmp3_ != NULL, "_current != null");
_tmp5_ = self->priv->_pos;
if (0 <= _tmp5_) {
gint _tmp6_;
GeeUnrolledLinkedListNode* _tmp7_;
gint _tmp8_;
_tmp6_ = self->priv->_pos;
_tmp7_ = self->priv->_current;
_tmp8_ = _tmp7_->_size;
_tmp4_ = _tmp6_ <= _tmp8_;
} else {
_tmp4_ = FALSE;
}
_vala_assert (_tmp4_, "0 <= _pos && _pos <= _current._size");
_tmp9_ = self->priv->_index;
result = _tmp9_;
return result;
}
static void gee_unrolled_linked_list_iterator_real_insert (GeeBidirListIterator* base, gconstpointer item) {
GeeUnrolledLinkedListIterator * self;
GeeUnrolledLinkedList* _tmp0_;
gint _tmp1_;
gint _tmp2_;
gboolean _tmp3_;
gboolean _tmp4_;
gint _tmp48_;
gint _tmp49_;
self = (GeeUnrolledLinkedListIterator*) base;
_tmp0_ = self->priv->_list;
_tmp1_ = _tmp0_->priv->_stamp;
_tmp2_ = self->priv->_stamp;
_vala_assert (_tmp1_ == _tmp2_, "_list._stamp == _stamp");
_tmp3_ = self->priv->_deleted;
_tmp4_ = G_UNLIKELY (_tmp3_);
if (_tmp4_) {
GeeUnrolledLinkedListNode* _tmp5_;
gboolean _tmp6_;
GeeUnrolledLinkedList* _tmp17_;
GeeUnrolledLinkedListNode* _tmp18_;
gconstpointer _tmp19_;
gint _tmp20_;
GeeUnrolledLinkedListNode* _tmp21_ = NULL;
gint _tmp22_ = 0;
gint _tmp23_;
gboolean _tmp24_;
_tmp5_ = self->priv->_current;
_tmp6_ = G_UNLIKELY (_tmp5_ == NULL);
if (_tmp6_) {
GeeUnrolledLinkedList* _tmp7_;
GeeUnrolledLinkedListNode* _tmp8_;
gboolean _tmp9_;
_tmp7_ = self->priv->_list;
_tmp8_ = _tmp7_->priv->_head;
_tmp9_ = G_LIKELY (_tmp8_ != NULL);
if (_tmp9_) {
GeeUnrolledLinkedList* _tmp10_;
GeeUnrolledLinkedListNode* _tmp11_;
_tmp10_ = self->priv->_list;
_tmp11_ = _tmp10_->priv->_head;
self->priv->_current = _tmp11_;
self->priv->_pos = -1;
} else {
GeeUnrolledLinkedList* _tmp12_;
GeeUnrolledLinkedList* _tmp13_;
GeeUnrolledLinkedListNode* _tmp14_;
GeeUnrolledLinkedListNode* _tmp15_;
GeeUnrolledLinkedListNode* _tmp16_;
_tmp12_ = self->priv->_list;
_tmp13_ = self->priv->_list;
_tmp14_ = gee_unrolled_linked_list_node_new ();
_gee_unrolled_linked_list_node_free0 (_tmp13_->priv->_head);
_tmp13_->priv->_head = _tmp14_;
_tmp15_ = _tmp13_->priv->_head;
_tmp12_->priv->_tail = _tmp15_;
_tmp16_ = _tmp12_->priv->_tail;
self->priv->_current = _tmp16_;
self->priv->_pos = -1;
}
}
_tmp17_ = self->priv->_list;
_tmp18_ = self->priv->_current;
_tmp19_ = item;
_tmp20_ = self->priv->_pos;
gee_unrolled_linked_list_add_to_node (_tmp17_, _tmp18_, _tmp19_, _tmp20_ + 1, &_tmp21_, &_tmp22_);
self->priv->_current = _tmp21_;
self->priv->_pos = _tmp22_;
_tmp23_ = self->priv->_pos;
_tmp24_ = G_UNLIKELY (_tmp23_ == 0);
if (_tmp24_) {
GeeUnrolledLinkedListNode* _tmp25_;
GeeUnrolledLinkedListNode* _tmp26_;
GeeUnrolledLinkedListNode* _tmp27_;
GeeUnrolledLinkedListNode* _tmp28_;
GeeUnrolledLinkedListNode* _tmp29_;
GeeUnrolledLinkedListNode* _tmp30_;
gint _tmp31_;
_tmp25_ = self->priv->_current;
_tmp26_ = _tmp25_->_prev;
_vala_assert (_tmp26_ != NULL, "_current._prev != null");
_tmp27_ = self->priv->_current;
_tmp28_ = _tmp27_->_prev;
self->priv->_current = _tmp28_;
_tmp29_ = self->priv->_current;
_tmp30_ = _tmp29_->_prev;
_tmp31_ = _tmp30_->_size;
self->priv->_pos = _tmp31_ - 1;
} else {
gint _tmp32_;
_tmp32_ = self->priv->_pos;
self->priv->_pos = _tmp32_ - 1;
}
} else {
GeeUnrolledLinkedList* _tmp33_;
GeeUnrolledLinkedListNode* _tmp34_;
gconstpointer _tmp35_;
gint _tmp36_;
GeeUnrolledLinkedListNode* _tmp37_ = NULL;
gint _tmp38_ = 0;
gint _tmp39_;
GeeUnrolledLinkedListNode* _tmp40_;
gint _tmp41_;
gboolean _tmp42_;
_tmp33_ = self->priv->_list;
_tmp34_ = self->priv->_current;
_tmp35_ = item;
_tmp36_ = self->priv->_pos;
gee_unrolled_linked_list_add_to_node (_tmp33_, _tmp34_, _tmp35_, _tmp36_, &_tmp37_, &_tmp38_);
self->priv->_current = _tmp37_;
self->priv->_pos = _tmp38_;
_tmp39_ = self->priv->_pos;
_tmp40_ = self->priv->_current;
_tmp41_ = _tmp40_->_size;
_tmp42_ = G_UNLIKELY ((_tmp39_ + 1) == _tmp41_);
if (_tmp42_) {
GeeUnrolledLinkedListNode* _tmp43_;
GeeUnrolledLinkedListNode* _tmp44_;
GeeUnrolledLinkedListNode* _tmp45_;
GeeUnrolledLinkedListNode* _tmp46_;
_tmp43_ = self->priv->_current;
_tmp44_ = _tmp43_->_next;
_vala_assert (_tmp44_ != NULL, "_current._next != null");
_tmp45_ = self->priv->_current;
_tmp46_ = _tmp45_->_next;
self->priv->_current = _tmp46_;
self->priv->_pos = 0;
} else {
gint _tmp47_;
_tmp47_ = self->priv->_pos;
self->priv->_pos = _tmp47_ + 1;
}
}
_tmp48_ = self->priv->_stamp;
self->priv->_stamp = _tmp48_ + 1;
_tmp49_ = self->priv->_index;
self->priv->_index = _tmp49_ + 1;
}
static gboolean gee_unrolled_linked_list_iterator_real_get_valid (GeeIterator* base) {
gboolean result;
GeeUnrolledLinkedListIterator* self;
GeeUnrolledLinkedList* _tmp0_;
gint _tmp1_;
gint _tmp2_;
gboolean _tmp3_ = FALSE;
GeeUnrolledLinkedListNode* _tmp4_;
gboolean _tmp6_ = FALSE;
GeeUnrolledLinkedListNode* _tmp7_;
gboolean _tmp13_ = FALSE;
GeeUnrolledLinkedListNode* _tmp14_;
self = (GeeUnrolledLinkedListIterator*) base;
_tmp0_ = self->priv->_list;
_tmp1_ = _tmp0_->priv->_stamp;
_tmp2_ = self->priv->_stamp;
_vala_assert (_tmp1_ == _tmp2_, "_list._stamp == _stamp");
_tmp4_ = self->priv->_current;
if (!(_tmp4_ == NULL)) {
_tmp3_ = TRUE;
} else {
gint _tmp5_;
_tmp5_ = self->priv->_pos;
_tmp3_ = _tmp5_ == -1;
}
_vala_assert (_tmp3_, "!(_current == null) || _pos == -1");
_tmp7_ = self->priv->_current;
if (!(_tmp7_ != NULL)) {
_tmp6_ = TRUE;
} else {
gboolean _tmp8_ = FALSE;
gint _tmp9_;
_tmp9_ = self->priv->_pos;
if (0 <= _tmp9_) {
gint _tmp10_;
GeeUnrolledLinkedListNode* _tmp11_;
gint _tmp12_;
_tmp10_ = self->priv->_pos;
_tmp11_ = self->priv->_current;
_tmp12_ = _tmp11_->_size;
_tmp8_ = _tmp10_ <= _tmp12_;
} else {
_tmp8_ = FALSE;
}
_tmp6_ = _tmp8_;
}
_vala_assert (_tmp6_, "!(_current != null) || (0 <= _pos && _pos <= _current._size)");
_tmp14_ = self->priv->_current;
if (_tmp14_ != NULL) {
gboolean _tmp15_;
_tmp15_ = self->priv->_deleted;
_tmp13_ = !_tmp15_;
} else {
_tmp13_ = FALSE;
}
result = _tmp13_;
return result;
}
static gboolean gee_unrolled_linked_list_iterator_real_get_read_only (GeeIterator* base) {
gboolean result;
GeeUnrolledLinkedListIterator* self;
self = (GeeUnrolledLinkedListIterator*) base;
result = FALSE;
return result;
}
static void gee_unrolled_linked_list_iterator_class_init (GeeUnrolledLinkedListIteratorClass * klass) {
gee_unrolled_linked_list_iterator_parent_class = g_type_class_peek_parent (klass);
g_type_class_add_private (klass, sizeof (GeeUnrolledLinkedListIteratorPrivate));
G_OBJECT_CLASS (klass)->get_property = _vala_gee_unrolled_linked_list_iterator_get_property;
G_OBJECT_CLASS (klass)->set_property = _vala_gee_unrolled_linked_list_iterator_set_property;
G_OBJECT_CLASS (klass)->finalize = gee_unrolled_linked_list_iterator_finalize;
g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_UNROLLED_LINKED_LIST_ITERATOR_G_TYPE, g_param_spec_gtype ("g-type", "type", "type", G_TYPE_NONE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_UNROLLED_LINKED_LIST_ITERATOR_G_DUP_FUNC, g_param_spec_pointer ("g-dup-func", "dup func", "dup func", G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_UNROLLED_LINKED_LIST_ITERATOR_G_DESTROY_FUNC, g_param_spec_pointer ("g-destroy-func", "destroy func", "destroy func", G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_UNROLLED_LINKED_LIST_ITERATOR_VALID_PROPERTY, g_param_spec_boolean ("valid", "valid", "valid", FALSE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_UNROLLED_LINKED_LIST_ITERATOR_READ_ONLY_PROPERTY, g_param_spec_boolean ("read-only", "read-only", "read-only", FALSE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
}
static GType gee_unrolled_linked_list_iterator_gee_traversable_get_g_type (GeeUnrolledLinkedListIterator* self) {
return self->priv->g_type;
}
static GBoxedCopyFunc gee_unrolled_linked_list_iterator_gee_traversable_get_g_dup_func (GeeUnrolledLinkedListIterator* self) {
return self->priv->g_dup_func;
}
static GDestroyNotify gee_unrolled_linked_list_iterator_gee_traversable_get_g_destroy_func (GeeUnrolledLinkedListIterator* self) {
return self->priv->g_destroy_func;
}
static void gee_unrolled_linked_list_iterator_gee_traversable_interface_init (GeeTraversableIface * iface) {
gee_unrolled_linked_list_iterator_gee_traversable_parent_iface = g_type_interface_peek_parent (iface);
iface->foreach = (gboolean (*) (GeeTraversable *, GeeForallFunc, void*)) gee_unrolled_linked_list_iterator_real_foreach;
iface->tee = (GeeIterator** (*) (GeeTraversable *, guint, int*)) gee_unrolled_linked_list_iterator_real_tee;
iface->get_g_type = (GType (*) (GeeTraversable *)) gee_unrolled_linked_list_iterator_gee_traversable_get_g_type;
iface->get_g_dup_func = (GBoxedCopyFunc (*) (GeeTraversable *)) gee_unrolled_linked_list_iterator_gee_traversable_get_g_dup_func;
iface->get_g_destroy_func = (GDestroyNotify (*) (GeeTraversable *)) gee_unrolled_linked_list_iterator_gee_traversable_get_g_destroy_func;
}
static void gee_unrolled_linked_list_iterator_gee_iterator_interface_init (GeeIteratorIface * iface) {
gee_unrolled_linked_list_iterator_gee_iterator_parent_iface = g_type_interface_peek_parent (iface);
iface->next = (gboolean (*) (GeeIterator *)) gee_unrolled_linked_list_iterator_real_next;
iface->has_next = (gboolean (*) (GeeIterator *)) gee_unrolled_linked_list_iterator_real_has_next;
iface->get = (gpointer (*) (GeeIterator *)) gee_unrolled_linked_list_iterator_real_get;
iface->remove = (void (*) (GeeIterator *)) gee_unrolled_linked_list_iterator_real_remove;
iface->get_valid = gee_unrolled_linked_list_iterator_real_get_valid;
iface->get_read_only = gee_unrolled_linked_list_iterator_real_get_read_only;
}
static void gee_unrolled_linked_list_iterator_gee_list_iterator_interface_init (GeeListIteratorIface * iface) {
gee_unrolled_linked_list_iterator_gee_list_iterator_parent_iface = g_type_interface_peek_parent (iface);
iface->set = (void (*) (GeeListIterator *, gconstpointer)) gee_unrolled_linked_list_iterator_real_set;
iface->add = (void (*) (GeeListIterator *, gconstpointer)) gee_unrolled_linked_list_iterator_real_add;
iface->index = (gint (*) (GeeListIterator *)) gee_unrolled_linked_list_iterator_real_index;
}
static GType gee_unrolled_linked_list_iterator_gee_bidir_iterator_get_g_type (GeeUnrolledLinkedListIterator* self) {
return self->priv->g_type;
}
static GBoxedCopyFunc gee_unrolled_linked_list_iterator_gee_bidir_iterator_get_g_dup_func (GeeUnrolledLinkedListIterator* self) {
return self->priv->g_dup_func;
}
static GDestroyNotify gee_unrolled_linked_list_iterator_gee_bidir_iterator_get_g_destroy_func (GeeUnrolledLinkedListIterator* self) {
return self->priv->g_destroy_func;
}
static void gee_unrolled_linked_list_iterator_gee_bidir_iterator_interface_init (GeeBidirIteratorIface * iface) {
gee_unrolled_linked_list_iterator_gee_bidir_iterator_parent_iface = g_type_interface_peek_parent (iface);
iface->previous = (gboolean (*) (GeeBidirIterator *)) gee_unrolled_linked_list_iterator_real_previous;
iface->has_previous = (gboolean (*) (GeeBidirIterator *)) gee_unrolled_linked_list_iterator_real_has_previous;
iface->first = (gboolean (*) (GeeBidirIterator *)) gee_unrolled_linked_list_iterator_real_first;
iface->last = (gboolean (*) (GeeBidirIterator *)) gee_unrolled_linked_list_iterator_real_last;
iface->get_g_type = (GType (*) (GeeBidirIterator *)) gee_unrolled_linked_list_iterator_gee_bidir_iterator_get_g_type;
iface->get_g_dup_func = (GBoxedCopyFunc (*) (GeeBidirIterator *)) gee_unrolled_linked_list_iterator_gee_bidir_iterator_get_g_dup_func;
iface->get_g_destroy_func = (GDestroyNotify (*) (GeeBidirIterator *)) gee_unrolled_linked_list_iterator_gee_bidir_iterator_get_g_destroy_func;
}
static GType gee_unrolled_linked_list_iterator_gee_bidir_list_iterator_get_g_type (GeeUnrolledLinkedListIterator* self) {
return self->priv->g_type;
}
static GBoxedCopyFunc gee_unrolled_linked_list_iterator_gee_bidir_list_iterator_get_g_dup_func (GeeUnrolledLinkedListIterator* self) {
return self->priv->g_dup_func;
}
static GDestroyNotify gee_unrolled_linked_list_iterator_gee_bidir_list_iterator_get_g_destroy_func (GeeUnrolledLinkedListIterator* self) {
return self->priv->g_destroy_func;
}
static void gee_unrolled_linked_list_iterator_gee_bidir_list_iterator_interface_init (GeeBidirListIteratorIface * iface) {
gee_unrolled_linked_list_iterator_gee_bidir_list_iterator_parent_iface = g_type_interface_peek_parent (iface);
iface->insert = (void (*) (GeeBidirListIterator *, gconstpointer)) gee_unrolled_linked_list_iterator_real_insert;
iface->get_g_type = (GType (*) (GeeBidirListIterator *)) gee_unrolled_linked_list_iterator_gee_bidir_list_iterator_get_g_type;
iface->get_g_dup_func = (GBoxedCopyFunc (*) (GeeBidirListIterator *)) gee_unrolled_linked_list_iterator_gee_bidir_list_iterator_get_g_dup_func;
iface->get_g_destroy_func = (GDestroyNotify (*) (GeeBidirListIterator *)) gee_unrolled_linked_list_iterator_gee_bidir_list_iterator_get_g_destroy_func;
}
static void gee_unrolled_linked_list_iterator_instance_init (GeeUnrolledLinkedListIterator * self) {
self->priv = GEE_UNROLLED_LINKED_LIST_ITERATOR_GET_PRIVATE (self);
self->priv->_current = NULL;
self->priv->_pos = -1;
self->priv->_deleted = FALSE;
self->priv->_index = -1;
}
static void gee_unrolled_linked_list_iterator_finalize (GObject * obj) {
GeeUnrolledLinkedListIterator * self;
self = G_TYPE_CHECK_INSTANCE_CAST (obj, GEE_UNROLLED_LINKED_LIST_TYPE_ITERATOR, GeeUnrolledLinkedListIterator);
_g_object_unref0 (self->priv->_list);
G_OBJECT_CLASS (gee_unrolled_linked_list_iterator_parent_class)->finalize (obj);
}
static GType gee_unrolled_linked_list_iterator_get_type (void) {
static volatile gsize gee_unrolled_linked_list_iterator_type_id__volatile = 0;
if (g_once_init_enter (&gee_unrolled_linked_list_iterator_type_id__volatile)) {
static const GTypeInfo g_define_type_info = { sizeof (GeeUnrolledLinkedListIteratorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gee_unrolled_linked_list_iterator_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GeeUnrolledLinkedListIterator), 0, (GInstanceInitFunc) gee_unrolled_linked_list_iterator_instance_init, NULL };
static const GInterfaceInfo gee_traversable_info = { (GInterfaceInitFunc) gee_unrolled_linked_list_iterator_gee_traversable_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
static const GInterfaceInfo gee_iterator_info = { (GInterfaceInitFunc) gee_unrolled_linked_list_iterator_gee_iterator_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
static const GInterfaceInfo gee_list_iterator_info = { (GInterfaceInitFunc) gee_unrolled_linked_list_iterator_gee_list_iterator_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
static const GInterfaceInfo gee_bidir_iterator_info = { (GInterfaceInitFunc) gee_unrolled_linked_list_iterator_gee_bidir_iterator_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
static const GInterfaceInfo gee_bidir_list_iterator_info = { (GInterfaceInitFunc) gee_unrolled_linked_list_iterator_gee_bidir_list_iterator_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
GType gee_unrolled_linked_list_iterator_type_id;
gee_unrolled_linked_list_iterator_type_id = g_type_register_static (G_TYPE_OBJECT, "GeeUnrolledLinkedListIterator", &g_define_type_info, 0);
g_type_add_interface_static (gee_unrolled_linked_list_iterator_type_id, GEE_TYPE_TRAVERSABLE, &gee_traversable_info);
g_type_add_interface_static (gee_unrolled_linked_list_iterator_type_id, GEE_TYPE_ITERATOR, &gee_iterator_info);
g_type_add_interface_static (gee_unrolled_linked_list_iterator_type_id, GEE_TYPE_LIST_ITERATOR, &gee_list_iterator_info);
g_type_add_interface_static (gee_unrolled_linked_list_iterator_type_id, GEE_TYPE_BIDIR_ITERATOR, &gee_bidir_iterator_info);
g_type_add_interface_static (gee_unrolled_linked_list_iterator_type_id, GEE_TYPE_BIDIR_LIST_ITERATOR, &gee_bidir_list_iterator_info);
g_once_init_leave (&gee_unrolled_linked_list_iterator_type_id__volatile, gee_unrolled_linked_list_iterator_type_id);
}
return gee_unrolled_linked_list_iterator_type_id__volatile;
}
static void _vala_gee_unrolled_linked_list_iterator_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
GeeUnrolledLinkedListIterator * self;
self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_UNROLLED_LINKED_LIST_TYPE_ITERATOR, GeeUnrolledLinkedListIterator);
switch (property_id) {
case GEE_UNROLLED_LINKED_LIST_ITERATOR_VALID_PROPERTY:
g_value_set_boolean (value, gee_iterator_get_valid ((GeeIterator*) self));
break;
case GEE_UNROLLED_LINKED_LIST_ITERATOR_READ_ONLY_PROPERTY:
g_value_set_boolean (value, gee_iterator_get_read_only ((GeeIterator*) self));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
}
}
static void _vala_gee_unrolled_linked_list_iterator_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
GeeUnrolledLinkedListIterator * self;
self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_UNROLLED_LINKED_LIST_TYPE_ITERATOR, GeeUnrolledLinkedListIterator);
switch (property_id) {
case GEE_UNROLLED_LINKED_LIST_ITERATOR_G_TYPE:
self->priv->g_type = g_value_get_gtype (value);
break;
case GEE_UNROLLED_LINKED_LIST_ITERATOR_G_DUP_FUNC:
self->priv->g_dup_func = g_value_get_pointer (value);
break;
case GEE_UNROLLED_LINKED_LIST_ITERATOR_G_DESTROY_FUNC:
self->priv->g_destroy_func = g_value_get_pointer (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
}
}
static GeeUnrolledLinkedListNode* gee_unrolled_linked_list_node_new (void) {
GeeUnrolledLinkedListNode* self;
self = g_slice_new0 (GeeUnrolledLinkedListNode);
gee_unrolled_linked_list_node_instance_init (self);
return self;
}
static void gee_unrolled_linked_list_node_instance_init (GeeUnrolledLinkedListNode * self) {
self->_prev = NULL;
self->_next = NULL;
self->_size = 0;
}
static void gee_unrolled_linked_list_node_free (GeeUnrolledLinkedListNode * self) {
_gee_unrolled_linked_list_node_free0 (self->_next);
g_slice_free (GeeUnrolledLinkedListNode, self);
}
static void gee_unrolled_linked_list_class_init (GeeUnrolledLinkedListClass * klass) {
gee_unrolled_linked_list_parent_class = g_type_class_peek_parent (klass);
g_type_class_add_private (klass, sizeof (GeeUnrolledLinkedListPrivate));
((GeeAbstractCollectionClass *) klass)->foreach = (gboolean (*) (GeeAbstractCollection *, GeeForallFunc, void*)) gee_unrolled_linked_list_real_foreach;
((GeeAbstractCollectionClass *) klass)->iterator = (GeeIterator* (*) (GeeAbstractCollection *)) gee_unrolled_linked_list_real_iterator;
((GeeAbstractCollectionClass *) klass)->contains = (gboolean (*) (GeeAbstractCollection *, gconstpointer)) gee_unrolled_linked_list_real_contains;
((GeeAbstractCollectionClass *) klass)->add = (gboolean (*) (GeeAbstractCollection *, gconstpointer)) gee_unrolled_linked_list_real_add;
((GeeAbstractCollectionClass *) klass)->remove = (gboolean (*) (GeeAbstractCollection *, gconstpointer)) gee_unrolled_linked_list_real_remove;
((GeeAbstractCollectionClass *) klass)->clear = (void (*) (GeeAbstractCollection *)) gee_unrolled_linked_list_real_clear;
((GeeAbstractListClass *) klass)->list_iterator = (GeeListIterator* (*) (GeeAbstractList *)) gee_unrolled_linked_list_real_list_iterator;
((GeeAbstractListClass *) klass)->get = (gpointer (*) (GeeAbstractList *, gint)) gee_unrolled_linked_list_real_get;
((GeeAbstractListClass *) klass)->set = (void (*) (GeeAbstractList *, gint, gconstpointer)) gee_unrolled_linked_list_real_set;
((GeeAbstractListClass *) klass)->index_of = (gint (*) (GeeAbstractList *, gconstpointer)) gee_unrolled_linked_list_real_index_of;
((GeeAbstractListClass *) klass)->insert = (void (*) (GeeAbstractList *, gint, gconstpointer)) gee_unrolled_linked_list_real_insert;
((GeeAbstractListClass *) klass)->remove_at = (gpointer (*) (GeeAbstractList *, gint)) gee_unrolled_linked_list_real_remove_at;
((GeeAbstractListClass *) klass)->slice = (GeeList* (*) (GeeAbstractList *, gint, gint)) gee_unrolled_linked_list_real_slice;
((GeeAbstractBidirListClass *) klass)->bidir_list_iterator = (GeeBidirListIterator* (*) (GeeAbstractBidirList *)) gee_unrolled_linked_list_real_bidir_list_iterator;
GEE_ABSTRACT_COLLECTION_CLASS (klass)->get_size = gee_unrolled_linked_list_real_get_size;
GEE_ABSTRACT_COLLECTION_CLASS (klass)->get_read_only = gee_unrolled_linked_list_real_get_read_only;
G_OBJECT_CLASS (klass)->get_property = _vala_gee_unrolled_linked_list_get_property;
G_OBJECT_CLASS (klass)->set_property = _vala_gee_unrolled_linked_list_set_property;
G_OBJECT_CLASS (klass)->finalize = gee_unrolled_linked_list_finalize;
g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_UNROLLED_LINKED_LIST_G_TYPE, g_param_spec_gtype ("g-type", "type", "type", G_TYPE_NONE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_UNROLLED_LINKED_LIST_G_DUP_FUNC, g_param_spec_pointer ("g-dup-func", "dup func", "dup func", G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_UNROLLED_LINKED_LIST_G_DESTROY_FUNC, g_param_spec_pointer ("g-destroy-func", "destroy func", "destroy func", G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_UNROLLED_LINKED_LIST_SIZE_PROPERTY, g_param_spec_int ("size", "size", "size", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_UNROLLED_LINKED_LIST_READ_ONLY_PROPERTY, g_param_spec_boolean ("read-only", "read-only", "read-only", FALSE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_UNROLLED_LINKED_LIST_CAPACITY_PROPERTY, g_param_spec_int ("capacity", "capacity", "capacity", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_UNROLLED_LINKED_LIST_REMAINING_CAPACITY_PROPERTY, g_param_spec_int ("remaining-capacity", "remaining-capacity", "remaining-capacity", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_UNROLLED_LINKED_LIST_IS_FULL_PROPERTY, g_param_spec_boolean ("is-full", "is-full", "is-full", FALSE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
}
static GType gee_unrolled_linked_list_gee_queue_get_g_type (GeeUnrolledLinkedList* self) {
return self->priv->g_type;
}
static GBoxedCopyFunc gee_unrolled_linked_list_gee_queue_get_g_dup_func (GeeUnrolledLinkedList* self) {
return self->priv->g_dup_func;
}
static GDestroyNotify gee_unrolled_linked_list_gee_queue_get_g_destroy_func (GeeUnrolledLinkedList* self) {
return self->priv->g_destroy_func;
}
static void gee_unrolled_linked_list_gee_queue_interface_init (GeeQueueIface * iface) {
gee_unrolled_linked_list_gee_queue_parent_iface = g_type_interface_peek_parent (iface);
iface->offer = (gboolean (*) (GeeQueue *, gconstpointer)) gee_unrolled_linked_list_real_offer;
iface->peek = (gpointer (*) (GeeQueue *)) gee_unrolled_linked_list_real_peek;
iface->poll = (gpointer (*) (GeeQueue *)) gee_unrolled_linked_list_real_poll;
iface->drain = (gint (*) (GeeQueue *, GeeCollection*, gint)) gee_unrolled_linked_list_real_drain;
iface->get_g_type = (GType (*) (GeeQueue *)) gee_unrolled_linked_list_gee_queue_get_g_type;
iface->get_g_dup_func = (GBoxedCopyFunc (*) (GeeQueue *)) gee_unrolled_linked_list_gee_queue_get_g_dup_func;
iface->get_g_destroy_func = (GDestroyNotify (*) (GeeQueue *)) gee_unrolled_linked_list_gee_queue_get_g_destroy_func;
iface->get_capacity = gee_unrolled_linked_list_real_get_capacity;
iface->get_remaining_capacity = gee_unrolled_linked_list_real_get_remaining_capacity;
iface->get_is_full = gee_unrolled_linked_list_real_get_is_full;
}
static GType gee_unrolled_linked_list_gee_deque_get_g_type (GeeUnrolledLinkedList* self) {
return self->priv->g_type;
}
static GBoxedCopyFunc gee_unrolled_linked_list_gee_deque_get_g_dup_func (GeeUnrolledLinkedList* self) {
return self->priv->g_dup_func;
}
static GDestroyNotify gee_unrolled_linked_list_gee_deque_get_g_destroy_func (GeeUnrolledLinkedList* self) {
return self->priv->g_destroy_func;
}
static void gee_unrolled_linked_list_gee_deque_interface_init (GeeDequeIface * iface) {
gee_unrolled_linked_list_gee_deque_parent_iface = g_type_interface_peek_parent (iface);
iface->offer_head = (gboolean (*) (GeeDeque *, gconstpointer)) gee_unrolled_linked_list_real_offer_head;
iface->peek_head = (gpointer (*) (GeeDeque *)) gee_unrolled_linked_list_real_peek_head;
iface->poll_head = (gpointer (*) (GeeDeque *)) gee_unrolled_linked_list_real_poll_head;
iface->drain_head = (gint (*) (GeeDeque *, GeeCollection*, gint)) gee_unrolled_linked_list_real_drain_head;
iface->offer_tail = (gboolean (*) (GeeDeque *, gconstpointer)) gee_unrolled_linked_list_real_offer_tail;
iface->peek_tail = (gpointer (*) (GeeDeque *)) gee_unrolled_linked_list_real_peek_tail;
iface->poll_tail = (gpointer (*) (GeeDeque *)) gee_unrolled_linked_list_real_poll_tail;
iface->drain_tail = (gint (*) (GeeDeque *, GeeCollection*, gint)) gee_unrolled_linked_list_real_drain_tail;
iface->get_g_type = (GType (*) (GeeDeque *)) gee_unrolled_linked_list_gee_deque_get_g_type;
iface->get_g_dup_func = (GBoxedCopyFunc (*) (GeeDeque *)) gee_unrolled_linked_list_gee_deque_get_g_dup_func;
iface->get_g_destroy_func = (GDestroyNotify (*) (GeeDeque *)) gee_unrolled_linked_list_gee_deque_get_g_destroy_func;
}
static void gee_unrolled_linked_list_instance_init (GeeUnrolledLinkedList * self) {
self->priv = GEE_UNROLLED_LINKED_LIST_GET_PRIVATE (self);
self->priv->_size = 0;
self->priv->_stamp = 0;
self->priv->_head = NULL;
self->priv->_tail = NULL;
}
static void gee_unrolled_linked_list_finalize (GObject * obj) {
GeeUnrolledLinkedList * self;
self = G_TYPE_CHECK_INSTANCE_CAST (obj, GEE_TYPE_UNROLLED_LINKED_LIST, GeeUnrolledLinkedList);
gee_abstract_collection_clear ((GeeAbstractCollection*) self);
_gee_unrolled_linked_list_node_free0 (self->priv->_head);
_gee_functions_equal_data_func_closure_unref0 (self->priv->_equal_func);
G_OBJECT_CLASS (gee_unrolled_linked_list_parent_class)->finalize (obj);
}
/**
* Unrolled doubly-linked list implementation of the {@link List} interface.
*
* The unrolled doubly-linked list combines the advantages and disadvantages
* of the {@link ArrayList} and {@link LinkedList} and is usually suitable when
* modifications and read operations are balanced.
*
* Please note that in our benchmarks the speed of most operations (insertion,
* deletion, sequential read) was on par or better then {@link ArrayList} and
* {@link LinkedList} except the prepending operation.
*
* @see ArrayList
* @see LinkedList
*/
GType gee_unrolled_linked_list_get_type (void) {
static volatile gsize gee_unrolled_linked_list_type_id__volatile = 0;
if (g_once_init_enter (&gee_unrolled_linked_list_type_id__volatile)) {
static const GTypeInfo g_define_type_info = { sizeof (GeeUnrolledLinkedListClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gee_unrolled_linked_list_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GeeUnrolledLinkedList), 0, (GInstanceInitFunc) gee_unrolled_linked_list_instance_init, NULL };
static const GInterfaceInfo gee_queue_info = { (GInterfaceInitFunc) gee_unrolled_linked_list_gee_queue_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
static const GInterfaceInfo gee_deque_info = { (GInterfaceInitFunc) gee_unrolled_linked_list_gee_deque_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
GType gee_unrolled_linked_list_type_id;
gee_unrolled_linked_list_type_id = g_type_register_static (GEE_TYPE_ABSTRACT_BIDIR_LIST, "GeeUnrolledLinkedList", &g_define_type_info, 0);
g_type_add_interface_static (gee_unrolled_linked_list_type_id, GEE_TYPE_QUEUE, &gee_queue_info);
g_type_add_interface_static (gee_unrolled_linked_list_type_id, GEE_TYPE_DEQUE, &gee_deque_info);
g_once_init_leave (&gee_unrolled_linked_list_type_id__volatile, gee_unrolled_linked_list_type_id);
}
return gee_unrolled_linked_list_type_id__volatile;
}
static void _vala_gee_unrolled_linked_list_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
GeeUnrolledLinkedList * self;
self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_TYPE_UNROLLED_LINKED_LIST, GeeUnrolledLinkedList);
switch (property_id) {
case GEE_UNROLLED_LINKED_LIST_SIZE_PROPERTY:
g_value_set_int (value, gee_abstract_collection_get_size ((GeeAbstractCollection*) self));
break;
case GEE_UNROLLED_LINKED_LIST_READ_ONLY_PROPERTY:
g_value_set_boolean (value, gee_abstract_collection_get_read_only ((GeeAbstractCollection*) self));
break;
case GEE_UNROLLED_LINKED_LIST_CAPACITY_PROPERTY:
g_value_set_int (value, gee_queue_get_capacity ((GeeQueue*) self));
break;
case GEE_UNROLLED_LINKED_LIST_REMAINING_CAPACITY_PROPERTY:
g_value_set_int (value, gee_queue_get_remaining_capacity ((GeeQueue*) self));
break;
case GEE_UNROLLED_LINKED_LIST_IS_FULL_PROPERTY:
g_value_set_boolean (value, gee_queue_get_is_full ((GeeQueue*) self));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
}
}
static void _vala_gee_unrolled_linked_list_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
GeeUnrolledLinkedList * self;
self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_TYPE_UNROLLED_LINKED_LIST, GeeUnrolledLinkedList);
switch (property_id) {
case GEE_UNROLLED_LINKED_LIST_G_TYPE:
self->priv->g_type = g_value_get_gtype (value);
break;
case GEE_UNROLLED_LINKED_LIST_G_DUP_FUNC:
self->priv->g_dup_func = g_value_get_pointer (value);
break;
case GEE_UNROLLED_LINKED_LIST_G_DESTROY_FUNC:
self->priv->g_destroy_func = g_value_get_pointer (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
}
}
static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
if ((array != NULL) && (destroy_func != NULL)) {
int i;
for (i = 0; i < array_length; i = i + 1) {
if (((gpointer*) array)[i] != NULL) {
destroy_func (((gpointer*) array)[i]);
}
}
}
}
static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
_vala_array_destroy (array, array_length, destroy_func);
g_free (array);
}