Skip to content

Commit 2f1e1da

Browse files
committed
libc: remove uses of enum as per #4419
1 parent 5d2c5d4 commit 2f1e1da

File tree

8 files changed

+219
-285
lines changed

8 files changed

+219
-285
lines changed

src/macros.rs

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -223,10 +223,24 @@ macro_rules! e {
223223
///
224224
/// See <https://github.com/rust-lang/libc/issues/4419> for more.
225225
macro_rules! c_enum {
226-
(
226+
($(
227+
$(#[repr($repr:ty)])?
228+
enum $ty_name:ident {
229+
$($variant:ident $(= $value:expr)?,)+
230+
}
231+
)+) => {
232+
$(c_enum!(@expand;
233+
$(#[repr($repr)])?
234+
enum $ty_name {
235+
$($variant $(= $value)?,)+
236+
}
237+
);)+
238+
};
239+
240+
(@expand;
227241
$(#[repr($repr:ty)])?
228242
enum $ty_name:ident {
229-
$($variant:ident $(= $value:literal)?,)+
243+
$($variant:ident $(= $value:expr)?,)+
230244
}
231245
) => {
232246
pub type $ty_name = c_enum!(@ty $($repr)?);
@@ -237,7 +251,7 @@ macro_rules! c_enum {
237251
(@one; $_ty_name:ident; $_idx:expr;) => {};
238252
(
239253
@one; $ty_name:ident; $default_val:expr;
240-
$variant:ident $(= $value:literal)?,
254+
$variant:ident $(= $value:expr)?,
241255
$($tail:tt)*
242256
) => {
243257
pub const $variant: $ty_name = {

src/unix/aix/mod.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,17 +58,18 @@ pub type pthread_barrierattr_t = *mut c_void;
5858
pub type posix_spawn_file_actions_t = *mut c_char;
5959
pub type iconv_t = *mut c_void;
6060

61-
e! {
61+
c_enum! {
6262
#[repr(u32)]
63-
pub enum uio_rw {
63+
enum uio_rw {
6464
UIO_READ = 0,
6565
UIO_WRITE,
6666
UIO_READ_NO_MOVE,
6767
UIO_WRITE_NO_MOVE,
6868
UIO_PWRITE,
6969
}
70+
7071
#[repr(u32)]
71-
pub enum ACTION {
72+
enum ACTION {
7273
FIND = 0,
7374
ENTER,
7475
}

src/unix/bsd/apple/mod.rs

Lines changed: 46 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -184,71 +184,52 @@ impl Clone for timezone {
184184
}
185185
}
186186

187-
#[cfg_attr(feature = "extra_traits", derive(Debug))]
188-
#[repr(u32)]
189-
pub enum qos_class_t {
190-
QOS_CLASS_USER_INTERACTIVE = 0x21,
191-
QOS_CLASS_USER_INITIATED = 0x19,
192-
QOS_CLASS_DEFAULT = 0x15,
193-
QOS_CLASS_UTILITY = 0x11,
194-
QOS_CLASS_BACKGROUND = 0x09,
195-
QOS_CLASS_UNSPECIFIED = 0x00,
196-
}
197-
impl Copy for qos_class_t {}
198-
impl Clone for qos_class_t {
199-
fn clone(&self) -> qos_class_t {
200-
*self
201-
}
202-
}
203-
204-
#[cfg_attr(feature = "extra_traits", derive(Debug))]
205-
#[repr(u32)]
206-
pub enum sysdir_search_path_directory_t {
207-
SYSDIR_DIRECTORY_APPLICATION = 1,
208-
SYSDIR_DIRECTORY_DEMO_APPLICATION = 2,
209-
SYSDIR_DIRECTORY_DEVELOPER_APPLICATION = 3,
210-
SYSDIR_DIRECTORY_ADMIN_APPLICATION = 4,
211-
SYSDIR_DIRECTORY_LIBRARY = 5,
212-
SYSDIR_DIRECTORY_DEVELOPER = 6,
213-
SYSDIR_DIRECTORY_USER = 7,
214-
SYSDIR_DIRECTORY_DOCUMENTATION = 8,
215-
SYSDIR_DIRECTORY_DOCUMENT = 9,
216-
SYSDIR_DIRECTORY_CORESERVICE = 10,
217-
SYSDIR_DIRECTORY_AUTOSAVED_INFORMATION = 11,
218-
SYSDIR_DIRECTORY_DESKTOP = 12,
219-
SYSDIR_DIRECTORY_CACHES = 13,
220-
SYSDIR_DIRECTORY_APPLICATION_SUPPORT = 14,
221-
SYSDIR_DIRECTORY_DOWNLOADS = 15,
222-
SYSDIR_DIRECTORY_INPUT_METHODS = 16,
223-
SYSDIR_DIRECTORY_MOVIES = 17,
224-
SYSDIR_DIRECTORY_MUSIC = 18,
225-
SYSDIR_DIRECTORY_PICTURES = 19,
226-
SYSDIR_DIRECTORY_PRINTER_DESCRIPTION = 20,
227-
SYSDIR_DIRECTORY_SHARED_PUBLIC = 21,
228-
SYSDIR_DIRECTORY_PREFERENCE_PANES = 22,
229-
SYSDIR_DIRECTORY_ALL_APPLICATIONS = 100,
230-
SYSDIR_DIRECTORY_ALL_LIBRARIES = 101,
231-
}
232-
impl Copy for sysdir_search_path_directory_t {}
233-
impl Clone for sysdir_search_path_directory_t {
234-
fn clone(&self) -> sysdir_search_path_directory_t {
235-
*self
236-
}
237-
}
238-
239-
#[cfg_attr(feature = "extra_traits", derive(Debug))]
240-
#[repr(u32)]
241-
pub enum sysdir_search_path_domain_mask_t {
242-
SYSDIR_DOMAIN_MASK_USER = (1 << 0),
243-
SYSDIR_DOMAIN_MASK_LOCAL = (1 << 1),
244-
SYSDIR_DOMAIN_MASK_NETWORK = (1 << 2),
245-
SYSDIR_DOMAIN_MASK_SYSTEM = (1 << 3),
246-
SYSDIR_DOMAIN_MASK_ALL = 0x0ffff,
247-
}
248-
impl Copy for sysdir_search_path_domain_mask_t {}
249-
impl Clone for sysdir_search_path_domain_mask_t {
250-
fn clone(&self) -> sysdir_search_path_domain_mask_t {
251-
*self
187+
c_enum! {
188+
#[repr(u32)]
189+
enum qos_class_t {
190+
QOS_CLASS_USER_INTERACTIVE = 0x21,
191+
QOS_CLASS_USER_INITIATED = 0x19,
192+
QOS_CLASS_DEFAULT = 0x15,
193+
QOS_CLASS_UTILITY = 0x11,
194+
QOS_CLASS_BACKGROUND = 0x09,
195+
QOS_CLASS_UNSPECIFIED = 0x00,
196+
}
197+
198+
#[repr(u32)]
199+
enum sysdir_search_path_directory_t {
200+
SYSDIR_DIRECTORY_APPLICATION = 1,
201+
SYSDIR_DIRECTORY_DEMO_APPLICATION = 2,
202+
SYSDIR_DIRECTORY_DEVELOPER_APPLICATION = 3,
203+
SYSDIR_DIRECTORY_ADMIN_APPLICATION = 4,
204+
SYSDIR_DIRECTORY_LIBRARY = 5,
205+
SYSDIR_DIRECTORY_DEVELOPER = 6,
206+
SYSDIR_DIRECTORY_USER = 7,
207+
SYSDIR_DIRECTORY_DOCUMENTATION = 8,
208+
SYSDIR_DIRECTORY_DOCUMENT = 9,
209+
SYSDIR_DIRECTORY_CORESERVICE = 10,
210+
SYSDIR_DIRECTORY_AUTOSAVED_INFORMATION = 11,
211+
SYSDIR_DIRECTORY_DESKTOP = 12,
212+
SYSDIR_DIRECTORY_CACHES = 13,
213+
SYSDIR_DIRECTORY_APPLICATION_SUPPORT = 14,
214+
SYSDIR_DIRECTORY_DOWNLOADS = 15,
215+
SYSDIR_DIRECTORY_INPUT_METHODS = 16,
216+
SYSDIR_DIRECTORY_MOVIES = 17,
217+
SYSDIR_DIRECTORY_MUSIC = 18,
218+
SYSDIR_DIRECTORY_PICTURES = 19,
219+
SYSDIR_DIRECTORY_PRINTER_DESCRIPTION = 20,
220+
SYSDIR_DIRECTORY_SHARED_PUBLIC = 21,
221+
SYSDIR_DIRECTORY_PREFERENCE_PANES = 22,
222+
SYSDIR_DIRECTORY_ALL_APPLICATIONS = 100,
223+
SYSDIR_DIRECTORY_ALL_LIBRARIES = 101,
224+
}
225+
226+
#[repr(u32)]
227+
enum sysdir_search_path_domain_mask_t {
228+
SYSDIR_DOMAIN_MASK_USER = 1 << 0,
229+
SYSDIR_DOMAIN_MASK_LOCAL = 1 << 1,
230+
SYSDIR_DOMAIN_MASK_NETWORK = 1 << 2,
231+
SYSDIR_DOMAIN_MASK_SYSTEM = 1 << 3,
232+
SYSDIR_DOMAIN_MASK_ALL = 0x0ffff,
252233
}
253234
}
254235

src/unix/bsd/freebsdlike/dragonfly/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,16 +54,16 @@ impl Clone for sem {
5454
}
5555
}
5656

57-
e! {
57+
c_enum! {
5858
#[repr(u32)]
59-
pub enum lwpstat {
59+
enum lwpstat {
6060
LSRUN = 1,
6161
LSSTOP = 2,
6262
LSSLEEP = 3,
6363
}
6464

6565
#[repr(u32)]
66-
pub enum procstat {
66+
enum procstat {
6767
SIDL = 1,
6868
SACTIVE = 2,
6969
SSTOP = 3,

0 commit comments

Comments
 (0)