66 for (
ID *
id = lbarray[i]->first;
id !=
NULL;
id =
id->next) {
71 "ID %s is in local database while being linked from library %s!",
78 for (
Main *curmain = bmain->
next; curmain !=
NULL; curmain = curmain->next) {
79 Library *curlib = curmain->curlib;
91 "Library ID %s not found at expected path %s!",
108 "Library ID %s in library %s, this should not happen!",
116 for (;
id !=
NULL;
id =
id->next) {
121 "ID %s has NULL lib pointer while being in library %s!",
126 if (
id->
lib != curlib) {
133 for (; name; name = name->
next) {
134 char *str_name = (
char *)name->
link;
144 "ID %s not found in library %s anymore!",
184 if (shapekey !=
NULL && shapekey->
from !=
id) {
188 "ID %s uses shapekey %s, but its 'from' pointer is invalid (%p), fixing...",
205 if (shapekey->from !=
NULL) {
211 "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(const 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_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)
void BKE_report(ReportList *reports, ReportType type, const char *message)
void BKE_reportf(ReportList *reports, ReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
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)
Utils ensuring .blend file (i.e. Main) is in valid state during write and/or read process.
external readfile function prototypes.
struct BlendHandle BlendHandle
struct LinkNode * BLO_blendhandle_get_datablock_names(BlendHandle *bh, int ofblocktype, const bool use_assets_only, int *r_tot_names)
BlendHandle * BLO_blendhandle_from_file(const char *filepath, struct ReportList *reports)
void BLO_blendhandle_close(BlendHandle *bh)
Read Guarded memory(de)allocation.
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)