Advertisement
TwITe

Untitled

Oct 14th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.08 KB | None | 0 0
  1. void* load(int id) {
  2.     if (check_if_current_id_was_deleted(id)) {
  3.         cerr << "Current data was deleted and no longer exists!";
  4.         return nullptr;
  5.     }
  6.     FILE * data_file;
  7.     size_t current_data_size = static_cast<size_t>(indexes[id].data_size);
  8.     void* return_data = malloc(current_data_size);
  9.     for (unsigned int i = 0; i < indexes[id].file_names.size(); i++) {
  10.         const char* current_filename = indexes[id].file_names[i].c_str();
  11.         long int start_reading_position = indexes[id].start_reading_positions[i];
  12.         long int end_reading_position = indexes[id].end_reading_positions[i];
  13.         size_t reading_bytes_number = static_cast<size_t>(end_reading_position - start_reading_position);
  14.  
  15.         data_file = fopen(current_filename, "a+b");
  16.         void* current_read_data = malloc(reading_bytes_number);
  17.  
  18.         fseek(data_file, start_reading_position, 0);
  19.         fread(current_read_data, 1, reading_bytes_number, data_file);
  20.  
  21.         memcpy((void*)((char*)return_data + (reading_bytes_number*i)), current_read_data, reading_bytes_number);
  22.  
  23.         free(current_read_data);
  24.  
  25.         fclose(data_file);
  26.     }
  27.     return return_data;
  28. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement