]> granicus.if.org Git - re2c/commitdiff
Constified comparison predicate in lookup table.
authorUlya Trofimovich <skvadrik@gmail.com>
Thu, 27 Oct 2016 13:56:06 +0000 (14:56 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Thu, 27 Oct 2016 13:56:06 +0000 (14:56 +0100)
re2c/src/ir/dfa/tag_indexing.cc
re2c/src/ir/tag.cc
re2c/src/util/lookup.h

index b154d30a49ee909696db2262c4022d90d0db79dc..916a26cf28b7a0bbc684b3141c2f5644245f864c 100644 (file)
@@ -63,8 +63,7 @@ void doindex(cmd_t **pcmd, lookup_t<cmd_t*> &index)
 
        // find in or add to index
        const uint32_t hash = cmd_t::hash(cmd);
-       cmp_t<cmd_t> cmp;
-       size_t idx = index.find_with(hash, cmd, cmp);
+       size_t idx = index.find_with(hash, cmd, cmp_t<cmd_t>());
        if (idx == lookup_t<cmd_t*>::NIL) {
                idx = index.push(hash, cmd);
        }
index 5e665fea94076cc9be485229421e882c44d4f28b..391761ed5761b2e31c59a0a89751ed7f18acbc27 100644 (file)
@@ -15,7 +15,7 @@ struct eqtag_t
        size_t ntags;
 
        explicit eqtag_t(size_t n): ntags(n) {}
-       inline tagver_t operator()(const tagver_t *x, const tagver_t *y)
+       inline tagver_t operator()(const tagver_t *x, const tagver_t *y) const
        {
                return memcmp(x, y, ntags * sizeof(tagver_t)) == 0;
        }
@@ -72,8 +72,7 @@ size_t Tagpool::insert(const tagver_t *tags)
        const size_t size = ntags * sizeof(tagver_t);
        const uint32_t hash = hash32(0, tags, size);
 
-       eqtag_t eq(ntags);
-       const size_t idx = lookup.find_with(hash, tags, eq);
+       const size_t idx = lookup.find_with(hash, tags, eqtag_t(ntags));
        if (idx != taglookup_t::NIL) {
                return idx;
        }
index 10676b975120323c56766d8d455dc7ef33768fe3..70091d52cd8058d25833e683089ffb2b8c861aad 100644 (file)
@@ -39,7 +39,7 @@ public:
        const data_t& operator[](size_t idx) const;
        size_t push(hash_t h, const data_t &data);
        template<typename pred_t>
-               size_t find_with(hash_t h, const data_t &data, pred_t &pred) const;
+               size_t find_with(hash_t h, const data_t &data, const pred_t &pred) const;
 
 private:
        size_t head(hash_t) const;
@@ -90,7 +90,7 @@ size_t lookup_t<data_t, hash_t>::push(hash_t h, const data_t &data)
 
 template<typename data_t, typename hash_t>
 template<typename pred_t>
-size_t lookup_t<data_t, hash_t>::find_with(hash_t h, const data_t &data, pred_t &pred) const
+size_t lookup_t<data_t, hash_t>::find_with(hash_t h, const data_t &data, const pred_t &pred) const
 {
        for (size_t i = head(h); i != NIL;) {
                const elem_t &e = elems[i];