xref: /petsc/src/sys/classes/random/interface/dlregisrand.c (revision ccc0a233c7ca92e39c7d279a5b09e9dd6676ace3)
1 
2 #include <../src/sys/classes/random/randomimpl.h>
3 
4 static PetscBool PetscRandomPackageInitialized = PETSC_FALSE;
5 /*@C
6   PetscRandomFinalizePackage - This function destroys everything in the Petsc interface to the Random package. It is
7   called from PetscFinalize().
8 
9   Level: developer
10 
11 .keywords: Petsc, destroy, package, mathematica
12 .seealso: PetscFinalize()
13 @*/
14 PetscErrorCode  PetscRandomFinalizePackage(void)
15 {
16   PetscErrorCode ierr;
17 
18   PetscFunctionBegin;
19   ierr = PetscFunctionListDestroy(&PetscRandomList);CHKERRQ(ierr);
20   PetscRandomPackageInitialized = PETSC_FALSE;
21   PetscRandomRegisterAllCalled  = PETSC_FALSE;
22   PetscFunctionReturn(0);
23 }
24 
25 /*@C
26   PetscRandomInitializePackage - This function initializes everything in the PetscRandom package. It is called
27   from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to PetscRandomCreate()
28   when using static libraries.
29 
30   Level: developer
31 
32 .keywords: PetscRandom, initialize, package
33 .seealso: PetscInitialize()
34 @*/
35 PetscErrorCode  PetscRandomInitializePackage(void)
36 {
37   char           logList[256];
38   PetscBool      opt,pkg;
39   PetscErrorCode ierr;
40 
41   PetscFunctionBegin;
42   if (PetscRandomPackageInitialized) PetscFunctionReturn(0);
43   PetscRandomPackageInitialized = PETSC_TRUE;
44   /* Register Class */
45   ierr = PetscClassIdRegister("PetscRandom",&PETSC_RANDOM_CLASSID);CHKERRQ(ierr);
46   /* Register Constructors */
47   ierr = PetscRandomRegisterAll();CHKERRQ(ierr);
48   /* Process info exclusions */
49   ierr = PetscOptionsGetString(NULL,NULL,"-info_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr);
50   if (opt) {
51     ierr = PetscStrInList("random",logList,',',&pkg);CHKERRQ(ierr);
52     if (pkg) {ierr = PetscInfoDeactivateClass(PETSC_RANDOM_CLASSID);CHKERRQ(ierr);}
53   }
54   /* Process summary exclusions */
55   ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr);
56   if (opt) {
57     ierr = PetscStrInList("random",logList,',',&pkg);CHKERRQ(ierr);
58     if (pkg) {ierr = PetscLogEventExcludeClass(PETSC_RANDOM_CLASSID);CHKERRQ(ierr);}
59   }
60   /* Register package finalizer */
61   ierr = PetscRegisterFinalize(PetscRandomFinalizePackage);CHKERRQ(ierr);
62   PetscFunctionReturn(0);
63 }
64 
65 
66 
67