B1Handle *b1_handle_lookup(B1Peer *peer, uint64_t handle_id) { CRBNode *n; assert(peer); n = c_rbtree_find_node(&peer->handles, handles_compare, &handle_id); if (!n) return NULL; return c_container_of(n, B1Handle, rb); }
B1Node *b1_node_lookup(B1Peer *peer, uint64_t node_id) { CRBNode *n; assert(peer); n = c_rbtree_find_node(&peer->nodes, nodes_compare, &node_id); if (!n) return NULL; return c_container_of(n, B1Node, rb_nodes); }
B1Interface *b1_node_get_interface(B1Node *node, const char *name) { B1Implementation *implementation; CRBNode *n; assert(node); assert(name); n = c_rbtree_find_node(&node->implementations, implementations_compare, name); if (!n) return NULL; implementation = c_container_of(n, B1Implementation, rb); return implementation->interface; }