Blender V4.3
ANIM_armature_iter.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
11#pragma once
12
13#ifndef __cplusplus
14# error This is a C++ header.
15#endif
16
17#include "DNA_armature_types.h"
18
20
21namespace blender::animrig {
30template<typename CB> static void ANIM_armature_foreach_bone(ListBase /*Bone*/ *bones, CB callback)
31{
32 for (Bone *bone : blender::ListBaseWrapper<Bone>(bones)) {
33 callback(bone);
34 ANIM_armature_foreach_bone(&bone->childbase, callback);
35 }
36}
37
46template<typename CB>
47static void ANIM_armature_foreach_bone(const ListBase /*Bone*/ *bones, CB callback)
48{
49 for (const Bone *bone : blender::ConstListBaseWrapper<Bone>(bones)) {
50 callback(bone);
51 ANIM_armature_foreach_bone(&bone->childbase, callback);
52 }
53}
54
55}; // namespace blender::animrig
#define CB(a)
DEGForeachIDComponentCallback callback
static void ANIM_armature_foreach_bone(ListBase *bones, CB callback)
ListBaseWrapperTemplate< const ListBase, const T > ConstListBaseWrapper
ListBaseWrapperTemplate< ListBase, T > ListBaseWrapper