32concept Trivial = std::is_trivially_constructible_v<T>;
42template <std::constructible_from<NoInit> T>
56template <
typename V,
typename I>
70 [[nodiscard]]
auto size()
const {
return size_.
val; }
71 [[nodiscard]]
bool empty()
const {
return size_.
val == 0; }
73 void clear() { data_.reset(); capacity_ = {}; size_ = {}; }
77 if ( size_.
val == newSize )
79 if ( newSize > capacity_.
val )
81#if __cpp_lib_smart_ptr_for_overwrite >= 202002L
82 data_ = std::make_unique_for_overwrite<T[]>( capacity_.
val = newSize );
84 data_.reset(
new T[capacity_.
val = newSize] );
92 assert( i < size_.
val );
97 assert( i < size_.
val );
105 [[nodiscard]] I
beginId()
const {
return I{ size_t(0) }; }
117 std::unique_ptr<T[]> data_;
122template <
typename T,
typename I>
125 return key ? T{bmap[key]} : def;
128template <
typename T,
typename I>
132template <
typename T,
typename I>
136template <
typename T,
typename I>
140template <
typename T,
typename I>
145template <
typename T,
typename I>
156 UndirectedEdgeBMap
e;
168 for ( T x( 0 ); x < b.
b.
size(); ++x )
171 if ( bx < a.
b.
size() )
#define MR_LIFETIMEBOUND
Definition MRMacros.h:81
#define MR_LIFETIMEBOUND_NESTED
Definition MRMacros.h:84
std::vector<V>-like container that is 1) resized without initialization of its elements,...
Definition MRBuffer.h:58
MR_BIND_IGNORE_PY auto end(const BitSet &)
Definition MRBitSet.h:397
MR_BIND_IGNORE_PY auto begin(const BitSet &a)
Definition MRBitSet.h:395
UndirectedEdgeBMap e
Definition MRBuffer.h:156
Buffer< T, I > b
Definition MRBuffer.h:148
I backId() const
returns the identifier of the back() element
Definition MRBuffer.h:108
constexpr ZeroOnMove(ZeroOnMove &&z) noexcept
Definition MRBuffer.h:23
T val
Definition MRBuffer.h:20
void clear()
Definition MRBuffer.h:73
VertBMap v
Definition MRBuffer.h:158
auto size() const
Definition MRBuffer.h:70
FaceBMap f
Definition MRBuffer.h:157
T type
Definition MRBuffer.h:38
typename NoCtor< V >::type T
Definition MRBuffer.h:60
bool empty() const
Definition MRBuffer.h:71
const_reference operator[](I i) const MR_LIFETIMEBOUND
Definition MRBuffer.h:90
T getAt(const Buffer< T, I > &bmap MR_LIFETIMEBOUND_NESTED, I key, T def={})
given some buffer map and a key, returns the value associated with the key, or default value if key i...
Definition MRBuffer.h:123
constexpr ZeroOnMove(const ZeroOnMove &) noexcept=delete
I beginId() const
returns the identifier of the first element
Definition MRBuffer.h:105
size_t heapBytes() const
returns the amount of memory this object occupies on heap
Definition MRBuffer.h:114
auto data() MR_LIFETIMEBOUND
Definition MRBuffer.h:101
size_t tsize
target size, all values inside b must be less than this value
Definition MRBuffer.h:149
auto data() const MR_LIFETIMEBOUND
Definition MRBuffer.h:102
T & reference
Definition MRBuffer.h:61
void resize(size_t newSize)
Definition MRBuffer.h:75
BMap< T, T > compose(const BMap< T, T > &a, const BMap< T, T > &b)
computes the composition of two mappings x -> a(b(x))
Definition MRBuffer.h:163
I endId() const
returns backId() + 1
Definition MRBuffer.h:111
constexpr ZeroOnMove & operator=(const ZeroOnMove &) noexcept=delete
const T & const_reference
Definition MRBuffer.h:62
const T * const_iterator
Definition MRBuffer.h:64
reference operator[](I i) MR_LIFETIMEBOUND
Definition MRBuffer.h:95
constexpr ZeroOnMove() noexcept
Definition MRBuffer.h:21
auto capacity() const
Definition MRBuffer.h:69
T * iterator
Definition MRBuffer.h:63
Buffer(size_t size)
Definition MRBuffer.h:67
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
flat map: I -> T
Definition MRBuffer.h:147
this class is similar to T, but does not make default initialization of the fields for best performan...
Definition MRNoDefInit.h:14
Definition MRBuffer.h:155