Interface TypeValueLCopyFunc

All Superinterfaces:
FunctionPointer
Functional Interface:
This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

@FunctionalInterface @Generated("org.javagi.JavaGI") public interface TypeValueLCopyFunc extends FunctionPointer

Functional interface declaration of the TypeValueLCopyFunc callback.

See Also:
  • Method Details

    • run

      String run(Value value, @Nullable TypeCValue @Nullable [] collectValues, int collectFlags)

      This function is responsible for storing the value contents into arguments passed through a variadic argument list which got collected into collect_values according to lcopy_format.

      The n_collect_values argument equals the string length of lcopy_format, and collect_flags may contain G_VALUE_NOCOPY_CONTENTS.

      In contrast to GTypeValueCollectFunc, this function is obliged to always properly support G_VALUE_NOCOPY_CONTENTS.

      Similar to GTypeValueCollectFunc the function may prematurely abort by returning a newly allocated string describing an error condition. To complete the string example:

      gchar **string_p = collect_values[0].v_pointer;
      g_return_val_if_fail (string_p != NULL,
        g_strdup ("string location passed as NULL"));
      
      if (collect_flags & G_VALUE_NOCOPY_CONTENTS)
        *string_p = value->data[0].v_pointer;
      else
        *string_p = g_strdup (value->data[0].v_pointer);
      

      And an illustrative version of this function for reference-counted types:

      GObject **object_p = collect_values[0].v_pointer;
      g_return_val_if_fail (object_p != NULL,
        g_strdup ("object location passed as NULL"));
      
      if (value->data[0].v_pointer == NULL)
        *object_p = NULL;
      else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) // always honour
        *object_p = value->data[0].v_pointer;
      else
        *object_p = g_object_ref (value->data[0].v_pointer);
      
      return NULL;
      
      Parameters:
      value - the value to lcopy
      collectValues - the collected locations for storage
      collectFlags - optional flags
      Returns:
      NULL on success, otherwise a newly allocated error string on failure
      Since:
      2.78
    • upcall

      default MemorySegment upcall(MemorySegment value, int nCollectValues, MemorySegment collectValues, int collectFlags)
      The upcall method is called from native code. The parameters are marshaled and run(Value, TypeCValue[], int) is executed.
    • toCallback

      default MemorySegment toCallback(Arena arena)
      Creates a native function pointer to the upcall(MemorySegment, int, MemorySegment, int) method.
      Specified by:
      toCallback in interface FunctionPointer
      Parameters:
      arena - the arena in which the function pointer is allocated
      Returns:
      the native function pointer