xref: /petsc/src/sys/classes/random/interface/dlregisrand.c (revision 8a690491e6c6c591ad1bff5657f43271c38b9863)
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
27*8a690491SBarry Smith   from PetscDLLibraryRegister_petsc() when using dynamic libraries, and on the first call to PetscRandomCreate()
28*8a690491SBarry Smith   when using shared or 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 {
378e81d068SLisandro Dalcin   char           logList[256];
388e81d068SLisandro 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);
468e81d068SLisandro Dalcin   /* Register Constructors */
47607a6623SBarry Smith   ierr = PetscRandomRegisterAll();CHKERRQ(ierr);
488e81d068SLisandro Dalcin   /* Process info exclusions */
498e81d068SLisandro Dalcin   ierr = PetscOptionsGetString(NULL,NULL,"-info_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr);
508e81d068SLisandro Dalcin   if (opt) {
518e81d068SLisandro Dalcin     ierr = PetscStrInList("random",logList,',',&pkg);CHKERRQ(ierr);
528e81d068SLisandro Dalcin     if (pkg) {ierr = PetscInfoDeactivateClass(PETSC_RANDOM_CLASSID);CHKERRQ(ierr);}
538e81d068SLisandro Dalcin   }
548e81d068SLisandro Dalcin   /* Process summary exclusions */
558e81d068SLisandro Dalcin   ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr);
568e81d068SLisandro Dalcin   if (opt) {
578e81d068SLisandro Dalcin     ierr = PetscStrInList("random",logList,',',&pkg);CHKERRQ(ierr);
58fa2bb9feSLisandro Dalcin     if (pkg) {ierr = PetscLogEventExcludeClass(PETSC_RANDOM_CLASSID);CHKERRQ(ierr);}
598e81d068SLisandro Dalcin   }
608e81d068SLisandro Dalcin   /* Register package finalizer */
615c6c1daeSBarry Smith   ierr = PetscRegisterFinalize(PetscRandomFinalizePackage);CHKERRQ(ierr);
625c6c1daeSBarry Smith   PetscFunctionReturn(0);
635c6c1daeSBarry Smith }
645c6c1daeSBarry Smith 
655c6c1daeSBarry Smith 
665c6c1daeSBarry Smith 
67