### Function

# GtkTreeIterCompareFunc

#### Declaration

    int
    (* GtkTreeIterCompareFunc) (
      GtkTreeModel* model,
      GtkTreeIter* a,
      GtkTreeIter* b,
      gpointer user_data
    )

#### Description [src]

A GtkTreeIterCompareFunc should return a negative integer, zero, or a positive integer if `a` sorts before `b`, `a` sorts with `b`, or `a` sorts after `b` respectively.

If two iters compare as equal, their order in the sorted model is undefined. In order to ensure that the `GtkTreeSortable` behaves as expected, the GtkTreeIterCompareFunc must define a partial order on the model, i.e. it must be reflexive, antisymmetric and transitive.

For example, if `model` is a product catalogue, then a compare function for the “price” column could be one which returns `price_of(`a`) - price_of(`b`)`.

#### Parameters

`model`

  Type: `GtkTreeModel`

  The `GtkTreeModel` the comparison is within.

  The data is owned by the caller of the function.

`a`

  Type: `GtkTreeIter`

  A `GtkTreeIter` in `model`.

  The data is owned by the caller of the function.

`b`

  Type: `GtkTreeIter`

  Another `GtkTreeIter` in `model`.

  The data is owned by the caller of the function.

`user_data`

  Type: `gpointer`

  Data passed when the compare func is assigned e.g. by `gtk_tree_sortable_set_sort_func()`

  The argument can be `NULL`.
  The data is owned by the caller of the function.

#### Return value

Type: `int`

A negative integer, zero or a positive integer depending on whether `a` sorts before, with or after `b`.