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