MCPcopy Create free account
hub / github.com/agraef/pure-lang / interface_patterns

Method interface_patterns

pure/interpreter.cc:9442–9462  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9440}
9441
9442pure_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
9464pure_expr *interpreter::interface_rules(int32_t f)
9465{

Callers 1

get_interfaceFunction · 0.80

Calls 4

pure_listvFunction · 0.85
sizeMethod · 0.80
findMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected