Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  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_LIST_H
  11. #define ISL_LIST_H
  12.  
  13. #include <isl/ctx.h>
  14. #include <isl/printer_type.h>
  15.  
  16. #if defined(__cplusplus)
  17. extern "C" {
  18. #endif
  19.  
  20. #define ISL_DECLARE_LIST_TYPE2(EL,EXPORT)                               \
  21. struct isl_##EL;                                                        \
  22. struct EXPORT isl_##EL##_list;                                          \
  23. typedef struct isl_##EL##_list isl_##EL##_list;
  24. #define ISL_DECLARE_LIST_TYPE(EL)                                       \
  25.         ISL_DECLARE_LIST_TYPE2(EL,)
  26. #define ISL_DECLARE_EXPORTED_LIST_TYPE(EL)                              \
  27.         ISL_DECLARE_LIST_TYPE2(EL,__isl_export)
  28. #define ISL_DECLARE_LIST_FN3(EL,CONSTRUCTOR,EXPORT)                     \
  29. isl_ctx *isl_##EL##_list_get_ctx(__isl_keep isl_##EL##_list *list);     \
  30. EXPORT                                                                  \
  31. __isl_give isl_##EL##_list *isl_##EL##_to_list(__isl_take isl_##EL *el);\
  32. CONSTRUCTOR                                                             \
  33. __isl_give isl_##EL##_list *isl_##EL##_list_from_##EL(                  \
  34.         __isl_take isl_##EL *el);                                       \
  35. CONSTRUCTOR                                                             \
  36. __isl_give isl_##EL##_list *isl_##EL##_list_alloc(isl_ctx *ctx, int n); \
  37. __isl_give isl_##EL##_list *isl_##EL##_list_copy(                       \
  38.         __isl_keep isl_##EL##_list *list);                              \
  39. __isl_null isl_##EL##_list *isl_##EL##_list_free(                       \
  40.         __isl_take isl_##EL##_list *list);                              \
  41. EXPORT                                                                  \
  42. __isl_give isl_##EL##_list *isl_##EL##_list_add(                        \
  43.         __isl_take isl_##EL##_list *list,                               \
  44.         __isl_take isl_##EL *el);                                       \
  45. EXPORT                                                                  \
  46. __isl_give isl_##EL##_list *isl_##EL##_list_insert(                     \
  47.         __isl_take isl_##EL##_list *list, unsigned pos,                 \
  48.         __isl_take isl_##EL *el);                                       \
  49. EXPORT                                                                  \
  50. __isl_give isl_##EL##_list *isl_##EL##_list_drop(                       \
  51.         __isl_take isl_##EL##_list *list, unsigned first, unsigned n);  \
  52. EXPORT                                                                  \
  53. __isl_give isl_##EL##_list *isl_##EL##_list_clear(                      \
  54.         __isl_take isl_##EL##_list *list);                              \
  55. __isl_give isl_##EL##_list *isl_##EL##_list_swap(                       \
  56.         __isl_take isl_##EL##_list *list, unsigned pos1,                \
  57.         unsigned pos2);                                                 \
  58. __isl_give isl_##EL##_list *isl_##EL##_list_reverse(                    \
  59.         __isl_take isl_##EL##_list *list);                              \
  60. EXPORT                                                                  \
  61. __isl_give isl_##EL##_list *isl_##EL##_list_concat(                     \
  62.         __isl_take isl_##EL##_list *list1,                              \
  63.         __isl_take isl_##EL##_list *list2);                             \
  64. EXPORT                                                                  \
  65. isl_size isl_##EL##_list_size(__isl_keep isl_##EL##_list *list);        \
  66. isl_size isl_##EL##_list_n_##EL(__isl_keep isl_##EL##_list *list);      \
  67. EXPORT                                                                  \
  68. __isl_give isl_##EL *isl_##EL##_list_get_at(                            \
  69.         __isl_keep isl_##EL##_list *list, int index);                   \
  70. __isl_give struct isl_##EL *isl_##EL##_list_get_##EL(                   \
  71.         __isl_keep isl_##EL##_list *list, int index);                   \
  72. __isl_give struct isl_##EL##_list *isl_##EL##_list_set_##EL(            \
  73.         __isl_take struct isl_##EL##_list *list, int index,             \
  74.         __isl_take struct isl_##EL *el);                                \
  75. EXPORT                                                                  \
  76. isl_stat isl_##EL##_list_foreach(__isl_keep isl_##EL##_list *list,      \
  77.         isl_stat (*fn)(__isl_take isl_##EL *el, void *user),            \
  78.         void *user);                                                    \
  79. isl_bool isl_##EL##_list_every(__isl_keep isl_##EL##_list *list,        \
  80.         isl_bool (*test)(__isl_keep isl_##EL *el, void *user),          \
  81.         void *user);                                                    \
  82. __isl_give isl_##EL##_list *isl_##EL##_list_map(                        \
  83.         __isl_take isl_##EL##_list *list,                               \
  84.         __isl_give isl_##EL * (*fn)(__isl_take isl_##EL *el,            \
  85.                 void *user),                                            \
  86.         void *user);                                                    \
  87. __isl_give isl_##EL##_list *isl_##EL##_list_sort(                       \
  88.         __isl_take isl_##EL##_list *list,                               \
  89.         int (*cmp)(__isl_keep struct isl_##EL *a,                       \
  90.                 __isl_keep struct isl_##EL *b,                          \
  91.                 void *user), void *user);                               \
  92. isl_stat isl_##EL##_list_foreach_scc(__isl_keep isl_##EL##_list *list,  \
  93.         isl_bool (*follows)(__isl_keep struct isl_##EL *a,              \
  94.                         __isl_keep struct isl_##EL *b, void *user),     \
  95.         void *follows_user,                                             \
  96.         isl_stat (*fn)(__isl_take isl_##EL##_list *scc, void *user),    \
  97.         void *fn_user);                                                 \
  98. __isl_give char *isl_##EL##_list_to_str(                                \
  99.         __isl_keep isl_##EL##_list *list);                              \
  100. __isl_give isl_printer *isl_printer_print_##EL##_list(                  \
  101.         __isl_take isl_printer *p, __isl_keep isl_##EL##_list *list);   \
  102. void isl_##EL##_list_dump(__isl_keep isl_##EL##_list *list);
  103. #define ISL_DECLARE_LIST_FN(EL)                                         \
  104.         ISL_DECLARE_LIST_FN3(EL,,)
  105. #define ISL_DECLARE_EXPORTED_LIST_FN(EL)                                \
  106.         ISL_DECLARE_LIST_FN3(EL,__isl_constructor,__isl_export)
  107. #define ISL_DECLARE_LIST_FN_READ2(EL,CONSTRUCTOR)                       \
  108. CONSTRUCTOR                                                             \
  109. __isl_give isl_##EL##_list *isl_##EL##_list_read_from_str(              \
  110.         isl_ctx *ctx, const char *str);
  111. #define ISL_DECLARE_LIST_FN_READ(EL)                                    \
  112.         ISL_DECLARE_LIST_FN_READ2(EL,)
  113. #define ISL_DECLARE_EXPORTED_LIST_FN_READ(EL)                           \
  114.         ISL_DECLARE_LIST_FN_READ2(EL,__isl_constructor)
  115.  
  116. #define ISL_DECLARE_LIST(EL)                                            \
  117.         ISL_DECLARE_LIST_TYPE(EL)                                       \
  118.         ISL_DECLARE_LIST_FN(EL)
  119. #define ISL_DECLARE_EXPORTED_LIST(EL)                                   \
  120.         ISL_DECLARE_EXPORTED_LIST_TYPE(EL)                              \
  121.         ISL_DECLARE_EXPORTED_LIST_FN(EL)
  122.  
  123. #if defined(__cplusplus)
  124. }
  125. #endif
  126.  
  127. #endif
  128.