xref: /petsc/include/petscbag.h (revision 7c307921e16164bcabd288ffaae1e907d3e04a89)
1 
2 #if !defined(__PETSCBAG_H)
3 #define __PETSCBAG_H
4 #include "petsc.h"
5 PETSC_EXTERN_CXX_BEGIN
6 
7 
8 /*S
9      PetscBag - PETSc object that manages a collection of user data including parameters.
10 
11    Level: beginner
12 
13     Sample Usage:
14 $      typedef struct {
15 $         PetscBag     bag;
16 $         PetscInt     height;
17 $         PetscScalar  root;
18 $         PetscReal    byebye;
19 $      } MyParameters;
20 $
21 $      MyParameters *params;
22 $
23 $      ierr = PetscBagCreate(MyParameters,&params);
24 $      ierr = PetscBagSetName(params,"MyParameters");
25 $      ierr = PetscBagRegisterInt(params,22,"height","Height of the water tower");
26 $
27 $
28 $
29 $
30 $
31 
32 .seealso:  PetscBagSetName(), PetscBagGetName(), PetscBagSetSize(), PetscBagView(), PetscBagLoad()
33            PetscBagRegisterReal(), PetscBagRegisterInt(), PetscBagRegisterTruth(), PetscBagRegisterScalar()
34            PetscBagSetFromOptions()
35 S*/
36 typedef struct {
37   size_t bagsize;
38   char*  bagname;
39 } PetscBag;
40 
41 #define PetscBagCreate(A,B)  PetscNew(A,B) || (*(B)->bagsize = sizeof(A),0)
42 extern PetscErrorCode PetscBagDestroy(PetscBag*);
43 
44 extern PetscErrorCode PetscBagSetName(PetscBag*,char*);
45 extern PetscErrorCode PetscBagGetName(PetscBag*,char**);
46 extern PetscErrorCode PetscBagSetSize(PetscBag*,size_t);
47 
48 extern PetscErrorCode PetscBagRegisterReal(PetscBag*,PetscReal, char*, char*);
49 extern PetscErrorCode PetscBagRegisterScalar(PetscBag*,PetscScalar, char*, char*);
50 extern PetscErrorCode PetscBagRegisterInt(PetscBag*,PetscInt, char*, char*);
51 extern PetscErrorCode PetscBagRegisterTruth(PetscBag*,PetscTruth, char*, char*);
52 
53 extern PetscErrorCode PetscBagSetFromOptions(PetscBag*);
54 
55 extern PetscErrorCode PetscBagView(PetscBag*,PetscViewer);
56 extern PetscErrorCode PetscBagLoad(PetscViewer,PetscBag**);
57 
58 extern PetscErrorCode PetscBagSetViewer(PetscBag*,PetscErrorCode (*)(PetscBag*,PetscViewer));
59 extern PetscErrorCode PetscBagSetLoader(PetscBag*,PetscErrorCode (*)(PetscBag*,PetscViewer));
60 extern PetscErrorCode PetscBagSetDestroy(PetscBag*,PetscErrorCode (*)(PetscBag*));
61 
62 #endif
63