mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
bf: add setall(), clearall(), string() and str2bf()
This commit is contained in:
committed by
Alexander Medvednikov
parent
7fa1f423e2
commit
9a3baf5609
36
vlib/bf/bf.v
36
vlib/bf/bf.v
@@ -64,6 +64,29 @@ fn cleartail(instance BitField) {
|
||||
|
||||
// public functions
|
||||
|
||||
pub fn str2bf(input string) BitField {
|
||||
mut output := new(input.len)
|
||||
for i := 0; i < input.len; i++ {
|
||||
if input[i] != 48 {
|
||||
output.setbit(i)
|
||||
}
|
||||
}
|
||||
return output
|
||||
}
|
||||
|
||||
pub fn (input BitField) string() string {
|
||||
mut output := ''
|
||||
for i := 0; i < input.size; i++ {
|
||||
if input.getbit(i) == 1 {
|
||||
output = output + '1'
|
||||
}
|
||||
else {
|
||||
output = output + '0'
|
||||
}
|
||||
}
|
||||
return output
|
||||
}
|
||||
|
||||
pub fn new(size int) BitField {
|
||||
output := BitField{
|
||||
size: size
|
||||
@@ -93,6 +116,19 @@ pub fn (instance mut BitField) clearbit(bitnr int) {
|
||||
bitclear(instance, bitnr)
|
||||
}
|
||||
|
||||
pub fn (instance mut BitField) setall() {
|
||||
for i := 0; i < bitnslots(instance.size); i++ {
|
||||
instance.field[i] = u32(-1)
|
||||
}
|
||||
cleartail(instance)
|
||||
}
|
||||
|
||||
pub fn (instance mut BitField) clearall() {
|
||||
for i := 0; i < bitnslots(instance.size); i++ {
|
||||
instance.field[i] = u32(0)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn (instance mut BitField) togglebit(bitnr int) {
|
||||
if bitnr >= instance.size {return}
|
||||
bittoggle(instance, bitnr)
|
||||
|
||||
Reference in New Issue
Block a user