1#include <cloog/isl/cloog.h>
2
3/**
4 * Allocate and initialize full state.
5 */
6CloogState *cloog_state_malloc(void)
7{
8	return cloog_isl_state_malloc(NULL);
9}
10
11/**
12 * Allocate and initialize full state for isl backend.
13 */
14CloogState *cloog_isl_state_malloc(struct isl_ctx *ctx)
15{
16	CloogState *state;
17	int allocated = !ctx;
18
19	state = cloog_core_state_malloc();
20	if (!ctx)
21		ctx = isl_ctx_alloc();
22	state->backend = isl_alloc_type(ctx, CloogBackend);
23	state->backend->ctx = ctx;
24	state->backend->ctx_allocated = allocated;
25	return state;
26}
27
28/**
29 * Free state and backend independent parts.
30 */
31void cloog_state_free(CloogState *state)
32{
33	if (state->backend->ctx_allocated)
34		isl_ctx_free(state->backend->ctx);
35	free(state->backend);
36	cloog_core_state_free(state);
37}
38