diff --git a/docs/reference/gtk/gtk4-sections.txt b/docs/reference/gtk/gtk4-sections.txt index 0f2495999f..97e5e0c9fd 100644 --- a/docs/reference/gtk/gtk4-sections.txt +++ b/docs/reference/gtk/gtk4-sections.txt @@ -5379,6 +5379,8 @@ GtkDeleteType GtkDirectionType GtkJustification GtkMovementStep +GtkOrdering +gtk_ordering_from_cmpfunc GtkOrientation GtkPackType GtkPositionType diff --git a/gtk/gtkenums.h b/gtk/gtkenums.h index c23bf05b17..e89e41fc18 100644 --- a/gtk/gtkenums.h +++ b/gtk/gtkenums.h @@ -607,6 +607,39 @@ typedef enum GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_RIGHT_TO_LEFT /*< nick=btrl >*/ } GtkNumberUpLayout; +/** + * GtkOrdering: + * @GTK_ORDERING_SMALLER: the first value is smaller than the second + * @GTK_ORDERING_EQUAL: the two values are equal + * @GTK_ORDERING_LARGER: the first value is larger than the second + * + * Describes the way two values can be compared. + * + * These values can be used with a #GCompareFunc. However, a + * #GCompareFunc is allowed to return any integer values. + * For converting such a value to a #GtkOrdering, use + * gtk_ordering_from_cmpfunc(). + */ +typedef enum { + GTK_ORDERING_SMALLER = -1, + GTK_ORDERING_EQUAL = 0, + GTK_ORDERING_LARGER = 1 +} GtkOrdering; + +/** + * gtk_ordering_from_cmpfunc: + * @cmpfunc_result: Result of a comparison function + * + * Converts the result of a #GCompareFunc like strcmp() to a #GtkOrdering. + * + * Returns: the corresponding #GtkOrdering + **/ +static inline GtkOrdering +gtk_ordering_from_cmpfunc (int cmpfunc_result) +{ + return (GtkOrdering) ((cmpfunc_result > 0) - (cmpfunc_result < 0)); +} + /** * GtkPageOrientation: * @GTK_PAGE_ORIENTATION_PORTRAIT: Portrait mode.