Actual source code: dlregisdm.c


  2: #include <../src/vec/is/ao/aoimpl.h>

  4: static PetscBool AOPackageInitialized = PETSC_FALSE;

  6: /*@C
  7:   AOFinalizePackage - This function finalizes everything in the `AO` package. It is called
  8:   from `PetscFinalize()`.

 10:   Level: developer

 12: .seealso: `AOInitializePackage()`, `PetscInitialize()`
 13: @*/
 14: PetscErrorCode AOFinalizePackage(void)
 15: {
 16:   PetscFunctionListDestroy(&AOList);
 17:   AOPackageInitialized = PETSC_FALSE;
 18:   AORegisterAllCalled  = PETSC_FALSE;
 19:   return 0;
 20: }

 22: /*@C
 23:   AOInitializePackage - This function initializes everything in the `AO` package. It is called
 24:   from `PetscDLLibraryRegister_petscvec()` when using dynamic libraries, and on the first call to `AOCreate()`
 25:   when using static or shared libraries.

 27:   Level: developer

 29: .seealso: `AOFinalizePackage()`, `PetscInitialize()`
 30: @*/
 31: PetscErrorCode AOInitializePackage(void)
 32: {
 33:   char      logList[256];
 34:   PetscBool opt, pkg;

 36:   if (AOPackageInitialized) return 0;
 37:   AOPackageInitialized = PETSC_TRUE;
 38:   /* Register Classes */
 39:   PetscClassIdRegister("Application Order", &AO_CLASSID);
 40:   /* Register Constructors */
 41:   AORegisterAll();
 42:   /* Register Events */
 43:   PetscLogEventRegister("AOPetscToApplication", AO_CLASSID, &AO_PetscToApplication);
 44:   PetscLogEventRegister("AOApplicationToPetsc", AO_CLASSID, &AO_ApplicationToPetsc);
 45:   /* Process Info */
 46:   {
 47:     PetscClassId classids[1];

 49:     classids[0] = AO_CLASSID;
 50:     PetscInfoProcessClass("ao", 1, classids);
 51:   }
 52:   /* Process summary exclusions */
 53:   PetscOptionsGetString(NULL, NULL, "-log_exclude", logList, sizeof(logList), &opt);
 54:   if (opt) {
 55:     PetscStrInList("ao", logList, ',', &pkg);
 56:     if (pkg) PetscLogEventExcludeClass(AO_CLASSID);
 57:   }
 58:   /* Register package finalizer */
 59:   PetscRegisterFinalize(AOFinalizePackage);
 60:   return 0;
 61: }