BKE Preferences: find asset library containing a path
Add `BKE_preferences_asset_library_containing_path(&U, some_path)` that finds the asset library that contains the given path. This is a simple linear search, returning the first asset library that matches. There is no smartness when it comes to nested asset libraries (like returning the library with the best-matching path), although this could be a useful feature to add later.
This commit is contained in:
@@ -43,6 +43,18 @@ struct bUserAssetLibrary *BKE_preferences_asset_library_find_from_index(
|
||||
const struct UserDef *userdef, int index) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT;
|
||||
struct bUserAssetLibrary *BKE_preferences_asset_library_find_from_name(
|
||||
const struct UserDef *userdef, const char *name) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT;
|
||||
|
||||
/**
|
||||
* Return the bUserAssetLibrary that contains the given file/directory path. The given path can be
|
||||
* the library's top-level directory, or any path inside that directory.
|
||||
*
|
||||
* When more than one asset libraries match, the first matching one is returned (no smartness when
|
||||
* there nested asset libraries).
|
||||
*
|
||||
* Return NULL when no such asset library is found. */
|
||||
struct bUserAssetLibrary *BKE_preferences_asset_library_containing_path(
|
||||
const struct UserDef *userdef, const char *path) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT;
|
||||
|
||||
int BKE_preferences_asset_library_get_index(const struct UserDef *userdef,
|
||||
const struct bUserAssetLibrary *library)
|
||||
ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT;
|
||||
|
||||
@@ -94,6 +94,17 @@ bUserAssetLibrary *BKE_preferences_asset_library_find_from_name(const UserDef *u
|
||||
return BLI_findstring(&userdef->asset_libraries, name, offsetof(bUserAssetLibrary, name));
|
||||
}
|
||||
|
||||
bUserAssetLibrary *BKE_preferences_asset_library_containing_path(const UserDef *userdef,
|
||||
const char *path)
|
||||
{
|
||||
LISTBASE_FOREACH (bUserAssetLibrary *, asset_lib_pref, &userdef->asset_libraries) {
|
||||
if (BLI_path_contains(asset_lib_pref->path, path)) {
|
||||
return asset_lib_pref;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int BKE_preferences_asset_library_get_index(const UserDef *userdef,
|
||||
const bUserAssetLibrary *library)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user