Next: The Root Node Data Placing Method, Previous: The Data Comparison Method, Up: Bitmapped B-tree Fixed Size Data Arrays [Index]
The method moves data from some location to another. Its signature is:
int (*) (void *, void *, unsigned);
The first argument is the target location, the second the source location, the third the item count to be moved.
13 byte string data items example:
static int
move(void *target, void *source, unsigned count)
{
memmove(target, source, count * 13);
return 0;
}
Unsigned long data items example:
static int
move(void *target, void *source, unsigned count)
{
memmove(target, source, count * sizeof(unsigned long));
return 0;
}
Same unsigned long data items example, no memmove:
static int
move(void *target, void *source, unsigned count)
{
unsigned long *s, *t;
s = source;
t = target;
if (count ^ 1) {
if (t < s) {
for (; count; count--) {
*t++ = *s++;
}
} else {
s += count;
if (t < s) {
t += count;
for (; count; count--) {
*--t = *--s;
}
} else {
s -= count;
for (; count; count--) {
*t++ = *s++;
}
}
}
} else {
*t++ = *s++;
}
return 0;
}