aboutsummaryrefslogtreecommitdiffstats
path: root/chilbert
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2018-08-19 14:58:14 +0200
committerDavid Robillard <d@drobilla.net>2018-09-29 14:48:47 +0200
commitb5954ef2de4f205108be0cf5a06f88540194bed9 (patch)
tree5d19d1398f73a74405231ea59ccda06bcf510b86 /chilbert
parentbc2836d41e4de1899e5aa649db849befc9dfa109 (diff)
downloadchilbert-b5954ef2de4f205108be0cf5a06f88540194bed9.tar.gz
chilbert-b5954ef2de4f205108be0cf5a06f88540194bed9.tar.bz2
chilbert-b5954ef2de4f205108be0cf5a06f88540194bed9.zip
Tighten up size constraints
Diffstat (limited to 'chilbert')
-rw-r--r--chilbert/GrayCodeRank.hpp19
1 files changed, 15 insertions, 4 deletions
diff --git a/chilbert/GrayCodeRank.hpp b/chilbert/GrayCodeRank.hpp
index adb953a..1e3895f 100644
--- a/chilbert/GrayCodeRank.hpp
+++ b/chilbert/GrayCodeRank.hpp
@@ -21,6 +21,7 @@
#include <cassert>
#include <cstddef>
+#include <numeric>
namespace chilbert {
@@ -37,6 +38,9 @@ compactIndex(const size_t* const ms,
H& h,
HC& hc)
{
+ assert(h.size() >= n * m);
+ assert(hc.size() >= std::accumulate(ms, ms + n, size_t(0)));
+
resetBits(hc);
auto hm = h.mask(0);
@@ -67,6 +71,10 @@ template <class I>
inline void
grayCodeRank(const I& mask, const I& gi, const size_t n, I& r)
{
+ assert(mask.size() == n);
+ assert(gi.size() == n);
+ assert(r.size() == n);
+
r.reset();
auto mi = mask.begin();
@@ -93,13 +101,15 @@ grayCodeRankInv(const I& mask,
I& g,
I& gi)
{
+ assert(mask.size() == n);
+ assert(ptrn.size() == n);
+ assert(r.size() == n);
+ assert(g.size() == n);
+ assert(gi.size() == n);
+
g.reset();
gi.reset();
- assert(ptrn.size() == mask.size());
- assert(g.size() == mask.size());
- assert(gi.size() == mask.size());
-
auto m = mask.mask(n - 1);
auto ri = r.begin(b - 1);
@@ -145,6 +155,7 @@ extractMask(const size_t* const ms,
size_t& b)
{
assert(0 <= d && d < n);
+ assert(mask.size() == n);
mask.reset();
b = 0;