| 9440 | } |
| 9441 | |
| 9442 | pure_expr *interpreter::interface_patterns(int32_t f) |
| 9443 | { |
| 9444 | env::iterator jt = typeenv.find(f); |
| 9445 | list<pure_expr*> xs; |
| 9446 | if (jt != typeenv.end() && jt->second.t == env_info::fun && |
| 9447 | jt->second.xs) { |
| 9448 | env_info& info = jt->second; |
| 9449 | for (exprl::iterator it = info.xs->begin(), end = info.xs->end(); |
| 9450 | it!=end; ++it) { |
| 9451 | expr x = vsubst(*it); |
| 9452 | xs.push_back(const_value(x, true)); |
| 9453 | } |
| 9454 | } |
| 9455 | size_t n = xs.size(); |
| 9456 | pure_expr **xv = new pure_expr*[n]; |
| 9457 | list<pure_expr*>::iterator x = xs.begin(), end = xs.end(); |
| 9458 | for (size_t i = 0; x != end; ++x) xv[i++] = *x; |
| 9459 | pure_expr *y = pure_listv(n, xv); |
| 9460 | delete[] xv; |
| 9461 | return y; |
| 9462 | } |
| 9463 | |
| 9464 | pure_expr *interpreter::interface_rules(int32_t f) |
| 9465 | { |
no test coverage detected