xref: /petsc/src/sys/classes/random/interface/dlregisrand.c (revision 8e81d0682c925ac65a16095f60c998f9f3b7b642)
15c6c1daeSBarry Smith 
25c6c1daeSBarry Smith #include <../src/sys/classes/random/randomimpl.h>
35c6c1daeSBarry Smith 
45c6c1daeSBarry Smith static PetscBool PetscRandomPackageInitialized = PETSC_FALSE;
55c6c1daeSBarry Smith /*@C
65c6c1daeSBarry Smith   PetscRandomFinalizePackage - This function destroys everything in the Petsc interface to the Random package. It is
75c6c1daeSBarry Smith   called from PetscFinalize().
85c6c1daeSBarry Smith 
95c6c1daeSBarry Smith   Level: developer
105c6c1daeSBarry Smith 
115c6c1daeSBarry Smith .keywords: Petsc, destroy, package, mathematica
125c6c1daeSBarry Smith .seealso: PetscFinalize()
135c6c1daeSBarry Smith @*/
145c6c1daeSBarry Smith PetscErrorCode  PetscRandomFinalizePackage(void)
155c6c1daeSBarry Smith {
1637e93019SBarry Smith   PetscErrorCode ierr;
1737e93019SBarry Smith 
185c6c1daeSBarry Smith   PetscFunctionBegin;
1937e93019SBarry Smith   ierr = PetscFunctionListDestroy(&PetscRandomList);CHKERRQ(ierr);
205c6c1daeSBarry Smith   PetscRandomPackageInitialized = PETSC_FALSE;
215c6c1daeSBarry Smith   PetscRandomRegisterAllCalled  = PETSC_FALSE;
225c6c1daeSBarry Smith   PetscFunctionReturn(0);
235c6c1daeSBarry Smith }
245c6c1daeSBarry Smith 
255c6c1daeSBarry Smith /*@C
265c6c1daeSBarry Smith   PetscRandomInitializePackage - This function initializes everything in the PetscRandom package. It is called
275c6c1daeSBarry Smith   from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to PetscRandomCreate()
285c6c1daeSBarry Smith   when using static libraries.
295c6c1daeSBarry Smith 
305c6c1daeSBarry Smith   Level: developer
315c6c1daeSBarry Smith 
325c6c1daeSBarry Smith .keywords: PetscRandom, initialize, package
335c6c1daeSBarry Smith .seealso: PetscInitialize()
345c6c1daeSBarry Smith @*/
35607a6623SBarry Smith PetscErrorCode  PetscRandomInitializePackage(void)
365c6c1daeSBarry Smith {
37*8e81d068SLisandro Dalcin   char           logList[256];
38*8e81d068SLisandro Dalcin   PetscBool      opt,pkg;
395c6c1daeSBarry Smith   PetscErrorCode ierr;
405c6c1daeSBarry Smith 
415c6c1daeSBarry Smith   PetscFunctionBegin;
425c6c1daeSBarry Smith   if (PetscRandomPackageInitialized) PetscFunctionReturn(0);
435c6c1daeSBarry Smith   PetscRandomPackageInitialized = PETSC_TRUE;
445c6c1daeSBarry Smith   /* Register Class */
455c6c1daeSBarry Smith   ierr = PetscClassIdRegister("PetscRandom",&PETSC_RANDOM_CLASSID);CHKERRQ(ierr);
46*8e81d068SLisandro Dalcin   /* Register Constructors */
47607a6623SBarry Smith   ierr = PetscRandomRegisterAll();CHKERRQ(ierr);
48*8e81d068SLisandro Dalcin   /* Process info exclusions */
49*8e81d068SLisandro Dalcin   ierr = PetscOptionsGetString(NULL,NULL,"-info_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr);
50*8e81d068SLisandro Dalcin   if (opt) {
51*8e81d068SLisandro Dalcin     ierr = PetscStrInList("random",logList,',',&pkg);CHKERRQ(ierr);
52*8e81d068SLisandro Dalcin     if (pkg) {ierr = PetscInfoDeactivateClass(PETSC_RANDOM_CLASSID);CHKERRQ(ierr);}
53*8e81d068SLisandro Dalcin   }
54*8e81d068SLisandro Dalcin   /* Process summary exclusions */
55*8e81d068SLisandro Dalcin   ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr);
56*8e81d068SLisandro Dalcin   if (opt) {
57*8e81d068SLisandro Dalcin     ierr = PetscStrInList("random",logList,',',&pkg);CHKERRQ(ierr);
58*8e81d068SLisandro Dalcin     if (pkg) {ierr = PetscLogEventDeactivateClass(PETSC_RANDOM_CLASSID);CHKERRQ(ierr);}
59*8e81d068SLisandro Dalcin   }
60*8e81d068SLisandro Dalcin   /* Register package finalizer */
615c6c1daeSBarry Smith   ierr = PetscRegisterFinalize(PetscRandomFinalizePackage);CHKERRQ(ierr);
625c6c1daeSBarry Smith   PetscFunctionReturn(0);
635c6c1daeSBarry Smith }
645c6c1daeSBarry Smith 
655c6c1daeSBarry Smith 
665c6c1daeSBarry Smith 
67