~eday/drizzle/eday-dev

« back to all changes in this revision

Viewing changes to drizzled/my_tree.cc

  • Committer: Eric Day
  • Date: 2010-01-07 20:02:38 UTC
  • mfrom: (971.3.291 staging)
  • Revision ID: eday@oddments.org-20100107200238-uqw8v6kv9pl7nny5
Merged trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
53
53
    (*tree->compare)(custom_arg, key, ELEMENT_KEY(tree,element))
54
54
*/
55
55
 
56
 
#include "mysys/mysys_priv.h"
57
 
#include <mystrings/m_string.h>
58
 
#include <mysys/my_tree.h>
 
56
#include "config.h"
 
57
 
 
58
#include "drizzled/my_tree.h"
 
59
#include "drizzled/internal/my_sys.h"
 
60
#include "drizzled/internal/m_string.h"
 
61
#include "drizzled/memory/root.h"
 
62
 
 
63
using namespace drizzled;
59
64
 
60
65
#define BLACK           1
61
66
#define RED             0
62
67
#define DEFAULT_ALLOC_SIZE 8192
63
68
#define DEFAULT_ALIGN_SIZE 8192
64
69
 
 
70
#define ELEMENT_KEY(tree,element)\
 
71
(tree->offset_to_key ? (void*)((unsigned char*) element+tree->offset_to_key) :\
 
72
                        *((void**) (element+1)))
 
73
#define ELEMENT_CHILD(element, offs) (*(TREE_ELEMENT**)((char*)element + offs))
 
74
 
65
75
static void delete_tree_element(TREE *,TREE_ELEMENT *);
66
76
static int tree_walk_left_root_right(TREE *,TREE_ELEMENT *,
67
77
                                     tree_walk_action,void *);
115
125
  }
116
126
  if (! (tree->with_delete= with_delete))
117
127
  {
118
 
    init_alloc_root(&tree->mem_root, default_alloc_size, 0);
 
128
    init_alloc_root(&tree->mem_root, default_alloc_size);
119
129
    tree->mem_root.min_malloc= (sizeof(TREE_ELEMENT)+tree->size_of_element);
120
130
  }
121
131
}
152
162
void reset_tree(TREE* tree)
153
163
{
154
164
  /* do not free mem_root, just mark blocks as free */
155
 
  free_tree(tree, MYF(MY_MARK_BLOCKS_FREE));
 
165
  free_tree(tree, MYF(memory::MARK_BLOCKS_FREE));
156
166
}
157
167
 
158
168
 
511
521
    if ((error=tree_walk_left_root_right(tree,element->left,action,
512
522
                                          argument)) == 0 &&
513
523
        (error=(*action)(ELEMENT_KEY(tree,element),
514
 
                          (element_count) element->count,
 
524
                          element->count,
515
525
                          argument)) == 0)
516
526
      error=tree_walk_left_root_right(tree,element->right,action,argument);
517
527
    return error;
528
538
    if ((error=tree_walk_right_root_left(tree,element->right,action,
529
539
                                          argument)) == 0 &&
530
540
        (error=(*action)(ELEMENT_KEY(tree,element),
531
 
                          (element_count) element->count,
 
541
                          element->count,
532
542
                          argument)) == 0)
533
543
     error=tree_walk_right_root_left(tree,element->left,action,argument);
534
544
    return error;