Cleanup: `IDTypeInfo` new `asset_type_info` member.

Two issues addressed here:

I) `asset_type_info` is sub-data, not a callback. Therefore, move it
before the callbacks in the `IDTypeInfo` struct.

II) More important, initialize this new attribute in *ALL* `IDTypeInfo`
instances. No member of this struct should ever be left implicitely
uninitilazed, ever.

Aftermath of rBa84f1c02d251.
This commit is contained in:
Bastien Montagne 2021-11-24 10:32:28 +01:00
parent f8dea3fe64
commit e0763760e4
41 changed files with 48 additions and 14 deletions

View File

@ -149,11 +149,12 @@ typedef struct IDTypeInfo {
/** Generic info flags about that data-block type. */
uint32_t flags;
/* ********** ID management callbacks ********** */
/**
* Information and callbacks for assets, based on the type of asset.
*/
struct AssetTypeInfo *asset_type_info;
/* TODO: Note about callbacks: Ideally we could also handle here `BKE_lib_query`'s behavior, as
* well as read/write of files. However, this is a bit more involved than basic ID management
* callbacks, so we'll check on this later. */
/* ********** ID management callbacks ********** */
/**
* Initialize a new, empty calloc'ed data-block. May be NULL if there is nothing to do.
@ -228,11 +229,6 @@ typedef struct IDTypeInfo {
* \note Currently needed for some update operation on point caches.
*/
IDTypeLibOverrideApplyPost lib_override_apply_post;
/**
* Callbacks for assets, based on the type of asset.
*/
struct AssetTypeInfo *asset_type_info;
} IDTypeInfo;
/* ********** Declaration of each IDTypeInfo. ********** */

View File

