home *** CD-ROM | disk | FTP | other *** search
/ World of Shareware - Software Farm 2 / wosw_2.zip / wosw_2 / CPROG / ARRV110.ZIP / XMSARRAY.ZIP / ARRAY.C next >
C/C++ Source or Header  |  1991-03-06  |  2KB  |  78 lines

  1. #include "stdlib.h"
  2. #include "alloc.h"
  3. #include "largearr.h"
  4.  
  5.  
  6. /* Format of macro
  7.  
  8.  
  9. ---
  10.  
  11.     #define <variable>(x) *((<variable type> *)pointer_add(<pointer to
  12.             first memory location>,x))
  13.  
  14. ---
  15. Note memory must be declared later on in the program
  16. */
  17.  
  18. #define data_char(x) *((char *)pointer_add(DATA_CHAR,x))
  19. #define data_int(x) *((int *)pointer_add(DATA_INT,x<<1))
  20. #define data_long(x) *((long *)pointer_add(DATA_LONG,x<<2))
  21.  
  22. #define square(x,y) *((char *)pointer_add(SQUARE,(x<<8)+y))
  23.  
  24. void main()
  25. {
  26.     long i,j;
  27.     void *DATA_CHAR,*DATA_INT,*DATA_LONG,*SQUARE;
  28.     DATA_CHAR=char_array(80000);
  29.     DATA_INT=int_array(40000);
  30.     DATA_LONG=long_array(20000);
  31.     SQUARE=char_array(256L*256L);
  32.  
  33.     printf ("Memory still available %ld\n",coreleft());
  34.     printf ("Press a key to check arrays\n");
  35.     getch();
  36.     start_timer();
  37.     printf ("Filling char array\n");
  38.     for (i=0;i<80000;i++)
  39.         data_char(i)=(char)i;
  40.     printf ("Filling int array\n");
  41.     for (i=0;i<40000;i++)
  42.         data_int(i)=(int)i;
  43.     printf ("Filling long array\n");
  44.     for (i=0;i<20000;i++)
  45.         data_long(i)=i;
  46.     printf ("Filling square array\n");
  47.     for (i=0;i<256;i++)
  48.         for (j=0;j<256;j++)
  49.             square(i,j)=(char)(i*j);
  50.     printf ("Checking char array\n");
  51.     for (i=0;i<80000;i++)
  52.     {
  53.         if (data_char(i)!=(char)i) goto ERR;
  54.     }
  55.     printf ("Checking int array\n");
  56.     for (i=0;i<40000;i++)
  57.         if (data_int(i)!=(int)i) goto ERR;
  58.     printf ("Checking long array\n");
  59.     for (i=0;i<20000;i++)
  60.         if (data_long(i)!=i) goto ERR;
  61.     printf ("Checking square array\n");
  62.     for (i=0;i<256;i++)
  63.         for (j=0;j<256;j++)
  64.             if (square(i,j)!=(char)(i*j)) goto ERR;
  65.     printf ("Arrays checked out ok\n");
  66.     stop_timer();
  67.  
  68.     exit(1);
  69. ERR:
  70.     printf ("Error in large array\n");
  71.     printf ("%p %p %p %ld\n",DATA_CHAR,DATA_INT,DATA_LONG,i);
  72.     printf ("%p %p %p\n",pointer_add(DATA_CHAR,i),
  73.                     pointer_add(DATA_INT,i),pointer_add(DATA_LONG,i));
  74.     printf ("%d %d %ld\n",(char)data_char(i),data_int(i),data_long(i));
  75. }
  76.  
  77.  
  78.