isl_rs/bindings/
context.rs

1// Automatically generated by isl_bindings_generator.
2// LICENSE: MIT
3
4use libc::uintptr_t;
5use std::ffi::{CStr, CString};
6use std::os::raw::c_char;
7
8/// Wraps `isl_ctx`.
9pub struct Context {
10    pub ptr: uintptr_t,
11    pub should_free_on_drop: bool,
12}
13
14extern "C" {
15
16    fn isl_ctx_alloc() -> uintptr_t;
17
18    fn isl_ctx_ref(ctx: uintptr_t);
19
20    fn isl_ctx_deref(ctx: uintptr_t);
21
22    fn isl_ctx_free(ctx: uintptr_t);
23
24    fn isl_ctx_abort(ctx: uintptr_t);
25
26    fn isl_ctx_resume(ctx: uintptr_t);
27
28    fn isl_ctx_aborted(ctx: uintptr_t) -> i32;
29
30    fn isl_ctx_set_max_operations(ctx: uintptr_t, max_operations: u64);
31
32    fn isl_ctx_get_max_operations(ctx: uintptr_t) -> u64;
33
34    fn isl_ctx_reset_operations(ctx: uintptr_t);
35
36    fn isl_ctx_last_error_msg(ctx: uintptr_t) -> *const c_char;
37
38    fn isl_ctx_last_error_file(ctx: uintptr_t) -> *const c_char;
39
40    fn isl_ctx_last_error_line(ctx: uintptr_t) -> i32;
41
42    fn isl_ctx_reset_error(ctx: uintptr_t);
43
44}
45
46impl Context {
47    /// Wraps `isl_ctx_alloc`.
48    pub fn alloc() -> Context {
49        let isl_rs_result = unsafe { isl_ctx_alloc() };
50        let isl_rs_result = Context { ptr: isl_rs_result,
51                                      should_free_on_drop: true };
52        isl_rs_result
53    }
54
55    /// Wraps `isl_ctx_ref`.
56    pub fn incref(&self) {
57        let ctx = self;
58        let ctx = ctx.ptr;
59        let isl_rs_result = unsafe { isl_ctx_ref(ctx) };
60        isl_rs_result
61    }
62
63    /// Wraps `isl_ctx_deref`.
64    pub fn deref(&self) {
65        let ctx = self;
66        let ctx = ctx.ptr;
67        let isl_rs_result = unsafe { isl_ctx_deref(ctx) };
68        isl_rs_result
69    }
70
71    /// Wraps `isl_ctx_free`.
72    pub fn free(&self) {
73        let ctx = self;
74        let ctx = ctx.ptr;
75        let isl_rs_result = unsafe { isl_ctx_free(ctx) };
76        isl_rs_result
77    }
78
79    /// Wraps `isl_ctx_abort`.
80    pub fn abort(&self) {
81        let ctx = self;
82        let ctx = ctx.ptr;
83        let isl_rs_result = unsafe { isl_ctx_abort(ctx) };
84        isl_rs_result
85    }
86
87    /// Wraps `isl_ctx_resume`.
88    pub fn resume(&self) {
89        let ctx = self;
90        let ctx = ctx.ptr;
91        let isl_rs_result = unsafe { isl_ctx_resume(ctx) };
92        isl_rs_result
93    }
94
95    /// Wraps `isl_ctx_aborted`.
96    pub fn aborted(&self) -> i32 {
97        let ctx = self;
98        let ctx = ctx.ptr;
99        let isl_rs_result = unsafe { isl_ctx_aborted(ctx) };
100        isl_rs_result
101    }
102
103    /// Wraps `isl_ctx_set_max_operations`.
104    pub fn set_max_operations(&self, max_operations: u64) {
105        let ctx = self;
106        let ctx = ctx.ptr;
107        let isl_rs_result = unsafe { isl_ctx_set_max_operations(ctx, max_operations) };
108        isl_rs_result
109    }
110
111    /// Wraps `isl_ctx_get_max_operations`.
112    pub fn get_max_operations(&self) -> u64 {
113        let ctx = self;
114        let ctx = ctx.ptr;
115        let isl_rs_result = unsafe { isl_ctx_get_max_operations(ctx) };
116        isl_rs_result
117    }
118
119    /// Wraps `isl_ctx_reset_operations`.
120    pub fn reset_operations(&self) {
121        let ctx = self;
122        let ctx = ctx.ptr;
123        let isl_rs_result = unsafe { isl_ctx_reset_operations(ctx) };
124        isl_rs_result
125    }
126
127    /// Wraps `isl_ctx_last_error_msg`.
128    pub fn last_error_msg(&self) -> &str {
129        let ctx = self;
130        let ctx = ctx.ptr;
131        let isl_rs_result = unsafe { isl_ctx_last_error_msg(ctx) };
132        let isl_rs_result = unsafe { CStr::from_ptr(isl_rs_result) };
133        let isl_rs_result = isl_rs_result.to_str().unwrap();
134        isl_rs_result
135    }
136
137    /// Wraps `isl_ctx_last_error_file`.
138    pub fn last_error_file(&self) -> &str {
139        let ctx = self;
140        let ctx = ctx.ptr;
141        let isl_rs_result = unsafe { isl_ctx_last_error_file(ctx) };
142        let isl_rs_result = unsafe { CStr::from_ptr(isl_rs_result) };
143        let isl_rs_result = isl_rs_result.to_str().unwrap();
144        isl_rs_result
145    }
146
147    /// Wraps `isl_ctx_last_error_line`.
148    pub fn last_error_line(&self) -> i32 {
149        let ctx = self;
150        let ctx = ctx.ptr;
151        let isl_rs_result = unsafe { isl_ctx_last_error_line(ctx) };
152        isl_rs_result
153    }
154
155    /// Wraps `isl_ctx_reset_error`.
156    pub fn reset_error(&self) {
157        let ctx = self;
158        let ctx = ctx.ptr;
159        let isl_rs_result = unsafe { isl_ctx_reset_error(ctx) };
160        isl_rs_result
161    }
162
163    /// Does not call isl_xxx_free() on being dropped. (For internal use only.)
164    pub fn do_not_free_on_drop(&mut self) {
165        self.should_free_on_drop = false;
166    }
167}
168
169impl Drop for Context {
170    fn drop(&mut self) {
171        if self.should_free_on_drop {
172            unsafe {
173                isl_ctx_free(self.ptr);
174            }
175        }
176    }
177}