www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 6697] New: std.bitmanip.FastBitMatrix

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6697

           Summary: std.bitmanip.FastBitMatrix
           Product: D
           Version: D2
          Platform: Other
        OS/Version: Windows
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: Phobos
        AssignedTo: nobody puremagic.com
        ReportedBy: bearophile_hugs eml.cc



Created an attachment (id=1025)
First version of the bit matrix

I suggest to add a fast 2D matrix of bits to Phobos (probably in std_bitmanip):
- It is a common enough data structure, useful for simple implementations of
various games, cellular automata, 2D sets, and more.
- Despite being a simple data structure, it's not obvious, especially if you
want it to be fast. A naive implementation that uses a BitArray is not fast
enough.
- It doesn't need to be too much general. A 3D bit array is in my experience
quite less commonly useful, and the implementation is different enough.


In attach there is an efficient implementation, that I have used it for several
purposes. Some notes:
- It wastes a bit of RAM to be faster.
- I have named it FastBitMatrix because "Fast" helps remember this 2D matrix
wastes some memory to be as fast as possible.
- It uses two little commonly useful functions that in my opinion are better
moved in std.math.
- Currently it allocates memory with a normal dynamic array. With a small
change it's usable with smarter/faster allocators.
- There are ddocs and unittests for all the functions (but the unittests of
FastBitMatrix don't test its contracts).
- I have not tried it on 64 bit systems.
- Optional are a toString/writeTo method, a copy method, postblit, and other
constructors.
- Currently it's just a struct with value semantics.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Sep 19 2011
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6697




Created an attachment (id=1026)
Version 1.1 of the bit matrix

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Sep 19 2011
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6697




Created an attachment (id=1027)
Version 1.2 of the bit matrix

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Sep 19 2011
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6697


Dmitry Olshansky <dmitry.olsh gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |dmitry.olsh gmail.com



06:31:53 PDT ---
Why not finalize 64-bit and make a pull request for it?

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 30 2012