int add_virtual_subscriptions(rl_subscription_t *ss, flat_list_t *flat, int nesting_level) { flat_list_t *e; /* xcap_query_t xcap; */ virtual_subscription_t *vs; int res = 0; str s; /* TODO: create virtual subscriptions using Accept headers * ... (for remote subscriptions) */ /* go through flat list and find/create virtual subscriptions */ e = flat; while (e) { s.s = e->uri; if (s.s) s.len = strlen(s.s); else s.len = 0; res = vs_create(&s, &vs, e->names, ss, nesting_level); if (res != RES_OK) { /* FIXME: remove already added members? */ return res; } ptr_vector_add(&ss->vs, vs); e = e->next; } return RES_OK; }
VarBundle *vs_put(VarScopeStack *vs, char *ident, LLVMValueRef val, EagleComplexType *type, int lineno) { VarBundle *vb = vs_create(ident, NULL, type, val, lineno); VarScope *s = vs->scope; hst_put(&s->table, ident, vb, NULL, NULL); pool_add(&vs->pool, vb); return vb; }
VarBundle *vs_put_in_module(VarScopeStack *vs, char *ident, char *module, LLVMValueRef val, EagleComplexType *type) { VarBundle *vb = vs_create(ident, module, type, val, -1); Hashtable *mod = hst_get(&vs->modules, module, NULL, NULL); if(!mod) { mod = malloc(sizeof(Hashtable)); *mod = hst_create(); mod->duplicate_keys = 1; hst_put(&vs->modules, module, mod, NULL, NULL); } hst_put(mod, ident, vb, NULL, NULL); pool_add(&vs->pool, vb); return vb; }