Skip to content

Commit 2af0fff

Browse files
committed
Convert all kind enums from u32 to i32
It appears as if bindgen chooses i32 always for Windows, but varies for Mac and Linux. Relevant links: - https://users.rust-lang.org/t/bindgen-and-enum-types/34370 - rust-lang/rust-bindgen#1361 However, this behavior isn't in line with the C standard, which states: "The identifiers in an enumerator list are declared as constants that have type int and may appear wherever such are permitted." To remedy this for all platforms, enums are now default type i32.
1 parent 86e8651 commit 2af0fff

21 files changed

+313
-336
lines changed

src/base.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ impl Rs2Intrinsics {
131131
/// Distortion model and coefficients of the image
132132
pub fn distortion(&self) -> Rs2Distortion {
133133
Rs2Distortion {
134-
model: Rs2DistortionModel::from_i32(self.0.model).unwrap(),
134+
model: Rs2DistortionModel::from_i32(self.0.model as i32).unwrap(),
135135
coeffs: self.0.coeffs,
136136
}
137137
}

src/config.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ use crate::{
66
kind::{Rs2Exception, Rs2Format, Rs2StreamKind},
77
};
88
use anyhow::Result;
9-
use num_traits::ToPrimitive;
109
use realsense_sys as sys;
1110
use std::{convert::TryInto, ffi::CStr, path::Path, ptr::NonNull};
1211
use thiserror::Error;
@@ -121,11 +120,11 @@ impl Config {
121120
let mut err = std::ptr::null_mut::<sys::rs2_error>();
122121
sys::rs2_config_enable_stream(
123122
self.config_ptr.as_ptr(),
124-
stream.to_u32().unwrap().try_into().unwrap(),
123+
(stream as i32).try_into().unwrap(),
125124
index as i32,
126125
width as i32,
127126
height as i32,
128-
format.to_u32().unwrap().try_into().unwrap(),
127+
(format as i32).try_into().unwrap(),
129128
framerate as i32,
130129
&mut err,
131130
);
@@ -272,7 +271,7 @@ impl Config {
272271
let mut err = std::ptr::null_mut::<sys::rs2_error>();
273272
sys::rs2_config_disable_indexed_stream(
274273
self.config_ptr.as_ptr(),
275-
stream.to_u32().unwrap().try_into().unwrap(),
274+
(stream as i32).try_into().unwrap(),
276275
index as i32,
277276
&mut err,
278277
);
@@ -299,7 +298,7 @@ impl Config {
299298
let mut err = std::ptr::null_mut::<sys::rs2_error>();
300299
sys::rs2_config_disable_stream(
301300
self.config_ptr.as_ptr(),
302-
stream.to_u32().unwrap().try_into().unwrap(),
301+
(stream as i32).try_into().unwrap(),
303302
&mut err,
304303
);
305304
check_rs2_error!(err, ConfigurationError::CouldNotDisableStream)?;

src/device.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ use crate::{
1111
sensor::Sensor,
1212
};
1313
use anyhow::Result;
14-
use num_traits::ToPrimitive;
1514
use realsense_sys as sys;
1615
use std::{
1716
convert::{From, TryInto},
@@ -168,7 +167,7 @@ impl Device {
168167

169168
let val = sys::rs2_get_device_info(
170169
self.device_ptr.as_ptr(),
171-
camera_info.to_u32().unwrap().try_into().unwrap(),
170+
(camera_info as i32).try_into().unwrap(),
172171
&mut err,
173172
);
174173

@@ -190,7 +189,7 @@ impl Device {
190189
let mut err = std::ptr::null_mut::<sys::rs2_error>();
191190
let supports_info = sys::rs2_supports_device_info(
192191
self.device_ptr.as_ptr(),
193-
camera_info.to_u32().unwrap().try_into().unwrap(),
192+
(camera_info as i32).try_into().unwrap(),
194193
&mut err,
195194
);
196195

src/error.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ macro_rules! check_rs2_error {
143143
let err: *mut sys::rs2_error = $rs2_error;
144144
if err.as_ref().is_some() {
145145
let res = $result(
146-
Rs2Exception::from_u32(
146+
Rs2Exception::from_i32(
147147
sys::rs2_get_librealsense_exception_type(err)
148148
.try_into()
149149
.unwrap(),

src/frame/composite.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
99
use super::prelude::FrameCategory;
1010
use crate::kind::Rs2StreamKind;
11-
use num_traits::ToPrimitive;
1211
use realsense_sys as sys;
1312
use std::{
1413
convert::{TryFrom, TryInto},
@@ -89,7 +88,7 @@ impl CompositeFrame {
8988

9089
let is_extendable_to = sys::rs2_is_frame_extendable_to(
9190
nonnull_frame_ptr.as_ptr(),
92-
F::extension().to_u32().unwrap().try_into().unwrap(),
91+
(F::extension() as i32).try_into().unwrap(),
9392
&mut err,
9493
);
9594

src/frame/image.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use crate::{
2121
stream_profile::StreamProfile,
2222
};
2323
use anyhow::Result;
24-
use num_traits::{FromPrimitive, ToPrimitive};
24+
use num_traits::FromPrimitive;
2525
use realsense_sys as sys;
2626
use std::{
2727
convert::{TryFrom, TryInto},
@@ -235,10 +235,7 @@ impl<'a, K> TryFrom<NonNull<sys::rs2_frame>> for ImageFrame<'a, K> {
235235
stride: stride as usize,
236236
bits_per_pixel: bits_per_pixel as usize,
237237
timestamp,
238-
timestamp_domain: Rs2TimestampDomain::from_u32(
239-
timestamp_domain.try_into().unwrap(),
240-
)
241-
.unwrap(),
238+
timestamp_domain: Rs2TimestampDomain::from_i32(timestamp_domain as i32).unwrap(),
242239
frame_stream_profile: profile,
243240
data_size_in_bytes: size as usize,
244241
data: ptr.as_ref().unwrap(),
@@ -366,7 +363,7 @@ impl<'a, T> FrameEx<'a> for ImageFrame<'a, T> {
366363

367364
let val = sys::rs2_get_frame_metadata(
368365
self.frame_ptr.as_ptr(),
369-
metadata_kind.to_u32().unwrap().try_into().unwrap(),
366+
(metadata_kind as i32).try_into().unwrap(),
370367
&mut err,
371368
);
372369

@@ -385,7 +382,7 @@ impl<'a, T> FrameEx<'a> for ImageFrame<'a, T> {
385382

386383
let supports_metadata = sys::rs2_supports_frame_metadata(
387384
self.frame_ptr.as_ptr(),
388-
metadata_kind.to_u32().unwrap().try_into().unwrap(),
385+
(metadata_kind as i32).try_into().unwrap(),
389386
&mut err,
390387
);
391388

src/frame/motion.rs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ use crate::{
1414
};
1515
use anyhow::Result;
1616
use num_traits::FromPrimitive;
17-
use num_traits::ToPrimitive;
1817
use realsense_sys as sys;
1918
use std::{
2019
convert::{TryFrom, TryInto},
@@ -153,10 +152,7 @@ impl<'a, K> TryFrom<NonNull<sys::rs2_frame>> for MotionFrame<'a, K> {
153152
Ok(MotionFrame {
154153
frame_ptr,
155154
timestamp,
156-
timestamp_domain: Rs2TimestampDomain::from_u32(
157-
timestamp_domain.try_into().unwrap(),
158-
)
159-
.unwrap(),
155+
timestamp_domain: Rs2TimestampDomain::from_i32(timestamp_domain as i32).unwrap(),
160156
frame_stream_profile: profile,
161157
motion: [motion_raw[0], motion_raw[1], motion_raw[2]],
162158
should_drop: true,
@@ -198,7 +194,7 @@ impl<'a, K> FrameEx<'a> for MotionFrame<'a, K> {
198194

199195
let val = sys::rs2_get_frame_metadata(
200196
self.frame_ptr.as_ptr(),
201-
metadata_kind.to_u32().unwrap().try_into().unwrap(),
197+
(metadata_kind as i32).try_into().unwrap(),
202198
&mut err,
203199
);
204200
if err.as_ref().is_none() {
@@ -216,7 +212,7 @@ impl<'a, K> FrameEx<'a> for MotionFrame<'a, K> {
216212

217213
let supports_metadata = sys::rs2_supports_frame_metadata(
218214
self.frame_ptr.as_ptr(),
219-
metadata_kind.to_u32().unwrap().try_into().unwrap(),
215+
(metadata_kind as i32).try_into().unwrap(),
220216
&mut err,
221217
);
222218

src/frame/points.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use crate::{
1010
stream_profile::StreamProfile,
1111
};
1212
use anyhow::Result;
13-
use num_traits::{FromPrimitive, ToPrimitive};
13+
use num_traits::FromPrimitive;
1414
use realsense_sys as sys;
1515
use std::{
1616
convert::{TryFrom, TryInto},
@@ -91,7 +91,7 @@ impl<'a> FrameEx<'a> for PointsFrame<'a> {
9191

9292
let val = sys::rs2_get_frame_metadata(
9393
self.frame_ptr.as_ptr(),
94-
metadata_kind.to_u32().unwrap().try_into().unwrap(),
94+
(metadata_kind as i32).try_into().unwrap(),
9595
&mut err,
9696
);
9797

@@ -110,7 +110,7 @@ impl<'a> FrameEx<'a> for PointsFrame<'a> {
110110

111111
let supports_metadata = sys::rs2_supports_frame_metadata(
112112
self.frame_ptr.as_ptr(),
113-
metadata_kind.to_u32().unwrap().try_into().unwrap(),
113+
(metadata_kind as i32).try_into().unwrap(),
114114
&mut err,
115115
);
116116

@@ -195,10 +195,7 @@ impl<'a> std::convert::TryFrom<NonNull<sys::rs2_frame>> for PointsFrame<'a> {
195195
Ok(PointsFrame {
196196
frame_ptr,
197197
timestamp,
198-
timestamp_domain: Rs2TimestampDomain::from_u32(
199-
timestamp_domain.try_into().unwrap(),
200-
)
201-
.unwrap(),
198+
timestamp_domain: Rs2TimestampDomain::from_i32(timestamp_domain as i32).unwrap(),
202199
frame_stream_profile: profile,
203200
num_points: num_points as usize,
204201
vertices_data_ptr: NonNull::new(vertices_ptr).unwrap(),

src/frame/pose.rs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ use crate::{
1313
};
1414
use anyhow::Result;
1515
use num_traits::FromPrimitive;
16-
use num_traits::ToPrimitive;
1716
use realsense_sys as sys;
1817
use std::{
1918
convert::{TryFrom, TryInto},
@@ -182,10 +181,7 @@ impl<'a> TryFrom<NonNull<sys::rs2_frame>> for PoseFrame<'a> {
182181
Ok(PoseFrame {
183182
frame_ptr,
184183
timestamp,
185-
timestamp_domain: Rs2TimestampDomain::from_u32(
186-
timestamp_domain.try_into().unwrap(),
187-
)
188-
.unwrap(),
184+
timestamp_domain: Rs2TimestampDomain::from_i32(timestamp_domain as i32).unwrap(),
189185
frame_stream_profile: profile,
190186
data: pose_data.assume_init(),
191187
should_drop: true,
@@ -227,7 +223,7 @@ impl<'a> FrameEx<'a> for PoseFrame<'a> {
227223

228224
let val = sys::rs2_get_frame_metadata(
229225
self.frame_ptr.as_ptr(),
230-
metadata_kind.to_u32().unwrap().try_into().unwrap(),
226+
(metadata_kind as i32).try_into().unwrap(),
231227
&mut err,
232228
);
233229

@@ -246,7 +242,7 @@ impl<'a> FrameEx<'a> for PoseFrame<'a> {
246242

247243
let supports_metadata = sys::rs2_supports_frame_metadata(
248244
self.frame_ptr.as_ptr(),
249-
metadata_kind.to_u32().unwrap().try_into().unwrap(),
245+
(metadata_kind as i32).try_into().unwrap(),
250246
&mut err,
251247
);
252248

src/kind.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,10 @@
4545
//! use realsense_sys as sys;
4646
//! use realsense_rust::kind::Rs2CameraInfo;
4747
//!
48-
//! for i in 0..sys::rs2_camera_info_RS2_CAMERA_INFO_COUNT {
48+
//! for i in 0..sys::rs2_camera_info_RS2_CAMERA_INFO_COUNT as i32 {
4949
//! println!(
50-
//! "The enum variant {:?} corresponds to the u32 value {}",
51-
//! Rs2CameraInfo::from_u32(i as u32).unwrap(),
50+
//! "The enum variant {:?} corresponds to the i32 value {}",
51+
//! Rs2CameraInfo::from_i32(i).unwrap(),
5252
//! i,
5353
//! );
5454
//! }

0 commit comments

Comments
 (0)