## GDataComparable GDataComparable — GData comparable interface |

## Stability Level

Unstable, unless otherwise indicated

## Synopsis

    #include <gdata/gdata-comparable.h>

                        GDataComparable;
                        GDataComparableIface;
    gint                gdata_comparable_compare            (GDataComparable *self,
                                                             GDataComparable *other);

## Object Hierarchy

      GInterface
       +----GDataComparable

## Known Implementations

GDataComparable is implemented by GDataAuthor, GDataCategory, GDataGContactCalendar, GDataGContactExternalID, GDataGContactLanguage, GDataGContactWebsite, GDataGDEmailAddress, GDataGDIMAddress, GDataGDName, GDataGDOrganization, GDataGDPhoneNumber, GDataGDPostalAddress, GDataGDReminder, GDataGDWhen, GDataGDWhere, GDataGDWho, GDataGenerator, GDataLink and GDataYouTubeCategory.

## Description

GDataComparable is an interface which can be implemented by any object which needs to be compared to another object of the same type or of a derived type.

When implementing the interface, classes must implement the `compare_with` function, and the implementation must be pure .

## Details

### GDataComparable

    typedef struct _GDataComparable GDataComparable;

All the fields in the GDataComparable structure are private and should never be accessed directly.

Since 0.7.0

### GDataComparableIface

    typedef struct {
    	GTypeInterface parent;

    	gint (*compare_with) (GDataComparable *self, GDataComparable *other);
    } GDataComparableIface;

The class structure for the GDataComparable interface.

GTypeInterface `parent`; | the parent type
`compare_with` () | compares the object with an `other` object of the same type, returning `-1` if the object is "less than" the other object, `0` if they're equal, or `1` if the object is "greater than" the other. The function can assume that neither `self` or `other` will be `NULL`, and that both have correct types. The function must be pure.

Since 0.7.0

### gdata_comparable_compare ()

    gint                gdata_comparable_compare            (GDataComparable *self,
                                                             GDataComparable *other);

Compares the two objects, returning `-1` if `self` is "less than" `other` by some metric, `0` if they're equal, or `1` if `self` is "greater than" `other`.

`NULL` values are handled gracefully, with `0` returned if both `self` and `other` are `NULL`, `-1` if `self` is `NULL` and `1` if `other` is `NULL`.

The `other` object must be of the same type as `self`, or of a type derived from `self`'s type.

`self` : | a GDataComparable, or `NULL`. [allow-none]
`other` : | another GDataComparable of the same type, or `NULL`. [allow-none]
Returns : | `TRUE` on success, `FALSE` otherwise

Since 0.7.0