コード例 #1
0
ファイル: tree.c プロジェクト: Kvasshtain/uos-embedded
static DirectNode *
tree_node_lookup (DirectNode *node,
                  void       *key)
{
     int cmp;

     if (!node)
          return NULL;

     cmp = key - node->key;
     if (cmp == 0)
          return node;

     if (cmp < 0 && node->left) {
          return tree_node_lookup (node->left, key);
     }
     else if (cmp > 0 && node->right) {
          return tree_node_lookup (node->right, key);
     }

     return NULL;
}
コード例 #2
0
ファイル: tree.c プロジェクト: Distrotech/DirectFB
void *
direct_tree_lookup( DirectTree *tree,
                    void       *key )
{
     DirectNode    *node;
     unsigned long  fast_key = (unsigned long) key;

     if (fast_key < 128)
          return tree->fast_keys[fast_key];

     node = tree_node_lookup( tree->root, key );

     return node ? node->value : NULL;
}
コード例 #3
0
ファイル: tree.c プロジェクト: Kvasshtain/uos-embedded
void *
direct_tree_lookup( DirectTree *tree,
                    void       *key )
{
     DirectNode *node;

     int fast_key = (unsigned int) key - 32;

     if (fast_key >= 0 && fast_key < 96)
          return tree->fast_keys[fast_key];

     node = tree_node_lookup( tree->root, key );

     return node ? node->value : NULL;
}