home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume20 / xxalloc / tx.c < prev    next >
C/C++ Source or Header  |  1989-10-16  |  5KB  |  250 lines

  1. /* type allocation */
  2.  
  3. type *t1_alloc(ib, ie)
  4. int ib, ie;
  5. {
  6.     type *m;
  7.     index_test(ib, ie);
  8.     m = (type *) xx_alloc((unsigned) (ie - ib + 1) * sizeof(type));
  9.     if (m == (type *) NULL) return((type *) NULL);
  10.     m -= ib;
  11.     return((type *) m);
  12. }
  13.  
  14. type *t1_renum(m, ib, ie, nib, nie)
  15. type *m;
  16. int ib, ie, nib, nie;
  17. {
  18.     index_test(ib, ie);
  19.     index_test(nib, nie);
  20.     m += (ib - nib);
  21.     return((type *) m);
  22. }
  23.  
  24. void t1_free(m, ib, ie)
  25. type *m;
  26. int ib, ie;
  27. {
  28.     index_test(ib, ie);
  29.     xx_free((char*) (m + ib), (unsigned) ((ie - ib + 1) * sizeof(type)));
  30.     return;
  31. }
  32.  
  33. void t1_init(m, ib, ie, ini)
  34. type *m;
  35. int ib, ie;
  36. type ini;
  37. {
  38.     int i;
  39.     index_test(ib, ie);
  40.     for (i = ib; i <= ie; i++)
  41.         m[i] = ini;
  42.     return;
  43. }
  44.  
  45. void t1_prnt(fp, fmt, m, ib, ie)
  46. FILE *fp;
  47. char *fmt;
  48. type *m;
  49. int ib, ie;
  50. {
  51.     int i;
  52.     index_test(ib, ie);
  53.     for (i = ib; i <= ie; i++)
  54.         fprintf(fp, fmt, m[i]);
  55.     fprintf(fp, "\n");
  56.     return;
  57. }
  58.     
  59. type **t2_alloc(ib, ie, jb, je)
  60. int ib, ie, jb, je;
  61. {
  62.     int i;
  63.     type **m;
  64.     index_test(ib, ie);
  65.     index_test(jb, je);
  66.     m = (type **) xx_alloc((unsigned) (ie - ib + 1) *
  67.         sizeof(type *));
  68.     if (m == (type **) NULL) return((type **) NULL);
  69.     m -= ib;
  70.     for(i = ib; i <= ie; i++)
  71.     {
  72.         m[i] = (type *) xx_alloc((unsigned) (je - jb + 1) *
  73.             sizeof(type));
  74.         if (m[i] == (type *) NULL) return((type **) NULL);
  75.         m[i] -= jb;
  76.     }
  77.     return((type **) m);
  78. }
  79.  
  80. type **t2_renum(m, ib, ie, jb, je, nib, nie, njb, nje)
  81. type **m;
  82. int ib, ie, jb, je, nib, nie, njb, nje;
  83. {
  84.     int i;
  85.     index_test(ib, ie);
  86.     index_test(jb, je);
  87.     index_test(nib, nie);
  88.     index_test(njb, nje);
  89.     for(i = ie; i >= ib; i--)
  90.         m[i] += (jb - njb);
  91.     m += (ib - nib);
  92.     return((type **) m);
  93. }
  94.  
  95. void t2_free(m, ib, ie, jb, je)
  96. type **m;
  97. int ib, ie, jb, je;
  98. {
  99.     int i;
  100.     index_test(ib, ie);
  101.     index_test(jb, je);
  102.     for(i = ie; i >= ib; i--)
  103.         xx_free((char*) (m[i] + jb), 
  104.             (unsigned) ((je - jb + 1) * sizeof(type)));
  105.     xx_free((char*) (m + ib), (unsigned) ((ie - ib + 1) * sizeof(type *)));
  106.     return;
  107. }
  108.  
  109. void t2_init(m, ib, ie, jb, je, ini)
  110. type **m;
  111. int ib, ie, jb, je;
  112. type ini;
  113. {
  114.     int i, j;
  115.     index_test(ib, ie);
  116.     index_test(jb, je);
  117.     for (i = ib; i <= ie; i++)
  118.         for (j = jb; j <= je; j++)
  119.             m[i][j] = ini;
  120.     return;
  121. }
  122.  
  123. void t2_prnt(fp, fmt, m, ib, ie, jb, je)
  124. FILE *fp;
  125. char *fmt;
  126. type **m;
  127. int ib, ie, jb, je;
  128. {
  129.     int i, j;
  130.     index_test(ib, ie);
  131.     index_test(jb, je);
  132.     for (i = ib; i <= ie; i++)
  133.     {
  134.         for (j = jb; j <= je; j++)
  135.             fprintf(fp, fmt, m[i][j]);
  136.         fprintf(fp, "\n");
  137.     }
  138.     return;
  139. }
  140.  
  141. type ***t3_alloc(ib, ie, jb, je, kb, ke)
  142. int ib, ie, jb, je, kb, ke;
  143. {
  144.     int i, j;
  145.     type ***m;
  146.     index_test(ib, ie);
  147.     index_test(jb, je);
  148.     index_test(kb, ke);
  149.     m = (type ***) xx_alloc((unsigned) (ie - ib + 1) * 
  150.         sizeof(type **));
  151.     if (m == (type ***) NULL) return((type ***) NULL);
  152.     m -= ib;
  153.     for(i = ib; i <= ie; i++)
  154.     {
  155.         m[i] = (type **) xx_alloc((unsigned) (je - jb + 1) * 
  156.             sizeof(type *));
  157.         if (m[i] == (type **) NULL) return((type ***) NULL);
  158.         m[i] -= jb;
  159.         for(j = jb; j <= je; j++)
  160.         {
  161.             m[i][j] = (type *) xx_alloc((unsigned) (ke - kb + 1) *
  162.                 sizeof(type));
  163.             if (m[i][j] == (type *) NULL) return((type ***) NULL);
  164.             m[i][j] -= kb;
  165.         }
  166.     }
  167.     return((type ***) m);
  168. }
  169.  
  170. type ***t3_renum(m, ib, ie, jb, je, kb, ke, nib, nie, njb, nje, nkb, nke)
  171. type ***m;
  172. int ib, ie, jb, je, kb, ke, nib, nie, njb, nje, nkb, nke;
  173. {
  174.     int i, j;
  175.     index_test(ib, ie);
  176.     index_test(jb, je);
  177.     index_test(kb, ke);
  178.     index_test(nib, nie);
  179.     index_test(njb, nje);
  180.     index_test(nkb, nke);
  181.     for(i = ie; i >= ib; i--)
  182.         for (j = je; j >= jb; j--)
  183.             m[i][j] += (kb - nkb);
  184.     for(i = ie; i >= ib; i--)
  185.         m[i] += (jb - njb);
  186.     m += (ib - nib);
  187.     return((type ***) m);
  188. }
  189.  
  190. void t3_free(m, ib, ie, jb, je, kb, ke)
  191. type ***m;
  192. int ib, ie, jb, je, kb, ke;
  193. {
  194.     int i, j;
  195.     index_test(ib, ie);
  196.     index_test(jb, je);
  197.     index_test(kb, ke);
  198.     for(i = ie; i >= ib; i--)
  199.         for (j = je; j >= jb; j--)
  200.             xx_free((char*) (m[i][j] + kb),
  201.                 (unsigned) ((ke - kb + 1) * sizeof(type)));
  202.     for(i = ie; i >= ib; i--)
  203.         xx_free((char*) (m[i] + jb), 
  204.             (unsigned) ((je - jb + 1) * sizeof(type *)));
  205.     xx_free((char*) (m + ib),
  206.         (unsigned) ((ie - ib + 1) * sizeof(type **)));
  207.     return;
  208. }
  209.  
  210. void t3_init(m, ib, ie, jb, je, kb, ke, ini)
  211. type ***m;
  212. int ib, ie, jb, je, kb, ke;
  213. type ini;
  214. {
  215.     int i, j, k;
  216.     index_test(ib, ie);
  217.     index_test(jb, je);
  218.     index_test(kb, ke);
  219.     for (i = ib; i <= ie; i++)
  220.         for (j = jb; j <= je; j++)
  221.             for (k = kb; k <= ke; k++)
  222.                 m[i][j][k] = ini;
  223.     return;
  224. }
  225.  
  226. void t3_prnt(fp, fmt, m, ib, ie, jb, je, kb, ke)
  227. FILE *fp;
  228. char *fmt;
  229. type ***m;
  230. int ib, ie, jb, je, kb, ke;
  231. {
  232.     int i, j, k;
  233.     index_test(ib, ie);
  234.     index_test(jb, je);
  235.     index_test(kb, ke);
  236.     for (i = ib; i <= ie; i++)
  237.     {
  238.         fprintf(fp, "%d\n", i);
  239.         for (j = jb; j <= je; j++)
  240.         {
  241.             for (k = kb; k <= ke; k++)
  242.                 fprintf(fp, fmt, m[i][j][k]);
  243.             fprintf(fp, "\n");
  244.         }
  245.     }
  246.     return;
  247. }
  248.  
  249.  
  250.