1*c4762a1bSJed Brown 2*c4762a1bSJed Brown static char help[] = "Demonstrates PetscOptionsPush()/PetscOptionsPop().\n\n"; 3*c4762a1bSJed Brown 4*c4762a1bSJed Brown #include <petscsys.h> 5*c4762a1bSJed Brown #include <petscoptions.h> 6*c4762a1bSJed Brown int main(int argc,char **argv) 7*c4762a1bSJed Brown { 8*c4762a1bSJed Brown PetscErrorCode ierr; 9*c4762a1bSJed Brown PetscOptions opt1,opt2; 10*c4762a1bSJed Brown PetscInt int1,int2; 11*c4762a1bSJed Brown PetscBool flg1,flg2,flga,match; 12*c4762a1bSJed Brown char str[16]; 13*c4762a1bSJed Brown 14*c4762a1bSJed Brown ierr = PetscInitialize(&argc,&argv,(char*)0,help);if (ierr) return ierr; 15*c4762a1bSJed Brown 16*c4762a1bSJed Brown ierr = PetscOptionsCreate(&opt1);CHKERRQ(ierr); 17*c4762a1bSJed Brown ierr = PetscOptionsInsertString(opt1,"-testa a");CHKERRQ(ierr); 18*c4762a1bSJed Brown ierr = PetscOptionsPush(opt1);CHKERRQ(ierr); 19*c4762a1bSJed Brown ierr = PetscOptionsSetValue(NULL,"-test1","1");CHKERRQ(ierr); 20*c4762a1bSJed Brown ierr = PetscOptionsGetInt(NULL,NULL,"-test1",&int1,&flg1);CHKERRQ(ierr); 21*c4762a1bSJed Brown if (!flg1 || int1 != 1) SETERRQ(PETSC_COMM_WORLD,PETSC_ERR_PLIB,"Unable to locate option test1 or it has the wrong value"); 22*c4762a1bSJed Brown ierr = PetscOptionsGetString(NULL,NULL,"-testa",str,sizeof(str),&flga);CHKERRQ(ierr); 23*c4762a1bSJed Brown ierr = PetscStrcmp(str,"a",&match);CHKERRQ(ierr); 24*c4762a1bSJed Brown if (!flga|| !match) SETERRQ(PETSC_COMM_WORLD,PETSC_ERR_PLIB,"Unable to locate option testa or it has the wrong value"); 25*c4762a1bSJed Brown ierr = PetscOptionsCreate(&opt2);CHKERRQ(ierr); 26*c4762a1bSJed Brown ierr = PetscOptionsPush(opt2);CHKERRQ(ierr); 27*c4762a1bSJed Brown ierr = PetscOptionsSetValue(NULL,"-test2","2");CHKERRQ(ierr); 28*c4762a1bSJed Brown ierr = PetscOptionsGetInt(NULL,NULL,"-test2",&int2,&flg2);CHKERRQ(ierr); 29*c4762a1bSJed Brown if (!flg2 || int2 != 2) SETERRQ(PETSC_COMM_WORLD,PETSC_ERR_PLIB,"Unable to locate option test2 or it has the wrong value"); 30*c4762a1bSJed Brown ierr = PetscOptionsGetInt(NULL,NULL,"-test1",&int1,&flg1);CHKERRQ(ierr); 31*c4762a1bSJed Brown if (flg1) SETERRQ(PETSC_COMM_WORLD,PETSC_ERR_PLIB,"Able to access test1 from a different options database"); 32*c4762a1bSJed Brown 33*c4762a1bSJed Brown ierr = PetscOptionsPop();CHKERRQ(ierr); 34*c4762a1bSJed Brown ierr = PetscOptionsPop();CHKERRQ(ierr); 35*c4762a1bSJed Brown ierr = PetscOptionsDestroy(&opt2);CHKERRQ(ierr); 36*c4762a1bSJed Brown ierr = PetscOptionsDestroy(&opt1);CHKERRQ(ierr); 37*c4762a1bSJed Brown ierr = PetscFinalize(); 38*c4762a1bSJed Brown return ierr; 39*c4762a1bSJed Brown } 40*c4762a1bSJed Brown 41*c4762a1bSJed Brown 42*c4762a1bSJed Brown /*TEST 43*c4762a1bSJed Brown 44*c4762a1bSJed Brown test: 45*c4762a1bSJed Brown 46*c4762a1bSJed Brown TEST*/ 47