### Function

# EDataServer type_traverse

since: 3.4

#### Declaration [src]

    void
    e_type_traverse (
      GType parent_type,
      ETypeFunc func,
      gpointer user_data
    )

#### Description [src]

Calls `func` for all instantiable subtypes of `parent_type`.

This is often useful for extending functionality by way of `EModule`. A module may register a subtype of `parent_type` in its `e_module_load()` function. Then later on the application will call `e_type_traverse()` to instantiate all registered subtypes of `parent_type`.

Available since: 3.4

#### Parameters

`parent_type`

  Type: `GType`

  The root `GType` to traverse from.

`func`

  Type: `ETypeFunc`

  The function to call for each visited `GType`.

`user_data`

  Type: `gpointer`

  User data to pass to the function.

  The argument can be `NULL`.
  The data is owned by the caller of the function.