isl_rs/bindings/
ctx.rs

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