xref: /petsc/include/petscbag.h (revision 0700a8246d308f50502909ba325e6169d3ee27eb)
1 
2 #if !defined(__PETSCBAG_H)
3 #define __PETSCBAG_H
4 #include "petscsys.h"
5 PETSC_EXTERN_CXX_BEGIN
6 
7 /*S
8      PetscBag - PETSc object that manages a collection of user data including parameters.
9            A bag is essentially a C struct with serialization (you can save it and load it from files).
10 
11    Level: beginner
12 
13     Sample Usage:
14 $      typedef struct {
15 $         PetscInt     height;
16 $         PetscScalar  root;
17 $         PetscReal    byebye;
18 $      } MyParameters;
19 $
20 $      PetscBag     bag;
21 $      MyParameters *params;
22 $
23 $      ierr = PetscBagCreate(PETSC_COMM_WORLD,sizeof(MyParameters),&bag);
24 $      ierr = PetscBagGetData(bag,(void **)&params);
25 $      ierr = PetscBagSetName(bag,"MyParameters");
26 $      ierr = PetscBagRegisterInt(bag,&params.height,22,"height","Height of the water tower");
27 $
28 
29 .seealso:  PetscBagSetName(), PetscBagGetName(), PetscBagView(), PetscBagLoad(), PetscBagGetData()
30            PetscBagRegisterReal(), PetscBagRegisterInt(), PetscBagRegisterTruth(), PetscBagRegisterScalar()
31            PetscBagSetFromOptions(), PetscBagRegisterVec(), PetscBagCreate(), PetscBagDestroy(), PetscBagRegisterEnum()
32 S*/
33 typedef struct _n_PetscBag*     PetscBag;
34 typedef struct _n_PetscBagItem* PetscBagItem;
35 
36 EXTERN PetscErrorCode PETSC_DLLEXPORT PetscBagCreate(MPI_Comm,size_t,PetscBag*);
37 EXTERN PetscErrorCode PETSC_DLLEXPORT PetscBagDestroy(PetscBag);
38 EXTERN PetscErrorCode PETSC_DLLEXPORT PetscBagGetData(PetscBag,void **);
39 EXTERN PetscErrorCode PETSC_DLLEXPORT PetscBagRegisterReal(PetscBag,void*,PetscReal, const char*, const char*);
40 EXTERN PetscErrorCode PETSC_DLLEXPORT PetscBagRegisterString(PetscBag,void*,PetscInt,const char*, const char*, const char*);
41 EXTERN PetscErrorCode PETSC_DLLEXPORT PetscBagRegisterScalar(PetscBag,void*,PetscScalar,const  char*,const  char*);
42 EXTERN PetscErrorCode PETSC_DLLEXPORT PetscBagRegisterInt(PetscBag,void*,PetscInt,const  char*,const  char*);
43 EXTERN PetscErrorCode PETSC_DLLEXPORT PetscBagRegisterEnum(PetscBag,void*,const  char*[],PetscEnum,const char*,const  char*);
44 EXTERN PetscErrorCode PETSC_DLLEXPORT PetscBagRegisterTruth(PetscBag,void*,PetscTruth,const  char*,const  char*);
45 
46 EXTERN PetscErrorCode PETSC_DLLEXPORT PetscBagSetFromOptions(PetscBag);
47 EXTERN PetscErrorCode PETSC_DLLEXPORT PetscBagGetName(PetscBag, char **);
48 EXTERN PetscErrorCode PETSC_DLLEXPORT PetscBagSetName(PetscBag, const char *, const char *);
49 
50 EXTERN PetscErrorCode PETSC_DLLEXPORT PetscBagView(PetscBag,PetscViewer);
51 EXTERN PetscErrorCode PETSC_DLLEXPORT PetscBagLoad(PetscViewer,PetscBag*);
52 
53 EXTERN PetscErrorCode PETSC_DLLEXPORT PetscBagSetViewer(PetscBag,PetscErrorCode (*)(PetscBag,PetscViewer));
54 EXTERN PetscErrorCode PETSC_DLLEXPORT PetscBagSetLoader(PetscBag,PetscErrorCode (*)(PetscBag,PetscViewer));
55 EXTERN PetscErrorCode PETSC_DLLEXPORT PetscBagSetDestroy(PetscBag,PetscErrorCode (*)(PetscBag));
56 
57 PETSC_EXTERN_CXX_END
58 #endif
59