test/test_list.cpp

changeset 520
f937c6d11d1f
parent 518
74d0372f5c6f
child 521
e5dc54131d55
equal deleted inserted replaced
519:79d14e821b3a 520:f937c6d11d1f
55 const ptrdiff_t loc_prev = offsetof(struct node, prev); 55 const ptrdiff_t loc_prev = offsetof(struct node, prev);
56 const ptrdiff_t loc_next = offsetof(struct node, next); 56 const ptrdiff_t loc_next = offsetof(struct node, next);
57 const ptrdiff_t loc_data = offsetof(struct node, data); 57 const ptrdiff_t loc_data = offsetof(struct node, data);
58 58
59 struct node_test_data { 59 struct node_test_data {
60 node *begin; 60 node *begin = nullptr;
61 61
62 explicit node_test_data(node *begin) : begin(begin) {} 62 explicit node_test_data(node *begin) : begin(begin) {
63 node_test_data(node_test_data&) = delete;
64 node_test_data(node_test_data&&) = default;
65
66 ~node_test_data() {
67 auto n = begin; 63 auto n = begin;
68 while (n != nullptr) { 64 while (n != nullptr) {
69 auto next = n->next; 65 nodes.push_back(n);
70 delete n; 66 n = n->next;
71 n = next;
72 } 67 }
73 } 68 }
69
70 node_test_data(node_test_data &) = delete;
71
72 node_test_data(node_test_data &&) = default;
73
74 ~node_test_data() {
75 for (auto &&n: nodes) delete n;
76 }
77
78 private:
79 std::vector<node *> nodes;
74 }; 80 };
75 81
76 static node_test_data create_nodes_test_data(size_t len) { 82 static node_test_data create_nodes_test_data(size_t len) {
77 if (len == 0) return node_test_data{nullptr}; 83 if (len == 0) return node_test_data{nullptr};
78 auto begin = new node; 84 auto begin = new node;

mercurial