1pub static mut VERSION: i32 = 0;
2
3#[no_mangle]
4extern "C" fn isBadVersion(version: i32) -> bool {
5 unsafe { version >= VERSION }
6}
7
8#[repr(C)]
9pub struct BinaryMatrix {
10 get: fn(&BinaryMatrix, i32, i32) -> i32,
11 dimensions: fn(&BinaryMatrix) -> *const i32,
12 data: Vec<Vec<i32>>,
13}
14
15impl BinaryMatrix {
16 pub fn new(data: Vec<Vec<i32>>) -> Self {
17 fn dimensions(matrix: &BinaryMatrix) -> *const i32 {
18 [matrix.data.len() as i32, matrix.data[0].len() as i32].as_ptr()
19 }
20 fn get(matrix: &BinaryMatrix, i: i32, j: i32) -> i32 {
21 matrix.data[i as usize][j as usize]
22 }
23
24 BinaryMatrix {
25 data,
26 dimensions,
27 get,
28 }
29 }
30}
31
32extern "C" {
33 pub fn firstBadVersion(version: i32) -> i32;
34
35 #[allow(improper_ctypes)]
36 pub fn leftMostColumnWithOne(matrix: &BinaryMatrix) -> i32;
37}