JRB jrb_insert_gen(JRB tree, Jval key, Jval val, int (*func)(Jval, Jval)) { int fnd; return jrb_insert_b(jrb_find_gte_gen(tree, key, func, &fnd), key, val); }
JRB jrb_insert_vptr(JRB tree, void *vkey, Jval val) { Jval k; int fnd; k.v = vkey; return jrb_insert_b(jrb_find_gte_vptr(tree, vkey, &fnd), k, val); }
JRB jrb_insert_int(JRB tree, int ikey, Jval val) { Jval k; int fnd; k.i = ikey; return jrb_insert_b(jrb_find_gte_int(tree, ikey, &fnd), k, val); }
JRB jrb_insert_str(JRB tree, char *key, Jval val) { Jval k; int fnd; k.s = key; return jrb_insert_b(jrb_find_gte_str(tree, key, &fnd), k, val); }
JRB jrb_insert_dbl(JRB tree, double dkey, Jval val) { Jval k; int fnd; k.d = dkey; return jrb_insert_b(jrb_find_gte_dbl(tree, dkey, &fnd), k, val); }
static JRB jrb_insert_a(JRB nd, Jval key, Jval val) { return jrb_insert_b(nd->flink, key, val); }