(define-object RelationSet
  (in-module "Atk")
  (parent "GObject")
  (c-name "AtkRelationSet")
  (gtype-id "ATK_TYPE_RELATION_SET")
)

(define-function relation_set_new
  (is-constructor-of "AtkRelationSet")
  (c-name "atk_relation_set_new")
  (caller-owns-return #t)
  (return-type "AtkRelationSet*")
)

(define-method contains
  (of-object "AtkRelationSet")
  (c-name "atk_relation_set_contains")
  (return-type "gboolean")
  (parameters
    '("AtkRelationType" "relationship")
  )
)

(define-method remove
  (of-object "AtkRelationSet")
  (c-name "atk_relation_set_remove")
  (return-type "none")
  (parameters
    '("AtkRelation*" "relation")
  )
)

(define-method add
  (of-object "AtkRelationSet")
  (c-name "atk_relation_set_add")
  (return-type "none")
  (parameters
    '("AtkRelation*" "relation")
  )
)

(define-method get_n_relations
  (of-object "AtkRelationSet")
  (c-name "atk_relation_set_get_n_relations")
  (return-type "gint")
)

(define-method get_relation
  (of-object "AtkRelationSet")
  (c-name "atk_relation_set_get_relation")
  (return-type "AtkRelation*")
  (parameters
    '("gint" "i")
  )
)

(define-method get_relation_by_type
  (of-object "AtkRelationSet")
  (c-name "atk_relation_set_get_relation_by_type")
  (return-type "AtkRelation*")
  (parameters
    '("AtkRelationType" "relationship")
  )
)

(define-method add_relation_by_type
  (of-object "AtkRelationSet")
  (c-name "atk_relation_set_add_relation_by_type")
  (return-type "none")
  (parameters
    '("AtkRelationType" "relationship")
    '("AtkObject*" "target")
  )
)

