50 while (elem_a !=
nullptr && elem_b !=
nullptr) {
54 elem_a = elem_a->
next;
55 elem_b = elem_b->
next;
57 if (elem_a ==
nullptr && elem_b ==
nullptr) {
177 T *elem = MEM_cnew<T>(__func__);
178 elem->base.type = type;
262 new_elem->
id = old_elem->id;
268 if (old_elem->modifier_name !=
nullptr) {
276 new_elem->
node_id = old_elem->node_id;
288 new_elem->
node_id = old_elem->node_id;
295 new_elem->iteration = old_elem->iteration;
303 new_elem->index = old_elem->index;
314 if (a->type !=
b->type) {
321 return a_elem->
id == b_elem->id;
331 return a_elem->
node_id == b_elem->node_id;
341 return a_elem->
node_id == b_elem->node_id;
348 a_elem->iteration == b_elem->iteration);
355 a_elem->index == b_elem->index);
@ IDWALK_CB_DIRECT_WEAK_LINK
#define BKE_LIB_FOREACHID_PROCESS_ID(data_, id_, cb_flag_)
@ VIEWER_PATH_EQUAL_FLAG_IGNORE_ITERATION
#define BLI_assert_unreachable()
#define LISTBASE_FOREACH(type, var, list)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC
#define BLO_write_struct(writer, struct_name, data_ptr)
void BLO_read_string(BlendDataReader *reader, char **ptr_p)
void BLO_write_string(BlendWriter *writer, const char *data_ptr)
#define BLO_read_struct_list(reader, struct_name, list)
@ VIEWER_PATH_ELEM_TYPE_GROUP_NODE
@ VIEWER_PATH_ELEM_TYPE_SIMULATION_ZONE
@ VIEWER_PATH_ELEM_TYPE_FOREACH_GEOMETRY_ELEMENT_ZONE
@ VIEWER_PATH_ELEM_TYPE_VIEWER_NODE
@ VIEWER_PATH_ELEM_TYPE_REPEAT_ZONE
@ VIEWER_PATH_ELEM_TYPE_MODIFIER
@ VIEWER_PATH_ELEM_TYPE_ID
Read Guarded memory(de)allocation.
IDRemapperApplyResult apply(ID **r_id_ptr, IDRemapperApplyOptions options, ID *id_self=nullptr) const
local_group_size(16, 16) .push_constant(Type b
void MEM_freeN(void *vmemh)
int repeat_output_node_id
int32_t sim_output_node_id
struct ViewerPathElem * next
void BKE_viewer_path_copy(ViewerPath *dst, const ViewerPath *src)
void BKE_viewer_path_id_remap(ViewerPath *viewer_path, const blender::bke::id::IDRemapper &mappings)
ViewerPathElem * BKE_viewer_path_elem_copy(const ViewerPathElem *src)
ViewerNodeViewerPathElem * BKE_viewer_path_elem_new_viewer_node()
ViewerPathElem * BKE_viewer_path_elem_new(const ViewerPathElemType type)
void BKE_viewer_path_elem_free(ViewerPathElem *elem)
void BKE_viewer_path_foreach_id(LibraryForeachIDData *data, ViewerPath *viewer_path)
void BKE_viewer_path_clear(ViewerPath *viewer_path)
void BKE_viewer_path_init(ViewerPath *viewer_path)
SimulationZoneViewerPathElem * BKE_viewer_path_elem_new_simulation_zone()
ForeachGeometryElementZoneViewerPathElem * BKE_viewer_path_elem_new_foreach_geometry_element_zone()
GroupNodeViewerPathElem * BKE_viewer_path_elem_new_group_node()
static T * make_elem(const ViewerPathElemType type)
IDViewerPathElem * BKE_viewer_path_elem_new_id()
bool BKE_viewer_path_elem_equal(const ViewerPathElem *a, const ViewerPathElem *b, const ViewerPathEqualFlag flag)
ModifierViewerPathElem * BKE_viewer_path_elem_new_modifier()
void BKE_viewer_path_blend_read_data(BlendDataReader *reader, ViewerPath *viewer_path)
bool BKE_viewer_path_equal(const ViewerPath *a, const ViewerPath *b, const ViewerPathEqualFlag flag)
RepeatZoneViewerPathElem * BKE_viewer_path_elem_new_repeat_zone()
void BKE_viewer_path_blend_write(BlendWriter *writer, const ViewerPath *viewer_path)