### Method

# ECal ComponentBag add_with_user_data

since: 3.58

#### Declaration [src]

    void
    e_cal_component_bag_add_with_user_data (
      ECalComponentBag* self,
      ECalClient* client,
      ECalComponent* comp,
      gpointer user_data,
      GBoxedCopyFunc copy_user_data,
      GBoxedFreeFunc free_user_data
    )

#### Description [src]

Adds a component into the bag. It’s possible to add the same component from the same client multiple times, in which case any previous occurrence is removed.

The component is identified by the client and its uid/rid.

The function also sets the user data member of a newly created `ECalComponentBagItem`. The `user_data` is replaced in an existing item only if it’s set (non-`NULL`), otherwise it’s left unchanged. See `e_cal_component_bag_item_set_user_data()` for more information.

Available since: 3.58

#### Parameters

`client`

  Type: `ECalClient`

  An `ECalClient`.

  The data is owned by the caller of the method.

`comp`

  Type: `ECalComponent`

  An `ECalComponent`.

  The data is owned by the caller of the method.

`user_data`

  Type: `gpointer`

  Custom user data, or `NULL`.

  The argument can be `NULL`.
  The instance takes ownership of the data, and is responsible for freeing it.

`copy_user_data`

  Type: `GBoxedCopyFunc`

  A copy function for the `user_data`, or `NULL`.

  The argument can be `NULL`.

`free_user_data`

  Type: `GBoxedFreeFunc`

  A free function for the `user_data`, or `NULL`.

  The argument can be `NULL`.