Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void* load(int id) {
- if (check_if_current_id_was_deleted(id)) {
- cerr << "Current data was deleted and no longer exists!";
- return nullptr;
- }
- FILE * data_file;
- size_t current_data_size = static_cast<size_t>(indexes[id].data_size);
- void* return_data = malloc(current_data_size);
- for (unsigned int i = 0; i < indexes[id].file_names.size(); i++) {
- const char* current_filename = indexes[id].file_names[i].c_str();
- long int start_reading_position = indexes[id].start_reading_positions[i];
- long int end_reading_position = indexes[id].end_reading_positions[i];
- size_t reading_bytes_number = static_cast<size_t>(end_reading_position - start_reading_position);
- data_file = fopen(current_filename, "a+b");
- void* current_read_data = malloc(reading_bytes_number);
- fseek(data_file, start_reading_position, 0);
- fread(current_read_data, 1, reading_bytes_number, data_file);
- memcpy((void*)((char*)return_data + (reading_bytes_number*i)), current_read_data, reading_bytes_number);
- free(current_read_data);
- fclose(data_file);
- }
- return return_data;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement