98 const char *version_cycle =
"";
100 version_cycle =
" Alpha";
103 version_cycle =
" Beta";
106 version_cycle =
" Release Candidate";
130 const size_t str_buff_len,
131 const short file_version,
132 const short file_subversion)
134 const short file_version_major = file_version / 100;
135 const short file_version_minor = file_version % 100;
136 if (file_subversion >= 0) {
145 BLI_snprintf(str_buff, str_buff_len,
"%d.%d", file_version_major, file_version_minor);
173 #ifndef WITH_PYTHON_SECURITY
227 if (kmdi->add_item) {
231 if (kmdi->remove_item) {
253 kpt_next = kpt->next;
271 for (
bAddon *addon = userdef->
addons.
first, *addon_next; addon; addon = addon_next) {
272 addon_next = addon->next;
280 #define U BLI_STATIC_ASSERT(false, "Global 'U' not allowed, only use arguments passed in!")
318 #define DATA_SWAP(id) \
320 UserDef userdef_tmp; \
321 memcpy(&(userdef_tmp.id), &(userdef_a->id), sizeof(userdef_tmp.id)); \
322 memcpy(&(userdef_a->id), &(userdef_b->id), sizeof(userdef_tmp.id)); \
323 memcpy(&(userdef_b->id), &(userdef_tmp.id), sizeof(userdef_tmp.id)); \
327 #define LIST_SWAP(id) \
329 SWAP(ListBase, userdef_a->id, userdef_b->id); \
333 #define FLAG_SWAP(id, ty, flags) \
335 CHECK_TYPE(&(userdef_a->id), ty *); \
336 const ty f = flags; \
337 const ty a = userdef_a->id; \
338 const ty b = userdef_b->id; \
339 userdef_a->id = (userdef_a->id & ~f) | (b & f); \
340 userdef_b->id = (userdef_b->id & ~f) | (a & f); \
void BKE_addon_free(struct bAddon *addon)
#define BLENDER_VERSION_PATCH
#define BLENDER_VERSION_CYCLE
void BKE_brush_system_exit(void)
void BKE_cachefiles_exit(void)
void BKE_callback_global_finalize(void)
void IDP_FreeProperty(struct IDProperty *prop)
struct Main * BKE_main_new(void)
void BKE_main_free(struct Main *mainvar)
void BKE_node_system_exit(void)
void BKE_spacetypes_free(void)
void BKE_studiolight_free(void)
void BLF_default_set(int fontid)
void BLF_unload_id(int fontid)
#define BLI_assert_msg(a, msg)
void BLI_kdtree_nd_() free(KDTree *tree)
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
void DEG_free_node_types(void)
@ USER_SHOW_GIZMO_NAVIGATE
void IMB_moviecache_destruct(void)
Read Guarded memory(de)allocation.
static struct AtExitData * g_atexit
void BKE_blender_userdef_data_swap(UserDef *userdef_a, UserDef *userdef_b)
static char blender_version_string[48]
bool BKE_blender_version_is_alpha(void)
static void userdef_free_keymaps(UserDef *userdef)
void BKE_blender_version_blendfile_string_from_values(char *str_buff, const size_t str_buff_len, const short file_version, const short file_subversion)
void BKE_blender_userdef_data_set(UserDef *userdef)
static void userdef_free_addons(UserDef *userdef)
void BKE_blender_globals_clear(void)
static void userdef_free_user_menus(UserDef *userdef)
void BKE_blender_userdef_app_template_data_set_and_free(UserDef *userdef)
void BKE_blender_atexit_register(void(*func)(void *user_data), void *user_data)
void BKE_blender_atexit_unregister(void(*func)(void *user_data), const void *user_data)
void BKE_blender_userdef_data_set_and_free(UserDef *userdef)
void BKE_blender_userdef_app_template_data_set(UserDef *userdef)
#define FLAG_SWAP(id, ty, flags)
void BKE_blender_atexit(void)
void BKE_blender_userdef_app_template_data_swap(UserDef *userdef_a, UserDef *userdef_b)
void BKE_blender_userdef_data_free(UserDef *userdef, bool clear_fonts)
void BKE_blender_globals_init(void)
static void keymap_item_free(wmKeyMapItem *kmi)
void BKE_blender_free(void)
const char * BKE_blender_version_string(void)
static void blender_version_init(void)
static void userdef_free_keyconfig_prefs(UserDef *userdef)
SyclQueue void void size_t num_bytes void
void(* MEM_freeN)(void *vmemh)
void(* func)(void *user_data)
struct ListBase user_keymaps
struct ListBase autoexec_paths
struct ListBase user_keyconfig_prefs
struct ListBase user_menus
struct ListBase asset_libraries
void RE_texture_rng_exit(void)