Package ch.bailu.gtk.glib
Class PtrArray
java.lang.Object
ch.bailu.gtk.type.Type
ch.bailu.gtk.type.Pointer
ch.bailu.gtk.type.Record
ch.bailu.gtk.glib.PtrArray
- All Implemented Interfaces:
PointerInterface
Contains the public fields of a pointer array.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic interface
static interface
static interface
static interface
static interface
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic PtrArray
_new()
Creates a new #GPtrArray with a reference count of 1.static void
Adds a pointer to the end of the pointer array.static PtrArray
copy
(PtrArray array, PtrArray.OnCopyFunc func, Pointer user_data) Makes a full (deep) copy of a #GPtrArray.static void
extend
(PtrArray array_to_extend, PtrArray array, PtrArray.OnCopyFunc func, Pointer user_data) Adds all pointers of @array to the end of the array @array_to_extend.static void
extendAndSteal
(PtrArray array_to_extend, PtrArray array) Adds all the pointers in @array to the end of @array_to_extend, transferring
ownership of each element from @array to @array_to_extend and modifying
@array_to_extend in-place.static void
foreach
(PtrArray array, PtrArray.OnFunc func, Pointer user_data) Calls a function for each element of a #GPtrArray.static ClassHandler
static int
static long
static TypeSystem.TypeSize
static long
static TypeSystem.TypeSize
static void
Inserts an element into the pointer array at the given index.static boolean
isNullTerminated
(PtrArray array) Gets whether the @array was constructed as %NULL-terminated.static PtrArray
newFull
(int reserved_size, PtrArray.OnDestroyNotify element_free_func) Creates a new #GPtrArray with @reserved_size pointers preallocated
and a reference count of 1.static PtrArray
newNullTerminated
(int reserved_size, PtrArray.OnDestroyNotify element_free_func, boolean null_terminated) Like g_ptr_array_new_full() but also allows to set the array to
be %NULL terminated.static PtrArray
newWithFreeFunc
(PtrArray.OnDestroyNotify element_free_func) Creates a new #GPtrArray with a reference count of 1 and use
@element_free_func for freeing each element when the array is destroyed
either via g_ptr_array_unref(), when g_ptr_array_free() is called with
@free_segment set to %TRUE or when removing elements.static PtrArray
Atomically increments the reference count of @array by one.static boolean
Removes the first occurrence of the given pointer from the pointer
array.static boolean
removeFast
(PtrArray array, Pointer data) Removes the first occurrence of the given pointer from the pointer
array.static Pointer
removeIndex
(PtrArray array, int index_) Removes the pointer at the given index from the pointer array.static Pointer
removeIndexFast
(PtrArray array, int index_) Removes the pointer at the given index from the pointer array.static PtrArray
removeRange
(PtrArray array, int index_, int length) Removes the given number of pointers starting at the given index
from a #GPtrArray.static void
setFreeFunc
(PtrArray array, PtrArray.OnDestroyNotify element_free_func) Sets a function for freeing each element when @array is destroyed
either via g_ptr_array_unref(), when g_ptr_array_free() is called
with @free_segment set to %TRUE or when removing elements.static void
Sets the size of the array.static PtrArray
sizedNew
(int reserved_size) Creates a new #GPtrArray with @reserved_size pointers preallocated
and a reference count of 1.static void
sort
(PtrArray array, PtrArray.OnCompareFunc compare_func) Sorts the array, using @compare_func which should be a qsort()-style
comparison function (returns less than zero for first arg is less
than second arg, zero for equal, greater than zero if irst arg is
greater than second arg).static void
sortWithData
(PtrArray array, PtrArray.OnCompareDataFunc compare_func, Pointer user_data) Like g_ptr_array_sort(), but the comparison function has an extra
user data argument.static Pointer
stealIndex
(PtrArray array, int index_) Removes the pointer at the given index from the pointer array.static Pointer
stealIndexFast
(PtrArray array, int index_) Removes the pointer at the given index from the pointer array.static void
Atomically decrements the reference count of @array by one.Methods inherited from class ch.bailu.gtk.type.Pointer
asCPointer, cast, connectSignal, disconnectSignals, disconnectSignals, equals, hashCode, throwIfNull, throwNullPointerException, toString, unregisterCallbacks, unregisterCallbacks
Methods inherited from class ch.bailu.gtk.type.Type
asCPointer, asCPointer, asCPointerNotNull, asJnaPointer, asJnaPointer, asPointer, asPointer, cast, cast, throwIfNull
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface ch.bailu.gtk.type.PointerInterface
asCPointerNotNull, asJnaPointer, asPointer, isNotNull, isNull
-
Constructor Details
-
PtrArray
-
-
Method Details
-
getClassHandler
-
add
Adds a pointer to the end of the pointer array. The array will grow
in size automatically if necessary.- Parameters:
array
- a #GPtrArraydata
- the pointer to add
-
copy
public static PtrArray copy(@Nonnull PtrArray array, PtrArray.OnCopyFunc func, @Nullable Pointer user_data) Makes a full (deep) copy of a #GPtrArray.
@func, as a #GCopyFunc, takes two arguments, the data to be copied
and a @user_data pointer. On common processor architectures, it's safe to
pass %NULL as @user_data if the copy function takes only one argument. You
may get compiler warnings from this though if compiling with GCC’s
`-Wcast-function-type` warning.
If @func is %NULL, then only the pointers (and not what they are
pointing to) are copied to the new #GPtrArray.
The copy of @array will have the same #GDestroyNotify for its elements as
@array. The copy will also be %NULL terminated if (and only if) the source
array is.- Parameters:
array
- #GPtrArray to duplicatefunc
- a copy function used to copy every element in the arrayuser_data
- user data passed to the copy function @func, or %NULL- Returns:
- a deep copy of the initial #GPtrArray.
-
extend
public static void extend(@Nonnull PtrArray array_to_extend, @Nonnull PtrArray array, PtrArray.OnCopyFunc func, @Nullable Pointer user_data) Adds all pointers of @array to the end of the array @array_to_extend.
The array will grow in size automatically if needed. @array_to_extend is
modified in-place.
@func, as a #GCopyFunc, takes two arguments, the data to be copied
and a @user_data pointer. On common processor architectures, it's safe to
pass %NULL as @user_data if the copy function takes only one argument. You
may get compiler warnings from this though if compiling with GCC’s
`-Wcast-function-type` warning.
If @func is %NULL, then only the pointers (and not what they are
pointing to) are copied to the new #GPtrArray.
Whether @array_to_extend is %NULL terminated stays unchanged by this function.- Parameters:
array_to_extend
- a #GPtrArray.array
- a #GPtrArray to add to the end of @array_to_extend.func
- a copy function used to copy every element in the arrayuser_data
- user data passed to the copy function @func, or %NULL
-
extendAndSteal
Adds all the pointers in @array to the end of @array_to_extend, transferring
ownership of each element from @array to @array_to_extend and modifying
@array_to_extend in-place. @array is then freed.
As with g_ptr_array_free(), @array will be destroyed if its reference count
is 1. If its reference count is higher, it will be decremented and the
length of @array set to zero.- Parameters:
array_to_extend
- a #GPtrArray.array
- a #GPtrArray to add to the end of @array_to_extend.
-
foreach
public static void foreach(@Nonnull PtrArray array, PtrArray.OnFunc func, @Nullable Pointer user_data) Calls a function for each element of a #GPtrArray. @func must not
add elements to or remove elements from the array.- Parameters:
array
- a #GPtrArrayfunc
- the function to call for each array elementuser_data
- user data to pass to the function
-
insert
Inserts an element into the pointer array at the given index. The
array will grow in size automatically if necessary.- Parameters:
array
- a #GPtrArrayindex_
- the index to place the new element at, or -1 to appenddata
- the pointer to add.
-
isNullTerminated
Gets whether the @array was constructed as %NULL-terminated.
This will only return %TRUE for arrays constructed by passing %TRUE to the
`null_terminated` argument of g_ptr_array_new_null_terminated(). It will not
return %TRUE for normal arrays which have had a %NULL element appended to
them.- Parameters:
array
- the #GPtrArray- Returns:
- %TRUE if the array is made to be %NULL terminated.
-
_new
Creates a new #GPtrArray with a reference count of 1.- Returns:
- the new #GPtrArray
-
newFull
Creates a new #GPtrArray with @reserved_size pointers preallocated
and a reference count of 1. This avoids frequent reallocation, if
you are going to add many pointers to the array. Note however that
the size of the array is still 0. It also set @element_free_func
for freeing each element when the array is destroyed either via
g_ptr_array_unref(), when g_ptr_array_free() is called with
@free_segment set to %TRUE or when removing elements.- Parameters:
reserved_size
- number of pointers preallocatedelement_free_func
- A function to free elements with destroy @array or %NULL- Returns:
- A new #GPtrArray
-
newNullTerminated
public static PtrArray newNullTerminated(int reserved_size, PtrArray.OnDestroyNotify element_free_func, boolean null_terminated) Like g_ptr_array_new_full() but also allows to set the array to
be %NULL terminated. A %NULL terminated pointer array has an
additional %NULL pointer after the last element, beyond the
current length.
#GPtrArray created by other constructors are not automatically %NULL
terminated.
Note that if the @array's length is zero and currently no
data array is allocated, then pdata will still be %NULL.
%GPtrArray will only %NULL terminate pdata, if an actual
array is allocated. It does not guarantee that an array
is always allocated. In other words, if the length is zero,
then pdata may either point to a %NULL terminated array of length
zero or be %NULL.- Parameters:
reserved_size
- number of pointers preallocated. If @null_terminated is %TRUE, the actually allocated buffer size is @reserved_size plus 1, unless @reserved_size is zero, in which case no initial buffer gets allocated.element_free_func
- A function to free elements with destroy @array or %NULLnull_terminated
- whether to make the array as %NULL terminated.- Returns:
- A new #GPtrArray
-
newWithFreeFunc
Creates a new #GPtrArray with a reference count of 1 and use
@element_free_func for freeing each element when the array is destroyed
either via g_ptr_array_unref(), when g_ptr_array_free() is called with
@free_segment set to %TRUE or when removing elements.- Parameters:
element_free_func
- A function to free elements with destroy @array or %NULL- Returns:
- A new #GPtrArray
-
ref
Atomically increments the reference count of @array by one.
This function is thread-safe and may be called from any thread.- Parameters:
array
- a #GPtrArray- Returns:
- The passed in #GPtrArray
-
remove
Removes the first occurrence of the given pointer from the pointer
array. The following elements are moved down one place. If @array
has a non-%NULL #GDestroyNotify function it is called for the
removed element.
It returns %TRUE if the pointer was removed, or %FALSE if the
pointer was not found.- Parameters:
array
- a #GPtrArraydata
- the pointer to remove- Returns:
- %TRUE if the pointer is removed, %FALSE if the pointer is not found in the array
-
removeFast
Removes the first occurrence of the given pointer from the pointer
array. The last element in the array is used to fill in the space,
so this function does not preserve the order of the array. But it
is faster than g_ptr_array_remove(). If @array has a non-%NULL
#GDestroyNotify function it is called for the removed element.
It returns %TRUE if the pointer was removed, or %FALSE if the
pointer was not found.- Parameters:
array
- a #GPtrArraydata
- the pointer to remove- Returns:
- %TRUE if the pointer was found in the array
-
removeIndex
Removes the pointer at the given index from the pointer array.
The following elements are moved down one place. If @array has
a non-%NULL #GDestroyNotify function it is called for the removed
element. If so, the return value from this function will potentially point
to freed memory (depending on the #GDestroyNotify implementation).- Parameters:
array
- a #GPtrArrayindex_
- the index of the pointer to remove- Returns:
- the pointer which was removed
-
removeIndexFast
Removes the pointer at the given index from the pointer array.
The last element in the array is used to fill in the space, so
this function does not preserve the order of the array. But it
is faster than g_ptr_array_remove_index(). If @array has a non-%NULL
#GDestroyNotify function it is called for the removed element. If so, the
return value from this function will potentially point to freed memory
(depending on the #GDestroyNotify implementation).- Parameters:
array
- a #GPtrArrayindex_
- the index of the pointer to remove- Returns:
- the pointer which was removed
-
removeRange
Removes the given number of pointers starting at the given index
from a #GPtrArray. The following elements are moved to close the
gap. If @array has a non-%NULL #GDestroyNotify function it is
called for the removed elements.- Parameters:
array
- a @GPtrArrayindex_
- the index of the first pointer to removelength
- the number of pointers to remove- Returns:
- the @array
-
setFreeFunc
Sets a function for freeing each element when @array is destroyed
either via g_ptr_array_unref(), when g_ptr_array_free() is called
with @free_segment set to %TRUE or when removing elements.- Parameters:
array
- A #GPtrArrayelement_free_func
- A function to free elements with destroy @array or %NULL
-
setSize
Sets the size of the array. When making the array larger,
newly-added elements will be set to %NULL. When making it smaller,
if @array has a non-%NULL #GDestroyNotify function then it will be
called for the removed elements.- Parameters:
array
- a #GPtrArraylength
- the new length of the pointer array
-
sizedNew
Creates a new #GPtrArray with @reserved_size pointers preallocated
and a reference count of 1. This avoids frequent reallocation, if
you are going to add many pointers to the array. Note however that
the size of the array is still 0.- Parameters:
reserved_size
- number of pointers preallocated- Returns:
- the new #GPtrArray
-
sort
Sorts the array, using @compare_func which should be a qsort()-style
comparison function (returns less than zero for first arg is less
than second arg, zero for equal, greater than zero if irst arg is
greater than second arg).
Note that the comparison function for g_ptr_array_sort() doesn't
take the pointers from the array as arguments, it takes pointers to
the pointers in the array. Here is a full example of usage:
<!-- language="C" --> typedef struct { gchar *name; gint size; } FileListEntry; static gint sort_filelist (gconstpointer a, gconstpointer b) { const FileListEntry *entry1 = *((FileListEntry **) a); const FileListEntry *entry2 = *((FileListEntry **) b); return g_ascii_strcasecmp (entry1->name, entry2->name); } … g_autoptr (GPtrArray) file_list = NULL; // initialize file_list array and load with many FileListEntry entries ... // now sort it with g_ptr_array_sort (file_list, sort_filelist);
This is guaranteed to be a stable sort since version 2.32.- Parameters:
array
- a #GPtrArraycompare_func
- comparison function
-
sortWithData
public static void sortWithData(@Nonnull PtrArray array, PtrArray.OnCompareDataFunc compare_func, @Nullable Pointer user_data) Like g_ptr_array_sort(), but the comparison function has an extra
user data argument.
Note that the comparison function for g_ptr_array_sort_with_data()
doesn't take the pointers from the array as arguments, it takes
pointers to the pointers in the array. Here is a full example of use:
<!-- language="C" --> typedef enum { SORT_NAME, SORT_SIZE } SortMode; typedef struct { gchar *name; gint size; } FileListEntry; static gint sort_filelist (gconstpointer a, gconstpointer b, gpointer user_data) { gint order; const SortMode sort_mode = GPOINTER_TO_INT (user_data); const FileListEntry *entry1 = *((FileListEntry **) a); const FileListEntry *entry2 = *((FileListEntry **) b); switch (sort_mode) { case SORT_NAME: order = g_ascii_strcasecmp (entry1->name, entry2->name); break; case SORT_SIZE: order = entry1->size - entry2->size; break; default: order = 0; break; } return order; } ... g_autoptr (GPtrArray) file_list = NULL; SortMode sort_mode; // initialize file_list array and load with many FileListEntry entries ... // now sort it with sort_mode = SORT_NAME; g_ptr_array_sort_with_data (file_list, sort_filelist, GINT_TO_POINTER (sort_mode));
This is guaranteed to be a stable sort since version 2.32.- Parameters:
array
- a #GPtrArraycompare_func
- comparison functionuser_data
- data to pass to @compare_func
-
stealIndex
Removes the pointer at the given index from the pointer array.
The following elements are moved down one place. The #GDestroyNotify for
@array is *not* called on the removed element; ownership is transferred to
the caller of this function.- Parameters:
array
- a #GPtrArrayindex_
- the index of the pointer to steal- Returns:
- the pointer which was removed
-
stealIndexFast
Removes the pointer at the given index from the pointer array.
The last element in the array is used to fill in the space, so
this function does not preserve the order of the array. But it
is faster than g_ptr_array_steal_index(). The #GDestroyNotify for @array is
*not* called on the removed element; ownership is transferred to the caller
of this function.- Parameters:
array
- a #GPtrArrayindex_
- the index of the pointer to steal- Returns:
- the pointer which was removed
-
unref
Atomically decrements the reference count of @array by one. If the
reference count drops to 0, the effect is the same as calling
g_ptr_array_free() with @free_segment set to %TRUE. This function
is thread-safe and may be called from any thread.- Parameters:
array
- A #GPtrArray
-
getTypeID
public static long getTypeID() -
getParentTypeID
public static long getParentTypeID() -
getTypeSize
-
getParentTypeSize
-
getInstanceSize
public static int getInstanceSize()
-