Actual source code: ex20.c
1: static const char help[] = "Tests PetscOptionsPrefix{Push,Pop}\n\n";
3: #include <petscsys.h>
5: int main(int argc, char *argv[])
6: {
7: PetscInt opts[6] = {0};
8: PetscBool hascl = PETSC_FALSE, hasstr = PETSC_FALSE;
10: PetscFunctionBeginUser;
11: PetscCall(PetscInitialize(&argc, &argv, 0, help));
12: PetscCall(PetscOptionsSetValue(NULL, "-zero", "0"));
13: PetscCall(PetscOptionsPrefixPush(NULL, "a_"));
14: PetscCall(PetscOptionsSetValue(NULL, "-one", "1"));
15: PetscCall(PetscOptionsPrefixPush(NULL, "bb_"));
16: PetscCall(PetscOptionsSetValue(NULL, "-two", "2"));
17: PetscCall(PetscOptionsPrefixPop(NULL));
18: PetscCall(PetscOptionsSetValue(NULL, "-three", "3"));
19: PetscCall(PetscOptionsPrefixPush(NULL, "cc_"));
20: PetscCall(PetscOptionsPrefixPush(NULL, "ddd_"));
21: PetscCall(PetscOptionsSetValue(NULL, "-four", "4"));
22: PetscCall(PetscOptionsPrefixPop(NULL));
23: PetscCall(PetscOptionsPrefixPop(NULL));
24: PetscCall(PetscOptionsPrefixPop(NULL));
25: PetscCall(PetscOptionsSetValue(NULL, "-five", "5"));
27: PetscCall(PetscOptionsGetInt(NULL, 0, "-zero", &opts[0], 0));
28: PetscCall(PetscOptionsGetInt(NULL, 0, "-a_one", &opts[1], 0));
29: PetscCall(PetscOptionsGetInt(NULL, 0, "-a_bb_two", &opts[2], 0));
30: PetscCall(PetscOptionsGetInt(NULL, 0, "-a_three", &opts[3], 0));
31: PetscCall(PetscOptionsGetInt(NULL, 0, "-a_cc_ddd_four", &opts[4], 0));
32: PetscCall(PetscOptionsGetInt(NULL, 0, "-five", &opts[5], 0));
33: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "opts = {%" PetscInt_FMT " %" PetscInt_FMT " %" PetscInt_FMT " %" PetscInt_FMT " %" PetscInt_FMT " %" PetscInt_FMT "}\n", opts[0], opts[1], opts[2], opts[3], opts[4], opts[5]));
35: PetscCall(PetscOptionsGetBool(NULL, 0, "-cl", &hascl, 0));
36: if (hascl) {
37: PetscCall(PetscMemzero(opts, sizeof(opts)));
38: PetscCall(PetscOptionsGetInt(NULL, 0, "-cl_zero", &opts[0], 0));
39: PetscCall(PetscOptionsGetInt(NULL, 0, "-cl_a_one", &opts[1], 0));
40: PetscCall(PetscOptionsGetInt(NULL, 0, "-cl_a_bb_two", &opts[2], 0));
41: PetscCall(PetscOptionsGetInt(NULL, 0, "-cl_a_three", &opts[3], 0));
42: PetscCall(PetscOptionsGetInt(NULL, 0, "-cl_a_cc_ddd_four", &opts[4], 0));
43: PetscCall(PetscOptionsGetInt(NULL, 0, "-cl_five", &opts[5], 0));
44: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "cl_opts = {%" PetscInt_FMT " %" PetscInt_FMT " %" PetscInt_FMT " %" PetscInt_FMT " %" PetscInt_FMT " %" PetscInt_FMT "}\n", opts[0], opts[1], opts[2], opts[3], opts[4], opts[5]));
45: }
47: PetscCall(PetscOptionsGetBool(NULL, 0, "-str", &hasstr, 0));
48: if (hasstr) {
49: PetscCall(
50: PetscOptionsInsertString(NULL, "-prefix_push str_ -zero 100 -prefix_push a_ -one 101 -prefix_push bb_ -two 102 -prefix_pop -three 103 -prefix_push cc_ -prefix_push ddd_ -four 104 -prefix_pop -prefix_pop -prefix_pop -five 105 -prefix_pop"));
51: PetscCall(PetscMemzero(opts, sizeof(opts)));
52: PetscCall(PetscOptionsGetInt(NULL, 0, "-str_zero", &opts[0], 0));
53: PetscCall(PetscOptionsGetInt(NULL, 0, "-str_a_one", &opts[1], 0));
54: PetscCall(PetscOptionsGetInt(NULL, 0, "-str_a_bb_two", &opts[2], 0));
55: PetscCall(PetscOptionsGetInt(NULL, 0, "-str_a_three", &opts[3], 0));
56: PetscCall(PetscOptionsGetInt(NULL, 0, "-str_a_cc_ddd_four", &opts[4], 0));
57: PetscCall(PetscOptionsGetInt(NULL, 0, "-str_five", &opts[5], 0));
58: PetscCall(PetscPrintf(PETSC_COMM_WORLD, "str_opts = {%" PetscInt_FMT " %" PetscInt_FMT " %" PetscInt_FMT " %" PetscInt_FMT " %" PetscInt_FMT " %" PetscInt_FMT "}\n", opts[0], opts[1], opts[2], opts[3], opts[4], opts[5]));
59: }
61: PetscCall(PetscFinalize());
62: return 0;
63: }
65: /*TEST
67: test:
68: output_file: output/ex20_1.out
70: test:
71: suffix: 2
72: args: -cl -prefix_push cl_ -zero 10 -prefix_push a_ -one 11 -prefix_push bb_ -two 12 -prefix_pop -three 13 -prefix_push cc_ -prefix_push ddd_ -four 14 -prefix_pop -prefix_pop -prefix_pop -five 15 -prefix_pop
74: test:
75: suffix: 3
76: args: -str
78: TEST*/