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 | #include <isl/stream.h> |
15 | |
16 | /* Represent a name and/or user pointer. |
17 | * |
18 | * If "free_user" is set, then it will be called on "user" when |
19 | * the last instance of the isl_id is freed. |
20 | */ |
21 | struct isl_id { |
22 | int ref; |
23 | isl_ctx *ctx; |
24 | |
25 | const char *name; |
26 | void *user; |
27 | uint32_t hash; |
28 | |
29 | __isl_give void (*free_user)(void *user); |
30 | }; |
31 | |
32 | #undef EL |
33 | #define EL isl_id |
34 | |
35 | #include <isl_list_templ.h> |
36 | |
37 | uint32_t isl_hash_id(uint32_t hash, __isl_keep isl_id *id); |
38 | int isl_id_cmp(__isl_keep isl_id *id1, __isl_keep isl_id *id2); |
39 | |
40 | extern isl_id isl_id_none; |
41 | |
42 | #undef BASE |
43 | #define BASE id |
44 | |
45 | #include <isl_multi_templ.h> |
46 | |
47 | #endif |
48 | |