12
12
You should have received a copy of the GNU General Public License
13
13
along with this program; if not, write to the Free Software
14
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
14
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
17
17
get_ptr_compare(len) returns a pointer to a optimal byte-compare function
19
19
The bytes are compare as unsigned chars.
22
#include "mysys_priv.h"
23
#include <storage/myisam/myisampack.h>
25
static int ptr_compare(size_t *compare_length, uchar **a, uchar **b);
26
static int ptr_compare_0(size_t *compare_length, uchar **a, uchar **b);
27
static int ptr_compare_1(size_t *compare_length, uchar **a, uchar **b);
28
static int ptr_compare_2(size_t *compare_length, uchar **a, uchar **b);
29
static int ptr_compare_3(size_t *compare_length, uchar **a, uchar **b);
23
#include "drizzled/internal/my_sys.h"
27
#include "plugin/myisam/myisampack.h"
34
static int ptr_compare(size_t *compare_length, unsigned char **a, unsigned char **b);
35
static int ptr_compare_0(size_t *compare_length, unsigned char **a, unsigned char **b);
36
static int ptr_compare_1(size_t *compare_length, unsigned char **a, unsigned char **b);
37
static int ptr_compare_2(size_t *compare_length, unsigned char **a, unsigned char **b);
38
static int ptr_compare_3(size_t *compare_length, unsigned char **a, unsigned char **b);
31
40
/* Get a pointer to a optimal byte-compare function for a given size */
52
61
#define cmp(N) if (first[N] != last[N]) return (int) first[N] - (int) last[N]
54
static int ptr_compare(size_t *compare_length, uchar **a, uchar **b)
63
static int ptr_compare(size_t *compare_length, unsigned char **a, unsigned char **b)
56
65
register int length= *compare_length;
57
register uchar *first,*last;
66
register unsigned char *first,*last;
59
68
first= *a; last= *b;
69
static int ptr_compare_0(size_t *compare_length,uchar **a, uchar **b)
78
static int ptr_compare_0(size_t *compare_length,unsigned char **a, unsigned char **b)
71
80
register int length= *compare_length;
72
register uchar *first,*last;
81
register unsigned char *first,*last;
74
83
first= *a; last= *b;
90
static int ptr_compare_1(size_t *compare_length,uchar **a, uchar **b)
99
static int ptr_compare_1(size_t *compare_length,unsigned char **a, unsigned char **b)
92
101
register int length= *compare_length-1;
93
register uchar *first,*last;
102
register unsigned char *first,*last;
95
104
first= *a+1; last= *b+1;
111
static int ptr_compare_2(size_t *compare_length,uchar **a, uchar **b)
120
static int ptr_compare_2(size_t *compare_length,unsigned char **a, unsigned char **b)
113
122
register int length= *compare_length-2;
114
register uchar *first,*last;
123
register unsigned char *first,*last;
116
125
first= *a +2 ; last= *b +2;
133
static int ptr_compare_3(size_t *compare_length,uchar **a, uchar **b)
142
static int ptr_compare_3(size_t *compare_length,unsigned char **a, unsigned char **b)
135
144
register int length= *compare_length-3;
136
register uchar *first,*last;
145
register unsigned char *first,*last;
138
147
first= *a +3 ; last= *b +3;
165
174
case 4: mi_int4store(buff,pos); break;
166
175
case 3: mi_int3store(buff,pos); break;
167
176
case 2: mi_int2store(buff,pos); break;
168
case 1: buff[0]= (uchar) pos; break;
177
case 1: buff[0]= (unsigned char) pos; break;
169
178
default: assert(0);
174
my_off_t my_get_ptr(uchar *ptr, size_t pack_length)
183
my_off_t my_get_ptr(unsigned char *ptr, size_t pack_length)
177
186
switch (pack_length) {
184
193
case 4: pos= (my_off_t) mi_uint4korr(ptr); break;
185
194
case 3: pos= (my_off_t) mi_uint3korr(ptr); break;
186
195
case 2: pos= (my_off_t) mi_uint2korr(ptr); break;
187
case 1: pos= (my_off_t) *(uchar*) ptr; break;
196
case 1: pos= (my_off_t) *(unsigned char*) ptr; break;
188
197
default: assert(0); return 0;
202
} /* namespace internal */
203
} /* namespace drizzled */