Class PatternSpec

All Implemented Interfaces:
Proxy

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

A GPatternSpec struct is the ‘compiled’ form of a glob-style pattern.

The GLib.patternMatchSimple(String, String) and match(long, String, String) functions match a string against a pattern containing * and ? wildcards with similar semantics as the standard glob() function: * matches an arbitrary, possibly empty, string, ? matches an arbitrary character.

Note that in contrast to glob(), the / character can be matched by the wildcards, there are no […] character ranges and * and ? can not be escaped to include them literally in a pattern.

When multiple strings must be matched against the same pattern, it is better to compile the pattern to a GLib.PatternSpec using PatternSpec(String) and use matchString(String) instead of GLib.patternMatchSimple(String, String). This avoids the overhead of repeated pattern compilation.

  • Constructor Details

    • PatternSpec

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

      public PatternSpec(String pattern)
      Compiles a pattern to a GLib.PatternSpec.
      Parameters:
      pattern - a zero-terminated UTF-8 encoded string
  • Method Details

    • getType

      public static @Nullable Type getType()
      Get the GType of the PatternSpec class.
      Returns:
      the GType
    • getMemoryLayout

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

      public PatternSpec copy()
      Copies this PatternSpec in a new GLib.PatternSpec.
      Returns:
      a copy of pspec.
      Since:
      2.70
    • equal

      public boolean equal(PatternSpec pspec2)
      Compares two compiled pattern specs and returns whether they will match the same set of strings.
      Parameters:
      pspec2 - another GPatternSpec
      Returns:
      Whether the compiled patterns are equal
    • free

      public void free()
      Frees the memory allocated for the GLib.PatternSpec.
    • match

      public boolean match(long stringLength, String string, @Nullable String stringReversed)

      Matches a string against a compiled pattern.

      Passing the correct length of the string given is mandatory. The reversed string can be omitted by passing NULL, this is more efficient if the reversed version of the string to be matched is not at hand, as match(long, String, String) will only construct it if the compiled pattern requires reverse matches.

      Note that, if the user code will (possibly) match a string against a multitude of patterns containing wildcards, chances are high that some patterns will require a reversed string. In this case, it’s more efficient to provide the reversed string to avoid multiple constructions thereof in the various calls to match(long, String, String).

      Note also that the reverse of a UTF-8 encoded string can in general not be obtained by GLib.strreverse(String). This works only if the string does not contain any multibyte characters. GLib offers the GLib.utf8Strreverse(String, long) function to reverse UTF-8 encoded strings.

      Parameters:
      stringLength - the length of string (in bytes, i.e. strlen(), not GLib.utf8Strlen(String, long))
      string - the UTF-8 encoded string to match
      stringReversed - the reverse of string
      Returns:
      true if string matches this PatternSpec
      Since:
      2.70
    • matchString

      public boolean matchString(String string)

      Matches a string against a compiled pattern.

      If the string is to be matched against more than one pattern, consider using match(long, String, String) instead while supplying the reversed string.

      Parameters:
      string - the UTF-8 encoded string to match
      Returns:
      true if string matches this PatternSpec
      Since:
      2.70