Blender  V3.3
Macros | Variables
idprop.c File Reference
#include <limits.h>
#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)
IDPropertyIDP_NewString (const char *st, const char *name, int maxlen)
 
static IDPropertyIDP_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 IDPropertyIDP_CopyID (const IDProperty *prop, const int flag)
 
void IDP_AssignID (IDProperty *prop, ID *id, const int flag)
 
Group Functions (IDProperty Group API)
static IDPropertyIDP_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)
 
IDPropertyIDP_GetPropertyFromGroup (const IDProperty *prop, const char *name)
 
IDPropertyIDP_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)
int IDP_coerce_to_int_or_zero (const IDProperty *prop)
 
double IDP_coerce_to_double_or_zero (const IDProperty *prop)
 
float IDP_coerce_to_float_or_zero (const IDProperty *prop)
 
IDPropertyIDP_CopyProperty_ex (const IDProperty *prop, const int flag)
 
IDPropertyIDP_CopyProperty (const IDProperty *prop)
 
void IDP_CopyPropertyContent (IDProperty *dst, IDProperty *src)
 
IDPropertyIDP_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)
 
IDPropertyIDP_New (const char type, const IDPropertyTemplate *val, const char *name)
 
void IDP_ui_data_free_unique_contents (IDPropertyUIData *ui_data, const eIDPropertyUIDataType type, const IDPropertyUIData *other)
 
void IDP_ui_data_free (IDProperty *prop)
 
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 write_ui_data (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 read_ui_data (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, Library *lib, IDProperty *prop)
 
void IDP_BlendReadExpand (struct BlendExpander *expander, IDProperty *prop)
 
eIDPropertyUIDataType IDP_ui_data_type (const IDProperty *prop)
 
bool IDP_ui_data_supported (const IDProperty *prop)
 
IDPropertyUIDataIDP_ui_data_ensure (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])
 
IDPropertyIDP_NewIDPArray (const char *name)
 
IDPropertyIDP_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)
 
IDPropertyIDP_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)
 
IDPropertyUIDataIDP_ui_data_copy (const IDProperty *prop)
 
static IDPropertyidp_generic_copy (const IDProperty *prop, const int UNUSED(flag))
 
static IDPropertyIDP_CopyArray (const IDProperty *prop, const int flag)
 

Macro Definition Documentation

◆ GETPROP

#define GETPROP (   prop,
 
)    &(IDP_IDPArray(prop)[i])

Definition at line 59 of file idprop.c.

◆ IDP_ARRAY_REALLOC_LIMIT

#define IDP_ARRAY_REALLOC_LIMIT   200

if the new is 'IDP_ARRAY_REALLOC_LIMIT' items less, than IDProperty.totallen, reallocate anyway.

Definition at line 38 of file idprop.c.

Function Documentation

◆ IDP_AddToGroup()

