From eb93267fa9af5632d1cff5cf221b3ea2916c69d0 Mon Sep 17 00:00:00 2001 From: Povilas Kanapickas Date: Sat, 25 May 2019 11:15:40 +0300 Subject: [PATCH] genesys: Use std::vector instead of custom vector implementation --- backend/genesys_gl843.cc | 17 +++---- backend/genesys_low.cc | 97 ---------------------------------------- backend/genesys_low.h | 17 ------- 3 files changed, 7 insertions(+), 124 deletions(-) diff --git a/backend/genesys_gl843.cc b/backend/genesys_gl843.cc index d1242c942..71542a68a 100644 --- a/backend/genesys_gl843.cc +++ b/backend/genesys_gl843.cc @@ -46,6 +46,7 @@ #include "genesys_gl843.h" +#include #include /**************************************************************************** @@ -3189,10 +3190,9 @@ gl843_offset_calibration (Genesys_Device * dev) pass = 0; - // FIXME: we'll leak debug image if we encounter errors below - Genesys_Vector debug_image = sanei_gl_vector_create(1); + std::vector debug_image; size_t debug_image_lines = 0; - Genesys_Vector debug_image_info = sanei_gl_vector_create(1); + std::string debug_image_info; /* loop until acceptable level */ while ((pass < 32) @@ -3223,8 +3223,8 @@ gl843_offset_calibration (Genesys_Device * dev) snprintf(title, 100, "lines: %d pixels_per_line: %d offsets[0..2]: %d %d %d\n", lines, pixels, dev->frontend.offset[0], dev->frontend.offset[1], dev->frontend.offset[2]); - sanei_gl_vector_append(&debug_image_info, title, strlen(title)); - sanei_gl_vector_append(&debug_image, second_line.data(), total_size); + debug_image_info += title; + std::copy(second_line.begin(), second_line.end(), std::back_inserter(debug_image)); debug_image_lines += lines; } @@ -3253,14 +3253,11 @@ gl843_offset_calibration (Genesys_Device * dev) if (DBG_LEVEL >= DBG_data) { sanei_genesys_write_file("gl843_offset_all_desc.txt", - (uint8_t*)debug_image_info.data, debug_image_info.size); + (uint8_t*) debug_image_info.data(), debug_image_info.size()); sanei_genesys_write_pnm_file("gl843_offset_all.pnm", - (uint8_t*)debug_image.data, bpp, channels, pixels, debug_image_lines); + debug_image.data(), bpp, channels, pixels, debug_image_lines); } - sanei_gl_vector_destroy(&debug_image); - sanei_gl_vector_destroy(&debug_image_info); - DBG(DBG_info, "%s: offset=(%d,%d,%d)\n", __func__, dev->frontend.offset[0], dev->frontend.offset[1], dev->frontend.offset[2]); diff --git a/backend/genesys_low.cc b/backend/genesys_low.cc index 455a8bbde..0c5c48e66 100644 --- a/backend/genesys_low.cc +++ b/backend/genesys_low.cc @@ -2253,103 +2253,6 @@ void sanei_genesys_sleep_ms(unsigned int milliseconds) sanei_genesys_usleep(milliseconds * 1000); } -Genesys_Vector sanei_gl_vector_create(size_t element_size) -{ - Genesys_Vector ret; - ret.data = NULL; - ret.size = 0; - ret.capacity = 0; - ret.element_size = element_size; - return ret; -} - -void sanei_gl_vector_reserve(Genesys_Vector* v, size_t count) -{ - if (count <= v->capacity) - return; - - char* new_data = (char *) malloc(count * v->element_size); - if (v->data != NULL) - { - memcpy(new_data, v->data, v->size * v->element_size); - free(v->data); - } - v->data = new_data; - v->capacity = count; -} - -static void sanei_gl_vector_grow(Genesys_Vector* v, size_t min_size) -{ - size_t new_capacity = v->capacity * 2; - - if (new_capacity < 16) - new_capacity = 16; - - if (new_capacity < min_size) - new_capacity = min_size; - - sanei_gl_vector_reserve(v, new_capacity); -} - -static void* sanei_gl_vector_get_element_nocheck(Genesys_Vector* v, size_t i) -{ - return v->data + v->element_size * i; -} - -void sanei_gl_vector_resize(Genesys_Vector* v, size_t count) -{ - if (count <= v->size) - { - v->size = count; - return; - } - - if (count > v->capacity) - sanei_gl_vector_reserve(v, count); - - memset(sanei_gl_vector_get_element(v, v->size), 0, (count - v->size) * v->element_size); - v->size = count; -} - -void sanei_gl_vector_append(Genesys_Vector* v, void* data, size_t count) -{ - if (v->size + count > v->capacity) - sanei_gl_vector_grow(v, count); - - memcpy(sanei_gl_vector_get_element_nocheck(v, v->size), data, count * v->element_size); - v->size = v->size + count; -} - -void sanei_gl_vector_append_zero(Genesys_Vector* v, size_t count) -{ - if (v->size + count > v->capacity) - sanei_gl_vector_grow(v, count); - - memset(sanei_gl_vector_get_element_nocheck(v, v->size), 0, count * v->element_size); - v->size = v->size + count; -} - -void* sanei_gl_vector_get_element(Genesys_Vector* v, size_t i) -{ - assert(v->data != NULL); - assert(i < v->size); - return sanei_gl_vector_get_element_nocheck(v, i); -} - -void sanei_gl_vector_set_element(Genesys_Vector* v, void* data, size_t i) -{ - memcpy(sanei_gl_vector_get_element(v, i), data, v->element_size); -} - -void sanei_gl_vector_destroy(Genesys_Vector* v) -{ - if (v->data != NULL) - free(v->data); - v->size = 0; - v->capacity = 0; - v->element_size = 0; -} - static std::unique_ptr>> s_functions_run_at_backend_exit; void add_function_to_run_at_backend_exit(std::function function) diff --git a/backend/genesys_low.h b/backend/genesys_low.h index aafe6dcc5..8401077cc 100644 --- a/backend/genesys_low.h +++ b/backend/genesys_low.h @@ -1339,23 +1339,6 @@ extern void sanei_genesys_usleep(unsigned int useconds); // same as sanei_genesys_usleep just that the duration is in milliseconds extern void sanei_genesys_sleep_ms(unsigned int milliseconds); -typedef struct Genesys_Vector -{ - char* data; - size_t capacity; // capacity in elements - size_t size; // size in elements - size_t element_size; -} Genesys_Vector; - -extern Genesys_Vector sanei_gl_vector_create(size_t element_size); -extern void sanei_gl_vector_reserve(Genesys_Vector* v, size_t count); -extern void sanei_gl_vector_resize(Genesys_Vector* v, size_t count); -extern void sanei_gl_vector_append(Genesys_Vector* v, void* data, size_t count); -extern void sanei_gl_vector_append_zero(Genesys_Vector* v, size_t count); -extern void* sanei_gl_vector_get_element(Genesys_Vector* v, size_t i); -extern void sanei_gl_vector_set_element(Genesys_Vector* v, void* data, size_t i); -extern void sanei_gl_vector_destroy(Genesys_Vector* v); - class SaneException : std::exception { public: SaneException(SANE_Status status) : status_(status) {}