diff options
| author | bors <bors@rust-lang.org> | 2013-11-08 02:11:09 -0800 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-11-08 02:11:09 -0800 |
| commit | bfa80f7d6fd06a3f90c88309fc249bd3c8f39b82 (patch) | |
| tree | 6576bf416c4d3482d3a58d0cd6be1e191a045cd1 /src/libstd | |
| parent | 57d1ed819b9e32a8e915ced9b5e130c299a46bca (diff) | |
| parent | eabdc8c960f971bd0ce72e50a5847f3bfedaa65f (diff) | |
| download | rust-bfa80f7d6fd06a3f90c88309fc249bd3c8f39b82.tar.gz rust-bfa80f7d6fd06a3f90c88309fc249bd3c8f39b82.zip | |
auto merge of #10344 : brson/rust/atomiccopy, r=alexcrichton
I didn't try to add clone methods since it's not clear to me which types are appropriate to clone or what the memory ordering should be.
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/unstable/atomics.rs | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/src/libstd/unstable/atomics.rs b/src/libstd/unstable/atomics.rs index e8835462a80..9aaccb3ebba 100644 --- a/src/libstd/unstable/atomics.rs +++ b/src/libstd/unstable/atomics.rs @@ -23,40 +23,46 @@ use cast; use option::{Option,Some,None}; use libc::c_void; use ops::Drop; +use util::NonCopyable; /** * A simple atomic flag, that can be set and cleared. The most basic atomic type. */ pub struct AtomicFlag { - priv v: int + priv v: int, + priv nocopy: NonCopyable } /** * An atomic boolean type. */ pub struct AtomicBool { - priv v: uint + priv v: uint, + priv nocopy: NonCopyable } /** * A signed atomic integer type, supporting basic atomic arithmetic operations */ pub struct AtomicInt { - priv v: int + priv v: int, + priv nocopy: NonCopyable } /** * An unsigned atomic integer type, supporting basic atomic arithmetic operations */ pub struct AtomicUint { - priv v: uint + priv v: uint, + priv nocopy: NonCopyable } /** * An unsafe atomic pointer. Only supports basic atomic operations */ pub struct AtomicPtr<T> { - priv p: *mut T + priv p: *mut T, + priv nocopy: NonCopyable } /** @@ -75,15 +81,15 @@ pub enum Ordering { SeqCst } -pub static INIT_ATOMIC_FLAG : AtomicFlag = AtomicFlag { v: 0 }; -pub static INIT_ATOMIC_BOOL : AtomicBool = AtomicBool { v: 0 }; -pub static INIT_ATOMIC_INT : AtomicInt = AtomicInt { v: 0 }; -pub static INIT_ATOMIC_UINT : AtomicUint = AtomicUint { v: 0 }; +pub static INIT_ATOMIC_FLAG : AtomicFlag = AtomicFlag { v: 0, nocopy: NonCopyable }; +pub static INIT_ATOMIC_BOOL : AtomicBool = AtomicBool { v: 0, nocopy: NonCopyable }; +pub static INIT_ATOMIC_INT : AtomicInt = AtomicInt { v: 0, nocopy: NonCopyable }; +pub static INIT_ATOMIC_UINT : AtomicUint = AtomicUint { v: 0, nocopy: NonCopyable }; impl AtomicFlag { pub fn new() -> AtomicFlag { - AtomicFlag { v: 0 } + AtomicFlag { v: 0, nocopy: NonCopyable } } /** @@ -106,7 +112,7 @@ impl AtomicFlag { impl AtomicBool { pub fn new(v: bool) -> AtomicBool { - AtomicBool { v: if v { 1 } else { 0 } } + AtomicBool { v: if v { 1 } else { 0 }, nocopy: NonCopyable } } #[inline] @@ -171,7 +177,7 @@ impl AtomicBool { impl AtomicInt { pub fn new(v: int) -> AtomicInt { - AtomicInt { v:v } + AtomicInt { v:v, nocopy: NonCopyable } } #[inline] @@ -209,7 +215,7 @@ impl AtomicInt { impl AtomicUint { pub fn new(v: uint) -> AtomicUint { - AtomicUint { v:v } + AtomicUint { v:v, nocopy: NonCopyable } } #[inline] @@ -247,7 +253,7 @@ impl AtomicUint { impl<T> AtomicPtr<T> { pub fn new(p: *mut T) -> AtomicPtr<T> { - AtomicPtr { p:p } + AtomicPtr { p:p, nocopy: NonCopyable } } #[inline] |
