## Predicates

Predicates — common predicate functions that map some value to `TRUE` or `FALSE`.

## Functions

 gboolean (*GXPred) () gboolean gx_is_even () gboolean gx_is_odd () gboolean gx_is_prime () gboolean gx_is_str_equal ()

## Description

These are designed as simple adapters, for use with functions such as `gx_list_filter()`.

For example, we can get a list of the prime numbers up to 100 by taking an list of 1..100, then filter out all elements that are not prime.

 ```1 2 3 4 5 6 7 8 9``` ```GList *lst, *cur; lst = gx_list_filter_in_place ( gx_list_iota (100, 1, 1), (GXPred)gx_is_prime, NULL, NULL); for (cur = lst; cur; cur = g_list_next (cur)) g_print ("%d\n", GPOINTER_TO_INT(cur->data)); g_list_free (lst);```

## Functions

### GXPred ()

```gboolean
(*GXPred) (`gconstpointer data`,
`gconstpointer user_data`);```

Prototype for a predicate function that takes a pointer and some user-provided data, and returns either `TRUE` or `FALSE`.

It can be used with `gx_list_filter()` and `gx_list_filter_in_place()`.

#### Parameters

 data a data pointer user_data a user data pointer

### gx_is_even ()

```gboolean
gx_is_even (`gint i`);```

Predicate function that returns `TRUE` if `i` is an even number, `FALSE` otherwise. An even number is a number that is divisible by 2.

 ```1 2``` ```g_assert_cmpuint (gx_is_even (2),==, TRUE); g_assert_cmpuint (gx_is_even (3),==, FALSE);```

#### Parameters

 i an integer

#### Returns

`TRUE` if `i` is even, `FALSE` otherwise.

### gx_is_odd ()

```gboolean
gx_is_odd (`gint i`);```

Predicate function that returns `TRUE` if `i` is an odd number, `FALSE` otherwise. An odd number is a number that is not divisible by 2.

 ```1 2``` ```g_assert_cmpuint (gx_is_odd (2),==, FALSE); g_assert_cmpuint (gx_is_odd (3),==, TRUE);```

#### Parameters

 i an integer

#### Returns

`TRUE` if `i` is odd, `FALSE` otherwise.

### gx_is_prime ()

```gboolean
gx_is_prime (`gint i`);```

Predicate function that returns `TRUE` if i is a prime number, `FALSE` otherwise. A prime number is a positive number that is only divisible by itself and 1.

 ```1 2``` ```g_assert_cmpuint (gx_is_prime (13),==, TRUE); g_assert_cmpuint (gx_is_prime (52),==, FALSE);```

#### Parameters

 i an integer

#### Returns

`TRUE` if `i` is prime; `FALSE` otherwise.

### gx_is_str_equal ()

```gboolean
gx_is_str_equal (`const char *s1`,
`const char *s2`);```

Predicate function that returns `TRUE` if the strings are equal; `FALSE` otherwise. Safe for `NULL` strings.

 ```1 2``` ```g_assert_true (gx_is_str_equal ("foo", "foo")); g_assert_false (gx_is_str_equal ("foo", "bar"));```

#### Parameters

 s1 a string s2 another string

#### Returns

`TRUE` if `s1` and `s2` are equal, `FALSE` otherwise.