1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
5 * Copyright (C) 2016 Red Hat Inc.
13 #include "indirect_intrusive_heap.h"
26 crimson::IndIntruHeapData heap_data
;
28 Test1(int _data
) : data(_data
) {}
30 friend std::ostream
& operator<<(std::ostream
& out
, const Test1
& d
) {
31 out
<< d
.data
<< " (" << d
.heap_data
<< ")";
35 int& the_data() { return data
; }
40 bool operator()(const Test1
& d1
, const Test1
& d2
) {
41 return d1
.data
< d2
.data
;
46 int main(int argc
, char** argv
) {
52 crimson::IndIntruHeap
<std::shared_ptr
<Test1
>, Test1
, &Test1::heap_data
, TestCompare
> my_heap
;
54 const std::shared_ptr
<Test1
> d99
= std::make_shared
<Test1
>(99);
56 my_heap
.push(std::make_shared
<Test1
>(2));
58 my_heap
.push(std::make_shared
<Test1
>(1));
59 my_heap
.push(std::make_shared
<Test1
>(-5));
60 my_heap
.push(std::make_shared
<Test1
>(12));
61 my_heap
.push(std::make_shared
<Test1
>(-12));
62 my_heap
.push(std::make_shared
<Test1
>(-7));
64 std::cout
<< my_heap
<< std::endl
;
66 auto& t
= my_heap
.top();
68 my_heap
.adjust_down(t
);
70 std::cout
<< my_heap
<< std::endl
;
72 my_heap
.display_sorted(std::cout
);
74 while (!my_heap
.empty()) {
75 auto& top
= my_heap
.top();
76 std::cout
<< top
<< std::endl
;
78 std::cout
<< my_heap
<< std::endl
;