51 for (
ID *
id = lbarray[i]->first;
id !=
NULL;
id =
id->next) {
56 "ID %s is in local database while being linked from library %s!",
63 for (
Main *curmain = bmain->
next; curmain !=
NULL; curmain = curmain->next) {
64 Library *curlib = curmain->curlib;
77 "Library ID %s not found at expected path %s!",
94 "Library ID %s in library %s, this should not happen!",
102 for (;
id !=
NULL;
id =
id->next) {
107 "ID %s has NULL lib pointer while being in library %s!",
112 if (
id->
lib != curlib) {
119 for (; name; name = name->
next) {
120 char *str_name = (
char *)name->
link;
130 "ID %s not found in library %s anymore!",
169 if (shapekey !=
NULL && shapekey->
from !=
id) {
173 "ID %s uses shapekey %s, but its 'from' pointer is invalid (%p), fixing...",
190 if (shapekey->from !=
NULL) {
196 "Shapekey %s has an invalid 'from' pointer (%p), it will be deleted",
struct Key * BKE_key_from_id(struct ID *id)
bool BKE_key_idtype_support(short id_type)
void BKE_id_delete(struct Main *bmain, void *idv) ATTR_NONNULL()
void BKE_library_filepath_set(struct Main *bmain, struct Library *lib, const char *filepath)
#define FOREACH_MAIN_ID_END
#define FOREACH_MAIN_LISTBASE_ID_END
int set_listbasepointers(struct Main *main, struct ListBase *lb[])
#define FOREACH_MAIN_LISTBASE_ID_BEGIN(_lb, _id)
#define FOREACH_MAIN_LISTBASE_END
void BKE_main_unlock(struct Main *bmain)
void BKE_main_lock(struct Main *bmain)
#define FOREACH_MAIN_LISTBASE_BEGIN(_bmain, _lb)
#define FOREACH_MAIN_ID_BEGIN(_bmain, _id)
struct bNodeTree * ntreeFromID(struct ID *id)
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
void BKE_report(ReportList *reports, eReportType type, const char *message)
void BLI_linklist_freeN(LinkNode *list)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
void void BLI_INLINE bool BLI_listbase_is_single(const struct ListBase *lb)
Utilities ensuring .blend file (i.e. Main) is in valid state during write and/or read process.
external readfile function prototypes.
BlendHandle * BLO_blendhandle_from_file(const char *filepath, struct BlendFileReadReport *reports)
struct LinkNode * BLO_blendhandle_get_datablock_names(BlendHandle *bh, int ofblocktype, bool use_assets_only, int *r_tot_names)
struct BlendHandle BlendHandle
void BLO_blendhandle_close(BlendHandle *bh)
#define ID_IS_LINKED(_id)
@ LIB_EMBEDDED_DATA_LIB_OVERRIDE
#define ID_IS_OVERRIDE_LIBRARY(_id)
Object groups, one object can be in many groups at once.
Read Guarded memory(de)allocation.
void BLO_main_validate_embedded_liboverrides(Main *bmain, ReportList *UNUSED(reports))
bool BLO_main_validate_libraries(Main *bmain, ReportList *reports)
bool BLO_main_validate_shapekeys(Main *bmain, ReportList *reports)
void blo_split_main(ListBase *mainlist, Main *main)
void blo_join_main(ListBase *mainlist)
struct ReportList * reports
struct Collection * master_collection