home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 October
/
usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso
/
unix
/
volume20
/
xxalloc
/
tx.c
< prev
next >
Wrap
C/C++ Source or Header
|
1989-10-16
|
5KB
|
250 lines
/* type allocation */
type *t1_alloc(ib, ie)
int ib, ie;
{
type *m;
index_test(ib, ie);
m = (type *) xx_alloc((unsigned) (ie - ib + 1) * sizeof(type));
if (m == (type *) NULL) return((type *) NULL);
m -= ib;
return((type *) m);
}
type *t1_renum(m, ib, ie, nib, nie)
type *m;
int ib, ie, nib, nie;
{
index_test(ib, ie);
index_test(nib, nie);
m += (ib - nib);
return((type *) m);
}
void t1_free(m, ib, ie)
type *m;
int ib, ie;
{
index_test(ib, ie);
xx_free((char*) (m + ib), (unsigned) ((ie - ib + 1) * sizeof(type)));
return;
}
void t1_init(m, ib, ie, ini)
type *m;
int ib, ie;
type ini;
{
int i;
index_test(ib, ie);
for (i = ib; i <= ie; i++)
m[i] = ini;
return;
}
void t1_prnt(fp, fmt, m, ib, ie)
FILE *fp;
char *fmt;
type *m;
int ib, ie;
{
int i;
index_test(ib, ie);
for (i = ib; i <= ie; i++)
fprintf(fp, fmt, m[i]);
fprintf(fp, "\n");
return;
}
type **t2_alloc(ib, ie, jb, je)
int ib, ie, jb, je;
{
int i;
type **m;
index_test(ib, ie);
index_test(jb, je);
m = (type **) xx_alloc((unsigned) (ie - ib + 1) *
sizeof(type *));
if (m == (type **) NULL) return((type **) NULL);
m -= ib;
for(i = ib; i <= ie; i++)
{
m[i] = (type *) xx_alloc((unsigned) (je - jb + 1) *
sizeof(type));
if (m[i] == (type *) NULL) return((type **) NULL);
m[i] -= jb;
}
return((type **) m);
}
type **t2_renum(m, ib, ie, jb, je, nib, nie, njb, nje)
type **m;
int ib, ie, jb, je, nib, nie, njb, nje;
{
int i;
index_test(ib, ie);
index_test(jb, je);
index_test(nib, nie);
index_test(njb, nje);
for(i = ie; i >= ib; i--)
m[i] += (jb - njb);
m += (ib - nib);
return((type **) m);
}
void t2_free(m, ib, ie, jb, je)
type **m;
int ib, ie, jb, je;
{
int i;
index_test(ib, ie);
index_test(jb, je);
for(i = ie; i >= ib; i--)
xx_free((char*) (m[i] + jb),
(unsigned) ((je - jb + 1) * sizeof(type)));
xx_free((char*) (m + ib), (unsigned) ((ie - ib + 1) * sizeof(type *)));
return;
}
void t2_init(m, ib, ie, jb, je, ini)
type **m;
int ib, ie, jb, je;
type ini;
{
int i, j;
index_test(ib, ie);
index_test(jb, je);
for (i = ib; i <= ie; i++)
for (j = jb; j <= je; j++)
m[i][j] = ini;
return;
}
void t2_prnt(fp, fmt, m, ib, ie, jb, je)
FILE *fp;
char *fmt;
type **m;
int ib, ie, jb, je;
{
int i, j;
index_test(ib, ie);
index_test(jb, je);
for (i = ib; i <= ie; i++)
{
for (j = jb; j <= je; j++)
fprintf(fp, fmt, m[i][j]);
fprintf(fp, "\n");
}
return;
}
type ***t3_alloc(ib, ie, jb, je, kb, ke)
int ib, ie, jb, je, kb, ke;
{
int i, j;
type ***m;
index_test(ib, ie);
index_test(jb, je);
index_test(kb, ke);
m = (type ***) xx_alloc((unsigned) (ie - ib + 1) *
sizeof(type **));
if (m == (type ***) NULL) return((type ***) NULL);
m -= ib;
for(i = ib; i <= ie; i++)
{
m[i] = (type **) xx_alloc((unsigned) (je - jb + 1) *
sizeof(type *));
if (m[i] == (type **) NULL) return((type ***) NULL);
m[i] -= jb;
for(j = jb; j <= je; j++)
{
m[i][j] = (type *) xx_alloc((unsigned) (ke - kb + 1) *
sizeof(type));
if (m[i][j] == (type *) NULL) return((type ***) NULL);
m[i][j] -= kb;
}
}
return((type ***) m);
}
type ***t3_renum(m, ib, ie, jb, je, kb, ke, nib, nie, njb, nje, nkb, nke)
type ***m;
int ib, ie, jb, je, kb, ke, nib, nie, njb, nje, nkb, nke;
{
int i, j;
index_test(ib, ie);
index_test(jb, je);
index_test(kb, ke);
index_test(nib, nie);
index_test(njb, nje);
index_test(nkb, nke);
for(i = ie; i >= ib; i--)
for (j = je; j >= jb; j--)
m[i][j] += (kb - nkb);
for(i = ie; i >= ib; i--)
m[i] += (jb - njb);
m += (ib - nib);
return((type ***) m);
}
void t3_free(m, ib, ie, jb, je, kb, ke)
type ***m;
int ib, ie, jb, je, kb, ke;
{
int i, j;
index_test(ib, ie);
index_test(jb, je);
index_test(kb, ke);
for(i = ie; i >= ib; i--)
for (j = je; j >= jb; j--)
xx_free((char*) (m[i][j] + kb),
(unsigned) ((ke - kb + 1) * sizeof(type)));
for(i = ie; i >= ib; i--)
xx_free((char*) (m[i] + jb),
(unsigned) ((je - jb + 1) * sizeof(type *)));
xx_free((char*) (m + ib),
(unsigned) ((ie - ib + 1) * sizeof(type **)));
return;
}
void t3_init(m, ib, ie, jb, je, kb, ke, ini)
type ***m;
int ib, ie, jb, je, kb, ke;
type ini;
{
int i, j, k;
index_test(ib, ie);
index_test(jb, je);
index_test(kb, ke);
for (i = ib; i <= ie; i++)
for (j = jb; j <= je; j++)
for (k = kb; k <= ke; k++)
m[i][j][k] = ini;
return;
}
void t3_prnt(fp, fmt, m, ib, ie, jb, je, kb, ke)
FILE *fp;
char *fmt;
type ***m;
int ib, ie, jb, je, kb, ke;
{
int i, j, k;
index_test(ib, ie);
index_test(jb, je);
index_test(kb, ke);
for (i = ib; i <= ie; i++)
{
fprintf(fp, "%d\n", i);
for (j = jb; j <= je; j++)
{
for (k = kb; k <= ke; k++)
fprintf(fp, fmt, m[i][j][k]);
fprintf(fp, "\n");
}
}
return;
}