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*/