Skip to main content
`Ctrl`+`K`

# PetscObjectComposeFunction

Associates a function with a given PETSc object.

## Synopsis

    #include <petscsys.h>
    PetscErrorCode PetscObjectComposeFunction(PetscObject obj, const char name[], PetscErrorCodeFn *fptr)

Logically Collective

## Input Parameters

- obj - the PETSc object; this must be cast with a (`PetscObject`), for example, `PetscObjectCompose`((`PetscObject`)mat,…);

- name - name associated with the child function

- fptr - function pointer

## Notes

When the first argument of `fptr` is (or is derived from) a `PetscObject` then `PetscTryMethod()` and `PetscUseMethod()` can be used to call the function directly with error checking.

To remove a registered routine, pass in `NULL` for `fptr`.

`PetscObjectComposeFunction()` can be used with any PETSc object (such as `Mat`, `Vec`, `KSP`, `SNES`, etc.) or any user-provided object.

`PetscUseTypeMethod()` and `PetscTryTypeMethod()` are used to call a function that is stored in the objects `obj->ops` table.

## See Also

`PetscObjectQueryFunction()`, `PetscContainerCreate()` `PetscObjectCompose()`, `PetscObjectQuery()`, `PetscTryMethod()`, `PetscUseMethod()`, `PetscUseTypeMethod()`, `PetscTryTypeMethod()`, `PetscObject`

## Level

advanced

## Location

src/sys/objects/inherit.c

## Examples

src/mat/tutorials/ex8.c
src/ksp/ksp/tutorials/ex73.c
src/sys/tutorials/ex7.c

Index of all Sys routines
Table of Contents for all manual pages
Index of all manual pages