2 #include <stdlib.h> /* for calloc, free */
5 extern struct SN_env
* SN_create_env(int S_size
, int I_size
, int B_size
)
7 struct SN_env
* z
= (struct SN_env
*) calloc(1, sizeof(struct SN_env
));
8 if (z
== NULL
) return NULL
;
10 if (z
->p
== NULL
) goto error
;
14 z
->S
= (symbol
* *) calloc(S_size
, sizeof(symbol
*));
15 if (z
->S
== NULL
) goto error
;
17 for (i
= 0; i
< S_size
; i
++)
20 if (z
->S
[i
] == NULL
) goto error
;
26 z
->I
= (int *) calloc(I_size
, sizeof(int));
27 if (z
->I
== NULL
) goto error
;
32 z
->B
= (unsigned char *) calloc(B_size
, sizeof(unsigned char));
33 if (z
->B
== NULL
) goto error
;
38 SN_close_env(z
, S_size
);
42 extern void SN_close_env(struct SN_env
* z
, int S_size
)
44 if (z
== NULL
) return;
48 for (i
= 0; i
< S_size
; i
++)
56 if (z
->p
) lose_s(z
->p
);
60 extern int SN_set_current(struct SN_env
* z
, int size
, const symbol
* s
)
62 int err
= replace_s(z
, 0, z
->l
, size
, s
, NULL
);