bool IDP_AddToGroup ( struct IDProperty group,
struct 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 631 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(), blender::bke::idprop::IDPGroupSerializer::entry_to_idprop(), IMB_metadata_set_field(), MOD_nodes_update_interface(), operator_last_properties_init_impl(), 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_get_operator_property(), shortcut_property_from_rna(), 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(), and version_geometry_nodes_add_attribute_input_settings().

◆ IDP_AppendArray()

void IDP_AppendArray ( IDProperty prop,
IDProperty item 
)

◆ IDP_AssignID()

void IDP_AssignID ( IDProperty prop,
ID id,
const int  flag 
)

◆ IDP_AssignString()

void IDP_AssignString ( IDProperty prop,
const char *  st,
int  maxlen 
)

◆ IDP_BlendReadData_impl()

void IDP_BlendReadData_impl ( BlendDataReader reader,
IDProperty **  prop,
const char *  caller_func_id 
)

Definition at line 1419 of file idprop.c.

References IDP_DirectLinkGroup(), IDP_GROUP, and NULL.

◆ IDP_BlendReadExpand()

void IDP_BlendReadExpand ( struct BlendExpander expander,
IDProperty prop 
)

◆ IDP_BlendReadLib()

void IDP_BlendReadLib ( BlendLibReader reader,
Library lib,
IDProperty prop 
)

◆ IDP_BlendWrite()

void IDP_BlendWrite ( BlendWriter writer,
const IDProperty prop 
)

Definition at line 1260 of file idprop.c.

References BLO_write_struct, and IDP_WriteProperty_OnlyData().

Referenced by IDP_WriteArray(), and IDP_WriteGroup().

◆ IDP_ClearProperty()

void IDP_ClearProperty ( IDProperty prop)

◆ IDP_coerce_to_double_or_zero()

double IDP_coerce_to_double_or_zero ( const IDProperty prop)

Definition at line 718 of file idprop.c.

References IDP_Double, IDP_DOUBLE, IDP_Float, IDP_FLOAT, IDP_Int, IDP_INT, and IDProperty::type.

◆ IDP_coerce_to_float_or_zero()

float IDP_coerce_to_float_or_zero ( const IDProperty prop)

Definition at line 732 of file idprop.c.

References IDP_Double, IDP_DOUBLE, IDP_Float, IDP_FLOAT, IDP_Int, IDP_INT, and IDProperty::type.

◆ IDP_coerce_to_int_or_zero()

int IDP_coerce_to_int_or_zero ( const IDProperty prop)

Definition at line 704 of file idprop.c.

References IDP_Double, IDP_DOUBLE, IDP_Float, IDP_FLOAT, IDP_Int, IDP_INT, and IDProperty::type.

◆ IDP_ConcatString()

void IDP_ConcatString ( IDProperty str1,
IDProperty append 
)

◆ IDP_ConcatStringC()

void IDP_ConcatStringC ( IDProperty prop,
const char *  st 
)

◆ IDP_CopyArray()

static IDProperty* IDP_CopyArray ( const IDProperty prop,
const int  flag 
)
static

◆ IDP_CopyGroup()

static IDProperty* IDP_CopyGroup ( const IDProperty prop,
const int  flag 
)
static

Checks if a property with the same name as prop exists, and if so replaces it.

Definition at line 476 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().

◆ IDP_CopyID()

static IDProperty* IDP_CopyID ( const IDProperty prop,
const int  flag 
)
static

◆ IDP_CopyIDPArray()

IDProperty* IDP_CopyIDPArray ( const IDProperty array,
const int  flag 
)

◆ IDP_CopyProperty()

IDProperty* IDP_CopyProperty ( const IDProperty prop)

◆ IDP_CopyProperty_ex()

IDProperty* IDP_CopyProperty_ex ( const IDProperty prop,
const int  flag 
)

◆ IDP_CopyPropertyContent()

void IDP_CopyPropertyContent ( struct IDProperty dst,
struct IDProperty src 
)

Copy content from source IDProperty into destination one, freeing destination property's content first.

Definition at line 769 of file idprop.c.

References IDP_CopyProperty(), IDP_FreeProperty(), IDProperty::next, IDProperty::prev, src, and SWAP.

Referenced by MOD_nodes_update_interface().

◆ IDP_CopyString()

static IDProperty* IDP_CopyString ( const IDProperty prop,
const int  flag 
)
static

◆ IDP_DirectLinkArray()

static void IDP_DirectLinkArray ( IDProperty prop,
BlendDataReader reader 
)
static

◆ IDP_DirectLinkGroup()

static void IDP_DirectLinkGroup ( IDProperty prop,
BlendDataReader reader 
)
static

◆ IDP_DirectLinkIDPArray()

static void IDP_DirectLinkIDPArray ( IDProperty prop,
BlendDataReader reader 
)
static

◆ IDP_DirectLinkProperty()

static void IDP_DirectLinkProperty ( IDProperty prop,
BlendDataReader reader 
)
static

◆ IDP_DirectLinkString()

static void IDP_DirectLinkString ( IDProperty prop,
BlendDataReader reader 
)
static

◆ IDP_EqualsProperties()

bool IDP_EqualsProperties ( IDProperty prop1,
IDProperty prop2 
)

◆ IDP_EqualsProperties_ex()

bool IDP_EqualsProperties_ex ( struct IDProperty prop1,
struct IDProperty prop2,
bool  is_strict 
)

◆ IDP_foreach_property()

void IDP_foreach_property ( struct IDProperty id_property_root,
int  type_filter,
IDPForeachPropertyCallback  callback,
void user_data 
)

Loop through all ID properties in hierarchy of given id_property_root included.

Note
Container types (groups and arrays) are processed after applying the callback on them.
Parameters
type_filterIf not 0, only apply callback on properties of matching types, see IDP_TYPE_FILTER_ enum in DNA_ID.h.

Definition at line 1117 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(), scene_foreach_id(), and seq_foreach_member_id_cb().

◆ IDP_FreeArray()

void IDP_FreeArray ( IDProperty prop)

◆ IDP_FreeFromGroup()

void IDP_FreeFromGroup ( struct IDProperty group,
struct IDProperty prop 
)

◆ IDP_FreeGroup()

static void IDP_FreeGroup ( IDProperty prop,
const bool  do_id_user 
)
static

◆ IDP_FreeIDPArray()

static void IDP_FreeIDPArray ( IDProperty prop,
const bool  do_id_user 
)
static

◆ IDP_FreeProperty()

void IDP_FreeProperty ( IDProperty prop)

Definition at line 1093 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_pose_channel_copy_data(), BKE_workspace_tool_remove(), blo_do_versions_280(), bone_free(), do_versions_after_linking_280(), ED_armature_edit_free(), ED_pose_backup_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(), blender::bke::idprop::IDPropertyDeleter::operator()(), operator_last_properties_init_impl(), operatortype_ghash_free_cb(), pose_clear_user_transforms_exec(), poseAnim_mapping_free(), poselib_backup_free_data(), pycon_free(), pyrna_struct_dealloc(), pyrna_struct_id_properties_clear(), scene_free_data(), shortcut_free_operator_property(), blender::bke::idprop::tests::TEST(), blender::bke::idprop::tests::test_convert_idprop_from_value(), ui_but_event_operator_string_from_menu(), ui_but_event_operator_string_from_panel(), ui_but_event_property_operator_string(), ui_handler_wait_for_input_remove(), 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().

◆ IDP_FreeProperty_ex()

void IDP_FreeProperty_ex ( IDProperty prop,
const bool  do_id_user 
)

◆ IDP_FreePropertyContent()

void IDP_FreePropertyContent ( IDProperty prop)

◆ IDP_FreePropertyContent_ex()

void IDP_FreePropertyContent_ex ( struct IDProperty prop,
bool  do_id_user 
)

◆ IDP_FreeString()

void IDP_FreeString ( IDProperty prop)

◆ idp_generic_copy()

static IDProperty* idp_generic_copy ( const IDProperty prop,
const int   UNUSEDflag 
)
static

◆ IDP_GetIndexArray()

IDProperty* IDP_GetIndexArray ( IDProperty prop,
int  index 
)

Definition at line 126 of file idprop.c.

References BLI_assert, GETPROP, IDP_IDPARRAY, and IDProperty::type.

Referenced by RNA_property_collection_add().

◆ IDP_GetProperties()

IDProperty* IDP_GetProperties ( struct ID id,
bool  create_if_needed 
)

Get the Group property that contains the id properties for ID id.

Parameters
create_if_neededSet 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 778 of file idprop.c.

References id, IDP_GROUP, MEM_callocN, and ID::properties.

Referenced by blo_update_defaults_scene(), cycles_properties_from_ID(), cycles_visibility_properties_from_ID(), do_versions_idproperty_ui_data(), preview_id_copy_free(), proj_paint_state_viewport_init(), texture_paint_camera_project_exec(), and texture_paint_image_from_view_exec().

◆ IDP_GetPropertyFromGroup()

IDProperty* IDP_GetPropertyFromGroup ( const IDProperty prop,
const char *  name 
)

◆ IDP_GetPropertyTypeFromGroup()

IDProperty* IDP_GetPropertyTypeFromGroup ( const IDProperty prop,
const char *  name,
const char  type 
)

Definition at line 678 of file idprop.c.

References IDP_GetPropertyFromGroup(), NULL, type, and IDProperty::type.

◆ IDP_InsertToGroup()

bool IDP_InsertToGroup ( IDProperty group,
IDProperty previous,
IDProperty pnew 
)

◆ IDP_MergeGroup()

void IDP_MergeGroup ( IDProperty dest,
const IDProperty src,
const bool  do_overwrite 
)

Definition at line 626 of file idprop.c.

References dest, IDP_MergeGroup_ex(), and src.

Referenced by IDP_Reset().

◆ IDP_MergeGroup_ex()

void IDP_MergeGroup_ex ( IDProperty dest,
const IDProperty src,
const bool  do_overwrite,
const int  flag 
)

◆ IDP_New()

IDProperty* IDP_New ( 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:

IDProperty *group, *idgroup, *color;
group = IDP_New(IDP_GROUP, val, "group1"); // groups don't need a template.
val.array.len = 4
color = IDP_New(IDP_ARRAY, val, "color1");
idgroup = IDP_GetProperties(some_id, 1);
IDP_AddToGroup(idgroup, group);
struct IDProperty * IDP_GetProperties(struct ID *id, bool create_if_needed) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
Definition: idprop.c:778
struct IDProperty * IDP_New(char type, const IDPropertyTemplate *val, const char *name) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
Definition: idprop.c:887
bool IDP_AddToGroup(struct IDProperty *group, struct IDProperty *prop) ATTR_NONNULL()
Definition: idprop.c:631
@ IDP_FLOAT
Definition: DNA_ID.h:138
@ IDP_GROUP
Definition: DNA_ID.h:141
@ IDP_ARRAY
Definition: DNA_ID.h:140
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert a color
struct IDPropertyTemplate::@27 array

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 887 of file idprop.c.

References IDPropertyTemplate::array, BLI_assert, CLOG_ERROR, IDPropertyTemplate::d, IDProperty::data, DEFAULT_ALLOC_FOR_NULL_STRINGS, ELEM, 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, usdtokens::st(), IDPropertyTemplate::str, IDPropertyTemplate::string, IDPropertyTemplate::subtype, IDProperty::subtype, IDProperty::totallen, IDPropertyTemplate::type, type, IDProperty::type, and IDPropertyData::val.

Referenced by action_asset_type_property(), blender::bke::idprop::array_create(), bc_set_IDPropertyMatrix(), BKE_asset_metadata_idprop_ensure(), BKE_keyconfig_pref_ensure(), BKE_keyconfig_pref_set_select_mouse(), blender::bke::idprop::create(), blender::bke::idprop::create_group(), cycles_property_int_set(), id_property_create_from_socket(), 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(), idprops_ensure_named_group(), IMB_metadata_ensure(), MOD_nodes_update_interface(), object_asset_dimensions_property(), operator_last_properties_init_impl(), 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(), RNA_struct_idprops(), shortcut_get_operator_property(), shortcut_property_from_rna(), 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(), version_geometry_nodes_add_attribute_input_settings(), 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_idprops(), and WM_toolsystem_ref_properties_init_for_keymap().

◆ IDP_NewIDPArray()

IDProperty* IDP_NewIDPArray ( const char *  name)
Note
as a start to move away from the stupid IDP_New function, this type has its own allocation function.

Definition at line 63 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().

◆ IDP_NewString()

IDProperty* IDP_NewString ( const char *  st,
const char *  name,
int  maxlen 
)

◆ IDP_RemoveFromGroup()

void IDP_RemoveFromGroup ( struct IDProperty group,
struct IDProperty prop 
)
Note
this does not free the property!

To free the property, you have to do: #IDP_FreeProperty(prop);

Definition at line 657 of file idprop.c.

References BLI_assert, BLI_findindex(), BLI_remlink(), IDProperty::data, IDPropertyData::group, IDP_GROUP, IDProperty::len, and IDProperty::type.

Referenced by IDP_FreeFromGroup().

◆ IDP_ReplaceGroupInGroup()

void IDP_ReplaceGroupInGroup ( IDProperty dest,
const IDProperty src 
)

◆ IDP_ReplaceInGroup()

void IDP_ReplaceInGroup ( IDProperty group,
IDProperty prop 
)

◆ IDP_ReplaceInGroup_ex()

void IDP_ReplaceInGroup_ex ( struct IDProperty group,
struct IDProperty prop,
struct IDProperty prop_exist 
)

◆ IDP_Reset()

void IDP_Reset ( IDProperty prop,
const IDProperty reference 
)

Definition at line 1106 of file idprop.c.

References IDP_ClearProperty(), IDP_MergeGroup(), and NULL.

◆ idp_resize_group_array()

static void idp_resize_group_array ( IDProperty prop,
int  newlen,
void newarr 
)
static

◆ IDP_ResizeArray()

void IDP_ResizeArray ( struct IDProperty prop,
int  newlen 
)

◆ IDP_ResizeIDPArray()

void IDP_ResizeIDPArray ( IDProperty prop,
int  newlen 
)

◆ IDP_SetIndexArray()

void IDP_SetIndexArray ( struct IDProperty prop,
int  index,
struct IDProperty item 
)

Shallow copies item.

Definition at line 110 of file idprop.c.

References BLI_assert, GETPROP, IDP_FreePropertyContent(), IDP_IDPARRAY, IDProperty::len, and IDProperty::type.

Referenced by IDP_AppendArray().

◆ IDP_SyncGroupTypes()

void IDP_SyncGroupTypes ( IDProperty dest,
const IDProperty src,
const bool  do_arraylen 
)

◆ IDP_SyncGroupValues()

void IDP_SyncGroupValues ( IDProperty dest,
const IDProperty src 
)

◆ IDP_ui_data_copy()

IDPropertyUIData* IDP_ui_data_copy ( const IDProperty prop)

◆ IDP_ui_data_ensure()

IDPropertyUIData* IDP_ui_data_ensure ( IDProperty prop)

◆ IDP_ui_data_free()

void IDP_ui_data_free ( IDProperty prop)

◆ IDP_ui_data_free_unique_contents()

void IDP_ui_data_free_unique_contents ( IDPropertyUIData ui_data,
const eIDPropertyUIDataType  type,
const IDPropertyUIData other 
)

◆ IDP_ui_data_supported()

bool IDP_ui_data_supported ( const IDProperty prop)

Definition at line 1514 of file idprop.c.

References IDP_ui_data_type(), and IDP_UI_DATA_TYPE_UNSUPPORTED.

◆ IDP_ui_data_type()

eIDPropertyUIDataType IDP_ui_data_type ( const IDProperty prop)

◆ IDP_WriteArray()

static void IDP_WriteArray ( const IDProperty prop,
BlendWriter writer 
)
static

◆ IDP_WriteGroup()

static void IDP_WriteGroup ( const IDProperty prop,
BlendWriter writer 
)
static

◆ IDP_WriteIDPArray()

static void IDP_WriteIDPArray ( const IDProperty prop,
BlendWriter writer 
)
static

◆ IDP_WriteProperty_OnlyData()

void IDP_WriteProperty_OnlyData ( const IDProperty prop,
BlendWriter writer 
)

◆ IDP_WriteString()

static void IDP_WriteString ( const IDProperty prop,
BlendWriter writer 
)
static

◆ read_ui_data()

static void read_ui_data ( IDProperty prop,
BlendDataReader reader 
)
static

◆ write_ui_data()

static void write_ui_data ( const IDProperty prop,
BlendWriter writer 
)
static

Variable Documentation

◆ idp_size_table

size_t idp_size_table[]
static
Initial value:
= {
1,
sizeof(int),
sizeof(float),
sizeof(float[3]),
sizeof(float[16]),
0,
sizeof(ListBase),
sizeof(void *),
sizeof(double),
}
typedef double(DMatrix)[4][4]
struct ListBase ListBase

Definition at line 43 of file idprop.c.

Referenced by IDP_EqualsProperties_ex(), IDP_New(), and IDP_ResizeArray().

◆ LOG

CLG_LogRef LOG = {"bke.idprop"}
static

Definition at line 40 of file idprop.c.

Referenced by IDP_New().