Basics

Guides

API Reference

Menu

Basics

Guides

API Reference

class: GStaticPrivate

[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 (&current_number_key); if (!current_number) { current_number = g_new (int, 1); *current_number = 0; g_static_private_set (&current_number_key, current_number, g_free); } *current_number = calc_next_number (*current_number); return *current_number; } ]|

Members

  • handleObj
  • lib
  • retainedCallbacks
  • signalHandlerNames
  • signalSetterHandlers

Methods

  • GStaticPrivate (Handle = null)

    Creates a new StaticPrivate by wrapping a native handle or another wrapper.

    • @p 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 exposing handle(), or null. Returns null when the argument carries no pointer.

    • @p Source is the raw handle, raw buffer, wrapper, or null.
    • @r A raw pointer carrier or null when no pointer is present.
  • getLib ()

    Returns the opened native library for this generated wrapper.

    • @r The opened native library.
  • handle ()

    Returns the wrapped NativeHandle.

    • @r The wrapped NativeHandle.
  • isNull ()

    Returns true when the wrapped handle is null.

    • @r A bool.
  • describe ()

    Returns a small string for debugging generated wrappers.

    • @r 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.

    • @r None.
  • get ()

    Works like g_private_get() only for a #GStaticPrivate. This function works even if g_thread_init() has not yet been called.

    • @r the corresponding pointer.
  • init ()

    Initializes @private_key. Alternatively you can initialize it with %G_STATIC_PRIVATE_INIT.

    • @r 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().

    • @p data is the new pointer.
    • @p notify is a function to be called with the pointer whenever the current thread ends or sets this pointer again.
    • @r None.

class: GStaticPrivateLayout

[12:14] static extends: object

Generated struct layout helper for GIR record StaticPrivate.

Methods

  • layout ()

    Returns the Panama struct layout for StaticPrivate.