Class PathBuf

All Implemented Interfaces:
Proxy

@Generated("org.javagi.JavaGI") public class PathBuf extends ProxyInstance

GPathBuf is a helper type that allows you to easily build paths from individual elements, using the platform specific conventions for path separators.

g_auto (GPathBuf) path;

g_path_buf_init (&path);

g_path_buf_push (&path, "usr");
g_path_buf_push (&path, "bin");
g_path_buf_push (&path, "echo");

g_autofree char *echo = g_path_buf_to_path (&path);
g_assert_cmpstr (echo, ==, "/usr/bin/echo");

You can also load a full path and then operate on its components:

g_auto (GPathBuf) path;

g_path_buf_init_from_path (&path, "/usr/bin/echo");

g_path_buf_pop (&path);
g_path_buf_push (&path, "sh");

g_autofree char *sh = g_path_buf_to_path (&path);
g_assert_cmpstr (sh, ==, "/usr/bin/sh");
Since:
2.76
  • Constructor Details

    • PathBuf

      public PathBuf(MemorySegment address)
      Create a PathBuf proxy instance for the provided memory address.
      Parameters:
      address - the memory address of the native object
    • PathBuf

      public PathBuf(Arena arena)
      Allocate a new PathBuf.
      Parameters:
      arena - to control the memory allocation scope
    • PathBuf

      public PathBuf()
      Allocate a new PathBuf. The memory is allocated with Arena.ofAuto().
    • PathBuf

      public PathBuf(MemorySegment[] dummy, Arena arena)
      Allocate a new PathBuf with the fields set to the provided values.
      Parameters:
      dummy - value for the field dummy
      arena - to control the memory allocation scope
    • PathBuf

      public PathBuf(MemorySegment[] dummy)
      Allocate a new PathBuf with the fields set to the provided values. The memory is allocated with Arena.ofAuto().
      Parameters:
      dummy - value for the field dummy
  • Method Details

    • getMemoryLayout

      public static MemoryLayout getMemoryLayout()
      The memory layout of the native struct.
      Returns:
      the memory layout
    • readDummy

      public @Nullable MemorySegment @Nullable [] readDummy()
      Read the value of the field dummy.
      Returns:
      The value of the field dummy
    • writeDummy

      public void writeDummy(@Nullable MemorySegment @Nullable [] dummy, Arena _arena)
      Write a value in the field dummy.
      Parameters:
      dummy - The new value for the field dummy
    • equal

      public static boolean equal(MemorySegment v1, MemorySegment v2)

      Compares two path buffers for equality and returns TRUE if they are equal.

      The paths inside the path buffers are not going to be normalized, so X/Y/Z/A/.., X/./Y/Z and X/Y/Z are not going to be considered equal.

      This function can be passed to g_hash_table_new() as the key_equal_func parameter.

      Parameters:
      v1 - a path buffer to compare
      v2 - a path buffer to compare
      Returns:
      TRUE if the two path buffers are equal, and FALSE otherwise
      Since:
      2.76
    • new_

      public static PathBuf new_()
      Allocates a new GPathBuf.
      Returns:
      the newly allocated path buffer
      Since:
      2.76
    • newFromPath

      public static PathBuf newFromPath(@Nullable String path)
      Allocates a new GPathBuf with the given path.
      Parameters:
      path - the path used to initialize the buffer
      Returns:
      the newly allocated path buffer
      Since:
      2.76
    • clear

      public void clear()

      Clears the contents of the path buffer.

      This function should be use to free the resources in a stack-allocated GPathBuf initialized using g_path_buf_init() or g_path_buf_init_from_path().

      Since:
      2.76
    • clearToPath

      public @Nullable String clearToPath()

      Clears the contents of the path buffer and returns the built path.

      This function returns NULL if the GPathBuf is empty.

      See also: g_path_buf_to_path()

      Returns:
      the built path
      Since:
      2.76
    • copy

      public PathBuf copy()
      Copies the contents of a path buffer into a new GPathBuf.
      Returns:
      the newly allocated path buffer
      Since:
      2.76
    • free

      public void free()
      Frees a GPathBuf allocated by g_path_buf_new().
      Since:
      2.76
    • freeToPath

      public @Nullable String freeToPath()

      Frees a GPathBuf allocated by g_path_buf_new(), and returns the path inside the buffer.

      This function returns NULL if the GPathBuf is empty.

      See also: g_path_buf_to_path()

      Returns:
      the path
      Since:
      2.76
    • init

      public PathBuf init()
      Initializes a GPathBuf instance.
      Returns:
      the initialized path builder
      Since:
      2.76
    • initFromPath

      public PathBuf initFromPath(@Nullable String path)
      Initializes a GPathBuf instance with the given path.
      Parameters:
      path - a file system path
      Returns:
      the initialized path builder
      Since:
      2.76
    • pop

      public boolean pop()

      Removes the last element of the path buffer.

      If there is only one element in the path buffer (for example, / on Unix-like operating systems or the drive on Windows systems), it will not be removed and false will be returned instead.

      GPathBuf buf, cmp;
      
      g_path_buf_init_from_path (&buf, "/bin/sh");
      
      g_path_buf_pop (&buf);
      g_path_buf_init_from_path (&cmp, "/bin");
      g_assert_true (g_path_buf_equal (&buf, &cmp));
      g_path_buf_clear (&cmp);
      
      g_path_buf_pop (&buf);
      g_path_buf_init_from_path (&cmp, "/");
      g_assert_true (g_path_buf_equal (&buf, &cmp));
      g_path_buf_clear (&cmp);
      
      g_path_buf_clear (&buf);
      
      Returns:
      TRUE if the buffer was modified and FALSE otherwise
      Since:
      2.76
    • push

      public PathBuf push(String path)

      Extends the given path buffer with path.

      If path is absolute, it replaces the current path.

      If path contains a directory separator, the buffer is extended by as many elements the path provides.

      On Windows, both forward slashes and backslashes are treated as directory separators. On other platforms, G_DIR_SEPARATOR_S is the only directory separator.

      GPathBuf buf, cmp;
      
      g_path_buf_init_from_path (&buf, "/tmp");
      g_path_buf_push (&buf, ".X11-unix/X0");
      g_path_buf_init_from_path (&cmp, "/tmp/.X11-unix/X0");
      g_assert_true (g_path_buf_equal (&buf, &cmp));
      g_path_buf_clear (&cmp);
      
      g_path_buf_push (&buf, "/etc/locale.conf");
      g_path_buf_init_from_path (&cmp, "/etc/locale.conf");
      g_assert_true (g_path_buf_equal (&buf, &cmp));
      g_path_buf_clear (&cmp);
      
      g_path_buf_clear (&buf);
      
      Parameters:
      path - a path
      Returns:
      the same pointer to buf, for convenience
      Since:
      2.76
    • setExtension

      public boolean setExtension(@Nullable String extension)

      Adds an extension to the file name in the path buffer.

      If extension is NULL, the extension will be unset.

      If the path buffer does not have a file name set, this function returns FALSE and leaves the path buffer unmodified.

      Parameters:
      extension - the file extension
      Returns:
      TRUE if the extension was replaced, and FALSE otherwise
      Since:
      2.76
    • setFilename

      public boolean setFilename(String fileName)

      Sets the file name of the path.

      If the path buffer is empty, the filename is left unset and this function returns FALSE.

      If the path buffer only contains the root element (on Unix-like operating systems) or the drive (on Windows), this is the equivalent of pushing the new fileName.

      If the path buffer contains a path, this is the equivalent of popping the path buffer and pushing fileName, creating a sibling of the original path.

      GPathBuf buf, cmp;
      
      g_path_buf_init_from_path (&buf, "/");
      
      g_path_buf_set_filename (&buf, "bar");
      g_path_buf_init_from_path (&cmp, "/bar");
      g_assert_true (g_path_buf_equal (&buf, &cmp));
      g_path_buf_clear (&cmp);
      
      g_path_buf_set_filename (&buf, "baz.txt");
      g_path_buf_init_from_path (&cmp, "/baz.txt");
      g_assert_true (g_path_buf_equal (&buf, &cmp);
      g_path_buf_clear (&cmp);
      
      g_path_buf_clear (&buf);
      
      Parameters:
      fileName - the file name in the path
      Returns:
      TRUE if the file name was replaced, and FALSE otherwise
      Since:
      2.76
    • toPath

      public @Nullable String toPath()

      Retrieves the built path from the path buffer.

      On Windows, the result contains backslashes as directory separators, even if forward slashes were used in input.

      If the path buffer is empty, this function returns NULL.

      Returns:
      the path
      Since:
      2.76