@ -320,6 +320,7 @@ IDTypeInfo IDType_ID_AC = {
.name_plural = "actions",
.translation_context = BLT_I18NCONTEXT_ID_ACTION,
.flags = IDTYPE_FLAGS_NO_ANIMDATA,
.asset_type_info = &AssetType_AC,
.init_data = NULL,
.copy_data = action_copy_data,
@ -337,8 +338,6 @@ IDTypeInfo IDType_ID_AC = {
.blend_read_undo_preserve = NULL,
.lib_override_apply_post = NULL,
.asset_type_info = &AssetType_AC,
};
/* ***************** Library data level operations on action ************** */

View File

@ -322,6 +322,7 @@ IDTypeInfo IDType_ID_AR = {
.name_plural = "armatures",
.translation_context = BLT_I18NCONTEXT_ID_ARMATURE,
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
.asset_type_info = NULL,
.init_data = armature_init_data,
.copy_data = armature_copy_data,

View File

@ -414,6 +414,7 @@ IDTypeInfo IDType_ID_BR = {
.name_plural = "brushes",
.translation_context = BLT_I18NCONTEXT_ID_BRUSH,
.flags = IDTYPE_FLAGS_NO_ANIMDATA,
.asset_type_info = NULL,
.init_data = brush_init_data,
.copy_data = brush_copy_data,

View File

@ -134,6 +134,7 @@ IDTypeInfo IDType_ID_CF = {
.name_plural = "cache_files",
.translation_context = BLT_I18NCONTEXT_ID_CACHEFILE,
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
.asset_type_info = NULL,
.init_data = cache_file_init_data,
.copy_data = cache_file_copy_data,

View File

@ -182,6 +182,7 @@ IDTypeInfo IDType_ID_CA = {
.name_plural = "cameras",
.translation_context = BLT_I18NCONTEXT_ID_CAMERA,
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
.asset_type_info = NULL,
.init_data = camera_init_data,
.copy_data = camera_copy_data,

View File

@ -375,6 +375,7 @@ IDTypeInfo IDType_ID_GR = {
.name_plural = "collections",
.translation_context = BLT_I18NCONTEXT_ID_COLLECTION,
.flags = IDTYPE_FLAGS_NO_ANIMDATA,
.asset_type_info = NULL,
.init_data = collection_init_data,
.copy_data = collection_copy_data,

View File

@ -312,6 +312,7 @@ IDTypeInfo IDType_ID_CU = {
.name_plural = "curves",
.translation_context = BLT_I18NCONTEXT_ID_CURVE,
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
.asset_type_info = NULL,
.init_data = curve_init_data,
.copy_data = curve_copy_data,

View File

@ -320,6 +320,7 @@ IDTypeInfo IDType_ID_GD = {
.name_plural = "grease_pencils",
.translation_context = BLT_I18NCONTEXT_ID_GPENCIL,
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
.asset_type_info = NULL,
.init_data = NULL,
.copy_data = greasepencil_copy_data,

View File

@ -182,6 +182,7 @@ IDTypeInfo IDType_ID_HA = {
.name_plural = "hairs",
.translation_context = BLT_I18NCONTEXT_ID_HAIR,
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
.asset_type_info = NULL,
.init_data = hair_init_data,
.copy_data = hair_copy_data,

View File

@ -369,6 +369,7 @@ IDTypeInfo IDType_ID_IM = {
.name_plural = "images",
.translation_context = BLT_I18NCONTEXT_ID_IMAGE,
.flags = IDTYPE_FLAGS_NO_ANIMDATA | IDTYPE_FLAGS_APPEND_IS_REUSABLE,
.asset_type_info = NULL,
.init_data = image_init_data,
.copy_data = image_copy_data,

View File

@ -185,6 +185,7 @@ IDTypeInfo IDType_ID_IP = {
.name_plural = "ipos",
.translation_context = "",
.flags = IDTYPE_FLAGS_NO_COPY | IDTYPE_FLAGS_NO_LIBLINKING | IDTYPE_FLAGS_NO_ANIMDATA,
.asset_type_info = NULL,
.init_data = NULL,
.copy_data = NULL,

View File

@ -213,6 +213,7 @@ IDTypeInfo IDType_ID_KE = {
.name_plural = "shape_keys",
.translation_context = BLT_I18NCONTEXT_ID_SHAPEKEY,
.flags = IDTYPE_FLAGS_NO_LIBLINKING,
.asset_type_info = NULL,
.init_data = NULL,
.copy_data = shapekey_copy_data,

View File

@ -197,6 +197,7 @@ IDTypeInfo IDType_ID_LT = {
.name_plural = "lattices",
.translation_context = BLT_I18NCONTEXT_ID_LATTICE,
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
.asset_type_info = NULL,
.init_data = lattice_init_data,
.copy_data = lattice_copy_data,

View File

@ -99,6 +99,7 @@ IDTypeInfo IDType_ID_LINK_PLACEHOLDER = {
.name_plural = "link_placeholders",
.translation_context = BLT_I18NCONTEXT_ID_ID,
.flags = IDTYPE_FLAGS_NO_COPY | IDTYPE_FLAGS_NO_LIBLINKING,
.asset_type_info = NULL,
.init_data = NULL,
.copy_data = NULL,

View File

@ -69,6 +69,7 @@ IDTypeInfo IDType_ID_LI = {
.name_plural = "libraries",
.translation_context = BLT_I18NCONTEXT_ID_LIBRARY,
.flags = IDTYPE_FLAGS_NO_COPY | IDTYPE_FLAGS_NO_LIBLINKING | IDTYPE_FLAGS_NO_ANIMDATA,
.asset_type_info = NULL,
.init_data = NULL,
.copy_data = NULL,

View File

@ -195,6 +195,7 @@ IDTypeInfo IDType_ID_LA = {
.name_plural = "lights",
.translation_context = BLT_I18NCONTEXT_ID_LIGHT,
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
.asset_type_info = NULL,
.init_data = light_init_data,
.copy_data = light_copy_data,

View File

@ -92,6 +92,7 @@ IDTypeInfo IDType_ID_LP = {
.name_plural = "lightprobes",
.translation_context = BLT_I18NCONTEXT_ID_LIGHTPROBE,
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
.asset_type_info = NULL,
.init_data = lightprobe_init_data,
.copy_data = NULL,

View File

@ -754,6 +754,7 @@ IDTypeInfo IDType_ID_LS = {
.name_plural = "linestyles",
.translation_context = BLT_I18NCONTEXT_ID_FREESTYLELINESTYLE,
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
.asset_type_info = NULL,
.init_data = linestyle_init_data,
.copy_data = linestyle_copy_data,

View File

@ -255,6 +255,7 @@ IDTypeInfo IDType_ID_MSK = {
.name_plural = "masks",
.translation_context = BLT_I18NCONTEXT_ID_MASK,
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
.asset_type_info = NULL,
.init_data = NULL,
.copy_data = mask_copy_data,

View File

@ -261,6 +261,7 @@ IDTypeInfo IDType_ID_MA = {
.name_plural = "materials",
.translation_context = BLT_I18NCONTEXT_ID_MATERIAL,
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
.asset_type_info = NULL,
.init_data = material_init_data,
.copy_data = material_copy_data,

View File

@ -189,6 +189,7 @@ IDTypeInfo IDType_ID_MB = {
.name_plural = "metaballs",
.translation_context = BLT_I18NCONTEXT_ID_METABALL,
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
.asset_type_info = NULL,
.init_data = metaball_init_data,
.copy_data = metaball_copy_data,

View File

@ -363,6 +363,7 @@ IDTypeInfo IDType_ID_ME = {
/* name_plural */ "meshes",
/* translation_context */ BLT_I18NCONTEXT_ID_MESH,
/* flags */ IDTYPE_FLAGS_APPEND_IS_REUSABLE,
/* asset_type_info */ nullptr,
/* init_data */ mesh_init_data,
/* copy_data */ mesh_copy_data,
@ -376,9 +377,10 @@ IDTypeInfo IDType_ID_ME = {
/* blend_read_data */ mesh_blend_read_data,
/* blend_read_lib */ mesh_blend_read_lib,
/* blend_read_expand */ mesh_read_expand,
/* blend_read_undo_preserve */ nullptr,
/* lib_override_apply_post */ nullptr,
/* asset_type_info */ nullptr,
};
enum {

View File

@ -347,6 +347,7 @@ IDTypeInfo IDType_ID_MC = {
.name_plural = "movieclips",
.translation_context = BLT_I18NCONTEXT_ID_MOVIECLIP,
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
.asset_type_info = NULL,
.init_data = movie_clip_init_data,
.copy_data = movie_clip_copy_data,

View File

@ -1047,6 +1047,7 @@ IDTypeInfo IDType_ID_NT = {
/* name_plural */ "node_groups",
/* translation_context */ BLT_I18NCONTEXT_ID_NODETREE,
/* flags */ IDTYPE_FLAGS_APPEND_IS_REUSABLE,
/* asset_type_info */ nullptr,
/* init_data */ ntree_init_data,
/* copy_data */ ntree_copy_data,

View File

@ -1258,6 +1258,7 @@ IDTypeInfo IDType_ID_OB = {
/* name_plural */ "objects",
/* translation_context */ BLT_I18NCONTEXT_ID_OBJECT,
/* flags */ 0,
/* asset_type_info */ &AssetType_OB,
/* init_data */ object_init_data,
/* copy_data */ object_copy_data,
@ -1275,8 +1276,6 @@ IDTypeInfo IDType_ID_OB = {
/* blend_read_undo_preserve */ nullptr,
/* lib_override_apply_post */ object_lib_override_apply_post,
/* asset_type_info */ &AssetType_OB,
};
void BKE_object_workob_clear(Object *workob)

View File

@ -143,6 +143,7 @@ IDTypeInfo IDType_ID_PAL = {
.name_plural = "palettes",
.translation_context = BLT_I18NCONTEXT_ID_PALETTE,
.flags = IDTYPE_FLAGS_NO_ANIMDATA,
.asset_type_info = NULL,
.init_data = palette_init_data,
.copy_data = palette_copy_data,
@ -208,6 +209,7 @@ IDTypeInfo IDType_ID_PC = {
.name_plural = "paint_curves",
.translation_context = BLT_I18NCONTEXT_ID_PAINTCURVE,
.flags = IDTYPE_FLAGS_NO_ANIMDATA,
.asset_type_info = NULL,
.init_data = NULL,
.copy_data = paint_curve_copy_data,

View File

@ -500,6 +500,7 @@ IDTypeInfo IDType_ID_PA = {
.name_plural = "particles",
.translation_context = BLT_I18NCONTEXT_ID_PARTICLESETTINGS,
.flags = 0,
.asset_type_info = NULL,
.init_data = particle_settings_init,
.copy_data = particle_settings_copy_data,

View File

@ -175,6 +175,7 @@ IDTypeInfo IDType_ID_PT = {
/* name_plural */ "pointclouds",
/* translation_context */ BLT_I18NCONTEXT_ID_POINTCLOUD,
/* flags */ IDTYPE_FLAGS_APPEND_IS_REUSABLE,
/* asset_type_info */ nullptr,
/* init_data */ pointcloud_init_data,
/* copy_data */ pointcloud_copy_data,

View File

@ -1600,6 +1600,7 @@ IDTypeInfo IDType_ID_SCE = {
.name_plural = "scenes",
.translation_context = BLT_I18NCONTEXT_ID_SCENE,
.flags = 0,
.asset_type_info = NULL,
.init_data = scene_init_data,
.copy_data = scene_copy_data,

View File

@ -304,6 +304,7 @@ IDTypeInfo IDType_ID_SCR = {
.name_plural = "screens",
.translation_context = BLT_I18NCONTEXT_ID_SCREEN,
.flags = IDTYPE_FLAGS_NO_COPY | IDTYPE_FLAGS_ONLY_APPEND | IDTYPE_FLAGS_NO_ANIMDATA,
.asset_type_info = NULL,
.init_data = NULL,
.copy_data = NULL,

View File

@ -154,6 +154,7 @@ IDTypeInfo IDType_ID_SIM = {
/* name_plural */ "simulations",
/* translation_context */ BLT_I18NCONTEXT_ID_SIMULATION,
/* flags */ IDTYPE_FLAGS_APPEND_IS_REUSABLE,
/* asset_type_info */ nullptr,
/* init_data */ simulation_init_data,
/* copy_data */ simulation_copy_data,

View File

@ -205,6 +205,7 @@ IDTypeInfo IDType_ID_SO = {
.name_plural = "sounds",
.translation_context = BLT_I18NCONTEXT_ID_SOUND,
.flags = IDTYPE_FLAGS_NO_ANIMDATA | IDTYPE_FLAGS_APPEND_IS_REUSABLE,
.asset_type_info = NULL,
/* A fuzzy case, think NULLified content is OK here... */
.init_data = NULL,

View File

@ -99,6 +99,7 @@ IDTypeInfo IDType_ID_SPK = {
.name_plural = "speakers",
.translation_context = BLT_I18NCONTEXT_ID_SPEAKER,
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
.asset_type_info = NULL,
.init_data = speaker_init_data,
.copy_data = NULL,

View File

@ -242,6 +242,7 @@ IDTypeInfo IDType_ID_TXT = {
.name_plural = "texts",
.translation_context = BLT_I18NCONTEXT_ID_TEXT,
.flags = IDTYPE_FLAGS_NO_ANIMDATA | IDTYPE_FLAGS_APPEND_IS_REUSABLE,
.asset_type_info = NULL,
.init_data = text_init_data,
.copy_data = text_copy_data,

View File

@ -211,6 +211,7 @@ IDTypeInfo IDType_ID_TE = {
.name_plural = "textures",
.translation_context = BLT_I18NCONTEXT_ID_TEXTURE,
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
.asset_type_info = NULL,
.init_data = texture_init_data,
.copy_data = texture_copy_data,

View File

@ -162,6 +162,7 @@ IDTypeInfo IDType_ID_VF = {
.name_plural = "fonts",
.translation_context = BLT_I18NCONTEXT_ID_VFONT,
.flags = IDTYPE_FLAGS_NO_ANIMDATA | IDTYPE_FLAGS_APPEND_IS_REUSABLE,
.asset_type_info = NULL,
.init_data = vfont_init_data,
.copy_data = vfont_copy_data,

View File

@ -645,6 +645,7 @@ IDTypeInfo IDType_ID_VO = {
/* name_plural */ "volumes",
/* translation_context */ BLT_I18NCONTEXT_ID_VOLUME,
/* flags */ IDTYPE_FLAGS_APPEND_IS_REUSABLE,
/* asset_type_info */ nullptr,
/* init_data */ volume_init_data,
/* copy_data */ volume_copy_data,

View File

@ -187,6 +187,7 @@ IDTypeInfo IDType_ID_WS = {
.name_plural = "workspaces",
.translation_context = BLT_I18NCONTEXT_ID_WORKSPACE,
.flags = IDTYPE_FLAGS_NO_COPY | IDTYPE_FLAGS_ONLY_APPEND | IDTYPE_FLAGS_NO_ANIMDATA,
.asset_type_info = NULL,
.init_data = workspace_init_data,
.copy_data = NULL,

View File

@ -192,6 +192,7 @@ IDTypeInfo IDType_ID_WO = {
.name_plural = "worlds",
.translation_context = BLT_I18NCONTEXT_ID_WORLD,
.flags = IDTYPE_FLAGS_APPEND_IS_REUSABLE,
.asset_type_info = NULL,
.init_data = world_init_data,
.copy_data = world_copy_data,

View File

@ -272,6 +272,7 @@ IDTypeInfo IDType_ID_WM = {
.name_plural = "window_managers",
.translation_context = BLT_I18NCONTEXT_ID_WINDOWMANAGER,
.flags = IDTYPE_FLAGS_NO_COPY | IDTYPE_FLAGS_NO_LIBLINKING | IDTYPE_FLAGS_NO_ANIMDATA,
.asset_type_info = NULL,
.init_data = NULL,
.copy_data = NULL,