25 #include <drizzled/internal/my_sys.h>
26 #include <drizzled/internal/m_string.h>
35 void radixsort_for_str_ptr(
unsigned char **base, uint32_t number_of_elements,
size_t size_of_element,
unsigned char **buffer)
37 unsigned char **end,**ptr,**buffer_ptr;
38 uint32_t *count_ptr,*count_end,count[256];
41 end=base+number_of_elements; count_end=count+256;
42 for (pass=(
int) size_of_element-1 ; pass >= 0 ; pass--)
44 memset(count, 0,
sizeof(uint32_t)*256);
45 for (ptr= base ; ptr < end ; ptr++)
46 count[ptr[0][pass]]++;
47 if (count[0] == number_of_elements)
49 for (count_ptr=count+1 ; count_ptr < count_end ; count_ptr++)
51 if (*count_ptr == number_of_elements)
53 (*count_ptr)+= *(count_ptr-1);
55 for (ptr= end ; ptr-- != base ;)
56 buffer[--count[ptr[0][pass]]]= *ptr;
57 for (ptr=base, buffer_ptr=buffer ; ptr < end ;)
58 (*ptr++) = *buffer_ptr++;