From 9c81889ad258c34635532dc7017d1c2b831230b8 Mon Sep 17 00:00:00 2001 From: Roy Frostig Date: Tue, 20 Jul 2010 18:03:09 -0700 Subject: Add a (coarse, first-pass) deque implementation to stdlib. --- src/lib/_int.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/lib/_int.rs') diff --git a/src/lib/_int.rs b/src/lib/_int.rs index 2afb3c4f..b6399669 100644 --- a/src/lib/_int.rs +++ b/src/lib/_int.rs @@ -1,3 +1,5 @@ +import std.sys; + fn add(int x, int y) -> int { ret x + y; } fn sub(int x, int y) -> int { ret x - y; } fn mul(int x, int y) -> int { ret x * y; } @@ -24,3 +26,16 @@ iter urange(mutable uint lo, uint hi) -> uint { lo += uint(1); } } + +fn next_power_of_two(uint n) -> uint { + // FIXME change |* uint(4)| below to |* uint(8) / uint(2)| and watch the + // world explode. + let uint halfbits = sys.rustrt.size_of[uint]() * uint(4); + let uint tmp = n - uint(1); + let uint shift = uint(1); + while (shift <= halfbits) { + tmp |= tmp >> shift; + shift <<= uint(1); + } + ret tmp + uint(1); +} -- cgit v1.2.3