std: Remove struct ctors
This commit is contained in:
@@ -223,13 +223,18 @@ fn check_poison(is_mutex: bool, failed: bool) {
|
|||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
struct PoisonOnFail {
|
struct PoisonOnFail {
|
||||||
failed: &mut bool;
|
failed: &mut bool;
|
||||||
new(failed: &mut bool) { self.failed = failed; }
|
|
||||||
drop {
|
drop {
|
||||||
/* assert !*self.failed; -- might be false in case of cond.wait() */
|
/* assert !*self.failed; -- might be false in case of cond.wait() */
|
||||||
if task::failing() { *self.failed = true; }
|
if task::failing() { *self.failed = true; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn PoisonOnFail(failed: &r/mut bool) -> PoisonOnFail/&r {
|
||||||
|
PoisonOnFail {
|
||||||
|
failed: failed
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* R/W lock protected ARC
|
* R/W lock protected ARC
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|||||||
@@ -44,7 +44,6 @@ enum CVec<T> {
|
|||||||
|
|
||||||
struct DtorRes {
|
struct DtorRes {
|
||||||
let dtor: Option<fn@()>;
|
let dtor: Option<fn@()>;
|
||||||
new(dtor: Option<fn@()>) { self.dtor = dtor; }
|
|
||||||
drop {
|
drop {
|
||||||
match self.dtor {
|
match self.dtor {
|
||||||
option::None => (),
|
option::None => (),
|
||||||
@@ -53,6 +52,12 @@ struct DtorRes {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn DtorRes(dtor: Option<fn@()>) -> DtorRes {
|
||||||
|
DtorRes {
|
||||||
|
dtor: dtor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Section: Introduction forms
|
Section: Introduction forms
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -40,7 +40,6 @@ extern mod rustrt {
|
|||||||
*/
|
*/
|
||||||
struct TcpSocket {
|
struct TcpSocket {
|
||||||
let socket_data: @TcpSocketData;
|
let socket_data: @TcpSocketData;
|
||||||
new(socket_data: @TcpSocketData) { self.socket_data = socket_data; }
|
|
||||||
drop {
|
drop {
|
||||||
unsafe {
|
unsafe {
|
||||||
tear_down_socket_data(self.socket_data)
|
tear_down_socket_data(self.socket_data)
|
||||||
@@ -48,6 +47,12 @@ struct TcpSocket {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn TcpSocket(socket_data: @TcpSocketData) -> TcpSocket {
|
||||||
|
TcpSocket {
|
||||||
|
socket_data: socket_data
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A buffered wrapper for `net::tcp::tcp_socket`
|
* A buffered wrapper for `net::tcp::tcp_socket`
|
||||||
*
|
*
|
||||||
@@ -56,7 +61,12 @@ struct TcpSocket {
|
|||||||
*/
|
*/
|
||||||
struct TcpSocketBuf {
|
struct TcpSocketBuf {
|
||||||
let data: @TcpBufferedSocketData;
|
let data: @TcpBufferedSocketData;
|
||||||
new(data: @TcpBufferedSocketData) { self.data = data; }
|
}
|
||||||
|
|
||||||
|
fn TcpSocketBuf(data: @TcpBufferedSocketData) -> TcpSocketBuf {
|
||||||
|
TcpSocketBuf {
|
||||||
|
data: data
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Contains raw, string-based, error information returned from libuv
|
/// Contains raw, string-based, error information returned from libuv
|
||||||
|
|||||||
@@ -154,16 +154,28 @@ impl &Sem<~[mut Waitqueue]> {
|
|||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
struct SemRelease {
|
struct SemRelease {
|
||||||
sem: &Sem<()>;
|
sem: &Sem<()>;
|
||||||
new(sem: &Sem<()>) { self.sem = sem; }
|
|
||||||
drop { self.sem.release(); }
|
drop { self.sem.release(); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn SemRelease(sem: &r/Sem<()>) -> SemRelease/&r {
|
||||||
|
SemRelease {
|
||||||
|
sem: sem
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
struct SemAndSignalRelease {
|
struct SemAndSignalRelease {
|
||||||
sem: &Sem<~[mut Waitqueue]>;
|
sem: &Sem<~[mut Waitqueue]>;
|
||||||
new(sem: &Sem<~[mut Waitqueue]>) { self.sem = sem; }
|
|
||||||
drop { self.sem.release(); }
|
drop { self.sem.release(); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn SemAndSignalRelease(sem: &r/Sem<~[mut Waitqueue]>)
|
||||||
|
-> SemAndSignalRelease/&r {
|
||||||
|
SemAndSignalRelease {
|
||||||
|
sem: sem
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// A mechanism for atomic-unlock-and-deschedule blocking and signalling.
|
/// A mechanism for atomic-unlock-and-deschedule blocking and signalling.
|
||||||
struct Condvar { priv sem: &Sem<~[mut Waitqueue]>; drop { } }
|
struct Condvar { priv sem: &Sem<~[mut Waitqueue]>; drop { } }
|
||||||
|
|
||||||
@@ -234,7 +246,6 @@ impl &Condvar {
|
|||||||
// bounded in when it gets released, this shouldn't hang forever.
|
// bounded in when it gets released, this shouldn't hang forever.
|
||||||
struct SemAndSignalReacquire {
|
struct SemAndSignalReacquire {
|
||||||
sem: &Sem<~[mut Waitqueue]>;
|
sem: &Sem<~[mut Waitqueue]>;
|
||||||
new(sem: &Sem<~[mut Waitqueue]>) { self.sem = sem; }
|
|
||||||
drop unsafe {
|
drop unsafe {
|
||||||
// Needs to succeed, instead of itself dying.
|
// Needs to succeed, instead of itself dying.
|
||||||
do task::unkillable {
|
do task::unkillable {
|
||||||
@@ -242,6 +253,14 @@ impl &Condvar {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn SemAndSignalReacquire(sem: &r/Sem<~[mut Waitqueue]>)
|
||||||
|
-> SemAndSignalReacquire/&r {
|
||||||
|
SemAndSignalReacquire {
|
||||||
|
sem: sem
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Wake up a blocked task. Returns false if there was no blocked task.
|
/// Wake up a blocked task. Returns false if there was no blocked task.
|
||||||
@@ -567,7 +586,6 @@ impl &RWlock {
|
|||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
struct RWlockReleaseRead {
|
struct RWlockReleaseRead {
|
||||||
lock: &RWlock;
|
lock: &RWlock;
|
||||||
new(lock: &RWlock) { self.lock = lock; }
|
|
||||||
drop unsafe {
|
drop unsafe {
|
||||||
do task::unkillable {
|
do task::unkillable {
|
||||||
let mut last_reader = false;
|
let mut last_reader = false;
|
||||||
@@ -587,11 +605,16 @@ struct RWlockReleaseRead {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn RWlockReleaseRead(lock: &r/RWlock) -> RWlockReleaseRead/&r {
|
||||||
|
RWlockReleaseRead {
|
||||||
|
lock: lock
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// FIXME(#3136) should go inside of downgrade()
|
// FIXME(#3136) should go inside of downgrade()
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
struct RWlockReleaseDowngrade {
|
struct RWlockReleaseDowngrade {
|
||||||
lock: &RWlock;
|
lock: &RWlock;
|
||||||
new(lock: &RWlock) { self.lock = lock; }
|
|
||||||
drop unsafe {
|
drop unsafe {
|
||||||
do task::unkillable {
|
do task::unkillable {
|
||||||
let mut writer_or_last_reader = false;
|
let mut writer_or_last_reader = false;
|
||||||
@@ -618,6 +641,12 @@ struct RWlockReleaseDowngrade {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn RWlockReleaseDowngrade(lock: &r/RWlock) -> RWlockReleaseDowngrade/&r {
|
||||||
|
RWlockReleaseDowngrade {
|
||||||
|
lock: lock
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// The "write permission" token used for rwlock.write_downgrade().
|
/// The "write permission" token used for rwlock.write_downgrade().
|
||||||
struct RWlockWriteMode { /* priv */ lock: &RWlock; drop { } }
|
struct RWlockWriteMode { /* priv */ lock: &RWlock; drop { } }
|
||||||
/// The "read permission" token used for rwlock.write_downgrade().
|
/// The "read permission" token used for rwlock.write_downgrade().
|
||||||
@@ -929,9 +958,14 @@ mod tests {
|
|||||||
}
|
}
|
||||||
struct SendOnFailure {
|
struct SendOnFailure {
|
||||||
c: pipes::Chan<()>;
|
c: pipes::Chan<()>;
|
||||||
new(+c: pipes::Chan<()>) { self.c = c; }
|
|
||||||
drop { self.c.send(()); }
|
drop { self.c.send(()); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn SendOnFailure(+c: pipes::Chan<()>) -> SendOnFailure {
|
||||||
|
SendOnFailure {
|
||||||
|
c: c
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn test_mutex_cond_signal_on_0() {
|
fn test_mutex_cond_signal_on_0() {
|
||||||
|
|||||||
Reference in New Issue
Block a user