    <record name="IntSet" c:type="TpIntSet" doc="Opaque type representing a set of unsigned integers." glib:type-name="TpIntSet" glib:get-type="tp_intset_get_type">
      <constructor name="new" c:identifier="tp_intset_new" doc="Allocate a new integer set.">
        <return-value transfer-ownership="full" doc="a new, empty integer set to be destroyed with tp_intset_destroy()">
          <type name="IntSet" c:type="TpIntSet*"/>
        </return-value>
      </constructor>
      <constructor name="new_containing" c:identifier="tp_intset_new_containing" doc="Allocate a new integer set containing the given integer. tp_intset_destroy()">
        <return-value transfer-ownership="full" doc="a new integer set containing @element, to be destroyed with">
          <type name="IntSet" c:type="TpIntSet*"/>
        </return-value>
        <parameters>
          <parameter name="element" transfer-ownership="none" doc="integer to add to a new set">
            <type name="uint" c:type="guint"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="destroy" c:identifier="tp_intset_destroy" doc="Free all memory used by the set.">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="clear" c:identifier="tp_intset_clear" doc="Unset every integer in the set.">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="add" c:identifier="tp_intset_add" doc="Add an integer into a TpIntSet.">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="element" transfer-ownership="none" doc="integer to add">
            <type name="uint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove" c:identifier="tp_intset_remove" doc="Remove an integer from a TpIntSet">
        <return-value transfer-ownership="none" doc="%TRUE if @element was previously in @set">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="element" transfer-ownership="none" doc="integer to add">
            <type name="uint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_member" c:identifier="tp_intset_is_member" doc="Tests if @element is a member of @set">
        <return-value transfer-ownership="none" doc="%TRUE if @element is in @set">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="element" transfer-ownership="none" doc="integer to test">
            <type name="uint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="foreach" c:identifier="tp_intset_foreach" doc="Call @func(element, @userdata) for each element of @set, in order.">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="func" transfer-ownership="none" scope="call" closure="2" doc="@TpIntFunc to use to iterate the set">
            <type name="IntFunc" c:type="TpIntFunc"/>
          </parameter>
          <parameter name="userdata" transfer-ownership="none" doc="user data to pass to each call of @func">
            <type name="any" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="to_array" c:identifier="tp_intset_to_array" doc="&lt;!--Returns: says it all--&gt; the same integers as @set.">
        <return-value transfer-ownership="full" doc="a GArray of guint (which must be freed by the caller) containing">
          <array name="GLib.Array" c:type="GArray*">
            <type name="uint"/>
          </array>
        </return-value>
      </method>
      <method name="is_empty" c:identifier="tp_intset_is_empty" doc="Return the same thing as &lt;code&gt;(tp_intset_size (set) == 0)&lt;/code&gt;, but calculated more efficiently." version="0.11.6">
        <return-value transfer-ownership="none" doc="%TRUE if @set is empty">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="size" c:identifier="tp_intset_size" doc="&lt;!--Returns: says it all--&gt;">
        <return-value transfer-ownership="none" doc="The number of integers in @set">
          <type name="uint" c:type="guint"/>
        </return-value>
      </method>
      <method name="is_equal" c:identifier="tp_intset_is_equal" doc="&lt;!--Returns: says it all--&gt;">
        <return-value transfer-ownership="none" doc="%TRUE if @left and @right contain the same bits">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="right" transfer-ownership="none" doc="A set of integers">
            <type name="IntSet" c:type="TpIntSet*"/>
          </parameter>
        </parameters>
      </method>
      <method name="copy" c:identifier="tp_intset_copy" doc="&lt;!--Returns: says it all--&gt; tp_intset_destroy() by the caller">
        <return-value transfer-ownership="full" doc="A set containing the same integers as @orig, to be freed with">
          <type name="IntSet" c:type="TpIntSet*"/>
        </return-value>
      </method>
      <method name="intersection" c:identifier="tp_intset_intersection" doc="&lt;!--Returns: says it all--&gt; (analogous to the bitwise operation left &amp; right), to be freed with tp_intset_destroy() by the caller">
        <return-value transfer-ownership="full" doc="The set of those integers which are in both @left and @right">
          <type name="IntSet" c:type="TpIntSet*"/>
        </return-value>
        <parameters>
          <parameter name="right" transfer-ownership="none" doc="The right operand">
            <type name="IntSet" c:type="TpIntSet*"/>
          </parameter>
        </parameters>
      </method>
      <method name="union" c:identifier="tp_intset_union" doc="&lt;!--Returns: says it all--&gt; (analogous to the bitwise operation left | right), to be freed with tp_intset_destroy() by the caller">
        <return-value transfer-ownership="full" doc="The set of those integers which are in either @left or @right">
          <type name="IntSet" c:type="TpIntSet*"/>
        </return-value>
        <parameters>
          <parameter name="right" transfer-ownership="none" doc="The right operand">
            <type name="IntSet" c:type="TpIntSet*"/>
          </parameter>
        </parameters>
      </method>
      <method name="difference" c:identifier="tp_intset_difference" doc="&lt;!--Returns: says it all--&gt; (analogous to the bitwise operation left &amp; (~right)), to be freed with tp_intset_destroy() by the caller">
        <return-value transfer-ownership="full" doc="The set of those integers which are in @left and not in @right">
          <type name="IntSet" c:type="TpIntSet*"/>
        </return-value>
        <parameters>
          <parameter name="right" transfer-ownership="none" doc="The right operand">
            <type name="IntSet" c:type="TpIntSet*"/>
          </parameter>
        </parameters>
      </method>
      <method name="symmetric_difference" c:identifier="tp_intset_symmetric_difference" doc="&lt;!--Returns: says it all--&gt; but not both (analogous to the bitwise operation left ^ right), to be freed with tp_intset_destroy() by the caller">
        <return-value transfer-ownership="full" doc="The set of those integers which are in either @left or @right">
          <type name="IntSet" c:type="TpIntSet*"/>
        </return-value>
        <parameters>
          <parameter name="right" transfer-ownership="none" doc="The right operand">
            <type name="IntSet" c:type="TpIntSet*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dump" c:identifier="tp_intset_dump" doc="&lt;!--Returns: says it all--&gt; numbers in @set in a human-readable format">
        <return-value transfer-ownership="full" doc="a string which the caller must free with g_free, listing the">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
    </record>
