477 const char *library_filepath,
490 const char *library_filepath,
491 const char *library_id_name,
509 const char *library_filepath,
510 const char *library_id_name,
524 const char *library_filepath,
525 const char *library_id_name,
533 const char *library_filepath,
534 const char *library_id_name);
541 const char *library_filepath,
542 const char *library_id_name);
546#define FOREACH_MAIN_LISTBASE_ID_BEGIN(_lb, _id) \
548 ID *_id_next = static_cast<ID *>((_lb)->first); \
549 for ((_id) = _id_next; (_id) != nullptr; (_id) = _id_next) { \
550 _id_next = static_cast<ID *>((_id)->next);
552#define FOREACH_MAIN_LISTBASE_ID_END \
557#define FOREACH_MAIN_LISTBASE_BEGIN(_bmain, _lb) \
559 MainListsArray _lbarray = BKE_main_lists_get(*(_bmain)); \
560 size_t _i = _lbarray.size(); \
562 (_lb) = _lbarray[_i];
564#define FOREACH_MAIN_LISTBASE_END \
577#define FOREACH_MAIN_ID_BEGIN(_bmain, _id) \
580 FOREACH_MAIN_LISTBASE_BEGIN ((_bmain), _lb) { \
581 FOREACH_MAIN_LISTBASE_ID_BEGIN (_lb, (_id))
583#define FOREACH_MAIN_ID_END \
584 FOREACH_MAIN_LISTBASE_ID_END; \
586 FOREACH_MAIN_LISTBASE_END; \
658#define MAIN_VERSION_FILE_ATLEAST(main, ver, subver) \
659 ((main)->versionfile > (ver) || \
660 ((main)->versionfile == (ver) && (main)->subversionfile >= (subver)))
662#define MAIN_VERSION_FILE_OLDER(main, ver, subver) \
663 ((main)->versionfile < (ver) || \
664 ((main)->versionfile == (ver) && (main)->subversionfile < (subver)))
666#define MAIN_VERSION_FILE_OLDER_OR_EQUAL(main, ver, subver) \
667 ((main)->versionfile < (ver) || \
668 ((main)->versionfile == (ver) && (main)->subversionfile <= (subver)))
673#define LIBRARY_VERSION_FILE_ATLEAST(lib, ver, subver) \
674 ((lib)->runtime->versionfile == 0 || (lib)->runtime->versionfile > (ver) || \
675 ((lib)->runtime->versionfile == (ver) && (lib)->runtime->subversionfile >= (subver)))
684#define BLEN_THUMB_SIZE 128
686#define BLEN_THUMB_MEMSIZE(_x, _y) \
687 (sizeof(BlendThumbnail) + ((size_t)(_x) * (size_t)(_y)) * sizeof(int))
689#define BLEN_THUMB_MEMSIZE_IS_VALID(_x, _y) \
690 (((_x) > 0 && (_y) > 0) && ((uint64_t)(_x) * (uint64_t)(_y) < (SIZE_MAX / (sizeof(int) * 4))))
LibraryForeachIDCallbackFlag
MainListsArray BKE_main_lists_get(Main &bmain)
BlendThumbnail * BKE_main_thumbnail_from_imbuf(Main *bmain, ImBuf *img)
ListBase * which_libbase(Main *bmain, short type)
void BKE_main_clear(Main &bmain)
void BKE_main_library_weak_reference_destroy(MainLibraryWeakReferenceMap *library_weak_reference_mapping) ATTR_NONNULL()
std::array< ListBase *, INDEX_ID_MAX - 1 > MainListsArray
@ MAINIDRELATIONS_INCLUDE_UI
void BKE_main_merge(Main *bmain_dst, Main **r_bmain_src, MainMergeReport &reports)
void BKE_main_library_weak_reference_add(ID *local_id, const char *library_filepath, const char *library_id_name)
bool BKE_main_needs_overwrite_confirm(const Main *bmain)
bool BKE_main_has_issues(const Main *bmain)
ID * BKE_main_library_weak_reference_search_item(MainLibraryWeakReferenceMap *library_weak_reference_mapping, const char *library_filepath, const char *library_id_name) ATTR_NONNULL()
eMainIDRelationsEntryTags
@ MAINIDRELATIONS_ENTRY_TAGS_INPROGRESS_FROM
@ MAINIDRELATIONS_ENTRY_TAGS_PROCESSED_TO
@ MAINIDRELATIONS_ENTRY_TAGS_PROCESSED
@ MAINIDRELATIONS_ENTRY_TAGS_INPROGRESS
@ MAINIDRELATIONS_ENTRY_TAGS_DOIT
@ MAINIDRELATIONS_ENTRY_TAGS_PROCESSED_FROM
@ MAINIDRELATIONS_ENTRY_TAGS_INPROGRESS_TO
void BKE_main_lock(Main *bmain)
void BKE_main_thumbnail_create(Main *bmain)
void BKE_main_relations_tag_set(Main *bmain, eMainIDRelationsEntryTags tag, bool value)
ImBuf * BKE_main_thumbnail_to_imbuf(Main *bmain, BlendThumbnail *data)
const char * BKE_main_blendfile_path_from_library(const Library &library)
void BKE_main_free(Main *bmain)
void BKE_main_relations_create(Main *bmain, short flag)
const char * BKE_main_blendfile_path(const Main *bmain) ATTR_NONNULL()
MainLibraryWeakReferenceMap * BKE_main_library_weak_reference_create(Main *bmain) ATTR_NONNULL()
BlendThumbnail * BKE_main_thumbnail_from_buffer(Main *bmain, const uint8_t *rect, const int size[2])
ID * BKE_main_library_weak_reference_find(Main *bmain, const char *library_filepath, const char *library_id_name)
void BKE_main_unlock(Main *bmain)
bool BKE_main_is_empty(Main *bmain)
void BKE_main_library_weak_reference_remove_item(MainLibraryWeakReferenceMap *library_weak_reference_mapping, const char *library_filepath, const char *library_id_name, ID *old_id) ATTR_NONNULL()
GSet * BKE_main_gset_create(Main *bmain, GSet *gset)
void BKE_main_library_weak_reference_update_item(MainLibraryWeakReferenceMap *library_weak_reference_mapping, const char *library_filepath, const char *library_id_name, ID *old_id, ID *new_id) ATTR_NONNULL()
void BKE_main_relations_free(Main *bmain)
void BKE_main_library_weak_reference_add_item(MainLibraryWeakReferenceMap *library_weak_reference_mapping, const char *library_filepath, const char *library_id_name, ID *new_id) ATTR_NONNULL()
const char * BKE_main_blendfile_path_from_global()
#define ATTR_NONNULL(...)
These structs are the foundation for all linked lists in the library system.
BMesh const char void * data
unsigned long long int uint64_t
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
MatBase< float, 3, 3 > float3x3
char scene_linear_name[64]
bool is_missing_opencolorio_config
blender::float3x3 scene_linear_to_xyz
MainIDRelationsEntryItem * next
union MainIDRelationsEntryItem::@072362065353355346121131265061232353372304016351 id_pointer
LibraryForeachIDCallbackFlag usage_flag
MainIDRelationsEntryItem * from_ids
MainIDRelationsEntryItem * to_ids
GHash * relations_from_pointers
BLI_mempool * entry_items_pool
int num_remapped_libraries
bool is_locked_for_linking
UniqueName_Map * name_map_global
bool has_forward_compatibility_issues
UniqueName_Map * name_map
bool is_memfile_undo_written
BlendThumbnail * blen_thumb
bool is_action_slot_to_id_map_dirty
uint64_t build_commit_timestamp
bool is_memfile_undo_flush_needed
bool use_memfile_full_barrier
std::shared_ptr< blender::VectorSet< Main * > > split_mains
MainColorspace colorspace
MainIDRelations * relations