Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.18 KB | None | 0 0
  1. #include <libpmemobj++/experimental/array.hpp>
  2. #include <libpmemobj++/experimental/slice.hpp>
  3. #include <libpmemobj++/make_persistent.hpp>
  4. #include <libpmemobj++/pool.hpp>
  5. #include <libpmemobj++/transaction.hpp>
  6.  
  7.  
  8. #define MAX_ROW_ALLOC 1000U
  9. #define MAX_ROWS 100U
  10.  
  11. using arr_type_in = pmem::obj::experimental::array<char, MAX_ROW_ALLOC>;
  12. using pptr_arr_type_in = pmem::obj::persistent_ptr<arr_type_in>;
  13.  
  14. using arr_type_out = pmem::obj::experimental::array<pptr_arr_type_in, MAX_ROWS>;
  15. using pptr_arr_type_out = pmem::obj::persistent_ptr<arr_type_out>;
  16.  
  17.  
  18.  
  19. struct root {
  20.     pptr_arr_type_out p;
  21. };
  22.  
  23. int
  24. main(int argc, char *argv[])
  25. {
  26.     START();
  27.  
  28.     if (argc < 2) {
  29.         std::cerr << "usage: " << argv[0] << " file-name " << std::endl;
  30.         return 1;
  31.     }
  32.  
  33.     auto path = argv[1];
  34.     auto pop = pmem::obj::pool<root>::create(
  35.         path, "ArrayTest", PMEMOBJ_MIN_POOL, S_IWUSR | S_IRUSR);
  36.     auto r = pop.root();
  37.  
  38.     pmem::obj::transaction::run(pop, [&] {
  39.             r->p = pmem::obj::make_persistent<arr_type_out>();
  40.  
  41.             arr_type_out &arr_out = *(r->p);
  42.             for (unsigned i = 0; i < MAX_ROWS; ++i)
  43.                 arr_out[i] = pmem::obj::make_persistent<arr_type_in>();
  44.         });
  45.    
  46.     pop.close();
  47.  
  48.     return 0;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement