diff options
author | Bastien Montagne <bastien@blender.org> | 2021-11-11 16:40:11 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2021-11-23 14:18:37 +0300 |
commit | 605cdc4346e5f82c031c4a5d6ecd91bf8268f7ff (patch) | |
tree | f6acf2c18a5fdf4c71a298d309860b5630c68f24 /source/blender/blenkernel/BKE_blendfile_link_append.h | |
parent | 0452a04f1a1840544287810528e2aaab1daca2ce (diff) |
BKE LibLink/Append: Add mechanism for external code to loop over link/append context items.
Will be required for python's `bpy.data.libraries.load()` refactor.
Diffstat (limited to 'source/blender/blenkernel/BKE_blendfile_link_append.h')
-rw-r--r-- | source/blender/blenkernel/BKE_blendfile_link_append.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_blendfile_link_append.h b/source/blender/blenkernel/BKE_blendfile_link_append.h index 2035f69315c..9e4a498f5e7 100644 --- a/source/blender/blenkernel/BKE_blendfile_link_append.h +++ b/source/blender/blenkernel/BKE_blendfile_link_append.h @@ -68,6 +68,34 @@ void *BKE_blendfile_link_append_context_item_userdata_get( struct BlendfileLinkAppendContext *lapp_context, struct BlendfileLinkAppendContextItem *item); struct ID *BKE_blendfile_link_append_context_item_newid_get( struct BlendfileLinkAppendContext *lapp_context, struct BlendfileLinkAppendContextItem *item); +short BKE_blendfile_link_append_context_item_idcode_get( + struct BlendfileLinkAppendContext *lapp_context, struct BlendfileLinkAppendContextItem *item); + +typedef enum eBlendfileLinkAppendForeachItemFlag { + /** Loop over directly linked items (i.e. those explicitely defined by user code). */ + BKE_BLENDFILE_LINK_APPEND_FOREACH_ITEM_FLAG_DO_DIRECT = 1 << 0, + /** Loop over indirectly linked items (i.e. those defined by internal code, as dependencies of + * direct ones). + * + * IMPORTANT: Those 'indirect' items currently may not cover **all** indrectly linked data. See + * comments in #foreach_libblock_link_append_callback. */ + BKE_BLENDFILE_LINK_APPEND_FOREACH_ITEM_FLAG_DO_INDIRECT = 1 << 0, +} eBlendfileLinkAppendForeachItemFlag; +/** Callback called by #BKE_blendfile_link_append_context_item_foreach over each (or a subset of + * each) of the items in given #BlendfileLinkAppendContext. + * + * \param userdata: An opaque void pointer passed to the `callback_function`. + * + * \return `true` if iteration should continue, `false` otherwise. */ +typedef bool (*BKE_BlendfileLinkAppendContexteItemFunction)( + struct BlendfileLinkAppendContext *lapp_context, + struct BlendfileLinkAppendContextItem *item, + void *userdata); +void BKE_blendfile_link_append_context_item_foreach( + struct BlendfileLinkAppendContext *lapp_context, + BKE_BlendfileLinkAppendContexteItemFunction callback_function, + const eBlendfileLinkAppendForeachItemFlag flag, + void *userdata); void BKE_blendfile_append(struct BlendfileLinkAppendContext *lapp_context, struct ReportList *reports); |