aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
9 dayskstd: ring_buffer: implement comparisonFelix Morgner2-1/+154
9 daysci: merge test build and test executionFelix Morgner1-55/+37
9 dayskstd: ring_buffer: handle zero-capacity instantiationsFelix Morgner2-8/+249
9 dayskstd: ring_buffer: add more iterator testsFelix Morgner1-0/+64
9 dayskstd: ring_buffer: add iterator documentationFelix Morgner1-0/+84
9 dayskstd: ring_buffer: implement front() and back()Felix Morgner2-0/+131
9 dayskstd: ring_buffer: add missing push/pop API testsFelix Morgner1-0/+20
9 dayskstd: ring_buffer: add try_pop_front dtor testFelix Morgner1-0/+10
9 dayskstd: ring_buffer: implement try_pop_front()Felix Morgner2-0/+71
9 dayskstd: ring_buffer: add more pop_front() testsFelix Morgner1-0/+43
9 dayskstd: ring_buffer: add missing nodiscardFelix Morgner1-1/+1
9 dayskstd: ring_buffer: fix documentation typoFelix Morgner1-1/+1
9 dayskstd: ring_buffer: implement pop_front()Felix Morgner2-0/+53
9 dayskstd: ring_buffer: implement try_push_back()Felix Morgner2-0/+28
9 dayskstd: ring_buffer: implement push_back()Felix Morgner2-2/+271
9 dayskstd: ring_buffer: clear moved-from bufferFelix Morgner2-12/+42
While the standard says that a move-from object is in a valid but unspecified state, thus making it legal to leave the moved-from buffer in a non-empty state, we can do better here. For one, standard containers generally leave the moved-from object in an empty state. Secondly, destroying the contents of a ring_buffer object has linear complexity, as does moving the contents of a ring_buffer object. We can therefore clear the moved-from object while we are moving from it, without increasing the complexity of the move operation. At the same time, we can thereby reduce the amount of work that needs to be done when the moved-from object is finally destroyed. Note that during the move assignment operation, the moved-from buffer is in a somewhat peculiar state. Some of its elements have been destroyed, but its size has not changed. This is okay, because we are essentially still executing a transition from one valid state into another once. At the end of the move operation, we ensure that the size of the moved-from buffer is set to zero, thus reestablishing its invariant.
9 dayskstd: ring_buffer: implement clear()Felix Morgner2-1/+62
9 dayskstd: tests: extract static tracker typesFelix Morgner2-112/+109
9 dayskstd: ring_buffer: implement copy and move assignmentFelix Morgner2-0/+239
9 dayskstd: ring_buffer: implement move ctorFelix Morgner2-0/+25
9 dayskstd: ring_buffer: implement copy ctorFelix Morgner2-0/+36
9 dayskstd: ring_buffer: implement dtorFelix Morgner2-0/+56
9 dayskstd: ring_buffer: move construction testsFelix Morgner1-32/+32
9 dayskstd: ring_buffer: add missing [c]rend() testsFelix Morgner1-0/+15
9 dayskstd: ring_buffer: implement [cr][begin|end]()Felix Morgner2-0/+180
9 dayskstd: ring_buffer: fix empty() and size()Felix Morgner2-11/+26
9 dayskstd: ring_buffer: add more range-based testsFelix Morgner1-0/+50
10 dayskstd: ring_buffer: implement [c]end()Felix Morgner2-1/+134
10 dayskstd: ring_buffer: implement [c]begin()Felix Morgner2-1/+140
10 dayskstd: ring_buffer: implement iterator typeFelix Morgner2-0/+165
10 dayskstd: ring_buffer: add n-value-initialized ctorFelix Morgner2-0/+52
10 dayskstd: ring_buffer: add write-through testsFelix Morgner1-0/+32
10 dayskstd: ring_buffer: fix const-overload testsFelix Morgner1-3/+3
10 dayskstd: ring_buffer: add ctor panic testFelix Morgner1-0/+10
10 dayskstd: ring_buffer: extract basic storageFelix Morgner2-23/+127
11 dayskstd: ring_buffer: add missing test tagFelix Morgner1-1/+1
11 dayskstd: ring_buffer: add interface type testsFelix Morgner1-0/+82
11 dayskstd: ring_buffer: implement operator[]Felix Morgner2-5/+45
11 dayskstd: ring_buffer: simplify element_atFelix Morgner1-3/+3
11 dayskstd: ring_buffer: rename element_at_indexFelix Morgner1-4/+4
11 dayskstd: ring_buffer: implement n-values ctor.Felix Morgner2-1/+99
11 dayskstd: ring_buffer: add missing documentationFelix Morgner1-4/+13
11 dayskstd: ring_buffer: rename head and tailFelix Morgner1-9/+9
11 dayskstd: ring_buffer: implement at()Felix Morgner2-0/+84
11 dayskstd: ring_buffer: implement size()Felix Morgner2-0/+18
11 dayskstd: ring_buffer: implement empty()Felix Morgner2-0/+18
11 dayskstd: ring_buffer: add do sectionsFelix Morgner1-0/+5
11 dayskstd: ring_buffer: implement max_size()Felix Morgner2-0/+16
11 dayskstd: ring_buffer: implement capacity()Felix Morgner2-4/+16
11 dayskstd: add ring_buffer includeFelix Morgner2-0/+37