xref: /petsc/src/vec/vec/utils/tagger/interface/dlregistagger.c (revision 02477ebbb21fa13a3b107e40dce1c3d726eb3600)
1 #include <petsc/private/vecimpl.h> /*I "petscvec.h" I*/
2 
3 PetscClassId VEC_TAGGER_CLASSID;
4 
5 static PetscBool VecTaggerPackageInitialized = PETSC_FALSE;
6 
7 PetscBool VecTaggerRegisterAllCalled;
8 
9 /*@C
10   VecTaggerInitializePackage - Initialize VecTagger package
11 
12   Logically Collective
13 
14   Level: developer
15 
16 .seealso: `VecTaggerFinalizePackage()`
17 @*/
VecTaggerInitializePackage(void)18 PetscErrorCode VecTaggerInitializePackage(void)
19 {
20   PetscFunctionBegin;
21   if (VecTaggerPackageInitialized) PetscFunctionReturn(PETSC_SUCCESS);
22   VecTaggerPackageInitialized = PETSC_TRUE;
23 
24   PetscCall(PetscClassIdRegister("Vector Indices Tagger", &VEC_TAGGER_CLASSID));
25   PetscCall(VecTaggerRegisterAll());
26   PetscCall(PetscRegisterFinalize(VecTaggerFinalizePackage));
27   PetscFunctionReturn(PETSC_SUCCESS);
28 }
29 
30 /*@C
31   VecTaggerFinalizePackage - Finalize VecTagger package, it is called from PetscFinalize()
32 
33   Logically Collective
34 
35   Level: developer
36 
37 .seealso: `VecTaggerInitializePackage()`
38 @*/
VecTaggerFinalizePackage(void)39 PetscErrorCode VecTaggerFinalizePackage(void)
40 {
41   PetscFunctionBegin;
42   PetscCall(PetscFunctionListDestroy(&VecTaggerList));
43   VecTaggerPackageInitialized = PETSC_FALSE;
44   VecTaggerRegisterAllCalled  = PETSC_FALSE;
45   PetscFunctionReturn(PETSC_SUCCESS);
46 }
47