18 constexpr Id() noexcept : id_( -1 ) { }
27 template <
typename U, std::enable_if_t<std::is_
integral_v<U>, std::
nullptr_t> =
nullptr>
28 explicit constexpr Id( U i ) noexcept : id_(
ValueType( i ) ) { }
30 constexpr operator ValueType()
const {
return id_; }
31 constexpr bool valid()
const {
return id_ >= 0; }
32 explicit constexpr operator bool()
const {
return id_ >= 0; }
49 constexpr Id operator --(
int ) {
auto res = *
this; --id_;
return res; }
50 constexpr Id operator ++(
int ) {
auto res = *
this; ++id_;
return res; }
74 constexpr Id() noexcept : id_( -1 ) { }
76 constexpr Id( UndirectedEdgeId u ) noexcept : id_( (
ValueType)u << 1 ) { assert( u.valid() ); }
78 explicit constexpr Id(
unsigned int i ) noexcept : id_( i ) { }
79 explicit constexpr Id(
size_t i ) noexcept : id_(
ValueType( i ) ) { }
80 constexpr operator ValueType()
const {
return id_; }
81 constexpr bool valid()
const {
return id_ >= 0; }
82 explicit constexpr operator bool()
const {
return id_ >= 0; }
86 constexpr Id sym()
const { assert(
valid() );
return Id(id_ ^ 1); }
88 constexpr bool even()
const { assert(
valid() );
return (id_ & 1) == 0; }
89 constexpr bool odd()
const { assert(
valid() );
return (id_ & 1) == 1; }
91 constexpr UndirectedEdgeId
undirected()
const { assert(
valid() );
return UndirectedEdgeId( id_ >> 1 ); }
92 constexpr operator UndirectedEdgeId()
const {
return undirected(); }
100 template <
typename U>
102 template <
typename U>
127 explicit constexpr Id(
int )
noexcept =
delete;
130 explicit constexpr operator bool()
const {
return id_ !=
~ValueType( 0 ); }
137 template <
typename U>
139 template <
typename U>
141 template <
typename U>
171inline constexpr FaceId
operator ""_f(
unsigned long long i )
noexcept {
return FaceId{ (int)i }; }
172inline constexpr VertId
operator ""_v(
unsigned long long i )
noexcept {
return VertId{ (int)i }; }
173inline constexpr EdgeId
operator ""_e(
unsigned long long i )
noexcept {
return EdgeId{ (int)i }; }
174inline constexpr UndirectedEdgeId
operator ""_ue(
unsigned long long i )
noexcept {
return UndirectedEdgeId{ (int)i }; }
175inline constexpr VoxelId
operator ""_vox(
unsigned long long i )
noexcept {
return VoxelId{ size_t( i ) }; }
constexpr ValueType & get() noexcept
Definition MRMesh/MRId.h:83
constexpr bool valid() const
Definition MRMesh/MRId.h:81
constexpr bool odd() const
Definition MRMesh/MRId.h:89
constexpr UndirectedEdgeId undirected() const
Definition MRMesh/MRId.h:91
constexpr Id sym() const
Definition MRMesh/MRId.h:86
Id(NoInit) noexcept
Definition MRMesh/MRId.h:75
int ValueType
Definition MRMesh/MRId.h:72
constexpr Id(size_t i) noexcept
Definition MRMesh/MRId.h:79
constexpr Id(unsigned int i) noexcept
Definition MRMesh/MRId.h:78
constexpr Id(UndirectedEdgeId u) noexcept
Definition MRMesh/MRId.h:76
constexpr Id() noexcept
Definition MRMesh/MRId.h:74
constexpr bool even() const
Definition MRMesh/MRId.h:88
constexpr Id(ValueType i) noexcept
Definition MRMesh/MRId.h:77
constexpr bool valid() const
Definition MRMesh/MRId.h:129
size_t ValueType
Definition MRMesh/MRId.h:122
constexpr ValueType & get() noexcept
Definition MRMesh/MRId.h:131
constexpr Id() noexcept
Definition MRMesh/MRId.h:124
Id(NoInit) noexcept
Definition MRMesh/MRId.h:125
constexpr Id(int) noexcept=delete
constexpr Id(ValueType i) noexcept
Definition MRMesh/MRId.h:126
Definition MRMesh/MRId.h:14
constexpr bool operator!=(Id b) const
Definition MRMesh/MRId.h:36
constexpr Id & operator+=(ValueType a)
Definition MRMesh/MRId.h:53
constexpr Id & operator++()
Definition MRMesh/MRId.h:47
Id(NoInit) noexcept
Definition MRMesh/MRId.h:19
constexpr bool operator==(Id b) const
Definition MRMesh/MRId.h:35
constexpr bool valid() const
Definition MRMesh/MRId.h:31
constexpr Id & operator-=(ValueType a)
Definition MRMesh/MRId.h:52
constexpr Id & operator--()
Definition MRMesh/MRId.h:46
constexpr Id() noexcept
Definition MRMesh/MRId.h:18
constexpr bool operator<(Id b) const
Definition MRMesh/MRId.h:37
constexpr ValueType & get() noexcept
Definition MRMesh/MRId.h:33
int ValueType
Definition MRMesh/MRId.h:16
constexpr Id(U i) noexcept
Definition MRMesh/MRId.h:28
Definition MRMesh/MRId.h:62
NoInitId()
Definition MRMesh/MRId.h:64
NoInitId(Id< T > id)
Definition MRMesh/MRId.h:65
BitSet operator-(const BitSet &a, const BitSet &b)
Definition MRMesh/MRBitSet.h:369
Definition MRCameraOrientationPlugin.h:8
class MRMESH_CLASS VoxelTag
Definition MRMesh/MRMeshFwd.h:98
constexpr NoInit noInit
Definition MRMesh/MRMeshFwd.h:90
class MRMESH_CLASS EdgeTag
Definition MRMesh/MRMeshFwd.h:93
Color operator+(const Color &a, const Color &b)
Definition MRMesh/MRColor.h:108
Definition MRMesh/MRMeshFwd.h:89