Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-10 08:48:18

0001 /*
0002  * Copyright 2008-2009 Katholieke Universiteit Leuven
0003  *
0004  * Use of this software is governed by the MIT license
0005  *
0006  * Written by Sven Verdoolaege, K.U.Leuven, Departement
0007  * Computerwetenschappen, Celestijnenlaan 200A, B-3001 Leuven, Belgium
0008  */
0009 
0010 #ifndef ISL_LIST_H
0011 #define ISL_LIST_H
0012 
0013 #include <isl/ctx.h>
0014 #include <isl/printer_type.h>
0015 
0016 #if defined(__cplusplus)
0017 extern "C" {
0018 #endif
0019 
0020 #define ISL_DECLARE_LIST_TYPE2(EL,EXPORT)               \
0021 struct isl_##EL;                            \
0022 struct EXPORT isl_##EL##_list;                      \
0023 typedef struct isl_##EL##_list isl_##EL##_list;
0024 #define ISL_DECLARE_LIST_TYPE(EL)                   \
0025     ISL_DECLARE_LIST_TYPE2(EL,)
0026 #define ISL_DECLARE_EXPORTED_LIST_TYPE(EL)              \
0027     ISL_DECLARE_LIST_TYPE2(EL,__isl_export)
0028 #define ISL_DECLARE_LIST_FN3(EL,CONSTRUCTOR,EXPORT)         \
0029 isl_ctx *isl_##EL##_list_get_ctx(__isl_keep isl_##EL##_list *list); \
0030 EXPORT                                  \
0031 __isl_give isl_##EL##_list *isl_##EL##_to_list(__isl_take isl_##EL *el);\
0032 CONSTRUCTOR                             \
0033 __isl_give isl_##EL##_list *isl_##EL##_list_from_##EL(          \
0034     __isl_take isl_##EL *el);                   \
0035 CONSTRUCTOR                             \
0036 __isl_give isl_##EL##_list *isl_##EL##_list_alloc(isl_ctx *ctx, int n); \
0037 __isl_give isl_##EL##_list *isl_##EL##_list_copy(           \
0038     __isl_keep isl_##EL##_list *list);              \
0039 __isl_null isl_##EL##_list *isl_##EL##_list_free(           \
0040     __isl_take isl_##EL##_list *list);              \
0041 EXPORT                                  \
0042 __isl_give isl_##EL##_list *isl_##EL##_list_add(            \
0043     __isl_take isl_##EL##_list *list,               \
0044     __isl_take isl_##EL *el);                   \
0045 EXPORT                                  \
0046 __isl_give isl_##EL##_list *isl_##EL##_list_insert(         \
0047     __isl_take isl_##EL##_list *list, unsigned pos,         \
0048     __isl_take isl_##EL *el);                   \
0049 EXPORT                                  \
0050 __isl_give isl_##EL##_list *isl_##EL##_list_drop(           \
0051     __isl_take isl_##EL##_list *list, unsigned first, unsigned n);  \
0052 EXPORT                                  \
0053 __isl_give isl_##EL##_list *isl_##EL##_list_clear(          \
0054     __isl_take isl_##EL##_list *list);              \
0055 __isl_give isl_##EL##_list *isl_##EL##_list_swap(           \
0056     __isl_take isl_##EL##_list *list, unsigned pos1,        \
0057     unsigned pos2);                         \
0058 __isl_give isl_##EL##_list *isl_##EL##_list_reverse(            \
0059     __isl_take isl_##EL##_list *list);              \
0060 EXPORT                                  \
0061 __isl_give isl_##EL##_list *isl_##EL##_list_concat(         \
0062     __isl_take isl_##EL##_list *list1,              \
0063     __isl_take isl_##EL##_list *list2);             \
0064 EXPORT                                  \
0065 isl_size isl_##EL##_list_size(__isl_keep isl_##EL##_list *list);    \
0066 isl_size isl_##EL##_list_n_##EL(__isl_keep isl_##EL##_list *list);  \
0067 EXPORT                                  \
0068 __isl_give isl_##EL *isl_##EL##_list_get_at(                \
0069     __isl_keep isl_##EL##_list *list, int index);           \
0070 __isl_give struct isl_##EL *isl_##EL##_list_get_##EL(           \
0071     __isl_keep isl_##EL##_list *list, int index);           \
0072 EXPORT                                  \
0073 __isl_give isl_##EL##_list *isl_##EL##_list_set_at(         \
0074     __isl_take isl_##EL##_list *list, int index,            \
0075     __isl_take isl_##EL *el);                   \
0076 __isl_give struct isl_##EL##_list *isl_##EL##_list_set_##EL(        \
0077     __isl_take struct isl_##EL##_list *list, int index,     \
0078     __isl_take struct isl_##EL *el);                \
0079 EXPORT                                  \
0080 isl_stat isl_##EL##_list_foreach(__isl_keep isl_##EL##_list *list,  \
0081     isl_stat (*fn)(__isl_take isl_##EL *el, void *user),        \
0082     void *user);                            \
0083 isl_bool isl_##EL##_list_every(__isl_keep isl_##EL##_list *list,    \
0084     isl_bool (*test)(__isl_keep isl_##EL *el, void *user),      \
0085     void *user);                            \
0086 __isl_give isl_##EL##_list *isl_##EL##_list_map(            \
0087     __isl_take isl_##EL##_list *list,               \
0088     __isl_give isl_##EL * (*fn)(__isl_take isl_##EL *el,        \
0089         void *user),                        \
0090     void *user);                            \
0091 __isl_give isl_##EL##_list *isl_##EL##_list_sort(           \
0092     __isl_take isl_##EL##_list *list,               \
0093     int (*cmp)(__isl_keep struct isl_##EL *a,           \
0094         __isl_keep struct isl_##EL *b,              \
0095         void *user), void *user);               \
0096 EXPORT                                  \
0097 isl_stat isl_##EL##_list_foreach_scc(__isl_keep isl_##EL##_list *list,  \
0098     isl_bool (*follows)(__isl_keep isl_##EL *a,         \
0099             __isl_keep isl_##EL *b, void *user),        \
0100     void *follows_user,                     \
0101     isl_stat (*fn)(__isl_take isl_##EL##_list *scc, void *user),    \
0102     void *fn_user);                         \
0103 __isl_give char *isl_##EL##_list_to_str(                \
0104     __isl_keep isl_##EL##_list *list);              \
0105 __isl_give isl_printer *isl_printer_print_##EL##_list(          \
0106     __isl_take isl_printer *p, __isl_keep isl_##EL##_list *list);   \
0107 void isl_##EL##_list_dump(__isl_keep isl_##EL##_list *list);
0108 #define ISL_DECLARE_LIST_FN(EL)                     \
0109     ISL_DECLARE_LIST_FN3(EL,,)
0110 #define ISL_DECLARE_EXPORTED_LIST_FN(EL)                \
0111     ISL_DECLARE_LIST_FN3(EL,__isl_constructor,__isl_export)
0112 #define ISL_DECLARE_LIST_FN_READ2(EL,CONSTRUCTOR)           \
0113 CONSTRUCTOR                             \
0114 __isl_give isl_##EL##_list *isl_##EL##_list_read_from_str(      \
0115     isl_ctx *ctx, const char *str);
0116 #define ISL_DECLARE_LIST_FN_READ(EL)                    \
0117     ISL_DECLARE_LIST_FN_READ2(EL,)
0118 #define ISL_DECLARE_EXPORTED_LIST_FN_READ(EL)               \
0119     ISL_DECLARE_LIST_FN_READ2(EL,__isl_constructor)
0120 
0121 #define ISL_DECLARE_LIST(EL)                        \
0122     ISL_DECLARE_LIST_TYPE(EL)                   \
0123     ISL_DECLARE_LIST_FN(EL)
0124 #define ISL_DECLARE_EXPORTED_LIST(EL)                   \
0125     ISL_DECLARE_EXPORTED_LIST_TYPE(EL)              \
0126     ISL_DECLARE_EXPORTED_LIST_FN(EL)
0127 
0128 #if defined(__cplusplus)
0129 }
0130 #endif
0131 
0132 #endif