xref: /petsc/src/sys/classes/random/interface/dlregisrand.c (revision 5c6c1daec53e1d9ab0bec9db5309fd8fc7645b8d)
1*5c6c1daeSBarry Smith 
2*5c6c1daeSBarry Smith #include <../src/sys/classes/random/randomimpl.h>
3*5c6c1daeSBarry Smith #if defined (PETSC_HAVE_STDLIB_H)
4*5c6c1daeSBarry Smith #include <stdlib.h>
5*5c6c1daeSBarry Smith #endif
6*5c6c1daeSBarry Smith 
7*5c6c1daeSBarry Smith static PetscBool  PetscRandomPackageInitialized = PETSC_FALSE;
8*5c6c1daeSBarry Smith #undef __FUNCT__
9*5c6c1daeSBarry Smith #define __FUNCT__ "PetscRandomFinalizePackage"
10*5c6c1daeSBarry Smith /*@C
11*5c6c1daeSBarry Smith   PetscRandomFinalizePackage - This function destroys everything in the Petsc interface to the Random package. It is
12*5c6c1daeSBarry Smith   called from PetscFinalize().
13*5c6c1daeSBarry Smith 
14*5c6c1daeSBarry Smith   Level: developer
15*5c6c1daeSBarry Smith 
16*5c6c1daeSBarry Smith .keywords: Petsc, destroy, package, mathematica
17*5c6c1daeSBarry Smith .seealso: PetscFinalize()
18*5c6c1daeSBarry Smith @*/
19*5c6c1daeSBarry Smith PetscErrorCode  PetscRandomFinalizePackage(void)
20*5c6c1daeSBarry Smith {
21*5c6c1daeSBarry Smith   PetscFunctionBegin;
22*5c6c1daeSBarry Smith   PetscRandomPackageInitialized = PETSC_FALSE;
23*5c6c1daeSBarry Smith   PetscRandomList               = PETSC_NULL;
24*5c6c1daeSBarry Smith   PetscRandomRegisterAllCalled  = PETSC_FALSE;
25*5c6c1daeSBarry Smith   PetscFunctionReturn(0);
26*5c6c1daeSBarry Smith }
27*5c6c1daeSBarry Smith 
28*5c6c1daeSBarry Smith #undef __FUNCT__
29*5c6c1daeSBarry Smith #define __FUNCT__ "PetscRandomInitializePackage"
30*5c6c1daeSBarry Smith /*@C
31*5c6c1daeSBarry Smith   PetscRandomInitializePackage - This function initializes everything in the PetscRandom package. It is called
32*5c6c1daeSBarry Smith   from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to PetscRandomCreate()
33*5c6c1daeSBarry Smith   when using static libraries.
34*5c6c1daeSBarry Smith 
35*5c6c1daeSBarry Smith   Input Parameter:
36*5c6c1daeSBarry Smith   path - The dynamic library path, or PETSC_NULL
37*5c6c1daeSBarry Smith 
38*5c6c1daeSBarry Smith   Level: developer
39*5c6c1daeSBarry Smith 
40*5c6c1daeSBarry Smith .keywords: PetscRandom, initialize, package
41*5c6c1daeSBarry Smith .seealso: PetscInitialize()
42*5c6c1daeSBarry Smith @*/
43*5c6c1daeSBarry Smith PetscErrorCode  PetscRandomInitializePackage(const char path[])
44*5c6c1daeSBarry Smith {
45*5c6c1daeSBarry Smith   PetscErrorCode    ierr;
46*5c6c1daeSBarry Smith 
47*5c6c1daeSBarry Smith   PetscFunctionBegin;
48*5c6c1daeSBarry Smith   if (PetscRandomPackageInitialized) PetscFunctionReturn(0);
49*5c6c1daeSBarry Smith   PetscRandomPackageInitialized = PETSC_TRUE;
50*5c6c1daeSBarry Smith   /* Register Class */
51*5c6c1daeSBarry Smith   ierr = PetscClassIdRegister("PetscRandom",&PETSC_RANDOM_CLASSID);CHKERRQ(ierr);
52*5c6c1daeSBarry Smith   ierr = PetscRandomRegisterAll(path);CHKERRQ(ierr);
53*5c6c1daeSBarry Smith   ierr = PetscRegisterFinalize(PetscRandomFinalizePackage);CHKERRQ(ierr);
54*5c6c1daeSBarry Smith   PetscFunctionReturn(0);
55*5c6c1daeSBarry Smith }
56*5c6c1daeSBarry Smith 
57*5c6c1daeSBarry Smith 
58*5c6c1daeSBarry Smith 
59