1/*
2 * Copyright 2008-2009 Katholieke Universiteit Leuven
3 *
4 * Use of this software is governed by the MIT license
5 *
6 * Written by Sven Verdoolaege, K.U.Leuven, Departement
7 * Computerwetenschappen, Celestijnenlaan 200A, B-3001 Leuven, Belgium
8 */
9
10#ifndef ISL_ID_PRIVATE_H
11#define ISL_ID_PRIVATE_H
12
13#include <isl/id.h>
14
15/* Represent a name and/or user pointer.
16 *
17 * If "free_user" is set, then it will be called on "user" when
18 * the last instance of the isl_id is freed.
19 */
20struct isl_id {
21	int ref;
22	isl_ctx *ctx;
23
24	const char *name;
25	void *user;
26	uint32_t hash;
27
28	__isl_give void (*free_user)(void *user);
29};
30
31#undef EL
32#define EL isl_id
33
34#include <isl_list_templ.h>
35
36uint32_t isl_hash_id(uint32_t hash, __isl_keep isl_id *id);
37
38extern isl_id isl_id_none;
39
40#endif
41