diff options
author | Eric Blossom <eb@comsec.com> | 2009-08-15 01:02:15 -0700 |
---|---|---|
committer | Eric Blossom <eb@comsec.com> | 2009-08-15 01:02:15 -0700 |
commit | f8f85dcf9de45cbb42ee46b6f6e3d1e685b0103a (patch) | |
tree | 9dde867c23c7b3593e70b56d496b01a212a71fa2 /gruel/src/lib/pmt/pmt.cc | |
parent | 7ca21b2eb16ed1495001cdd62d58a9d51dd3f436 (diff) |
Additional QA for tuple.
Diffstat (limited to 'gruel/src/lib/pmt/pmt.cc')
-rw-r--r-- | gruel/src/lib/pmt/pmt.cc | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/gruel/src/lib/pmt/pmt.cc b/gruel/src/lib/pmt/pmt.cc index 8bf5b2dea5..20dc4e42c4 100644 --- a/gruel/src/lib/pmt/pmt.cc +++ b/gruel/src/lib/pmt/pmt.cc @@ -673,20 +673,21 @@ pmt_to_tuple(const pmt_t &x) size_t len = pmt_length(x); pmt_tuple *t = new pmt_tuple(len); + pmt_t r = pmt_t(t); if (x->is_vector()){ for (size_t i = 0; i < len; i++) t->_set(i, _vector(x)->ref(i)); - return pmt_t(t); + return r; } if (x->is_pair()){ pmt_t y = x; for (size_t i = 0; i < len; i++){ t->_set(i, pmt_car(y)); - y = pmt_cdr(x); + y = pmt_cdr(y); } - return pmt_t(t); + return r; } throw pmt_wrong_type("pmt_to_tuple", x); @@ -928,6 +929,19 @@ pmt_equal(const pmt_t& x, const pmt_t& y) return true; } + if (x->is_tuple() && y->is_tuple()){ + pmt_tuple *xv = _tuple(x); + pmt_tuple *yv = _tuple(y); + if (xv->length() != yv->length()) + return false; + + for (unsigned i = 0; i < xv->length(); i++) + if (!pmt_equal(xv->_ref(i), yv->_ref(i))) + return false; + + return true; + } + if (x->is_uniform_vector() && y->is_uniform_vector()){ pmt_uniform_vector *xv = _uniform_vector(x); pmt_uniform_vector *yv = _uniform_vector(y); |