Basics
Guides
API Reference
Basics
Guides
API Reference
[36:7] extends: object
A #GStaticPrivate works almost like a #GPrivate, but it has one significant advantage. It doesn't need to be created at run-time like a #GPrivate, but can be defined at compile-time. This is similar to the difference between #GMutex and #GStaticMutex. Now look at our give_me_next_number() example with #GStaticPrivate: |[ int give_me_next_number () { static GStaticPrivate current_number_key = G_STATIC_PRIVATE_INIT; int *current_number = g_static_private_get (¤t_number_key); if (!current_number) { current_number = g_new (int, 1); *current_number = 0; g_static_private_set (¤t_number_key, current_number, g_free); } *current_number = calc_next_number (*current_number); return *current_number; } ]|
GStaticPrivate (Handle = null)
Creates a new
StaticPrivateby wrapping a native handle or another wrapper.
Handle is the native handle or another wrapper whose handle to adopt.toNativeHandle (Source)
Normalizes a constructor argument into a raw pointer carrier. Accepts a raw NativeHandle, a raw NativeBuffer returned from
fn.call(...), another generated wrapper exposinghandle(), or null. Returns null when the argument carries no pointer.
Source is the raw handle, raw buffer, wrapper, or null.A raw pointer carrier or null when no pointer is present.getLib ()
Returns the opened native library for this generated wrapper.
The opened native library.handle ()
Returns the wrapped NativeHandle.
The wrapped NativeHandle.isNull ()
Returns true when the wrapped handle is null.
A bool.describe ()
Returns a small string for debugging generated wrappers.
A string.free ()
Releases all resources allocated to @private_key. You don't have to call this functions for a #GStaticPrivate with an unbounded lifetime, i.e. objects declared 'static', but if you have a #GStaticPrivate as a member of a structure and the structure is freed, you should also free the #GStaticPrivate.
None.get ()
Works like g_private_get() only for a #GStaticPrivate. This function works even if g_thread_init() has not yet been called.
the corresponding pointer.init ()
Initializes @private_key. Alternatively you can initialize it with %G_STATIC_PRIVATE_INIT.
None.set (data, object notify)
Sets the pointer keyed to @private_key for the current thread and the function @notify to be called with that pointer (%NULL or non-%NULL), whenever the pointer is set again or whenever the current thread ends. This function works even if g_thread_init() has not yet been called. If g_thread_init() is called later, the @data keyed to @private_key will be inherited only by the main thread, i.e. the one that called g_thread_init(). @notify is used quite differently from @destructor in g_private_new().
data is the new pointer.notify is a function to be called with the pointer whenever the current thread ends or sets this pointer again.None.[12:14] static extends: object
Generated struct layout helper for GIR record StaticPrivate.
layout ()
Returns the Panama struct layout for
StaticPrivate.

Aussom
Write once. Embed everywhere.
Copyright 2026 Austin Lehman. All rights reserved.