authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-06-27 20:37:28-04:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2019-06-27 20:37:28-04:00
logae72a982242fbd46f389f933c18b036e919093bc
treedf934a2c4596a64d3ae8d4000e550e5f24c8559f
parentff477361b005f059591e92e079d62e68153365e1
parent623dbb73df7d8350f79f62c13587a354fdcd56d5
signature Signed by PGP key 4AEE18F83AFDEB23

Merge pull request #2775 from SamTebbs33/alignment-docs

Add doc comments to alignment functions

1 files changed, 6 insertions(+), 0 deletions(-)

std/mem.zig+6
......@@ -1481,6 +1481,7 @@ test "subArrayPtr" {
14811481}
14821482
14831483/// Round an address up to the nearest aligned address
1484/// The alignment must be a power of 2 and greater than 0.
14841485pub fn alignForward(addr: usize, alignment: usize) usize {
14851486 return alignBackward(addr + (alignment - 1), alignment);
14861487}
......@@ -1500,13 +1501,18 @@ test "alignForward" {
15001501 testing.expect(alignForward(17, 8) == 24);
15011502}
15021503
1504/// Round an address up to the previous aligned address
1505/// The alignment must be a power of 2 and greater than 0.
15031506pub fn alignBackward(addr: usize, alignment: usize) usize {
1507 assert(@popCount(usize, alignment) == 1);
15041508 // 000010000 // example addr
15051509 // 000001111 // subtract 1
15061510 // 111110000 // binary not
15071511 return addr & ~(alignment - 1);
15081512}
15091513
1514/// Given an address and an alignment, return true if the address is a multiple of the alignment
1515/// The alignment must be a power of 2 and greater than 0.
15101516pub fn isAligned(addr: usize, alignment: usize) bool {
15111517 return alignBackward(addr, alignment) == addr;
15121518}