bf: rename to bitfield
parent
71224ad17c
commit
ae866260c8
|
@ -1,7 +1,7 @@
|
||||||
module bf
|
module bitfield
|
||||||
|
|
||||||
/*
|
/*
|
||||||
bf (BitField) is a module (shared library for V programming language) for
|
bitfield is a module for
|
||||||
manipulating arrays of bits, i.e. series of zeroes and ones spread across an
|
manipulating arrays of bits, i.e. series of zeroes and ones spread across an
|
||||||
array of storage units (unsigned 32-bit integers).
|
array of storage units (unsigned 32-bit integers).
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ mut:
|
||||||
field []u32
|
field []u32
|
||||||
}
|
}
|
||||||
|
|
||||||
// helper functions
|
// helper functions
|
||||||
const (
|
const (
|
||||||
SLOT_SIZE = 32
|
SLOT_SIZE = 32
|
||||||
)
|
)
|
||||||
|
@ -63,19 +63,19 @@ fn min(input1 int, input2 int) int {
|
||||||
|
|
||||||
fn bitnslots(length int) int {
|
fn bitnslots(length int) int {
|
||||||
return (length - 1) / SLOT_SIZE + 1
|
return (length - 1) / SLOT_SIZE + 1
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cleartail(instance mut BitField) {
|
fn cleartail(instance mut BitField) {
|
||||||
tail := instance.size % SLOT_SIZE
|
tail := instance.size % SLOT_SIZE
|
||||||
if tail != 0 {
|
if tail != 0 {
|
||||||
// create a mask for the tail
|
// create a mask for the tail
|
||||||
mask := u32((1 << tail) - 1)
|
mask := u32((1 << tail) - 1)
|
||||||
// clear the extra bits
|
// clear the extra bits
|
||||||
instance.field[bitnslots(instance.size) - 1] = instance.field[bitnslots(instance.size) - 1] & mask
|
instance.field[bitnslots(instance.size) - 1] = instance.field[bitnslots(instance.size) - 1] & mask
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// public functions
|
// public functions
|
||||||
|
|
||||||
// str2bf() converts a string of characters ('0' and '1') to a bit
|
// str2bf() converts a string of characters ('0' and '1') to a bit
|
||||||
// array. Any character different from '0' is treated as '1'.
|
// array. Any character different from '0' is treated as '1'.
|
||||||
|
@ -110,7 +110,7 @@ pub fn (input BitField) string() string {
|
||||||
|
|
||||||
pub fn new(size int) BitField {
|
pub fn new(size int) BitField {
|
||||||
output := BitField{
|
output := BitField{
|
||||||
size: size
|
size: size
|
||||||
//field: *u32(calloc(bitnslots(size) * SLOT_SIZE / 8))
|
//field: *u32(calloc(bitnslots(size) * SLOT_SIZE / 8))
|
||||||
field: [u32(0); bitnslots(size)]
|
field: [u32(0); bitnslots(size)]
|
||||||
}
|
}
|
||||||
|
@ -383,7 +383,7 @@ pub fn (haystack BitField) pos(needle BitField) int {
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
|
|
||||||
// slice() return a sub-array of bits between 'start_bit_nr' (included) and
|
// slice() return a sub-array of bits between 'start_bit_nr' (included) and
|
||||||
// 'end_bit_nr' (excluded)
|
// 'end_bit_nr' (excluded)
|
||||||
|
|
||||||
pub fn (input BitField) slice(_start int, _end int) BitField {
|
pub fn (input BitField) slice(_start int, _end int) BitField {
|
|
@ -1,4 +1,4 @@
|
||||||
import bf
|
import bitfield
|
||||||
|
|
||||||
import rand
|
import rand
|
||||||
import time
|
import time
|
Loading…
Reference in New Issue