87 return this->x || this->y || this->
z;
113 return {{
true}, {
true}, {
true}};
127 operator bool()
const
129 return this->euler || this->axis || this->
angle;
166 operator bool()
const
168 return this->translation || this->rotation || this->scale || this->
any_non_transform;
176 this->translation, this->rotation, this->scale, this->any_non_transform);
206 std::variant<BoolElem, FloatElem, IntElem, VectorElem, RotationElem, MatrixElem>
elem;
208 operator bool()
const
210 return std::visit([](
const auto &
value) {
return bool(
value); }, this->
elem);
215 return std::visit([](
auto &
value) {
return value.hash(); }, this->
elem);
223 using T = std::decay_t<
decltype(
value)>;
234 using T = std::decay_t<
decltype(
value)>;
235 value.intersect(std::get<T>(other.
elem));
244 using T = std::decay_t<
decltype(
value)>;
254 using T = std::decay_t<
decltype(
value)>;
310 const ElemVariant &old_elem);
#define BLI_STRUCT_EQUALITY_OPERATORS_1(Type, m)
#define BLI_STRUCT_EQUALITY_OPERATORS_3(Type, m1, m2, m3)
#define BLI_STRUCT_EQUALITY_OPERATORS_4(Type, m1, m2, m3, m4)
#define BLI_STRUCT_EQUALITY_OPERATORS_2(Type, m1, m2)
std::optional< ElemVariant > get_elem_variant_for_socket_type(const eNodeSocketDatatype type)
std::optional< ElemVariant > convert_socket_elem(const bNodeSocket &old_socket, const bNodeSocket &new_socket, const ElemVariant &old_elem)
uint64_t get_default_hash(const T &v, const Args &...args)
unsigned __int64 uint64_t
std::variant< BoolElem, FloatElem, IntElem, VectorElem, RotationElem, MatrixElem > elem
void merge(const ElemVariant &other)
void intersect(const ElemVariant &other)
void merge(const MatrixElem &other)
void intersect(const MatrixElem &other)
FloatElem any_non_transform
void intersect(const PrimitiveValueElem &other)
void merge(const PrimitiveValueElem &other)
static RotationElem all()
void intersect(const RotationElem &other)
void merge(const RotationElem &other)
const bNodeSocket * socket
void merge(const VectorElem &other)
void intersect(const VectorElem &other)