Actual source code: ex10.c


  2: static char help[] = "Tests PetscArraymove()/PetscMemmove()\n";

  4: #include <petscsys.h>

  6: int main(int argc,char **argv)
  7: {
  8:   PetscInt       i,*a,*b;

 10:   PetscInitialize(&argc,&argv,(char*)0,help);

 12:   PetscMalloc1(10,&a);
 13:   PetscMalloc1(20,&b);

 15:   /*
 16:       Nonoverlapping regions
 17:   */
 18:   for (i=0; i<20; i++) b[i] = i;
 19:   PetscArraymove(a,b,10);
 20:   PetscIntView(10,a,NULL);

 22:   PetscFree(a);

 24:   /*
 25:      |        |                |       |
 26:      b        a               b+15    b+20
 27:                               a+10    a+15
 28:   */
 29:   a    = b + 5;
 30:   PetscArraymove(a,b,15);
 31:   PetscIntView(15,a,NULL);
 32:   PetscFree(b);

 34:   /*
 35:      |       |                    |       |
 36:      a       b                   a+20   a+25
 37:                                         b+20
 38:   */
 39:   PetscMalloc1(25,&a);
 40:   b    = a + 5;
 41:   for (i=0; i<20; i++) b[i] = i;
 42:   PetscArraymove(a,b,20);
 43:   PetscIntView(20,a,NULL);
 44:   PetscFree(a);

 46:   PetscFinalize();
 47:   return 0;
 48: }

 50: /*TEST

 52:    test:

 54: TEST*/