32concept Trivial = std::is_trivially_constructible_v<T>;
42template <std::constructible_from<NoInit> T>
56template <
typename V,
typename I>
69 [[nodiscard]]
auto capacity()
const {
return capacity_.val; }
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) }; }
122 std::unique_ptr<T[]> data_;
127template <
typename T,
typename I>
130 return key ? T{bmap[key]} : def;
134template <
typename T,
typename I>
145 UndirectedEdgeBMap
e;
157 for ( T x( 0 ); x < b.
b.
size(); ++x )
160 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
UndirectedEdgeBMap e
Definition MRBuffer.h:145
Buffer< LeafId, LeafId > b
Definition MRBuffer.h:137
I backId() const
returns the identifier of the back() element
Definition MRBuffer.h:108
friend auto begin(Buffer &a)
Definition MRBuffer.h:117
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:147
auto size() const
Definition MRBuffer.h:70
FaceBMap f
Definition MRBuffer.h:146
friend auto begin(const Buffer &a)
Definition MRBuffer.h:116
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:128
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
friend auto end(const Buffer &a)
Definition MRBuffer.h:118
class MRMESH_CLASS I
Definition MRMeshFwd.h:137
size_t tsize
Definition MRBuffer.h:138
auto data() const MR_LIFETIMEBOUND
Definition MRBuffer.h:102
T & reference
Definition MRBuffer.h:61
friend auto end(Buffer &a)
Definition MRBuffer.h:119
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:152
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:136
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:144