14#include <boost/operators.hpp>
45 :
public boost::addable2<Segment<T>, T>
46 ,
public boost::subtractable2<Segment<T>, T>
47 ,
public boost::multipliable2<Segment<T>, T>
48 ,
public boost::dividable2<Segment<T>, T>
49 ,
public boost::andable<Segment<T>>
68 template <
bool T_is_
int = std::is_same_v<
int, std::remove_cv_t<T>>>
187 const auto end =
getEnd();
198 template <
typename U>
202 static_cast<U
>(
start),
203 static_cast<U
>(
size),
222 template <
typename T>
228 template <
typename T>
234 template <
typename T>
237 return os <<
'(' <<
s.getStart() <<
',' <<
s.getSize() <<
')';
245 template <
typename T>
248 return s.getStart() +
s.getSize() / 2;
std::shared_ptr< A > a
Definition async-deleter-tests.cc:60
Blob::Ptr const b
Definition blob-tests.cc:118
Definition linearsegment.hh:50
T value_type
Definition linearsegment.hh:52
void intersect(const Segment< value_type > &other)
Definition linearsegment.hh:105
void setSize(value_type n)
Definition linearsegment.hh:191
bool operator==(const Segment< value_type > &other) const
Definition linearsegment.hh:141
Segment< value_type > & operator/=(value_type n)
Definition linearsegment.hh:174
Segment(std::enable_if_t<!T_is_int, Segment< int > const & > other)
Definition linearsegment.hh:69
Segment< value_type > before(value_type v) const
Definition linearsegment.hh:107
bool operator!=(const Segment< value_type > &other) const
Definition linearsegment.hh:156
value_type size
Definition linearsegment.hh:219
bool isEmpty() const
Definition linearsegment.hh:139
Segment< value_type > & operator&=(const Segment< value_type > &other)
Definition linearsegment.hh:180
void setStart(value_type n)
Definition linearsegment.hh:185
value_type getEnd() const
Definition linearsegment.hh:135
Segment< value_type > & operator+=(value_type n)
Definition linearsegment.hh:158
Segment()
Definition linearsegment.hh:54
Segment< value_type > & operator-=(value_type n)
Definition linearsegment.hh:163
bool contains(value_type p) const
Definition linearsegment.hh:77
bool intersects(const Segment< value_type > &other) const
Definition linearsegment.hh:84
value_type getStart() const
Definition linearsegment.hh:133
void setEnd(value_type n)
Definition linearsegment.hh:192
value_type start
Definition linearsegment.hh:218
Segment(value_type start_, value_type size_)
Definition linearsegment.hh:60
void normalize()
Definition linearsegment.hh:208
Segment< value_type > after(value_type v) const
Definition linearsegment.hh:120
Segment< U > to() const
Definition linearsegment.hh:199
value_type getSize() const
Definition linearsegment.hh:137
Segment< value_type > intersection(const Segment< value_type > &other) const
Definition linearsegment.hh:91
Segment< value_type > & operator*=(value_type n)
Definition linearsegment.hh:168
Segment moveTo(value_type p) const
Definition linearsegment.hh:75
bool contains(const Segment< value_type > &other) const
Definition linearsegment.hh:79
void reduceSizeToMultipleOf(value_type m)
Definition linearsegment.hh:89
PresentationInterfaceStub::Ptr const p
Definition determine-size-test.cc:172
Definition tweak-view.hh:22
constexpr double epsilon
Definition linearsegment.hh:20
bool isZero< int >(int v)
Definition linearsegment.hh:26
bool areEqual(T a, T b)
Definition linearsegment.hh:38
T center(Segment< T > s)
Definition linearsegment.hh:246
Segment< double > roundOutward(Segment< double > s)
Definition linearsegment.hh:240
bool isZero< double >(double v)
Definition linearsegment.hh:32
std::ostream & operator<<(std::ostream &os, const Segment< T > &s)
Definition linearsegment.hh:235
Segment< T > make_segment_from_start_end(T start, T end)
Definition linearsegment.hh:229
Segment< T > make_segment(T start, T size)
Definition linearsegment.hh:223
T round_up_to_multiple_of(T value, T factor)
Definition rounding.hh:38
T round_down_to_multiple_of(T value, T factor)
Definition rounding.hh:44
const SampleIterator< const uint8_t > start(nullptr, initial_offset, bps)