49static std::array<IDTypeInfo *, INDEX_ID_MAX>
id_types;
53 int init_types_num = 0;
55#define INIT_TYPE(_id_code) \
57 BLI_assert(IDType_##_id_code.main_listbase_index == INDEX_##_id_code); \
58 id_types[INDEX_##_id_code] = &IDType_##_id_code; \
135 if (idtype_index >= 0 && idtype_index <
int(
id_types.size())) {
137 if (id_type && id_type->
name[0] !=
'\0') {
158 if (id_type &&
STREQ(idtype_name, id_type->name)) {
172 return id_type !=
nullptr ? id_type->
name :
nullptr;
179 return id_type !=
nullptr ? id_type->
name_plural :
nullptr;
193 return id_type !=
nullptr ? id_type->
id_code : 0;
234#define CASE_IDINDEX(_id) \
236 return INDEX_ID_##_id
293#define CASE_IDINDEX(_id) \
294 case FILTER_ID_##_id: \
295 return INDEX_ID_##_id
396 if (nodetree !=
nullptr) {
398 if (type_info ==
nullptr) {
410 if (scene->master_collection !=
nullptr) {
413 type_info->
foreach_cache(&scene->master_collection->id, function_callback, user_data);
@ IDTYPE_FLAGS_APPEND_IS_REUSABLE
@ IDTYPE_FLAGS_NO_ANIMDATA
@ IDTYPE_FLAGS_ONLY_APPEND
@ IDTYPE_FLAGS_NO_LIBLINKING
void(*)(ID *id, const IDCacheKey *cache_key, void **cache_p, uint flags, void *user_data) IDTypeForeachCacheFunctionCallback
IDTypeInfo IDType_ID_LINK_PLACEHOLDER
#define BLI_assert_unreachable()
#define BLI_assert_msg(a, msg)
size_t BLI_ghashutil_combine_hash(size_t hash_a, size_t hash_b)
unsigned int BLI_ghashutil_uinthash(unsigned int key)
#define UNUSED_VARS_NDEBUG(...)
#define BLT_I18NCONTEXT_DEFAULT
ID and Library types, which are fundamental for SDNA.
#define ID_LINK_PLACEHOLDER
Object groups, one object can be in many groups at once.
Read Guarded memory(de)allocation.
#define INIT_TYPE(_id_code)
#define CASE_IDINDEX(_id)
const IDTypeInfo * BKE_idtype_get_info_from_idtype_index(const int idtype_index)
const IDTypeInfo * BKE_idtype_get_info_from_idcode(const short id_code)
static void id_type_init()
const IDTypeInfo * BKE_idtype_get_info_from_id(const ID *id)
const char * BKE_idtype_idcode_to_name_plural(const short idcode)
const char * BKE_idtype_idcode_to_name(const short idcode)
bool BKE_idtype_cache_key_cmp(const void *key_a_v, const void *key_b_v)
const char * BKE_idtype_idcode_to_translation_context(const short idcode)
bool BKE_idtype_idcode_is_only_appendable(const short idcode)
bool BKE_idtype_idcode_is_linkable(const short idcode)
bool BKE_idtype_idcode_is_valid(const short idcode)
static const IDTypeInfo * idtype_get_info_from_name(const char *idtype_name)
int BKE_idtype_idfilter_to_index(const uint64_t id_filter)
void BKE_idtype_id_foreach_cache(ID *id, IDTypeForeachCacheFunctionCallback function_callback, void *user_data)
short BKE_idtype_idcode_from_name(const char *idtype_name)
short BKE_idtype_idfilter_to_idcode(const uint64_t idfilter)
bool BKE_idtype_idcode_append_is_reusable(const short idcode)
static std::array< IDTypeInfo *, INDEX_ID_MAX > id_types
short BKE_idtype_idcode_iter_step(int *idtype_index)
int BKE_idtype_idcode_to_index(const short idcode)
short BKE_idtype_index_to_idcode(const int idtype_index)
uint64_t BKE_idtype_index_to_idfilter(const int idtype_index)
uint BKE_idtype_cache_key_hash(const void *key_v)
uint64_t BKE_idtype_idcode_to_idfilter(const short idcode)
bNodeTree * node_tree_from_id(ID *id)
unsigned __int64 uint64_t
unsigned int id_session_uid
uint64_t dependencies_id_types
IDTypeForeachCacheFunction foreach_cache
const char * translation_context