Advertisement
TwITe

Untitled

Nov 11th, 2017
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.13 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <unordered_map>
  5. #include <vector>
  6. #include <cstring>
  7. #include <cassert>
  8. using namespace std;
  9.  
  10. struct index_data {
  11.     vector <string> file_names;
  12.     vector <long long> start_reading_positions;
  13.     vector <long long> end_reading_positions;
  14.     int data_size;
  15.     bool deleted;
  16. };
  17.  
  18. unordered_map <int,index_data> indexes;
  19.  
  20. void write_function(void* data, size_t &current_data_size, FILE* data_file) {
  21.     fwrite(data, 1, current_data_size, data_file);
  22. }
  23.  
  24. bool write_map_to_file(int id) {
  25.     FILE* data_file;
  26.     string current_file = "/home/twite/CLionProjects/Test/map.txt";
  27.     int last_written_byte_position = 0;
  28.     data_file = fopen(current_file.c_str(), "a+b");
  29.     size_t current_data_size = 0;
  30.     for (const auto &i : indexes[id].file_names) {
  31.         current_data_size += i.size();
  32.     }
  33.     write_function(static_cast<void*>(indexes[id].file_names.data()), current_data_size, data_file);
  34.     current_data_size = sizeof(long long) * indexes[id].start_reading_positions.size();
  35.     write_function(static_cast<void*>(indexes[id].start_reading_positions.data()), current_data_size, data_file);
  36.     current_data_size = sizeof(long long) * indexes[id].end_reading_positions.size();
  37.     write_function(static_cast<void*>(indexes[id].end_reading_positions.data()), current_data_size, data_file);
  38.     current_data_size = sizeof(int);
  39.     write_function(static_cast<void*>(&indexes[id].data_size), current_data_size, data_file);
  40.     current_data_size = sizeof(bool);
  41.     write_function(static_cast<void*>(&indexes[id].deleted), current_data_size, data_file);
  42.     fclose(data_file);
  43.     return true;
  44. }
  45.  
  46. bool load_map_from_file() {
  47.     FILE *data_file;
  48.  
  49.     return true;
  50. }
  51.  
  52. int main() {
  53.     indexes[1].file_names.push_back("test.txt");
  54.     indexes[1].start_reading_positions.push_back(0);
  55.     indexes[1].end_reading_positions.push_back(10);
  56.     indexes[1].data_size = 10;
  57.     indexes[1].deleted = false;
  58.     assert(write_map_to_file(1) == true);
  59.     indexes[1].file_names;
  60.     assert(load_map_from_file(1) == true);
  61.     //load_map_from_file();
  62.     return 0;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement