diff options
Diffstat (limited to 'polly/lib/External/isl/interface/isl.h.top')
| -rw-r--r-- | polly/lib/External/isl/interface/isl.h.top | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/polly/lib/External/isl/interface/isl.h.top b/polly/lib/External/isl/interface/isl.h.top new file mode 100644 index 00000000000..37749c29596 --- /dev/null +++ b/polly/lib/External/isl/interface/isl.h.top @@ -0,0 +1,95 @@ +/// These are automatically generated C++ bindings for isl. +/// +/// isl is a library for computing with integer sets and maps described by +/// Presburger formulas. On top of this, isl provides various tools for +/// polyhedral compilation, ranging from dependence analysis over scheduling +/// to AST generation. + +#ifndef ISL_CPP_NOEXCEPTIONS +#define ISL_CPP_NOEXCEPTIONS + +#include <isl/aff.h> +#include <isl/ast_build.h> +#include <isl/flow.h> +#include <isl/ilp.h> +#include <isl/map.h> +#include <isl/schedule.h> +#include <isl/schedule_node.h> +#include <isl/set.h> +#include <isl/union_map.h> +#include <isl/union_set.h> +#include <isl/val.h> + +#include <functional> +#include <string> + +namespace isl { +inline namespace noexceptions { + +#define ISLPP_STRINGIZE_(X) #X +#define ISLPP_STRINGIZE(X) ISLPP_STRINGIZE_(X) + +#define ISLPP_ASSERT(test, message) \ + do { \ + if (test) \ + break; \ + fputs("Assertion \"" #test "\" failed at " __FILE__ \ + ":" ISLPP_STRINGIZE(__LINE__) "\n " message "\n", \ + stderr); \ + } while (0) + +class boolean { +private: + isl_bool val; + + friend isl::boolean manage(isl_bool val); + boolean(isl_bool val): val(val) {} +public: + boolean() + : val(isl_bool_error) {} + + /* implicit */ boolean(bool val) + : val(val ? isl_bool_true : isl_bool_false) {} + + bool is_error() const { return val == isl_bool_error; } + bool is_false() const { return val == isl_bool_false; } + bool is_true() const { return val == isl_bool_true; } + + explicit operator bool() const { + ISLPP_ASSERT(!is_error(), "IMPLEMENTATION ERROR: Unhandled error state"); + return is_true(); + } + + boolean operator!() const { + if (is_error()) + return *this; + return !is_true(); + } +}; + +inline isl::boolean manage(isl_bool val) { + return isl::boolean(val); +} + +class ctx { + isl_ctx *ptr; +public: + /* implicit */ ctx(isl_ctx *ctx) + : ptr(ctx) {} + isl_ctx *release() { + auto tmp = ptr; + ptr = nullptr; + return tmp; + } + isl_ctx *get() { + return ptr; + } +}; + +enum class stat { + ok = isl_stat_ok, + error = isl_stat_error +}; + +} +} // namespace isl |

