digitalmars.D.bugs - [Issue 10650] New: std.bitmanip.FixedBitArray
- d-bugmail puremagic.com (53/53) Jul 15 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10650
http://d.puremagic.com/issues/show_bug.cgi?id=10650
Summary: std.bitmanip.FixedBitArray
Product: D
Version: D2
Platform: All
OS/Version: All
Status: NEW
Severity: enhancement
Priority: P2
Component: Phobos
AssignedTo: nobody puremagic.com
ReportedBy: bearophile_hugs eml.cc
This is a struct with no defined constructor that uses a bit array of
statically known size:
import std.bitmanip: BitArray;
struct Foo {
enum nBits = 1_024;
size_t[nBits / size_t.sizeof] buffer;
BitArray bitSet;
bool isInitialized = false;
void bar() /*pure nothrow*/ {
if (!isInitialized) {
bitSet.init(buffer, nBits);
isInitialized = true;
}
// .......
}
}
void main() {}
A statically known size is useful to reduce pressure a bit on the GC, to
increase cache locality, etc. So I suggest to introduce in std.bitmanip a
simple FixedBitArray based on BitArray that offers a simpler usage for
statically known sizes of bit arrays:
struct FixedBitArray(size_t nBits) {
private size_t[nBits / size_t.sizeof + (nBits % size_t.sizeof) ? 1 : 0]
buffer;
...
}
import std.bitmanip: FixedBitArray;
struct Foo {
FixedBitArray!(1_024) bitSet;
void bar() pure nothrow {
// .......
}
}
void main() {}
An alternative name is "BoundedBitArray" as in the Ada 2012 bounded
collections.
An alternative is to modify BitArray to allow both usages nicely.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jul 15 2013








d-bugmail puremagic.com