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);
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);