Sha256: e3b9d1fa0c4616940354b525229123d0bf3d0ee8f2d562a1f0254541572351b3

Contents?: true

Size: 1.99 KB

Versions: 14

Compression:

Stored size: 1.99 KB

Contents

/* Copyright (c) 2008 Derrick Coetzee
 * http://en.literateprograms.org/Red-black_tree_(C)?oldid=7982
 * Small changes by Ryah Dahl
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to permit
 * persons to whom the Software is furnished to do so, subject to the
 * following conditions:
 * 
 * The above copyright notice and this permission notice shall be included
 * in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
 * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
 * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

#ifndef _RBTREE_H_
#define _RBTREE_H_

enum rbtree_node_color { RED, BLACK };

typedef int (*rbtree_compare_func)(void* left_key, void* right_key);

typedef struct rbtree_node_t {
    struct rbtree_node_t* left;    /* private */
    struct rbtree_node_t* right;   /* private */
    struct rbtree_node_t* parent;  /* private */
    enum rbtree_node_color color;  /* private */
    void* key;   /* public */
    void* value; /* public */
} *rbtree_node;

typedef struct rbtree_t {
    rbtree_node root;             /* private */
    rbtree_compare_func compare;  /* private */
} *rbtree;


void rbtree_init(rbtree t, rbtree_compare_func);
void* rbtree_lookup(rbtree t, void* key);
void rbtree_insert(rbtree t, rbtree_node);
/* you must free the returned node */
rbtree_node rbtree_delete(rbtree t, void* key);

#endif

Version data entries

14 entries across 14 versions & 2 rubygems

Version Path
webroar-0.7.0 src/vendor/libebb/rbtree.h
webroar-0.6.1 src/vendor/libebb/rbtree.h
webroar-0.5.0 src/vendor/libebb/rbtree.h
webroar-0.4.0 src/vendor/libebb/rbtree.h
webroar-0.3.1 src/vendor/libebb/rbtree.h
webroar-0.3.0 src/vendor/libebb/rbtree.h
webroar-0.2.6 src/vendor/libebb/rbtree.h
webroar-0.2.5 src/vendor/libebb/rbtree.h
webroar-0.2.4 src/vendor/libebb/rbtree.h
webroar-0.2.3 src/vendor/libebb/rbtree.h
webroar-0.2.2 src/vendor/libebb/rbtree.h
ebb-0.3.0 ext/rbtree.h
ebb-0.3.2 ext/rbtree.h
ebb-0.3.1 ext/rbtree.h