Skip to content

GLib.StrvBuilder

record (struct)

GStrvBuilder is a helper object to build a None-terminated string arrays.

The following example shows how to build a two element array:

  g_autoptr(GStrvBuilder) builder = g_strv_builder_new ();
  g_strv_builder_add (builder, "hello");
  g_strv_builder_add (builder, "world");

  g_auto(GStrv) array = g_strv_builder_end (builder);

  g_assert_true (g_strv_equal (array, (const char *[]) { "hello", "world", NULL }));

Constructors

new

@classmethod
def new(cls) -> StrvBuilder

Creates a new StrvBuilder with a reference count of 1. Use StrvBuilder.unref on the returned value when no longer needed.

Methods

add

def add(self, value: str) -> None

Add a string to the end of the array.

Since 2.68

Parameters:

  • value — a string.

addv

def addv(self, value: list[str]) -> None

Appends all the strings in the given vector to the builder.

Since 2.70

Parameters:

  • value — the vector of strings to add

end

def end(self) -> list[str]

Ends the builder process and returns the constructed NULL-terminated string array. The returned value should be freed with strfreev when no longer needed.

ref

def ref(self) -> StrvBuilder

Atomically increments the reference count of builder by one. This function is thread-safe and may be called from any thread.

take

def take(self, value: str) -> None

Add a string to the end of the array. After value belongs to the StrvBuilder and may no longer be modified by the caller.

Since 2.80

Parameters:

  • value — a string. Ownership of the string is transferred to the StrvBuilder

unref

def unref(self) -> None

Decreases the reference count on builder.

In the event that there are no more references, releases all memory associated with the StrvBuilder.

unref_to_strv

def unref_to_strv(self) -> list[str]

Decreases the reference count on the string vector builder, and returns its contents as a NULL-terminated string array.

This function is especially useful for cases where it's not possible to use g_autoptr().

GStrvBuilder *builder = g_strv_builder_new ();
g_strv_builder_add (builder, "hello");
g_strv_builder_add (builder, "world");

GStrv array = g_strv_builder_unref_to_strv (builder);

g_assert_true (g_strv_equal (array, (const char *[]) { "hello", "world", NULL }));

g_strfreev (array);