xref: /petsc/src/vec/is/sf/interface/dlregissf.c (revision 8cc058d9cd56c1ccb3be12a47760ddfc446aaffc) !
1 #include <petsc-private/sfimpl.h>
2 
3 PetscClassId PETSCSF_CLASSID;
4 
5 static PetscBool PetscSFPackageInitialized = PETSC_FALSE;
6 
7 PetscBool PetscSFRegisterAllCalled;
8 
9 #undef __FUNCT__
10 #define __FUNCT__ "PetscSFInitializePackage"
11 /*@C
12    PetscSFInitializePackage - Initialize SF package
13 
14    Logically Collective
15 
16    Input Arguments:
17 .  path - the dynamic library path or NULL
18 
19    Level: developer
20 
21 .seealso: PetscSFFinalizePackage()
22 @*/
23 PetscErrorCode PetscSFInitializePackage(const char *path)
24 {
25   PetscErrorCode ierr;
26 
27   PetscFunctionBegin;
28   if (PetscSFPackageInitialized) PetscFunctionReturn(0);
29   PetscSFPackageInitialized = PETSC_TRUE;
30 
31   ierr = PetscClassIdRegister("Bipartite Graph",&PETSCSF_CLASSID);CHKERRQ(ierr);
32   ierr = PetscSFRegisterAll(path);CHKERRQ(ierr);
33   ierr = PetscRegisterFinalize(PetscSFFinalizePackage);CHKERRQ(ierr);
34   PetscFunctionReturn(0);
35 }
36 
37 #undef __FUNCT__
38 #define __FUNCT__ "PetscSFFinalizePackage"
39 /*@C
40    PetscSFFinalizePackage - Finalize PetscSF package, it is called from PetscFinalize()
41 
42    Logically Collective
43 
44    Level: developer
45 
46 .seealso: PetscSFInitializePackage()
47 @*/
48 PetscErrorCode PetscSFFinalizePackage(void)
49 {
50 
51   PetscFunctionBegin;
52   PetscSFPackageInitialized = PETSC_FALSE;
53   PetscFunctionReturn(0);
54 }
55