# PetscInfoSetClasses
Sets the classes which `PetscInfo()` is filtered for/against 
## Synopsis
```
#include "petscsys.h"   
PetscErrorCode PetscInfoSetClasses(PetscBool exclude, PetscInt n, const char *const *classnames)
```
Not Collective


## Input Parameters

- ***exclude -*** Whether or not to invert the filter, i.e. if exclude is true, `PetscInfo()` will print from every class that
is NOT one of the classes specified
- ***n -*** Number of classes to filter for (size of classnames)
- ***classnames -*** String array containing the names of classes to filter for, e.g. "vec"



## Notes
This function CANNOT be called after `PetscInfoGetClass()` or `PetscInfoProcessClass()` has been called.

Names in the classnames list should correspond to the names returned by `PetscObjectGetClassName()`.

This function only sets the list of class names.
The actual filtering is deferred to `PetscInfoProcessClass()`, except of sys which is processed right away.
The reason for this is that we need to set the list of included/excluded classes before their classids are known.
Typically the classid is assigned and `PetscInfoProcessClass()` called in <Class>InitializePackage() (e.g. `VecInitializePackage()`).


## Fortran Note
Not for use in Fortran




## See Also
 `PetscInfo()`, `PetscInfoGetClass()`, `PetscInfoProcessClass()`, `PetscInfoSetFromOptions()`, `PetscStrToArray()`, `PetscObjectGetName()`

## Level
developer

## Location
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/sys/info/verboseinfo.c.html#PetscInfoSetClasses">src/sys/info/verboseinfo.c</A>

## Examples
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/mat/tutorials/ex7.c.html">src/mat/tutorials/ex7.c.html</A><BR>


---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/sys/info/verboseinfo.c)


[Index of all Profiling routines](index.md)  
[Table of Contents for all manual pages](/docs/manualpages/index.md)  
[Index of all manual pages](/docs/manualpages/singleindex.md)  
