diff options
| author | Roy Frostig <[email protected]> | 2010-07-20 18:03:09 -0700 |
|---|---|---|
| committer | Roy Frostig <[email protected]> | 2010-07-20 18:03:09 -0700 |
| commit | 9c81889ad258c34635532dc7017d1c2b831230b8 (patch) | |
| tree | bc1490ad4d785b4e18219622558bc607740466d1 /src/lib/_int.rs | |
| parent | Be a little more careful before assuming we have crate debuginfo and abbrevs ... (diff) | |
| download | rust-9c81889ad258c34635532dc7017d1c2b831230b8.tar.xz rust-9c81889ad258c34635532dc7017d1c2b831230b8.zip | |
Add a (coarse, first-pass) deque implementation to stdlib.
Diffstat (limited to 'src/lib/_int.rs')
| -rw-r--r-- | src/lib/_int.rs | 15 |
1 files changed, 15 insertions, 0 deletions
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); +} |