heap.hpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #ifndef __HEAP_HPP__
  2. #define __HEAP_HPP__
  3. #include "types.hpp"
  4. #include "mpcio.hpp"
  5. #include "coroutine.hpp"
  6. #include "options.hpp"
  7. #include "mpcops.hpp"
  8. class HEAP {
  9. private:
  10. Duoram<RegAS> *oram;
  11. // RegXS root;
  12. size_t num_items = 0;
  13. size_t MAX_SIZE;
  14. // std::tuple<RegXS, RegBS> insert(MPCTIO &tio, yield_t &yield, RegXS ptr,
  15. // const Node &new_node, Duoram<Node>::Flat &A, int TTL, RegBS isDummy);
  16. // void insert(MPCTIO &tio, yield_t &yield, const Node &node, Duoram<Node>::Flat &A);
  17. // int del(MPCTIO &tio, yield_t &yield, RegXS ptr, RegAS del_key,
  18. // Duoram<Node>::Flat &A, RegBS F_af, RegBS F_fs, int TTL,
  19. // del_return &ret_struct);
  20. public:
  21. HEAP(int num_players, size_t size) {
  22. this->initialize(num_players, size);
  23. };
  24. ~HEAP() {
  25. if(oram)
  26. delete oram;
  27. };
  28. void initialize(int num_players, size_t size);
  29. RegAS extract_min(MPCTIO tio, yield_t &yield);
  30. int insert(MPCTIO tio, yield_t &yield, RegAS val);
  31. int verify_heap_property(MPCTIO tio, yield_t &yield);
  32. // void insert(MPCTIO &tio, yield_t &yield, Node &node);
  33. // int del(MPCTIO &tio, yield_t &yield, RegAS del_key);
  34. // // Display and correctness check functions
  35. // void pretty_print(MPCTIO &tio, yield_t &yield);
  36. // void pretty_print(const std::vector<Node> &R, value_t node,
  37. // const std::string &prefix, bool is_left_child, bool is_right_child);
  38. // void check_bst(MPCTIO &tio, yield_t &yield);
  39. // std::tuple<bool, address_t> check_bst(const std::vector<Node> &R,
  40. // value_t node, value_t min_key, value_t max_key);
  41. };
  42. void Heap(MPCIO &mpcio,
  43. const PRACOptions &opts, char **args);
  44. //#include "heap.tcc"
  45. #endif