diff options
| author | Brian Anderson <banderson@mozilla.com> | 2012-02-29 23:44:52 -0800 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-03-02 15:49:49 -0800 |
| commit | 3ed6f6520f56204f1c7c799ec8fa231bef0fb4d1 (patch) | |
| tree | 4b8cb49db4cbf3fa3bb7a88ba72f821d4c00dba9 | |
| parent | 47e7a05a28c9662159af2d2e0f2b7efc13fa09cb (diff) | |
| download | rust-3ed6f6520f56204f1c7c799ec8fa231bef0fb4d1.tar.gz rust-3ed6f6520f56204f1c7c799ec8fa231bef0fb4d1.zip | |
core: Remove _mut functions from vec
Instead, use vec::to_mut/from_mut to transform vectors in place as needed.
| -rw-r--r-- | src/comp/middle/check_alt.rs | 4 | ||||
| -rw-r--r-- | src/comp/middle/trans/alt.rs | 2 | ||||
| -rw-r--r-- | src/comp/middle/trans/base.rs | 4 | ||||
| -rw-r--r-- | src/comp/middle/tstate/auxiliary.rs | 2 | ||||
| -rw-r--r-- | src/comp/syntax/print/pp.rs | 6 | ||||
| -rw-r--r-- | src/compiletest/runtest.rs | 3 | ||||
| -rw-r--r-- | src/libcore/vec.rs | 106 | ||||
| -rw-r--r-- | src/libstd/bitv.rs | 4 | ||||
| -rw-r--r-- | src/libstd/deque.rs | 2 | ||||
| -rw-r--r-- | src/libstd/getopts.rs | 2 | ||||
| -rw-r--r-- | src/libstd/map.rs | 2 | ||||
| -rw-r--r-- | src/libstd/md4.rs | 2 | ||||
| -rw-r--r-- | src/libstd/rope.rs | 8 | ||||
| -rw-r--r-- | src/libstd/sha1.rs | 6 | ||||
| -rw-r--r-- | src/libstd/smallintmap.rs | 2 | ||||
| -rw-r--r-- | src/test/bench/shootout-fannkuchredux.rs | 6 | ||||
| -rw-r--r-- | src/test/bench/shootout-spectralnorm.rs | 6 | ||||
| -rw-r--r-- | src/test/bench/sudoku.rs | 8 |
18 files changed, 58 insertions, 117 deletions
diff --git a/src/comp/middle/check_alt.rs b/src/comp/middle/check_alt.rs index 894aa6af371..6d55aed095e 100644 --- a/src/comp/middle/check_alt.rs +++ b/src/comp/middle/check_alt.rs @@ -88,7 +88,7 @@ fn check_exhaustive(tcx: ty::ctxt, sp: span, pats: [@pat]) { })); } ty::ty_tup(ts) { - let cols = vec::init_elt_mut(ts.len(), []); + let cols = vec::to_mut(vec::init_elt(ts.len(), [])); for p in pats { alt raw_pat(p).node { pat_tup(sub) { @@ -156,7 +156,7 @@ fn check_exhaustive_enum(tcx: ty::ctxt, enum_id: def_id, sp: span, let variants = enum_variants(tcx, enum_id); let columns_by_variant = vec::map(*variants, {|v| {mutable seen: false, - cols: vec::init_elt_mut(v.args.len(), [])} + cols: vec::to_mut(vec::init_elt(v.args.len(), []))} }); for pat in pats { diff --git a/src/comp/middle/trans/alt.rs b/src/comp/middle/trans/alt.rs index 9e5333ade64..29200a47287 100644 --- a/src/comp/middle/trans/alt.rs +++ b/src/comp/middle/trans/alt.rs @@ -337,7 +337,7 @@ fn pick_col(m: match) -> uint { _ { 0u } } } - let scores = vec::init_elt_mut(m[0].pats.len(), 0u); + let scores = vec::to_mut(vec::init_elt(m[0].pats.len(), 0u)); for br: match_branch in m { let i = 0u; for p: @ast::pat in br.pats { scores[i] += score(p); i += 1u; } diff --git a/src/comp/middle/trans/base.rs b/src/comp/middle/trans/base.rs index 846417fcb44..6947a6875c4 100644 --- a/src/comp/middle/trans/base.rs +++ b/src/comp/middle/trans/base.rs @@ -741,7 +741,9 @@ fn make_generic_glue_inner(ccx: crate_ctxt, t: ty::t, p += 1u; } - fcx.lltyparams = vec::map_mut(lltydescs, {|d| {desc: d, dicts: none}}); + fcx.lltyparams = vec::map(vec::from_mut(lltydescs), {|d| + {desc: d, dicts: none} + }); let bcx = top_scope_block(fcx, none); let lltop = bcx.llbb; diff --git a/src/comp/middle/tstate/auxiliary.rs b/src/comp/middle/tstate/auxiliary.rs index 11b1ef3366e..df358a86004 100644 --- a/src/comp/middle/tstate/auxiliary.rs +++ b/src/comp/middle/tstate/auxiliary.rs @@ -294,7 +294,7 @@ fn get_fn_info(ccx: crate_ctxt, id: node_id) -> fn_info { fn add_node(ccx: crate_ctxt, i: node_id, a: ts_ann) { let sz = vec::len(*ccx.node_anns); if sz <= i as uint { - vec::grow_mut(*ccx.node_anns, (i as uint) - sz + 1u, empty_ann(0u)); + vec::grow(*ccx.node_anns, (i as uint) - sz + 1u, empty_ann(0u)); } ccx.node_anns[i] = a; } diff --git a/src/comp/syntax/print/pp.rs b/src/comp/syntax/print/pp.rs index 3ee31314299..0b55bb8c356 100644 --- a/src/comp/syntax/print/pp.rs +++ b/src/comp/syntax/print/pp.rs @@ -101,9 +101,9 @@ fn mk_printer(out: io::writer, linewidth: uint) -> printer { // fall behind. let n: uint = 3u * linewidth; #debug("mk_printer %u", linewidth); - let token: [mutable token] = vec::init_elt_mut(n, EOF); - let size: [mutable int] = vec::init_elt_mut(n, 0); - let scan_stack: [mutable uint] = vec::init_elt_mut(n, 0u); + let token: [mutable token] = vec::to_mut(vec::init_elt(n, EOF)); + let size: [mutable int] = vec::to_mut(vec::init_elt(n, 0)); + let scan_stack: [mutable uint] = vec::to_mut(vec::init_elt(n, 0u)); let print_stack: [print_stack_elt] = []; @{out: out, buf_len: n, diff --git a/src/compiletest/runtest.rs b/src/compiletest/runtest.rs index 517da771c0a..75855b63c8d 100644 --- a/src/compiletest/runtest.rs +++ b/src/compiletest/runtest.rs @@ -229,7 +229,8 @@ fn check_expected_errors(expected_errors: [errors::expected_error], procres: procres) { // true if we found the error in question - let found_flags = vec::init_elt_mut(vec::len(expected_errors), false); + let found_flags = vec::to_mut(vec::init_elt( + vec::len(expected_errors), false)); if procres.status == 0 { fatal("process did not return an error status"); diff --git a/src/libcore/vec.rs b/src/libcore/vec.rs index 4b0c83d7168..a101f5f3ba2 100644 --- a/src/libcore/vec.rs +++ b/src/libcore/vec.rs @@ -96,23 +96,6 @@ fn init_fn<T>(n_elts: uint, op: init_op<T>) -> [T] { ret v; } -// TODO: Remove me once we have slots. -/* -Function: init_fn_mut - -Creates and initializes a mutable vector. - -Creates a mutable vector of size `n_elts` and initializes the elements to -the value returned by the function `op`. -*/ -fn init_fn_mut<T>(n_elts: uint, op: init_op<T>) -> [mutable T] { - let v = [mutable]; - reserve(v, n_elts); - let i: uint = 0u; - while i < n_elts { v += [mutable op(i)]; i += 1u; } - ret v; -} - /* Function: init_elt @@ -129,27 +112,10 @@ fn init_elt<T: copy>(n_elts: uint, t: T) -> [T] { ret v; } -// TODO: Remove me once we have slots. -/* -Function: init_elt_mut - -Creates and initializes a mutable vector. - -Creates a mutable vector of size `n_elts` and initializes the elements -to the value `t`. -*/ -fn init_elt_mut<T: copy>(n_elts: uint, t: T) -> [mutable T] { - let v = [mutable]; - reserve(v, n_elts); - let i: uint = 0u; - while i < n_elts { v += [mutable t]; i += 1u; } - ret v; -} - // FIXME: Possible typestate postcondition: // len(result) == len(v) (needs issue #586) /* -Function: to_mut + Produces a mutable vector from an immutable vector. */ @@ -257,22 +223,6 @@ fn slice<T: copy>(v: [const T], start: uint, end: uint) -> [T] { ret result; } -// TODO: Remove me once we have slots. -/* -Function: slice_mut - -Returns a copy of the elements from [`start`..`end`) from `v`. -*/ -fn slice_mut<T: copy>(v: [const T], start: uint, end: uint) -> [mutable T] { - assert (start <= end); - assert (end <= len(v)); - let result = [mutable]; - reserve(result, end - start); - let i = start; - while i < end { result += [mutable v[i]]; i += 1u; } - ret result; -} - /* Function: split @@ -438,25 +388,6 @@ fn grow<T: copy>(&v: [const T], n: uint, initval: T) { while i < n { v += [initval]; i += 1u; } } -// TODO: Remove me once we have slots. -// FIXME: Can't grow take a [const T] -/* -Function: grow_mut - -Expands a vector in place, initializing the new elements to a given value - -Parameters: - -v - The vector to grow -n - The number of elements to add -initval - The value for the new elements -*/ -fn grow_mut<T: copy>(&v: [mutable T], n: uint, initval: T) { - reserve(v, next_power_of_two(len(v) + n)); - let i: uint = 0u; - while i < n { v += [mutable initval]; i += 1u; } -} - /* Function: grow_fn @@ -488,7 +419,7 @@ of the vector, expands the vector by replicating `initval` to fill the intervening space. */ fn grow_set<T: copy>(&v: [mutable T], index: uint, initval: T, val: T) { - if index >= len(v) { grow_mut(v, index - len(v) + 1u, initval); } + if index >= len(v) { grow(v, index - len(v) + 1u, initval); } v[index] = val; } @@ -508,21 +439,6 @@ fn map<T, U>(v: [T], f: fn(T) -> U) -> [U] { } /* -Function: map_mut - -Apply a function to each element of a mutable vector and return the results -*/ -fn map_mut<T: copy, U>(v: [const T], f: fn(T) -> U) -> [U] { - let result = []; - reserve(result, len(v)); - for elem: T in v { - // copy satisfies alias checker - result += [f(copy elem)]; - } - ret result; -} - -/* Function: map2 Apply a function to each pair of elements and return the results @@ -1949,6 +1865,24 @@ mod tests { fn test_windowed_() { let _x = windowed (0u, [1u,2u,3u,4u,5u,6u]); } + + #[test] + fn to_mut_no_copy() unsafe { + let x = [1, 2, 3]; + let addr = unsafe::to_ptr(x); + let x_mut = to_mut(x); + let addr_mut = unsafe::to_ptr(x_mut); + assert addr == addr_mut; + } + + #[test] + fn from_mut_no_copy() unsafe { + let x = [mut 1, 2, 3]; + let addr = unsafe::to_ptr(x); + let x_imm = from_mut(x); + let addr_imm = unsafe::to_ptr(x_imm); + assert addr == addr_imm; + } } // Local Variables: diff --git a/src/libstd/bitv.rs b/src/libstd/bitv.rs index d02d78eaab8..eb9d21ac31e 100644 --- a/src/libstd/bitv.rs +++ b/src/libstd/bitv.rs @@ -49,7 +49,7 @@ init - If true then the bits are initialized to 1, otherwise 0 */ fn create(nbits: uint, init: bool) -> t { let elt = if init { !0u } else { 0u }; - let storage = vec::init_elt_mut::<uint>(nbits / uint_bits + 1u, elt); + let storage = vec::to_mut(vec::init_elt(nbits / uint_bits + 1u, elt)); ret @{storage: storage, nbits: nbits}; } @@ -117,7 +117,7 @@ Function: clone Makes a copy of a bitvector */ fn clone(v: t) -> t { - let storage = vec::init_elt_mut::<uint>(v.nbits / uint_bits + 1u, 0u); + let storage = vec::to_mut(vec::init_elt(v.nbits / uint_bits + 1u, 0u)); let len = vec::len(v.storage); uint::range(0u, len) {|i| storage[i] = v.storage[i]; }; ret @{storage: storage, nbits: v.nbits}; diff --git a/src/libstd/deque.rs b/src/libstd/deque.rs index e6c30f67302..f12c72f80e1 100644 --- a/src/libstd/deque.rs +++ b/src/libstd/deque.rs @@ -127,7 +127,7 @@ fn create<T: copy>() -> t<T> { mutable nelts: 0u, mutable lo: 0u, mutable hi: 0u, - mutable elts: vec::init_elt_mut(initial_capacity, none) + mutable elts: vec::to_mut(vec::init_elt(initial_capacity, none)) }; repr as t::<T> } diff --git a/src/libstd/getopts.rs b/src/libstd/getopts.rs index 7b409053cb0..62ef4839d64 100644 --- a/src/libstd/getopts.rs +++ b/src/libstd/getopts.rs @@ -212,7 +212,7 @@ err(fail_) - On failure. Use <fail_str> to get an error message. fn getopts(args: [str], opts: [opt]) -> result unsafe { let n_opts = vec::len::<opt>(opts); fn f(_x: uint) -> [optval] { ret []; } - let vals = vec::init_fn_mut::<[optval]>(n_opts, f); + let vals = vec::to_mut(vec::init_fn(n_opts, f)); let free: [str] = []; let l = vec::len(args); let i = 0u; diff --git a/src/libstd/map.rs b/src/libstd/map.rs index 8d3bbac1ce4..c2320e93f29 100644 --- a/src/libstd/map.rs +++ b/src/libstd/map.rs @@ -243,7 +243,7 @@ mod chained { } fn chains<K: copy, V: copy>(nchains: uint) -> [mutable chain<K,V>] { - ret vec::init_elt_mut(nchains, absent); + ret vec::to_mut(vec::init_elt(nchains, absent)); } fn foreach_entry<K: copy, V: copy>(chain0: chain<K,V>, diff --git a/src/libstd/md4.rs b/src/libstd/md4.rs index 1d6540f04e8..2f1f455dcc4 100644 --- a/src/libstd/md4.rs +++ b/src/libstd/md4.rs @@ -30,7 +30,7 @@ fn md4(msg: [u8]) -> {a: u32, b: u32, c: u32, d: u32} { } let i = 0u, e = vec::len(msg); - let x = vec::init_elt_mut(16u, 0u32); + let x = vec::to_mut(vec::init_elt(16u, 0u32)); while i < e { let aa = a, bb = b, cc = c, dd = d; diff --git a/src/libstd/rope.rs b/src/libstd/rope.rs index 6b9f7a17f74..225d59b39e1 100644 --- a/src/libstd/rope.rs +++ b/src/libstd/rope.rs @@ -181,7 +181,7 @@ fn concat(v: [rope]) -> rope { //Copy `v` into a mutable vector let len = vec::len(v); if len == 0u { ret node::empty; } - let ropes = vec::init_elt_mut(len, v[0]); + let ropes = vec::to_mut(vec::init_elt(len, v[0])); uint::range(1u, len) {|i| ropes[i] = v[i]; } @@ -780,7 +780,7 @@ mod node { //Firstly, split `str` in slices of hint_max_leaf_char_len let leaves = uint::div_ceil(char_len, hint_max_leaf_char_len); //Number of leaves - let nodes = vec::init_elt_mut(leaves, candidate); + let nodes = vec::to_mut(vec::init_elt(leaves, candidate)); let i = 0u; let offset = byte_start; @@ -893,7 +893,7 @@ mod node { } fn serialize_node(node: @node) -> str unsafe { - let buf = vec::init_elt_mut(byte_len(node), 0u8); + let buf = vec::to_mut(vec::init_elt(byte_len(node), 0u8)); let offset = 0u;//Current position in the buffer let it = leaf_iterator::start(node); while true { @@ -1224,7 +1224,7 @@ mod node { } fn start(node: @node) -> t { - let stack = vec::init_elt_mut(height(node)+1u, node); + let stack = vec::to_mut(vec::init_elt(height(node)+1u, node)); ret { stack: stack, mutable stackpos: 0 diff --git a/src/libstd/sha1.rs b/src/libstd/sha1.rs index 9360a84fb97..06702fc140a 100644 --- a/src/libstd/sha1.rs +++ b/src/libstd/sha1.rs @@ -274,13 +274,13 @@ fn mk_sha1() -> sha1 { } } let st = { - h: vec::init_elt_mut(digest_buf_len, 0u32), + h: vec::to_mut(vec::init_elt(digest_buf_len, 0u32)), mutable len_low: 0u32, mutable len_high: 0u32, - msg_block: vec::init_elt_mut(msg_block_len, 0u8), + msg_block: vec::to_mut(vec::init_elt(msg_block_len, 0u8)), mutable msg_block_idx: 0u, mutable computed: false, - work_buf: vec::init_elt_mut(work_buf_len, 0u32) + work_buf: vec::to_mut(vec::init_elt(work_buf_len, 0u32)) }; let sh = st as sha1; sh.reset(); diff --git a/src/libstd/smallintmap.rs b/src/libstd/smallintmap.rs index d76e37e5071..b608ddf4a64 100644 --- a/src/libstd/smallintmap.rs +++ b/src/libstd/smallintmap.rs @@ -73,7 +73,7 @@ fn contains_key<T: copy>(m: smallintmap<T>, key: uint) -> bool { // FIXME: Are these really useful? fn truncate<T: copy>(m: smallintmap<T>, len: uint) { - m.v = vec::slice_mut::<option<T>>(m.v, 0u, len); + m.v = vec::to_mut(vec::slice::<option<T>>(m.v, 0u, len)); } fn max_key<T>(m: smallintmap<T>) -> uint { diff --git a/src/test/bench/shootout-fannkuchredux.rs b/src/test/bench/shootout-fannkuchredux.rs index 26ed2fcf0a4..d1b58d2fd8b 100644 --- a/src/test/bench/shootout-fannkuchredux.rs +++ b/src/test/bench/shootout-fannkuchredux.rs @@ -6,9 +6,9 @@ import vec; fn fannkuch(n: int) -> int { fn perm1init(i: uint) -> int { ret i as int; } - let perm = vec::init_elt_mut(n as uint, 0); - let perm1 = vec::init_fn_mut(n as uint, perm1init); - let count = vec::init_elt_mut(n as uint, 0); + let perm = vec::to_mut(vec::init_elt(n as uint, 0)); + let perm1 = vec::to_mut(vec::init_fn(n as uint, perm1init)); + let count = vec::to_mut(vec::init_elt(n as uint, 0)); let f = 0; let i = 0; let k = 0; diff --git a/src/test/bench/shootout-spectralnorm.rs b/src/test/bench/shootout-spectralnorm.rs index 6c475985d49..311960e526b 100644 --- a/src/test/bench/shootout-spectralnorm.rs +++ b/src/test/bench/shootout-spectralnorm.rs @@ -35,7 +35,7 @@ fn eval_At_times_u(u: [const float], Au: [mutable float]) { } fn eval_AtA_times_u(u: [const float], AtAu: [mutable float]) { - let v = vec::init_elt_mut(vec::len(u), 0.0); + let v = vec::to_mut(vec::init_elt(vec::len(u), 0.0)); eval_A_times_u(u, v); eval_At_times_u(v, AtAu); } @@ -48,8 +48,8 @@ fn main(args: [str]) { 1000u }; - let u = vec::init_elt_mut(N, 1.0); - let v = vec::init_elt_mut(N, 0.0); + let u = vec::to_mut(vec::init_elt(N, 1.0)); + let v = vec::to_mut(vec::init_elt(N, 0.0)); let i = 0u; while i < 10u { eval_AtA_times_u(u, v); diff --git a/src/test/bench/sudoku.rs b/src/test/bench/sudoku.rs index 7cf23192dee..c7c5c54c8d4 100644 --- a/src/test/bench/sudoku.rs +++ b/src/test/bench/sudoku.rs @@ -31,7 +31,9 @@ enum grid_t { grid_ctor(grid), } fn read_grid(f: io::reader) -> grid_t { assert f.read_line() == "9,9"; /* assert first line is exactly "9,9" */ - let g = vec::init_fn(10u, {|_i| vec::init_elt_mut(10u, 0 as u8) }); + let g = vec::init_fn(10u, {|_i| + vec::to_mut(vec::init_elt(10u, 0 as u8)) + }); while !f.eof() { let comps = str::split_char(str::trim(f.read_line()), ','); if vec::len(comps) >= 3u { @@ -129,7 +131,9 @@ fn write_grid(f: io::writer, g: grid_t) { fn main(args: [str]) { let grid = if vec::len(args) == 1u { // FIXME create sudoku inline since nested vec consts dont work yet - let g = vec::init_fn(10u, {|_i| vec::init_elt_mut(10u, 0 as u8) }); + let g = vec::init_fn(10u, {|_i| + vec::to_mut(vec::init_elt(10u, 0 as u8)) + }); g[0][1] = 4u8; g[0][3] = 6u8; g[0][7] = 3u8; |
