Update for Rustc

This commit is contained in:
Pierre Krieger 2015-01-08 20:34:27 +01:00
parent 420a0f0fd4
commit 23e1e0639c
5 changed files with 87 additions and 81 deletions

View File

@ -1,3 +1,8 @@
#![allow(missing_copy_implementations)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(non_upper_case_globals)]
extern crate libc; extern crate libc;
/* automatically generated by rust-bindgen */ /* automatically generated by rust-bindgen */
@ -31,7 +36,7 @@ pub type __off64_t = ::libc::c_long;
pub type __pid_t = ::libc::c_int; pub type __pid_t = ::libc::c_int;
#[repr(C)] #[repr(C)]
pub struct __fsid_t { pub struct __fsid_t {
pub __val: [::libc::c_int, ..2u], pub __val: [::libc::c_int; 2u],
} }
pub type __clock_t = ::libc::c_long; pub type __clock_t = ::libc::c_long;
pub type __rlim_t = ::libc::c_ulong; pub type __rlim_t = ::libc::c_ulong;
@ -376,13 +381,13 @@ pub type FILE = Struct__IO_FILE;
pub type __FILE = Struct__IO_FILE; pub type __FILE = Struct__IO_FILE;
#[repr(C)] #[repr(C)]
pub struct Union_Unnamed4 { pub struct Union_Unnamed4 {
pub data: [u32, ..1u], pub data: [u32; 1u],
} }
impl Union_Unnamed4 { impl Union_Unnamed4 {
pub fn __wch(&mut self) -> *mut ::libc::c_uint { pub fn __wch(&mut self) -> *mut ::libc::c_uint {
unsafe { ::std::mem::transmute(self) } unsafe { ::std::mem::transmute(self) }
} }
pub fn __wchb(&mut self) -> *mut [::libc::c_char, ..4u] { pub fn __wchb(&mut self) -> *mut [::libc::c_char; 4u] {
unsafe { ::std::mem::transmute(self) } unsafe { ::std::mem::transmute(self) }
} }
} }
@ -436,7 +441,7 @@ pub struct Struct__IO_FILE {
pub _old_offset: __off_t, pub _old_offset: __off_t,
pub _cur_column: ::libc::c_ushort, pub _cur_column: ::libc::c_ushort,
pub _vtable_offset: ::libc::c_char, pub _vtable_offset: ::libc::c_char,
pub _shortbuf: [::libc::c_char, ..1u], pub _shortbuf: [::libc::c_char; 1u],
pub _lock: *mut _IO_lock_t, pub _lock: *mut _IO_lock_t,
pub _offset: __off64_t, pub _offset: __off64_t,
pub __pad1: *mut ::libc::c_void, pub __pad1: *mut ::libc::c_void,
@ -445,7 +450,7 @@ pub struct Struct__IO_FILE {
pub __pad4: *mut ::libc::c_void, pub __pad4: *mut ::libc::c_void,
pub __pad5: size_t, pub __pad5: size_t,
pub _mode: ::libc::c_int, pub _mode: ::libc::c_int,
pub _unused2: [::libc::c_char, ..20u], pub _unused2: [::libc::c_char; 20u],
} }
pub type _IO_FILE = Struct__IO_FILE; pub type _IO_FILE = Struct__IO_FILE;
pub enum Struct__IO_FILE_plus { } pub enum Struct__IO_FILE_plus { }
@ -458,7 +463,7 @@ pub type fpos_t = _G_fpos_t;
pub type wchar_t = ::libc::c_int; pub type wchar_t = ::libc::c_int;
#[repr(C)] #[repr(C)]
pub struct Union_wait { pub struct Union_wait {
pub data: [u32, ..1u], pub data: [u32; 1u],
} }
impl Union_wait { impl Union_wait {
pub fn w_status(&mut self) -> *mut ::libc::c_int { pub fn w_status(&mut self) -> *mut ::libc::c_int {
@ -486,7 +491,7 @@ pub struct Struct_Unnamed6 {
} }
#[repr(C)] #[repr(C)]
pub struct __WAIT_STATUS { pub struct __WAIT_STATUS {
pub data: [u64, ..1u], pub data: [u64; 1u],
} }
impl __WAIT_STATUS { impl __WAIT_STATUS {
pub fn __uptr(&mut self) -> *mut *mut Union_wait { pub fn __uptr(&mut self) -> *mut *mut Union_wait {
@ -546,7 +551,7 @@ pub type register_t = ::libc::c_long;
pub type __sig_atomic_t = ::libc::c_int; pub type __sig_atomic_t = ::libc::c_int;
#[repr(C)] #[repr(C)]
pub struct __sigset_t { pub struct __sigset_t {
pub __val: [::libc::c_ulong, ..16u], pub __val: [::libc::c_ulong; 16u],
} }
pub type sigset_t = __sigset_t; pub type sigset_t = __sigset_t;
#[repr(C)] #[repr(C)]
@ -563,7 +568,7 @@ pub type suseconds_t = __suseconds_t;
pub type __fd_mask = ::libc::c_long; pub type __fd_mask = ::libc::c_long;
#[repr(C)] #[repr(C)]
pub struct fd_set { pub struct fd_set {
pub __fds_bits: [__fd_mask, ..16u], pub __fds_bits: [__fd_mask; 16u],
} }
pub type fd_mask = __fd_mask; pub type fd_mask = __fd_mask;
pub type blksize_t = __blksize_t; pub type blksize_t = __blksize_t;
@ -573,10 +578,10 @@ pub type fsfilcnt_t = __fsfilcnt_t;
pub type pthread_t = ::libc::c_ulong; pub type pthread_t = ::libc::c_ulong;
#[repr(C)] #[repr(C)]
pub struct Union_pthread_attr_t { pub struct Union_pthread_attr_t {
pub data: [u64, ..7u], pub data: [u64; 7u],
} }
impl Union_pthread_attr_t { impl Union_pthread_attr_t {
pub fn __size(&mut self) -> *mut [::libc::c_char, ..56u] { pub fn __size(&mut self) -> *mut [::libc::c_char; 56u] {
unsafe { ::std::mem::transmute(self) } unsafe { ::std::mem::transmute(self) }
} }
pub fn __align(&mut self) -> *mut ::libc::c_long { pub fn __align(&mut self) -> *mut ::libc::c_long {
@ -603,13 +608,13 @@ pub struct Struct___pthread_mutex_s {
} }
#[repr(C)] #[repr(C)]
pub struct pthread_mutex_t { pub struct pthread_mutex_t {
pub data: [u64, ..5u], pub data: [u64; 5u],
} }
impl pthread_mutex_t { impl pthread_mutex_t {
pub fn __data(&mut self) -> *mut Struct___pthread_mutex_s { pub fn __data(&mut self) -> *mut Struct___pthread_mutex_s {
unsafe { ::std::mem::transmute(self) } unsafe { ::std::mem::transmute(self) }
} }
pub fn __size(&mut self) -> *mut [::libc::c_char, ..40u] { pub fn __size(&mut self) -> *mut [::libc::c_char; 40u] {
unsafe { ::std::mem::transmute(self) } unsafe { ::std::mem::transmute(self) }
} }
pub fn __align(&mut self) -> *mut ::libc::c_long { pub fn __align(&mut self) -> *mut ::libc::c_long {
@ -618,10 +623,10 @@ impl pthread_mutex_t {
} }
#[repr(C)] #[repr(C)]
pub struct pthread_mutexattr_t { pub struct pthread_mutexattr_t {
pub data: [u32, ..1u], pub data: [u32; 1u],
} }
impl pthread_mutexattr_t { impl pthread_mutexattr_t {
pub fn __size(&mut self) -> *mut [::libc::c_char, ..4u] { pub fn __size(&mut self) -> *mut [::libc::c_char; 4u] {
unsafe { ::std::mem::transmute(self) } unsafe { ::std::mem::transmute(self) }
} }
pub fn __align(&mut self) -> *mut ::libc::c_int { pub fn __align(&mut self) -> *mut ::libc::c_int {
@ -641,13 +646,13 @@ pub struct Struct_Unnamed7 {
} }
#[repr(C)] #[repr(C)]
pub struct pthread_cond_t { pub struct pthread_cond_t {
pub data: [u64, ..6u], pub data: [u64; 6u],
} }
impl pthread_cond_t { impl pthread_cond_t {
pub fn __data(&mut self) -> *mut Struct_Unnamed7 { pub fn __data(&mut self) -> *mut Struct_Unnamed7 {
unsafe { ::std::mem::transmute(self) } unsafe { ::std::mem::transmute(self) }
} }
pub fn __size(&mut self) -> *mut [::libc::c_char, ..48u] { pub fn __size(&mut self) -> *mut [::libc::c_char; 48u] {
unsafe { ::std::mem::transmute(self) } unsafe { ::std::mem::transmute(self) }
} }
pub fn __align(&mut self) -> *mut ::libc::c_longlong { pub fn __align(&mut self) -> *mut ::libc::c_longlong {
@ -656,10 +661,10 @@ impl pthread_cond_t {
} }
#[repr(C)] #[repr(C)]
pub struct pthread_condattr_t { pub struct pthread_condattr_t {
pub data: [u32, ..1u], pub data: [u32; 1u],
} }
impl pthread_condattr_t { impl pthread_condattr_t {
pub fn __size(&mut self) -> *mut [::libc::c_char, ..4u] { pub fn __size(&mut self) -> *mut [::libc::c_char; 4u] {
unsafe { ::std::mem::transmute(self) } unsafe { ::std::mem::transmute(self) }
} }
pub fn __align(&mut self) -> *mut ::libc::c_int { pub fn __align(&mut self) -> *mut ::libc::c_int {
@ -684,13 +689,13 @@ pub struct Struct_Unnamed8 {
} }
#[repr(C)] #[repr(C)]
pub struct pthread_rwlock_t { pub struct pthread_rwlock_t {
pub data: [u64, ..7u], pub data: [u64; 7u],
} }
impl pthread_rwlock_t { impl pthread_rwlock_t {
pub fn __data(&mut self) -> *mut Struct_Unnamed8 { pub fn __data(&mut self) -> *mut Struct_Unnamed8 {
unsafe { ::std::mem::transmute(self) } unsafe { ::std::mem::transmute(self) }
} }
pub fn __size(&mut self) -> *mut [::libc::c_char, ..56u] { pub fn __size(&mut self) -> *mut [::libc::c_char; 56u] {
unsafe { ::std::mem::transmute(self) } unsafe { ::std::mem::transmute(self) }
} }
pub fn __align(&mut self) -> *mut ::libc::c_long { pub fn __align(&mut self) -> *mut ::libc::c_long {
@ -699,10 +704,10 @@ impl pthread_rwlock_t {
} }
#[repr(C)] #[repr(C)]
pub struct pthread_rwlockattr_t { pub struct pthread_rwlockattr_t {
pub data: [u64, ..1u], pub data: [u64; 1u],
} }
impl pthread_rwlockattr_t { impl pthread_rwlockattr_t {
pub fn __size(&mut self) -> *mut [::libc::c_char, ..8u] { pub fn __size(&mut self) -> *mut [::libc::c_char; 8u] {
unsafe { ::std::mem::transmute(self) } unsafe { ::std::mem::transmute(self) }
} }
pub fn __align(&mut self) -> *mut ::libc::c_long { pub fn __align(&mut self) -> *mut ::libc::c_long {
@ -712,10 +717,10 @@ impl pthread_rwlockattr_t {
pub type pthread_spinlock_t = ::libc::c_int; pub type pthread_spinlock_t = ::libc::c_int;
#[repr(C)] #[repr(C)]
pub struct pthread_barrier_t { pub struct pthread_barrier_t {
pub data: [u64, ..4u], pub data: [u64; 4u],
} }
impl pthread_barrier_t { impl pthread_barrier_t {
pub fn __size(&mut self) -> *mut [::libc::c_char, ..32u] { pub fn __size(&mut self) -> *mut [::libc::c_char; 32u] {
unsafe { ::std::mem::transmute(self) } unsafe { ::std::mem::transmute(self) }
} }
pub fn __align(&mut self) -> *mut ::libc::c_long { pub fn __align(&mut self) -> *mut ::libc::c_long {
@ -724,10 +729,10 @@ impl pthread_barrier_t {
} }
#[repr(C)] #[repr(C)]
pub struct pthread_barrierattr_t { pub struct pthread_barrierattr_t {
pub data: [u32, ..1u], pub data: [u32; 1u],
} }
impl pthread_barrierattr_t { impl pthread_barrierattr_t {
pub fn __size(&mut self) -> *mut [::libc::c_char, ..4u] { pub fn __size(&mut self) -> *mut [::libc::c_char; 4u] {
unsafe { ::std::mem::transmute(self) } unsafe { ::std::mem::transmute(self) }
} }
pub fn __align(&mut self) -> *mut ::libc::c_int { pub fn __align(&mut self) -> *mut ::libc::c_int {
@ -746,8 +751,8 @@ pub struct Struct_random_data {
} }
#[repr(C)] #[repr(C)]
pub struct Struct_drand48_data { pub struct Struct_drand48_data {
pub __x: [::libc::c_ushort, ..3u], pub __x: [::libc::c_ushort; 3u],
pub __old_x: [::libc::c_ushort, ..3u], pub __old_x: [::libc::c_ushort; 3u],
pub __c: ::libc::c_ushort, pub __c: ::libc::c_ushort,
pub __init: ::libc::c_ushort, pub __init: ::libc::c_ushort,
pub __a: ::libc::c_ulonglong, pub __a: ::libc::c_ulonglong,
@ -758,11 +763,11 @@ pub type __compar_fn_t =
arg2: *const ::libc::c_void) -> ::libc::c_int>; arg2: *const ::libc::c_void) -> ::libc::c_int>;
#[repr(C)] #[repr(C)]
pub struct Struct___locale_struct { pub struct Struct___locale_struct {
pub __locales: [*mut Struct___locale_data, ..13u], pub __locales: [*mut Struct___locale_data; 13u],
pub __ctype_b: *const ::libc::c_ushort, pub __ctype_b: *const ::libc::c_ushort,
pub __ctype_tolower: *const ::libc::c_int, pub __ctype_tolower: *const ::libc::c_int,
pub __ctype_toupper: *const ::libc::c_int, pub __ctype_toupper: *const ::libc::c_int,
pub __names: [*const ::libc::c_char, ..13u], pub __names: [*const ::libc::c_char; 13u],
} }
pub enum Struct___locale_data { } pub enum Struct___locale_data { }
pub type __locale_t = *mut Struct___locale_struct; pub type __locale_t = *mut Struct___locale_struct;
@ -791,7 +796,7 @@ pub struct Struct_stat {
pub st_atim: Struct_timespec, pub st_atim: Struct_timespec,
pub st_mtim: Struct_timespec, pub st_mtim: Struct_timespec,
pub st_ctim: Struct_timespec, pub st_ctim: Struct_timespec,
pub __glibc_reserved: [__syscall_slong_t, ..3u], pub __glibc_reserved: [__syscall_slong_t; 3u],
} }
pub type nfds_t = ::libc::c_ulong; pub type nfds_t = ::libc::c_ulong;
#[repr(C)] #[repr(C)]
@ -1055,16 +1060,16 @@ pub struct Struct__snd_pcm_channel_area {
pub type snd_pcm_channel_area_t = Struct__snd_pcm_channel_area; pub type snd_pcm_channel_area_t = Struct__snd_pcm_channel_area;
#[repr(C)] #[repr(C)]
pub struct Union__snd_pcm_sync_id { pub struct Union__snd_pcm_sync_id {
pub data: [u32, ..4u], pub data: [u32; 4u],
} }
impl Union__snd_pcm_sync_id { impl Union__snd_pcm_sync_id {
pub fn id(&mut self) -> *mut [::libc::c_uchar, ..16u] { pub fn id(&mut self) -> *mut [::libc::c_uchar; 16u] {
unsafe { ::std::mem::transmute(self) } unsafe { ::std::mem::transmute(self) }
} }
pub fn id16(&mut self) -> *mut [::libc::c_ushort, ..8u] { pub fn id16(&mut self) -> *mut [::libc::c_ushort; 8u] {
unsafe { ::std::mem::transmute(self) } unsafe { ::std::mem::transmute(self) }
} }
pub fn id32(&mut self) -> *mut [::libc::c_uint, ..4u] { pub fn id32(&mut self) -> *mut [::libc::c_uint; 4u] {
unsafe { ::std::mem::transmute(self) } unsafe { ::std::mem::transmute(self) }
} }
} }
@ -1119,7 +1124,7 @@ pub static SND_CHMAP_LAST: ::libc::c_uint = 36;
#[repr(C)] #[repr(C)]
pub struct Struct_snd_pcm_chmap { pub struct Struct_snd_pcm_chmap {
pub channels: ::libc::c_uint, pub channels: ::libc::c_uint,
pub pos: [::libc::c_uint, ..0u], pub pos: [::libc::c_uint; 0u],
} }
pub type snd_pcm_chmap_t = Struct_snd_pcm_chmap; pub type snd_pcm_chmap_t = Struct_snd_pcm_chmap;
#[repr(C)] #[repr(C)]
@ -1292,10 +1297,10 @@ pub enum Struct__snd_hwdep { }
pub type snd_hwdep_t = Struct__snd_hwdep; pub type snd_hwdep_t = Struct__snd_hwdep;
#[repr(C)] #[repr(C)]
pub struct Struct_snd_aes_iec958 { pub struct Struct_snd_aes_iec958 {
pub status: [::libc::c_uchar, ..24u], pub status: [::libc::c_uchar; 24u],
pub subcode: [::libc::c_uchar, ..147u], pub subcode: [::libc::c_uchar; 147u],
pub pad: ::libc::c_uchar, pub pad: ::libc::c_uchar,
pub dig_subframe: [::libc::c_uchar, ..4u], pub dig_subframe: [::libc::c_uchar; 4u],
} }
pub type snd_aes_iec958_t = Struct_snd_aes_iec958; pub type snd_aes_iec958_t = Struct_snd_aes_iec958;
pub enum Struct__snd_ctl_card_info { } pub enum Struct__snd_ctl_card_info { }
@ -1499,7 +1504,7 @@ pub type snd_seq_real_time_t = Struct_snd_seq_real_time;
pub type snd_seq_tick_time_t = ::libc::c_uint; pub type snd_seq_tick_time_t = ::libc::c_uint;
#[repr(C)] #[repr(C)]
pub struct Union_snd_seq_timestamp { pub struct Union_snd_seq_timestamp {
pub data: [u32, ..2u], pub data: [u32; 2u],
} }
impl Union_snd_seq_timestamp { impl Union_snd_seq_timestamp {
pub fn tick(&mut self) -> *mut snd_seq_tick_time_t { pub fn tick(&mut self) -> *mut snd_seq_tick_time_t {
@ -1522,19 +1527,19 @@ pub type snd_seq_ev_note_t = Struct_snd_seq_ev_note;
#[repr(C)] #[repr(C)]
pub struct Struct_snd_seq_ev_ctrl { pub struct Struct_snd_seq_ev_ctrl {
pub channel: ::libc::c_uchar, pub channel: ::libc::c_uchar,
pub unused: [::libc::c_uchar, ..3u], pub unused: [::libc::c_uchar; 3u],
pub param: ::libc::c_uint, pub param: ::libc::c_uint,
pub value: ::libc::c_int, pub value: ::libc::c_int,
} }
pub type snd_seq_ev_ctrl_t = Struct_snd_seq_ev_ctrl; pub type snd_seq_ev_ctrl_t = Struct_snd_seq_ev_ctrl;
#[repr(C)] #[repr(C)]
pub struct Struct_snd_seq_ev_raw8 { pub struct Struct_snd_seq_ev_raw8 {
pub d: [::libc::c_uchar, ..12u], pub d: [::libc::c_uchar; 12u],
} }
pub type snd_seq_ev_raw8_t = Struct_snd_seq_ev_raw8; pub type snd_seq_ev_raw8_t = Struct_snd_seq_ev_raw8;
#[repr(C)] #[repr(C)]
pub struct Struct_snd_seq_ev_raw32 { pub struct Struct_snd_seq_ev_raw32 {
pub d: [::libc::c_uint, ..3u], pub d: [::libc::c_uint; 3u],
} }
pub type snd_seq_ev_raw32_t = Struct_snd_seq_ev_raw32; pub type snd_seq_ev_raw32_t = Struct_snd_seq_ev_raw32;
#[repr(C)] #[repr(C)]
@ -1558,12 +1563,12 @@ pub type snd_seq_queue_skew_t = Struct_snd_seq_queue_skew;
#[repr(C)] #[repr(C)]
pub struct Struct_snd_seq_ev_queue_control { pub struct Struct_snd_seq_ev_queue_control {
pub queue: ::libc::c_uchar, pub queue: ::libc::c_uchar,
pub unused: [::libc::c_uchar, ..3u], pub unused: [::libc::c_uchar; 3u],
pub param: Union_Unnamed9, pub param: Union_Unnamed9,
} }
#[repr(C)] #[repr(C)]
pub struct Union_Unnamed9 { pub struct Union_Unnamed9 {
pub data: [u32, ..2u], pub data: [u32; 2u],
} }
impl Union_Unnamed9 { impl Union_Unnamed9 {
pub fn value(&mut self) -> *mut ::libc::c_int { pub fn value(&mut self) -> *mut ::libc::c_int {
@ -1578,10 +1583,10 @@ impl Union_Unnamed9 {
pub fn skew(&mut self) -> *mut snd_seq_queue_skew_t { pub fn skew(&mut self) -> *mut snd_seq_queue_skew_t {
unsafe { ::std::mem::transmute(self) } unsafe { ::std::mem::transmute(self) }
} }
pub fn d32(&mut self) -> *mut [::libc::c_uint, ..2u] { pub fn d32(&mut self) -> *mut [::libc::c_uint; 2u] {
unsafe { ::std::mem::transmute(self) } unsafe { ::std::mem::transmute(self) }
} }
pub fn d8(&mut self) -> *mut [::libc::c_uchar, ..8u] { pub fn d8(&mut self) -> *mut [::libc::c_uchar; 8u] {
unsafe { ::std::mem::transmute(self) } unsafe { ::std::mem::transmute(self) }
} }
} }
@ -1599,7 +1604,7 @@ pub struct Struct_snd_seq_event {
} }
#[repr(C)] #[repr(C)]
pub struct Union_Unnamed10 { pub struct Union_Unnamed10 {
pub data: [u32, ..3u], pub data: [u32; 3u],
} }
impl Union_Unnamed10 { impl Union_Unnamed10 {
pub fn note(&mut self) -> *mut snd_seq_ev_note_t { pub fn note(&mut self) -> *mut snd_seq_ev_note_t {
@ -1715,10 +1720,10 @@ extern "C" {
pub static mut stderr: *mut Struct__IO_FILE; pub static mut stderr: *mut Struct__IO_FILE;
pub static mut sys_nerr: ::libc::c_int; pub static mut sys_nerr: ::libc::c_int;
pub static mut sys_errlist: *const *const ::libc::c_char; pub static mut sys_errlist: *const *const ::libc::c_char;
pub static mut __tzname: [*mut ::libc::c_char, ..2u]; pub static mut __tzname: [*mut ::libc::c_char; 2u];
pub static mut __daylight: ::libc::c_int; pub static mut __daylight: ::libc::c_int;
pub static mut __timezone: ::libc::c_long; pub static mut __timezone: ::libc::c_long;
pub static mut tzname: [*mut ::libc::c_char, ..2u]; pub static mut tzname: [*mut ::libc::c_char; 2u];
pub static mut daylight: ::libc::c_int; pub static mut daylight: ::libc::c_int;
pub static mut timezone: ::libc::c_long; pub static mut timezone: ::libc::c_long;
pub static mut snd_dlsym_start: *mut Struct_snd_dlsym_link; pub static mut snd_dlsym_start: *mut Struct_snd_dlsym_link;
@ -1741,7 +1746,7 @@ extern "C" {
__nbytes: size_t, __offset: __off_t) -> ssize_t; __nbytes: size_t, __offset: __off_t) -> ssize_t;
pub fn pwrite(__fd: ::libc::c_int, __buf: *const ::libc::c_void, pub fn pwrite(__fd: ::libc::c_int, __buf: *const ::libc::c_void,
__n: size_t, __offset: __off_t) -> ssize_t; __n: size_t, __offset: __off_t) -> ssize_t;
pub fn pipe(__pipedes: [::libc::c_int, ..2u]) -> ::libc::c_int; pub fn pipe(__pipedes: [::libc::c_int; 2u]) -> ::libc::c_int;
pub fn alarm(__seconds: ::libc::c_uint) -> ::libc::c_uint; pub fn alarm(__seconds: ::libc::c_uint) -> ::libc::c_uint;
pub fn sleep(__seconds: ::libc::c_uint) -> ::libc::c_uint; pub fn sleep(__seconds: ::libc::c_uint) -> ::libc::c_uint;
pub fn ualarm(__value: __useconds_t, __interval: __useconds_t) -> pub fn ualarm(__value: __useconds_t, __interval: __useconds_t) ->
@ -2091,35 +2096,35 @@ extern "C" {
pub fn srand(__seed: ::libc::c_uint); pub fn srand(__seed: ::libc::c_uint);
pub fn rand_r(__seed: *mut ::libc::c_uint) -> ::libc::c_int; pub fn rand_r(__seed: *mut ::libc::c_uint) -> ::libc::c_int;
pub fn drand48() -> ::libc::c_double; pub fn drand48() -> ::libc::c_double;
pub fn erand48(__xsubi: [::libc::c_ushort, ..3u]) -> ::libc::c_double; pub fn erand48(__xsubi: [::libc::c_ushort; 3u]) -> ::libc::c_double;
pub fn lrand48() -> ::libc::c_long; pub fn lrand48() -> ::libc::c_long;
pub fn nrand48(__xsubi: [::libc::c_ushort, ..3u]) -> ::libc::c_long; pub fn nrand48(__xsubi: [::libc::c_ushort; 3u]) -> ::libc::c_long;
pub fn mrand48() -> ::libc::c_long; pub fn mrand48() -> ::libc::c_long;
pub fn jrand48(__xsubi: [::libc::c_ushort, ..3u]) -> ::libc::c_long; pub fn jrand48(__xsubi: [::libc::c_ushort; 3u]) -> ::libc::c_long;
pub fn srand48(__seedval: ::libc::c_long); pub fn srand48(__seedval: ::libc::c_long);
pub fn seed48(__seed16v: [::libc::c_ushort, ..3u]) -> pub fn seed48(__seed16v: [::libc::c_ushort; 3u]) ->
*mut ::libc::c_ushort; *mut ::libc::c_ushort;
pub fn lcong48(__param: [::libc::c_ushort, ..7u]); pub fn lcong48(__param: [::libc::c_ushort; 7u]);
pub fn drand48_r(__buffer: *mut Struct_drand48_data, pub fn drand48_r(__buffer: *mut Struct_drand48_data,
__result: *mut ::libc::c_double) -> ::libc::c_int; __result: *mut ::libc::c_double) -> ::libc::c_int;
pub fn erand48_r(__xsubi: [::libc::c_ushort, ..3u], pub fn erand48_r(__xsubi: [::libc::c_ushort; 3u],
__buffer: *mut Struct_drand48_data, __buffer: *mut Struct_drand48_data,
__result: *mut ::libc::c_double) -> ::libc::c_int; __result: *mut ::libc::c_double) -> ::libc::c_int;
pub fn lrand48_r(__buffer: *mut Struct_drand48_data, pub fn lrand48_r(__buffer: *mut Struct_drand48_data,
__result: *mut ::libc::c_long) -> ::libc::c_int; __result: *mut ::libc::c_long) -> ::libc::c_int;
pub fn nrand48_r(__xsubi: [::libc::c_ushort, ..3u], pub fn nrand48_r(__xsubi: [::libc::c_ushort; 3u],
__buffer: *mut Struct_drand48_data, __buffer: *mut Struct_drand48_data,
__result: *mut ::libc::c_long) -> ::libc::c_int; __result: *mut ::libc::c_long) -> ::libc::c_int;
pub fn mrand48_r(__buffer: *mut Struct_drand48_data, pub fn mrand48_r(__buffer: *mut Struct_drand48_data,
__result: *mut ::libc::c_long) -> ::libc::c_int; __result: *mut ::libc::c_long) -> ::libc::c_int;
pub fn jrand48_r(__xsubi: [::libc::c_ushort, ..3u], pub fn jrand48_r(__xsubi: [::libc::c_ushort; 3u],
__buffer: *mut Struct_drand48_data, __buffer: *mut Struct_drand48_data,
__result: *mut ::libc::c_long) -> ::libc::c_int; __result: *mut ::libc::c_long) -> ::libc::c_int;
pub fn srand48_r(__seedval: ::libc::c_long, pub fn srand48_r(__seedval: ::libc::c_long,
__buffer: *mut Struct_drand48_data) -> ::libc::c_int; __buffer: *mut Struct_drand48_data) -> ::libc::c_int;
pub fn seed48_r(__seed16v: [::libc::c_ushort, ..3u], pub fn seed48_r(__seed16v: [::libc::c_ushort; 3u],
__buffer: *mut Struct_drand48_data) -> ::libc::c_int; __buffer: *mut Struct_drand48_data) -> ::libc::c_int;
pub fn lcong48_r(__param: [::libc::c_ushort, ..7u], pub fn lcong48_r(__param: [::libc::c_ushort; 7u],
__buffer: *mut Struct_drand48_data) -> ::libc::c_int; __buffer: *mut Struct_drand48_data) -> ::libc::c_int;
pub fn malloc(__size: size_t) -> *mut ::libc::c_void; pub fn malloc(__size: size_t) -> *mut ::libc::c_void;
pub fn calloc(__nmemb: size_t, __size: size_t) -> *mut ::libc::c_void; pub fn calloc(__nmemb: size_t, __size: size_t) -> *mut ::libc::c_void;

View File

@ -7,7 +7,7 @@ fn main() {
let mut data_source = let mut data_source =
std::iter::iterate(0.0f32, |f| f + 0.03) std::iter::iterate(0.0f32, |f| f + 0.03)
.map(|angle| { .map(|angle| {
use std::num::FloatMath; use std::num::Float;
use std::num::Int; use std::num::Int;
let angle = angle.sin(); let angle = angle.sin();

View File

@ -1,7 +1,7 @@
extern crate "alsa-sys" as alsa; extern crate "alsa-sys" as alsa;
extern crate libc; extern crate libc;
use std::{mem, ptr}; use std::{ffi, iter, mem};
pub struct Voice { pub struct Voice {
channel: *mut alsa::snd_pcm_t, channel: *mut alsa::snd_pcm_t,
@ -16,10 +16,10 @@ pub struct Buffer<'a, T> {
impl Voice { impl Voice {
pub fn new() -> Voice { pub fn new() -> Voice {
unsafe { unsafe {
let name = "default".to_c_str(); let name = ffi::CString::from_slice(b"default");
let mut playback_handle = mem::uninitialized(); let mut playback_handle = mem::uninitialized();
check_errors(alsa::snd_pcm_open(&mut playback_handle, name.as_ptr(), alsa::SND_PCM_STREAM_PLAYBACK, alsa::SND_PCM_NONBLOCK)).unwrap(); check_errors(alsa::snd_pcm_open(&mut playback_handle, name.as_slice_with_nul().as_ptr(), alsa::SND_PCM_STREAM_PLAYBACK, alsa::SND_PCM_NONBLOCK)).unwrap();
let mut hw_params = mem::uninitialized(); let mut hw_params = mem::uninitialized();
check_errors(alsa::snd_pcm_hw_params_malloc(&mut hw_params)).unwrap(); check_errors(alsa::snd_pcm_hw_params_malloc(&mut hw_params)).unwrap();
@ -60,7 +60,7 @@ impl Voice {
Buffer { Buffer {
channel: self, channel: self,
buffer: Vec::from_elem(elements, unsafe { mem::uninitialized() }) buffer: iter::repeat(unsafe { mem::uninitialized() }).take(elements).collect(),
} }
} }
@ -106,12 +106,12 @@ impl<'a, T> Buffer<'a, T> {
} }
fn check_errors(err: libc::c_int) -> Result<(), String> { fn check_errors(err: libc::c_int) -> Result<(), String> {
use std::c_str::CString; use std::ffi;
if err < 0 { if err < 0 {
unsafe { unsafe {
let s = CString::new(alsa::snd_strerror(err), false); let s = String::from_utf8(ffi::c_str_to_bytes(&alsa::snd_strerror(err)).to_vec());
return Err(s.to_string()); return Err(s.unwrap());
} }
} }

View File

@ -47,8 +47,6 @@ a conversion on your data.
If you have the possibility, you should try to match the format of the voice. If you have the possibility, you should try to match the format of the voice.
*/ */
#![feature(associated_types)]
#![feature(macro_rules)]
#![feature(unsafe_destructor)] #![feature(unsafe_destructor)]
#![unstable] #![unstable]

View File

@ -1,8 +1,7 @@
extern crate libc; extern crate libc;
extern crate winapi; extern crate winapi;
use std::{mem, ptr}; use std::{slice, mem, ptr};
use std::c_vec::CVec;
// TODO: determine if should be NoSend or not // TODO: determine if should be NoSend or not
pub struct Voice { pub struct Voice {
@ -18,7 +17,8 @@ pub struct Voice {
pub struct Buffer<'a, T> { pub struct Buffer<'a, T> {
render_client: *mut winapi::IAudioRenderClient, render_client: *mut winapi::IAudioRenderClient,
buffer: CVec<T>, buffer_data: *mut T,
buffer_len: uint,
frames: winapi::UINT32, frames: winapi::UINT32,
} }
@ -67,7 +67,7 @@ impl Voice {
assert!(frames_available != 0); assert!(frames_available != 0);
// loading buffer // loading buffer
let buffer: CVec<T> = { let (buffer_data, buffer_len) = {
let mut buffer: *mut winapi::BYTE = mem::uninitialized(); let mut buffer: *mut winapi::BYTE = mem::uninitialized();
let f = self.render_client.as_mut().unwrap().lpVtbl.as_ref().unwrap().GetBuffer; let f = self.render_client.as_mut().unwrap().lpVtbl.as_ref().unwrap().GetBuffer;
let hresult = f(self.render_client, frames_available, let hresult = f(self.render_client, frames_available,
@ -75,14 +75,15 @@ impl Voice {
check_result(hresult).unwrap(); check_result(hresult).unwrap();
assert!(!buffer.is_null()); assert!(!buffer.is_null());
CVec::new(buffer as *mut T, (buffer as *mut T,
frames_available as uint * self.bytes_per_frame as uint frames_available as uint * self.bytes_per_frame as uint
/ mem::size_of::<T>()) / mem::size_of::<T>())
}; };
let buffer = Buffer { let buffer = Buffer {
render_client: self.render_client, render_client: self.render_client,
buffer: buffer, buffer_data: buffer_data,
buffer_len: buffer_len,
frames: frames_available, frames: frames_available,
}; };
@ -137,7 +138,9 @@ impl Drop for Voice {
impl<'a, T> Buffer<'a, T> { impl<'a, T> Buffer<'a, T> {
pub fn get_buffer<'b>(&'b mut self) -> &'b mut [T] { pub fn get_buffer<'b>(&'b mut self) -> &'b mut [T] {
self.buffer.as_mut_slice() unsafe {
slice::from_raw_mut_buf(&self.buffer_data, self.buffer_len)
}
} }
pub fn finish(self) { pub fn finish(self) {