Blender  V3.3
BKE_bpath.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
10 /* TODO: Make this module handle a bit more safely string length, instead of assuming buffers are
11  * FILE_MAX length etc. */
12 
13 #pragma once
14 
15 #ifdef __cplusplus
16 extern "C" {
17 #endif
18 
19 struct ID;
20 struct ListBase;
21 struct Main;
22 struct ReportList;
23 
27 typedef enum eBPathForeachFlag {
40  /* Skip weak reference paths. Those paths are typically 'nice to have' extra information, but are
41  * not used as actual source of data by the current .blend file.
42  *
43  * NOTE: Currently this only concerns the weak reference to a library file stored in
44  * `ID::library_weak_reference`. */
46 
60 
62 
70  char *r_path_dst,
71  const char *path_src);
72 
74 typedef struct BPathForeachPathData {
75  struct Main *bmain;
76 
79 
80  void *user_data;
81 
82  /* 'Private' data, caller don't need to set those. */
83 
86  const char *absolute_base_path;
88 
90 void BKE_bpath_foreach_path_id(BPathForeachPathData *bpath_data, struct ID *id);
91 
94 
100 /* TODO: Investigate using macros around those calls to check a bit better about actual
101  * strings/buffers length (e,g, with static asserts). */
102 
110 bool BKE_bpath_foreach_path_fixed_process(struct BPathForeachPathData *bpath_data, char *path);
111 
122  char *path_dir,
123  char *path_file);
124 
135  char **path);
136 
143 void BKE_bpath_missing_files_check(struct Main *bmain, struct ReportList *reports);
144 
157 void BKE_bpath_missing_files_find(struct Main *bmain,
158  const char *searchpath,
159  struct ReportList *reports,
160  bool find_all);
161 
163 void BKE_bpath_relative_rebase(struct Main *bmain,
164  const char *basedir_src,
165  const char *basedir_dst,
166  struct ReportList *reports);
167 
169 void BKE_bpath_relative_convert(struct Main *bmain,
170  const char *basedir,
171  struct ReportList *reports);
172 
174 void BKE_bpath_absolute_convert(struct Main *bmain,
175  const char *basedir,
176  struct ReportList *reports);
177 
182 void *BKE_bpath_list_backup(struct Main *bmain, eBPathForeachFlag flag);
183 
189 void BKE_bpath_list_restore(struct Main *bmain, eBPathForeachFlag flag, void *path_list_handle);
190 
195 void BKE_bpath_list_free(void *path_list_handle);
196 
199 #ifdef __cplusplus
200 }
201 #endif
struct BPathForeachPathData BPathForeachPathData
void BKE_bpath_relative_rebase(struct Main *bmain, const char *basedir_src, const char *basedir_dst, struct ReportList *reports)
Definition: bpath.c:439
bool BKE_bpath_foreach_path_fixed_process(struct BPathForeachPathData *bpath_data, char *path)
Definition: bpath.c:121
void BKE_bpath_relative_convert(struct Main *bmain, const char *basedir, struct ReportList *reports)
Definition: bpath.c:559
void * BKE_bpath_list_backup(struct Main *bmain, eBPathForeachFlag flag)
Definition: bpath.c:619
void BKE_bpath_list_restore(struct Main *bmain, eBPathForeachFlag flag, void *path_list_handle)
Definition: bpath.c:631
void BKE_bpath_foreach_path_id(BPathForeachPathData *bpath_data, struct ID *id)
Definition: bpath.c:80
void BKE_bpath_missing_files_find(struct Main *bmain, const char *searchpath, struct ReportList *reports, bool find_all)
Definition: bpath.c:368
bool BKE_bpath_foreach_path_allocated_process(struct BPathForeachPathData *bpath_data, char **path)
Definition: bpath.c:175
bool(* BPathForeachPathFunctionCallback)(struct BPathForeachPathData *bpath_data, char *r_path_dst, const char *path_src)
Definition: BKE_bpath.h:69
void BKE_bpath_missing_files_check(struct Main *bmain, struct ReportList *reports)
Definition: bpath.c:220
eBPathForeachFlag
Definition: BKE_bpath.h:27
@ BKE_BPATH_TRAVERSE_SKIP_WEAK_REFERENCES
Definition: BKE_bpath.h:45
@ BKE_BPATH_FOREACH_PATH_SKIP_LINKED
Definition: BKE_bpath.h:35
@ BKE_BPATH_FOREACH_PATH_ABSOLUTE
Definition: BKE_bpath.h:33
@ BKE_BPATH_FOREACH_PATH_SKIP_PACKED
Definition: BKE_bpath.h:37
@ BKE_BPATH_FOREACH_PATH_SKIP_MULTIFILE
Definition: BKE_bpath.h:55
@ BKE_BPATH_FOREACH_PATH_RESOLVE_TOKEN
Definition: BKE_bpath.h:39
@ BKE_BPATH_FOREACH_PATH_RELOAD_EDITED
Definition: BKE_bpath.h:58
void BKE_bpath_list_free(void *path_list_handle)
Definition: bpath.c:641
bool BKE_bpath_foreach_path_dirfile_fixed_process(struct BPathForeachPathData *bpath_data, char *path_dir, char *path_file)
Definition: bpath.c:149
void BKE_bpath_foreach_path_main(BPathForeachPathData *bpath_data)
Definition: bpath.c:112
void BKE_bpath_absolute_convert(struct Main *bmain, const char *basedir, struct ReportList *reports)
Definition: bpath.c:564
const char * absolute_base_path
Definition: BKE_bpath.h:86
eBPathForeachFlag flag
Definition: BKE_bpath.h:78
struct Main * bmain
Definition: BKE_bpath.h:75
BPathForeachPathFunctionCallback callback_function
Definition: BKE_bpath.h:77
Definition: DNA_ID.h:368
Definition: BKE_main.h:121