From b7dc0346aae849d2ba3f81839a6fd682ff24114a Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Wed, 6 Oct 2021 16:41:08 +0200 Subject: BMain: Add utils to check if a Main is empty or not. Mostly intended for debug code (asserts). --- source/blender/blenkernel/BKE_main.h | 2 ++ source/blender/blenkernel/intern/main.c | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/source/blender/blenkernel/BKE_main.h b/source/blender/blenkernel/BKE_main.h index 93d5b5c5aa6..3108dfd5d8f 100644 --- a/source/blender/blenkernel/BKE_main.h +++ b/source/blender/blenkernel/BKE_main.h @@ -201,6 +201,8 @@ typedef struct Main { struct Main *BKE_main_new(void); void BKE_main_free(struct Main *mainvar); +bool BKE_main_is_empty(struct Main *bmain); + void BKE_main_lock(struct Main *bmain); void BKE_main_unlock(struct Main *bmain); diff --git a/source/blender/blenkernel/intern/main.c b/source/blender/blenkernel/intern/main.c index 9c3291edbcc..583feacc04b 100644 --- a/source/blender/blenkernel/intern/main.c +++ b/source/blender/blenkernel/intern/main.c @@ -205,6 +205,17 @@ void BKE_main_free(Main *mainvar) MEM_freeN(mainvar); } +/* Check whether given `bmain` is empty or contains some IDs. */ +bool BKE_main_is_empty(struct Main *bmain) +{ + ID *id_iter; + FOREACH_MAIN_ID_BEGIN (bmain, id_iter) { + return false; + } + FOREACH_MAIN_ID_END; + return true; +} + void BKE_main_lock(struct Main *bmain) { BLI_spin_lock((SpinLock *)bmain->lock); -- cgit v1.2.3