Fix compilation

This commit is contained in:
Stephan Hadinger 2021-07-03 10:54:14 +02:00
parent 3e2cd4f67d
commit 4e57083f52
2 changed files with 28 additions and 28 deletions

View File

@ -12,7 +12,7 @@
// the first 4 bytes are a pointer to a string
// returns 0..total_elements-1 or -1 if not found
int32_t bin_search(const char * needle, const void * table, size_t elt_size, size_t total_elements) {
int32_t bin_search_ctypes(const char * needle, const void * table, size_t elt_size, size_t total_elements) {
int32_t low = 0;
int32_t high = total_elements - 1;
int32_t mid = (low + high) / 2;
@ -109,7 +109,7 @@ int be_ctypes_init(bvm *vm) {
// berry_log_C("be_ctypes_init> init called");
// look for class definition
int32_t class_idx = bin_search(class_name, &be_ctypes_classes->classes[0], sizeof(be_ctypes_class_t), be_ctypes_classes->size);
int32_t class_idx = bin_search_ctypes(class_name, &be_ctypes_classes->classes[0], sizeof(be_ctypes_class_t), be_ctypes_classes->size);
if (class_idx >= 0) {
// found
const be_ctypes_structure_t * definitions = be_ctypes_classes->classes[class_idx].definitions;
@ -139,7 +139,7 @@ int be_ctypes_member(bvm *vm) {
const char *name = be_tostring(vm, 2);
// look for member
int32_t member_idx = bin_search(name, &definitions->items[0], sizeof(be_ctypes_structure_item_t), definitions->size_elt);
int32_t member_idx = bin_search_ctypes(name, &definitions->items[0], sizeof(be_ctypes_structure_item_t), definitions->size_elt);
if (member_idx >= 0) {
const be_ctypes_structure_item_t *member = &definitions->items[member_idx];
// berry_log_C("member found bytes=%i, bits=%i, len_bits=%i, type=%i", member->offset_bytes, member->offset_bits, member->len_bits, member->type);
@ -193,7 +193,7 @@ int be_ctypes_setmember(bvm *vm) {
const char *name = be_tostring(vm, 2);
// look for member
int32_t member_idx = bin_search(name, &definitions->items[0], sizeof(be_ctypes_structure_item_t), definitions->size_elt);
int32_t member_idx = bin_search_ctypes(name, &definitions->items[0], sizeof(be_ctypes_structure_item_t), definitions->size_elt);
if (member_idx >= 0) {
const be_ctypes_structure_item_t *member = &definitions->items[member_idx];
// berry_log_C("member found bytes=%i, bits=%i, len_bits=%i, type=%i", member->offset_bytes, member->offset_bits, member->len_bits, member->type);

View File

@ -176,30 +176,30 @@ extern "C" {
// the first 4 bytes are a pointer to a string
// returns 0..total_elements-1 or -1 if not found
extern "C" {
extern int32_t bin_search(const char * needle, const void * table, size_t elt_size, size_t total_elements);
// int32_t bin_search(const char * needle, const void * table, size_t elt_size, size_t total_elements) {
// int32_t low = 0;
// int32_t high = total_elements - 1;
// int32_t mid = (low + high) / 2;
// // start a dissect
// while (low <= high) {
// const char * elt = *(const char **) ( ((uint8_t*)table) + mid * elt_size );
// int32_t comp = strcmp(needle, elt);
// if (comp < 0) {
// high = mid - 1;
// } else if (comp > 0) {
// low = mid + 1;
// } else {
// break;
// }
// mid = (low + high) / 2;
// }
// if (low <= high) {
// return mid;
// } else {
// return -1;
// }
// }
int32_t bin_search(const char * needle, const void * table, size_t elt_size, size_t total_elements);
int32_t bin_search(const char * needle, const void * table, size_t elt_size, size_t total_elements) {
int32_t low = 0;
int32_t high = total_elements - 1;
int32_t mid = (low + high) / 2;
// start a dissect
while (low <= high) {
const char * elt = *(const char **) ( ((uint8_t*)table) + mid * elt_size );
int32_t comp = strcmp(needle, elt);
if (comp < 0) {
high = mid - 1;
} else if (comp > 0) {
low = mid + 1;
} else {
break;
}
mid = (low + high) / 2;
}
if (low <= high) {
return mid;
} else {
return -1;
}
}
}
/*********************************************************************************************\