|
Blender
V2.93
|
#include <stddef.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include "BLI_endian_switch.h"#include "BLI_listbase.h"#include "BLI_math.h"#include "BLI_string.h"#include "BLI_utildefines.h"#include "BKE_global.h"#include "BKE_idprop.h"#include "BKE_lib_id.h"#include "CLG_log.h"#include "MEM_guardedalloc.h"#include "BLO_read_write.h"#include "BLI_strict_flags.h"Go to the source code of this file.
Macros | |
| #define | IDP_ARRAY_REALLOC_LIMIT 200 |
Functions | |
String Functions (IDProperty String API) | |
| IDProperty * | IDP_NewString (const char *st, const char *name, int maxlen) |
| static IDProperty * | IDP_CopyString (const IDProperty *prop, const int flag) |
| void | IDP_AssignString (IDProperty *prop, const char *st, int maxlen) |
| void | IDP_ConcatStringC (IDProperty *prop, const char *st) |
| void | IDP_ConcatString (IDProperty *str1, IDProperty *append) |
| void | IDP_FreeString (IDProperty *prop) |
ID Type (IDProperty ID API) | |
| static IDProperty * | IDP_CopyID (const IDProperty *prop, const int flag) |
| void | IDP_AssignID (IDProperty *prop, ID *id, const int flag) |
Group Functions (IDProperty Group API) | |
| static IDProperty * | IDP_CopyGroup (const IDProperty *prop, const int flag) |
| void | IDP_SyncGroupValues (IDProperty *dest, const IDProperty *src) |
| void | IDP_SyncGroupTypes (IDProperty *dest, const IDProperty *src, const bool do_arraylen) |
| void | IDP_ReplaceGroupInGroup (IDProperty *dest, const IDProperty *src) |
| void | IDP_ReplaceInGroup_ex (IDProperty *group, IDProperty *prop, IDProperty *prop_exist) |
| void | IDP_ReplaceInGroup (IDProperty *group, IDProperty *prop) |
| void | IDP_MergeGroup_ex (IDProperty *dest, const IDProperty *src, const bool do_overwrite, const int flag) |
| void | IDP_MergeGroup (IDProperty *dest, const IDProperty *src, const bool do_overwrite) |
| bool | IDP_AddToGroup (IDProperty *group, IDProperty *prop) |
| bool | IDP_InsertToGroup (IDProperty *group, IDProperty *previous, IDProperty *pnew) |
| void | IDP_RemoveFromGroup (IDProperty *group, IDProperty *prop) |
| void | IDP_FreeFromGroup (IDProperty *group, IDProperty *prop) |
| IDProperty * | IDP_GetPropertyFromGroup (const IDProperty *prop, const char *name) |
| IDProperty * | IDP_GetPropertyTypeFromGroup (const IDProperty *prop, const char *name, const char type) |
| static void | IDP_FreeGroup (IDProperty *prop, const bool do_id_user) |
Main Functions (IDProperty Main API) | |
| IDProperty * | IDP_CopyProperty_ex (const IDProperty *prop, const int flag) |
| IDProperty * | IDP_CopyProperty (const IDProperty *prop) |
| void | IDP_CopyPropertyContent (IDProperty *dst, IDProperty *src) |
| IDProperty * | IDP_GetProperties (ID *id, const bool create_if_needed) |
| bool | IDP_EqualsProperties_ex (IDProperty *prop1, IDProperty *prop2, const bool is_strict) |
| bool | IDP_EqualsProperties (IDProperty *prop1, IDProperty *prop2) |
| IDProperty * | IDP_New (const char type, const IDPropertyTemplate *val, const char *name) |
| void | IDP_FreePropertyContent_ex (IDProperty *prop, const bool do_id_user) |
| void | IDP_FreePropertyContent (IDProperty *prop) |
| void | IDP_FreeProperty_ex (IDProperty *prop, const bool do_id_user) |
| void | IDP_FreeProperty (IDProperty *prop) |
| void | IDP_ClearProperty (IDProperty *prop) |
| void | IDP_Reset (IDProperty *prop, const IDProperty *reference) |
| void | IDP_foreach_property (IDProperty *id_property_root, const int type_filter, IDPForeachPropertyCallback callback, void *user_data) |
| void | IDP_WriteProperty_OnlyData (const IDProperty *prop, BlendWriter *writer) |
| static void | IDP_WriteArray (const IDProperty *prop, BlendWriter *writer) |
| static void | IDP_WriteIDPArray (const IDProperty *prop, BlendWriter *writer) |
| static void | IDP_WriteString (const IDProperty *prop, BlendWriter *writer) |
| static void | IDP_WriteGroup (const IDProperty *prop, BlendWriter *writer) |
| void | IDP_BlendWrite (BlendWriter *writer, const IDProperty *prop) |
| static void | IDP_DirectLinkProperty (IDProperty *prop, BlendDataReader *reader) |
| static void | IDP_DirectLinkIDPArray (IDProperty *prop, BlendDataReader *reader) |
| static void | IDP_DirectLinkArray (IDProperty *prop, BlendDataReader *reader) |
| static void | IDP_DirectLinkString (IDProperty *prop, BlendDataReader *reader) |
| static void | IDP_DirectLinkGroup (IDProperty *prop, BlendDataReader *reader) |
| void | IDP_BlendReadData_impl (BlendDataReader *reader, IDProperty **prop, const char *caller_func_id) |
| void | IDP_BlendReadLib (BlendLibReader *reader, IDProperty *prop) |
| void | IDP_BlendReadExpand (struct BlendExpander *expander, IDProperty *prop) |
Variables | |
| static CLG_LogRef | LOG = {"bke.idprop"} |
| static size_t | idp_size_table [] |
Array Functions (IDP Array API) | |
| #define | GETPROP(prop, i) &(IDP_IDPArray(prop)[i]) |
| IDProperty * | IDP_NewIDPArray (const char *name) |
| IDProperty * | IDP_CopyIDPArray (const IDProperty *array, const int flag) |
| static void | IDP_FreeIDPArray (IDProperty *prop, const bool do_id_user) |
| void | IDP_SetIndexArray (IDProperty *prop, int index, IDProperty *item) |
| IDProperty * | IDP_GetIndexArray (IDProperty *prop, int index) |
| void | IDP_AppendArray (IDProperty *prop, IDProperty *item) |
| void | IDP_ResizeIDPArray (IDProperty *prop, int newlen) |
| static void | idp_resize_group_array (IDProperty *prop, int newlen, void *newarr) |
| void | IDP_ResizeArray (IDProperty *prop, int newlen) |
| void | IDP_FreeArray (IDProperty *prop) |
| static IDProperty * | idp_generic_copy (const IDProperty *prop, const int UNUSED(flag)) |
| static IDProperty * | IDP_CopyArray (const IDProperty *prop, const int flag) |
| #define GETPROP | ( | prop, | |
| i | |||
| ) | &(IDP_IDPArray(prop)[i]) |
| #define IDP_ARRAY_REALLOC_LIMIT 200 |
if the new is 'IDP_ARRAY_REALLOC_LIMIT' items less, than IDProperty.totallen, reallocate anyway.
| bool IDP_AddToGroup | ( | IDProperty * | group, |
| IDProperty * | prop | ||
| ) |
This function has a sanity check to make sure ID properties with the same name don't get added to the group.
The sanity check just means the property is not added to the group if another property exists with the same name; the client code using ID properties then needs to detect this (the function that adds new properties to groups, IDP_AddToGroup, returns false if a property can't be added to the group, and true if it can) and free the property.
Definition at line 643 of file idprop.c.
References BLI_addtail(), BLI_assert, IDProperty::data, IDPropertyData::group, IDP_GetPropertyFromGroup(), IDP_GROUP, IDProperty::len, IDProperty::name, NULL, and IDProperty::type.
Referenced by bc_set_IDPropertyMatrix(), BKE_keyconfig_pref_set_select_mouse(), cycles_property_int_set(), IMB_metadata_set_field(), MOD_nodes_update_interface(), operator_last_properties_init_impl(), rna_idproperty_ui_ensure(), rna_idproperty_ui_set_default(), RNA_property_boolean_set(), RNA_property_boolean_set_array(), RNA_property_collection_add(), RNA_property_copy(), RNA_property_enum_set(), RNA_property_float_set(), RNA_property_float_set_array(), RNA_property_int_set(), RNA_property_int_set_array(), RNA_property_pointer_add(), RNA_property_string_set(), RNA_property_string_set_bytes(), shortcut_property_from_rna(), socket_add_property(), texture_paint_image_from_view_exec(), ui_but_event_operator_string_from_menu(), ui_but_event_operator_string_from_panel(), and ui_but_event_property_operator_string().
| void IDP_AppendArray | ( | IDProperty * | prop, |
| IDProperty * | item | ||
| ) |
Definition at line 153 of file idprop.c.
References BLI_assert, IDP_IDPARRAY, IDP_ResizeIDPArray(), IDP_SetIndexArray(), IDProperty::len, and IDProperty::type.
Referenced by BPy_IDProperty_Map_ValidateAndCreate(), and RNA_property_collection_add().
| void IDP_AssignID | ( | IDProperty * | prop, |
| ID * | id, | ||
| const int | flag | ||
| ) |
Definition at line 437 of file idprop.c.
References BLI_assert, IDProperty::data, id, id_us_min(), id_us_plus(), IDP_Id, IDP_ID, LIB_ID_CREATE_NO_USER_REFCOUNT, NULL, IDPropertyData::pointer, and IDProperty::type.
Referenced by RNA_property_pointer_set().
| void IDP_AssignString | ( | IDProperty * | prop, |
| const char * | st, | ||
| int | maxlen | ||
| ) |
Definition at line 369 of file idprop.c.
References BLI_assert, BLI_strncpy(), IDProperty::data, IDP_ResizeArray(), IDP_STRING, IDP_STRING_SUB_BYTE, IDPropertyData::pointer, IDProperty::subtype, and IDProperty::type.
Referenced by IMB_metadata_set_field(), and RNA_property_string_set().
| void IDP_BlendReadData_impl | ( | BlendDataReader * | reader, |
| IDProperty ** | prop, | ||
| const char * | caller_func_id | ||
| ) |
Definition at line 1284 of file idprop.c.
References IDP_DirectLinkGroup(), IDP_GROUP, and NULL.
| void IDP_BlendReadExpand | ( | struct BlendExpander * | expander, |
| IDProperty * | prop | ||
| ) |
Definition at line 1336 of file idprop.c.
References BLO_expand, IDProperty::data, IDPropertyData::group, IDP_BlendReadExpand(), IDP_GROUP, IDP_Id, IDP_ID, IDP_IDPArray, IDP_IDPARRAY, IDProperty::len, LISTBASE_FOREACH, and IDProperty::type.
Referenced by BKE_pose_blend_read_expand(), expand_bones(), expand_id(), expand_node_socket(), IDP_BlendReadExpand(), ntreeBlendReadExpand(), and scene_blend_read_expand().
| void IDP_BlendReadLib | ( | BlendLibReader * | reader, |
| IDProperty * | prop | ||
| ) |
Definition at line 1300 of file idprop.c.
References BLO_read_get_new_id_address(), IDProperty::data, G, IDPropertyData::group, IDP_BlendReadLib(), IDP_GROUP, IDP_Id, IDP_ID, IDP_IDPArray, IDP_IDPARRAY, IDProperty::len, LISTBASE_FOREACH, IDProperty::name, NULL, IDPropertyData::pointer, and IDProperty::type.
Referenced by BKE_pose_blend_read_lib(), BKE_view_layer_blend_read_lib(), IDP_BlendReadLib(), lib_link_bones(), lib_link_id(), lib_link_node_socket(), ntreeBlendReadLib(), and scene_blend_read_lib().
| void IDP_BlendWrite | ( | BlendWriter * | writer, |
| const IDProperty * | prop | ||
| ) |
Definition at line 1170 of file idprop.c.
References BLO_write_struct, and IDP_WriteProperty_OnlyData().
Referenced by IDP_WriteArray(), and IDP_WriteGroup().
| void IDP_ClearProperty | ( | IDProperty * | prop | ) |
Definition at line 1046 of file idprop.c.
References IDProperty::data, IDP_FreePropertyContent(), IDProperty::len, NULL, IDPropertyData::pointer, and IDProperty::totallen.
Referenced by BPy_IDGroup_clear(), IDP_Reset(), WM_gizmo_properties_clear(), and WM_operator_properties_clear().
| void IDP_ConcatString | ( | IDProperty * | str1, |
| IDProperty * | append | ||
| ) |
Definition at line 399 of file idprop.c.
References BLI_assert, IDProperty::data, IDP_ResizeArray(), IDP_STRING, IDProperty::len, IDPropertyData::pointer, and IDProperty::type.
| void IDP_ConcatStringC | ( | IDProperty * | prop, |
| const char * | st | ||
| ) |
Definition at line 388 of file idprop.c.
References BLI_assert, IDProperty::data, IDP_ResizeArray(), IDP_STRING, IDProperty::len, IDPropertyData::pointer, and IDProperty::type.
|
static |
Definition at line 290 of file idprop.c.
References Freestyle::a, IDProperty::data, IDP_CopyProperty_ex(), idp_generic_copy(), IDP_GROUP, IDProperty::len, MEM_dupallocN, IDPropertyData::pointer, IDProperty::subtype, IDProperty::totallen, and IDProperty::type.
Referenced by IDP_CopyProperty_ex().
|
static |
Checks if a property with the same name as prop exists, and if so replaces it.
Definition at line 461 of file idprop.c.
References BLI_addtail(), BLI_assert, IDProperty::data, IDPropertyData::group, IDP_CopyProperty_ex(), idp_generic_copy(), IDP_GROUP, IDProperty::len, LISTBASE_FOREACH, IDProperty::subtype, and IDProperty::type.
Referenced by IDP_CopyProperty_ex().
|
static |
Definition at line 424 of file idprop.c.
References BLI_assert, IDProperty::data, id_us_plus(), idp_generic_copy(), IDP_Id, IDP_ID, LIB_ID_CREATE_NO_USER_REFCOUNT, IDPropertyData::pointer, and IDProperty::type.
Referenced by IDP_CopyProperty_ex().
| IDProperty* IDP_CopyIDPArray | ( | const IDProperty * | array, |
| const int | flag | ||
| ) |
Definition at line 92 of file idprop.c.
References BLI_assert, array< T, alignment >::data(), IDProperty::data, GETPROP, IDP_CopyProperty_ex(), IDP_IDPARRAY, IDProperty::len, MEM_dupallocN, MEM_freeN, MEM_mallocN, and IDPropertyData::pointer.
Referenced by IDP_CopyProperty_ex().
| IDProperty* IDP_CopyProperty | ( | const IDProperty * | prop | ) |
Definition at line 746 of file idprop.c.
References IDP_CopyProperty_ex().
Referenced by IDP_CopyPropertyContent(), IDP_ReplaceGroupInGroup(), IDP_SyncGroupTypes(), and IDP_SyncGroupValues().
| IDProperty* IDP_CopyProperty_ex | ( | const IDProperty * | prop, |
| const int | flag | ||
| ) |
Definition at line 728 of file idprop.c.
References IDP_ARRAY, IDP_CopyArray(), IDP_CopyGroup(), IDP_CopyID(), IDP_CopyIDPArray(), IDP_CopyString(), idp_generic_copy(), IDP_GROUP, IDP_ID, IDP_IDPARRAY, IDP_STRING, and IDProperty::type.
Referenced by IDP_CopyArray(), IDP_CopyGroup(), IDP_CopyIDPArray(), IDP_CopyProperty(), and IDP_MergeGroup_ex().
| void IDP_CopyPropertyContent | ( | IDProperty * | dst, |
| IDProperty * | src | ||
| ) |
Copy content from source IDProperty into destination one, freeing destination property's content first.
Definition at line 755 of file idprop.c.
References IDP_CopyProperty(), IDP_FreeProperty(), IDProperty::next, IDProperty::prev, and SWAP.
Referenced by MOD_nodes_update_interface().
|
static |
Definition at line 354 of file idprop.c.
References BLI_assert, IDProperty::data, idp_generic_copy(), IDP_STRING, IDProperty::len, MEM_dupallocN, IDPropertyData::pointer, IDProperty::subtype, IDProperty::totallen, and IDProperty::type.
Referenced by IDP_CopyProperty_ex().
|
static |
Definition at line 1198 of file idprop.c.
References BLO_read_double_array(), BLO_read_int32_array(), BLO_read_pointer_array(), IDProperty::data, IDP_DirectLinkProperty(), IDP_DOUBLE, IDP_GROUP, IDProperty::len, IDPropertyData::pointer, IDProperty::subtype, and IDProperty::totallen.
Referenced by IDP_DirectLinkProperty().
|
static |
Definition at line 1227 of file idprop.c.
References BLO_read_list(), IDProperty::data, IDPropertyData::group, IDP_DirectLinkProperty(), and LISTBASE_FOREACH.
Referenced by IDP_BlendReadData_impl(), and IDP_DirectLinkProperty().
|
static |
Definition at line 1178 of file idprop.c.
References BLO_read_data_address, IDProperty::data, IDP_DirectLinkProperty(), if(), IDProperty::len, NULL, IDPropertyData::pointer, and IDProperty::totallen.
Referenced by IDP_DirectLinkProperty().
|
static |
Definition at line 1239 of file idprop.c.
References BLI_endian_switch_int32(), BLI_endian_switch_int64(), BLO_read_requires_endian_switch(), IDProperty::data, IDP_ARRAY, IDP_DirectLinkArray(), IDP_DirectLinkGroup(), IDP_DirectLinkIDPArray(), IDP_DirectLinkString(), IDP_DOUBLE, IDP_FLOAT, IDP_GROUP, IDP_ID, IDP_IDPARRAY, IDP_Int, IDP_INT, IDP_STRING, IDProperty::subtype, IDProperty::type, IDPropertyData::val, and IDPropertyData::val2.
Referenced by IDP_DirectLinkArray(), IDP_DirectLinkGroup(), and IDP_DirectLinkIDPArray().
|
static |
Definition at line 1220 of file idprop.c.
References BLO_read_data_address, IDProperty::data, IDProperty::len, IDPropertyData::pointer, and IDProperty::totallen.
Referenced by IDP_DirectLinkProperty().
| bool IDP_EqualsProperties | ( | IDProperty * | prop1, |
| IDProperty * | prop2 | ||
| ) |
Definition at line 875 of file idprop.c.
References IDP_EqualsProperties_ex().
Referenced by ED_screen_user_menu_item_find_operator().
| bool IDP_EqualsProperties_ex | ( | IDProperty * | prop1, |
| IDProperty * | prop2, | ||
| const bool | is_strict | ||
| ) |
| is_strict | When false treat missing items as a match |
Definition at line 788 of file idprop.c.
References BLI_assert, IDProperty::data, fabsf, IDPropertyData::group, IDP_Array, IDP_ARRAY, IDP_Double, IDP_DOUBLE, IDP_EqualsProperties_ex(), IDP_Float, IDP_FLOAT, IDP_GetPropertyFromGroup(), IDP_GROUP, IDP_Id, IDP_ID, IDP_IDPArray, IDP_IDPARRAY, IDP_Int, IDP_INT, IDP_print(), idp_size_table, IDP_String, IDP_STRING, IDProperty::len, LISTBASE_FOREACH, max_ff(), IDProperty::name, NULL, STREQLEN, IDProperty::subtype, and IDProperty::type.
Referenced by IDP_EqualsProperties(), IDP_EqualsProperties_ex(), and wm_keymap_item_find_in_keymap().
| void IDP_foreach_property | ( | IDProperty * | id_property_root, |
| const int | type_filter, | ||
| IDPForeachPropertyCallback | callback, | ||
| void * | user_data | ||
| ) |
Loop through all ID properties in hierarchy of given id_property_root included.
| type_filter | If not 0, only apply callback on properties of matching types, see IDP_TYPE_FILTER_ enum in DNA_ID.h. |
Definition at line 1072 of file idprop.c.
References callback, IDProperty::data, IDPropertyData::group, IDP_Array, IDP_foreach_property(), IDP_GROUP, IDP_IDPARRAY, IDProperty::len, LISTBASE_FOREACH, IDProperty::type, and user_data.
Referenced by armature_foreach_id_bone(), armature_foreach_id_editbone(), BKE_fcurve_foreach_id(), blender::deg::DepsgraphNodeBuilder::build_idproperties(), blender::deg::DepsgraphRelationBuilder::build_idproperties(), find_used_ids_from_settings(), foreachIDLink(), IDP_foreach_property(), library_foreach_ID_link(), library_foreach_node_socket(), node_foreach_id(), object_foreach_id(), and scene_foreach_id().
| void IDP_FreeArray | ( | IDProperty * | prop | ) |
Definition at line 269 of file idprop.c.
References IDProperty::data, idp_resize_group_array(), MEM_freeN, NULL, and IDPropertyData::pointer.
Referenced by IDP_FreePropertyContent_ex().
| void IDP_FreeFromGroup | ( | IDProperty * | group, |
| IDProperty * | prop | ||
| ) |
Removes the property from the group and frees it.
Definition at line 690 of file idprop.c.
References IDP_FreeProperty(), and IDP_RemoveFromGroup().
Referenced by BPy_IDGroup_pop(), BPy_Wrap_SetMapItem(), IDP_SyncGroupTypes(), IMB_metadata_set_field(), pyrna_struct_pop(), rna_idproperty_free(), RNA_property_pointer_remove(), rna_property_rna_or_id_get(), and RNA_struct_idprops_unset().
|
static |
Definition at line 713 of file idprop.c.
References BLI_assert, BLI_freelistN(), IDProperty::data, IDPropertyData::group, IDP_FreePropertyContent_ex(), IDP_GROUP, LISTBASE_FOREACH, and IDProperty::type.
Referenced by IDP_FreePropertyContent_ex().
|
static |
Definition at line 116 of file idprop.c.
References BLI_assert, IDProperty::data, GETPROP, IDP_FreePropertyContent_ex(), IDP_IDPARRAY, IDProperty::len, MEM_freeN, IDPropertyData::pointer, and IDProperty::type.
Referenced by IDP_FreePropertyContent_ex().
| void IDP_FreeProperty | ( | IDProperty * | prop | ) |
Definition at line 1040 of file idprop.c.
References IDP_FreePropertyContent(), and MEM_freeN.
Referenced by BKE_addon_free(), BKE_area_region_free(), BKE_asset_metadata_free(), BKE_blender_user_menu_item_free(), BKE_object_make_proxy(), BKE_pose_channel_copy_data(), BKE_workspace_tool_remove(), blo_do_versions_280(), bone_free(), do_versions_after_linking_280(), ED_armature_edit_free(), fcm_python_free(), IDP_CopyPropertyContent(), IDP_FreeFromGroup(), idp_from_PyMapping(), idp_from_PySequence_Fast(), IDP_ReplaceGroupInGroup(), IDP_ReplaceInGroup_ex(), idp_resize_group_array(), IDP_SyncGroupTypes(), IDP_SyncGroupValues(), IMB_metadata_free(), keymap_item_free(), MOD_nodes_update_interface(), operator_last_properties_init_impl(), operatortype_ghash_free_cb(), pose_clear_user_transforms_exec(), pose_proxy_sync(), poseAnim_mapping_free(), poselib_backup_free_data(), pycon_free(), pyrna_struct_dealloc(), scene_free_data(), shortcut_free_operator_property(), ui_but_event_operator_string_from_menu(), ui_but_event_operator_string_from_panel(), ui_but_event_property_operator_string(), uiItemsFullEnumO_items(), userdef_free_keyconfig_prefs(), view3d_free(), wm_free_operator_properties_callback(), WM_gizmo_properties_free(), wm_keymap_item_find(), wm_keymap_item_find_in_keymap(), WM_keymap_item_restore_to_default(), WM_operator_free(), WM_operator_last_properties_store(), WM_operator_properties_free(), WM_operatortype_last_properties_clear_all(), WM_operatortype_remove_ptr(), and wm_xr_exit().
| void IDP_FreeProperty_ex | ( | IDProperty * | prop, |
| const bool | do_id_user | ||
| ) |
Definition at line 1034 of file idprop.c.
References IDP_FreePropertyContent_ex(), and MEM_freeN.
Referenced by BKE_armature_bonelist_free(), BKE_armature_editbonelist_free(), BKE_pose_channel_free_ex(), BKE_view_layer_free_ex(), ED_armature_ebone_listbase_free(), freeData(), and node_socket_interface_free().
| void IDP_FreePropertyContent | ( | IDProperty * | prop | ) |
Definition at line 1029 of file idprop.c.
References IDP_FreePropertyContent_ex().
Referenced by BPy_IDProperty_Map_ValidateAndCreate(), ed_marker_delete_exec(), IDP_ClearProperty(), IDP_FreeProperty(), IDP_ResizeIDPArray(), IDP_SetIndexArray(), rna_idproperty_ui_ensure(), and rna_idproperty_ui_set_default().
| void IDP_FreePropertyContent_ex | ( | IDProperty * | prop, |
| const bool | do_id_user | ||
| ) |
Definition at line 1006 of file idprop.c.
References id_us_min(), IDP_ARRAY, IDP_FreeArray(), IDP_FreeGroup(), IDP_FreeIDPArray(), IDP_FreeString(), IDP_GROUP, IDP_Id, IDP_ID, IDP_IDPARRAY, IDP_STRING, and IDProperty::type.
Referenced by BKE_libblock_free_data(), IDP_FreeGroup(), IDP_FreeIDPArray(), IDP_FreeProperty_ex(), IDP_FreePropertyContent(), node_free_node(), node_socket_free(), preview_id_copy_free(), scene_free_markers(), and seq_sequence_free_ex().
| void IDP_FreeString | ( | IDProperty * | prop | ) |
Definition at line 410 of file idprop.c.
References BLI_assert, IDProperty::data, IDP_STRING, MEM_freeN, IDPropertyData::pointer, and IDProperty::type.
Referenced by IDP_FreePropertyContent_ex().
|
static |
Definition at line 277 of file idprop.c.
References BLI_strncpy(), IDProperty::data, IDProperty::flag, MAX_IDPROP_NAME, MEM_callocN, IDProperty::name, IDProperty::type, IDPropertyData::val, and IDPropertyData::val2.
Referenced by IDP_CopyArray(), IDP_CopyGroup(), IDP_CopyID(), IDP_CopyProperty_ex(), and IDP_CopyString().
| IDProperty* IDP_GetIndexArray | ( | IDProperty * | prop, |
| int | index | ||
| ) |
Definition at line 146 of file idprop.c.
References BLI_assert, GETPROP, IDP_IDPARRAY, and IDProperty::type.
Referenced by RNA_property_collection_add().
| IDProperty* IDP_GetProperties | ( | ID * | id, |
| const bool | create_if_needed | ||
| ) |
Get the Group property that contains the id properties for ID id. Set create_if_needed to create the Group property and attach it to id if it doesn't exist; otherwise the function will return NULL if there's no Group property attached to the ID.
Definition at line 769 of file idprop.c.
References id, IDP_GROUP, MEM_callocN, and ID::properties.
Referenced by cycles_properties_from_ID(), preview_id_copy_free(), proj_paint_state_viewport_init(), texture_paint_camera_project_exec(), and texture_paint_image_from_view_exec().
| IDProperty* IDP_GetPropertyFromGroup | ( | const IDProperty * | prop, |
| const char * | name | ||
| ) |
Definition at line 696 of file idprop.c.
References BLI_assert, BLI_findstring(), IDProperty::data, IDPropertyData::group, IDP_GROUP, and IDProperty::type.
Referenced by IDP_AddToGroup(), IDP_EqualsProperties_ex(), IDP_GetPropertyTypeFromGroup(), IDP_InsertToGroup(), IDP_MergeGroup_ex(), IDP_ReplaceInGroup(), IDP_ReplaceInGroup_ex(), and IDP_SyncGroupTypes().
| IDProperty* IDP_GetPropertyTypeFromGroup | ( | const IDProperty * | prop, |
| const char * | name, | ||
| const char | type | ||
| ) |
same as above but ensure type match
Definition at line 703 of file idprop.c.
References IDP_GetPropertyFromGroup(), NULL, type, and IDProperty::type.
| bool IDP_InsertToGroup | ( | IDProperty * | group, |
| IDProperty * | previous, | ||
| IDProperty * | pnew | ||
| ) |
This is the same as IDP_AddToGroup, only you pass an item in the group list to be inserted after.
Definition at line 660 of file idprop.c.
References BLI_assert, BLI_insertlinkafter(), IDProperty::data, IDPropertyData::group, IDP_GetPropertyFromGroup(), IDP_GROUP, IDProperty::len, IDProperty::name, NULL, and IDProperty::type.
| void IDP_MergeGroup | ( | IDProperty * | dest, |
| const IDProperty * | src, | ||
| const bool | do_overwrite | ||
| ) |
If a property is missing in dest, add it. Do it recursively.
Definition at line 628 of file idprop.c.
References IDP_MergeGroup_ex().
Referenced by IDP_Reset().
| void IDP_MergeGroup_ex | ( | IDProperty * | dest, |
| const IDProperty * | src, | ||
| const bool | do_overwrite, | ||
| const int | flag | ||
| ) |
If a property is missing in dest, add it. Do it recursively.
Definition at line 583 of file idprop.c.
References BLI_addtail(), BLI_assert, copy(), IDProperty::data, IDPropertyData::group, IDP_CopyProperty_ex(), IDP_GetPropertyFromGroup(), IDP_GROUP, IDP_ReplaceInGroup(), IDProperty::len, LISTBASE_FOREACH, IDProperty::name, NULL, and IDProperty::type.
Referenced by IDP_MergeGroup().
| IDProperty* IDP_New | ( | const char | type, |
| const IDPropertyTemplate * | val, | ||
| const char * | name | ||
| ) |
Allocate a new ID.
This function takes three arguments: the ID property type, a union which defines its initial value, and a name.
The union is simple to use; see the top of BKE_idprop.h for its definition. An example of using this function:
Note that you MUST either attach the id property to an id property group with IDP_AddToGroup or MEM_freeN the property, doing anything else might result in a memory leak.
Definition at line 907 of file idprop.c.
References IDPropertyTemplate::array, BLI_assert, CLOG_ERROR, IDPropertyTemplate::d, IDProperty::data, DEFAULT_ALLOC_FOR_NULL_STRINGS, IDPropertyTemplate::f, IDPropertyTemplate::i, IDPropertyTemplate::id, id_us_plus(), IDP_ARRAY, IDP_DOUBLE, IDP_FLOAT, IDP_GROUP, IDP_Id, IDP_ID, IDP_INT, idp_size_table, IDP_String, IDP_STRING, IDP_STRING_SUB_BYTE, IDP_STRING_SUB_UTF8, if(), IDPropertyTemplate::len, IDProperty::len, LOG, MEM_callocN, MEM_mallocN, NULL, IDPropertyData::pointer, IDPropertyTemplate::str, IDPropertyTemplate::string, IDPropertyTemplate::subtype, IDProperty::subtype, IDProperty::totallen, IDPropertyTemplate::type, type, IDProperty::type, and IDPropertyData::val.
Referenced by bc_set_IDPropertyMatrix(), BKE_keyconfig_pref_ensure(), BKE_keyconfig_pref_set_select_mouse(), cycles_property_int_set(), get_socket_property_type(), idp_from_DatablockPointer(), idp_from_PyBytes(), idp_from_PyFloat(), idp_from_PyLong(), idp_from_PyMapping(), idp_from_PySequence_Buffer(), idp_from_PySequence_Fast(), idp_from_PyUnicode(), idp_resize_group_array(), IMB_metadata_ensure(), MOD_nodes_update_interface(), operator_last_properties_init_impl(), rna_idproperty_ui_ensure(), rna_idproperty_ui_set_default(), RNA_property_boolean_set(), RNA_property_boolean_set_array(), RNA_property_collection_add(), RNA_property_enum_set(), RNA_property_float_set(), RNA_property_float_set_array(), RNA_property_int_set(), RNA_property_int_set_array(), RNA_property_pointer_add(), RNA_property_pointer_set(), RNA_property_string_set_bytes(), shortcut_property_from_rna(), socket_add_property(), template_operator_property_buts_draw_single(), texture_paint_image_from_view_exec(), ui_but_event_operator_string_from_menu(), ui_but_event_operator_string_from_panel(), ui_but_event_property_operator_string(), uiItemFullO_ptr_ex(), wm_gizmo_create(), WM_gizmo_operator_invoke(), WM_gizmo_properties_alloc(), wm_operator_create(), WM_operator_last_properties_ensure_idprops(), WM_operator_last_properties_store(), WM_operator_properties_alloc(), WM_toolsystem_ref_properties_ensure_ex(), WM_toolsystem_ref_properties_ensure_idprops(), and WM_toolsystem_ref_properties_init_for_keymap().
| IDProperty* IDP_NewIDPArray | ( | const char * | name | ) |
Definition at line 82 of file idprop.c.
References BLI_strncpy(), IDP_IDPARRAY, IDProperty::len, MAX_IDPROP_NAME, MEM_callocN, IDProperty::name, and IDProperty::type.
Referenced by idp_from_PySequence_Fast(), and RNA_property_collection_add().
| IDProperty* IDP_NewString | ( | const char * | st, |
| const char * | name, | ||
| int | maxlen | ||
| ) |
| st | The string to assign. |
| name | The property name. |
| maxlen | The size of the new string (including the \0 terminator). |
Definition at line 325 of file idprop.c.
References BLI_strncpy(), IDProperty::data, DEFAULT_ALLOC_FOR_NULL_STRINGS, IDP_String, IDP_STRING, IDProperty::len, MAX_IDPROP_NAME, MEM_callocN, MEM_mallocN, IDProperty::name, NULL, IDPropertyData::pointer, IDProperty::totallen, and IDProperty::type.
Referenced by IMB_metadata_set_field(), RNA_property_string_set(), shortcut_property_from_rna(), ui_but_event_operator_string_from_menu(), ui_but_event_operator_string_from_panel(), and ui_but_event_property_operator_string().
| void IDP_RemoveFromGroup | ( | IDProperty * | group, |
| IDProperty * | prop | ||
| ) |
To free the property, you have to do: IDP_FreeProperty(prop);
Definition at line 679 of file idprop.c.
References BLI_assert, BLI_remlink(), IDProperty::data, IDPropertyData::group, IDP_GROUP, IDProperty::len, and IDProperty::type.
Referenced by IDP_FreeFromGroup(), and rna_idproperty_ui_set_default().
| void IDP_ReplaceGroupInGroup | ( | IDProperty * | dest, |
| const IDProperty * | src | ||
| ) |
Replaces all properties with the same name in a destination group from a source group.
Definition at line 529 of file idprop.c.
References BLI_addtail(), BLI_assert, BLI_insertlinkreplace(), copy(), IDProperty::data, ListBase::first, IDPropertyData::group, IDP_CopyProperty(), IDP_FreeProperty(), IDP_GROUP, IDProperty::len, LISTBASE_FOREACH, IDProperty::name, IDProperty::next, NULL, STREQ, and IDProperty::type.
| void IDP_ReplaceInGroup | ( | IDProperty * | group, |
| IDProperty * | prop | ||
| ) |
Definition at line 572 of file idprop.c.
References IDP_GetPropertyFromGroup(), IDP_ReplaceInGroup_ex(), and IDProperty::name.
Referenced by IDP_MergeGroup_ex(), RNA_property_pointer_set(), ui_but_event_operator_string_from_panel(), and WM_operator_last_properties_store().
| void IDP_ReplaceInGroup_ex | ( | IDProperty * | group, |
| IDProperty * | prop, | ||
| IDProperty * | prop_exist | ||
| ) |
Checks if a property with the same name as prop exists, and if so replaces it. Use this to preserve order!
Definition at line 557 of file idprop.c.
References BLI_addtail(), BLI_assert, BLI_insertlinkreplace(), IDProperty::data, IDPropertyData::group, IDP_FreeProperty(), IDP_GetPropertyFromGroup(), IDP_GROUP, IDProperty::len, IDProperty::name, NULL, and IDProperty::type.
Referenced by BPy_IDProperty_Map_ValidateAndCreate(), IDP_ReplaceInGroup(), RNA_property_pointer_set(), and WM_toolsystem_ref_properties_ensure_ex().
| void IDP_Reset | ( | IDProperty * | prop, |
| const IDProperty * | reference | ||
| ) |
Definition at line 1053 of file idprop.c.
References IDP_ClearProperty(), IDP_MergeGroup(), and NULL.
|
static |
Definition at line 205 of file idprop.c.
References Freestyle::a, IDProperty::data, IDPropertyTemplate::i, IDP_FreeProperty(), IDP_GROUP, IDP_New(), IDProperty::len, IDPropertyData::pointer, and IDProperty::subtype.
Referenced by IDP_FreeArray(), and IDP_ResizeArray().
| void IDP_ResizeArray | ( | IDProperty * | prop, |
| int | newlen | ||
| ) |
Definition at line 232 of file idprop.c.
References IDProperty::data, IDP_ARRAY_REALLOC_LIMIT, idp_resize_group_array(), idp_size_table, IDProperty::len, MEM_recallocN, IDPropertyData::pointer, IDProperty::subtype, and IDProperty::totallen.
Referenced by IDP_AssignString(), IDP_ConcatString(), IDP_ConcatStringC(), and RNA_property_string_set_bytes().
| void IDP_ResizeIDPArray | ( | IDProperty * | prop, |
| int | newlen | ||
| ) |
Definition at line 161 of file idprop.c.
References BLI_assert, IDProperty::data, GETPROP, IDP_ARRAY_REALLOC_LIMIT, IDP_FreePropertyContent(), IDP_IDPARRAY, len, IDProperty::len, MEM_recallocN, IDPropertyData::pointer, IDProperty::totallen, and IDProperty::type.
Referenced by IDP_AppendArray(), RNA_property_collection_clear(), and RNA_property_collection_remove().
| void IDP_SetIndexArray | ( | IDProperty * | prop, |
| int | index, | ||
| IDProperty * | item | ||
| ) |
Definition at line 130 of file idprop.c.
References BLI_assert, GETPROP, IDP_FreePropertyContent(), IDP_IDPARRAY, IDProperty::len, and IDProperty::type.
Referenced by IDP_AppendArray().
| void IDP_SyncGroupTypes | ( | IDProperty * | dest, |
| const IDProperty * | src, | ||
| const bool | do_arraylen | ||
| ) |
Definition at line 504 of file idprop.c.
References BLI_insertlinkreplace(), IDProperty::data, ELEM, IDPropertyData::group, IDP_ARRAY, IDP_CopyProperty(), IDP_FreeFromGroup(), IDP_FreeProperty(), IDP_GetPropertyFromGroup(), IDP_GROUP, IDP_IDPARRAY, IDProperty::len, LISTBASE_FOREACH_MUTABLE, IDProperty::name, NULL, IDProperty::subtype, and IDProperty::type.
| void IDP_SyncGroupValues | ( | IDProperty * | dest, |
| const IDProperty * | src | ||
| ) |
Definition at line 477 of file idprop.c.
References BLI_assert, BLI_findstring(), BLI_insertlinkreplace(), IDProperty::data, IDPropertyData::group, IDP_CopyProperty(), IDP_DOUBLE, IDP_FLOAT, IDP_FreeProperty(), IDP_GROUP, IDP_INT, LISTBASE_FOREACH, IDProperty::name, and IDProperty::type.
|
static |
Definition at line 1107 of file idprop.c.
References Freestyle::a, BLO_write_raw(), IDProperty::data, IDP_BlendWrite(), IDP_GROUP, IDProperty::len, MEM_allocN_len, IDPropertyData::pointer, and IDProperty::subtype.
Referenced by IDP_WriteProperty_OnlyData().
|
static |
Definition at line 1144 of file idprop.c.
References IDProperty::data, IDPropertyData::group, IDP_BlendWrite(), and LISTBASE_FOREACH.
Referenced by IDP_WriteProperty_OnlyData().
|
static |
Definition at line 1124 of file idprop.c.
References Freestyle::a, BLO_write_struct_array, IDProperty::data, IDP_WriteProperty_OnlyData(), IDProperty::len, and IDPropertyData::pointer.
Referenced by IDP_WriteProperty_OnlyData().
| void IDP_WriteProperty_OnlyData | ( | const IDProperty * | prop, |
| BlendWriter * | writer | ||
| ) |
Definition at line 1152 of file idprop.c.
References IDP_ARRAY, IDP_GROUP, IDP_IDPARRAY, IDP_STRING, IDP_WriteArray(), IDP_WriteGroup(), IDP_WriteIDPArray(), IDP_WriteString(), and IDProperty::type.
Referenced by IDP_BlendWrite(), and IDP_WriteIDPArray().
|
static |
Definition at line 1138 of file idprop.c.
References BLO_write_raw(), IDProperty::data, IDProperty::len, and IDPropertyData::pointer.
Referenced by IDP_WriteProperty_OnlyData().
|
static |
Definition at line 58 of file idprop.c.
Referenced by IDP_EqualsProperties_ex(), IDP_New(), and IDP_ResizeArray().
|
static |