110 void (*error_fn)(
const char *));
260#define IDP_Int(prop) ((prop)->data.val)
261#define IDP_Bool(prop) ((prop)->data.val)
262#define IDP_Array(prop) ((prop)->data.pointer)
264#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)
265# define IDP_Float(prop) \
267 IDProperty *: (*(float *)&(prop)->data.val), \
268 const IDProperty *: (*(const float *)&(prop)->data.val))
269# define IDP_Double(prop) \
271 IDProperty *: (*(double *)&(prop)->data.val), \
272 const IDProperty *: (*(const double *)&(prop)->data.val))
273# define IDP_String(prop) \
275 IDProperty *: ((char *)(prop)->data.pointer), \
276 const IDProperty *: ((const char *)(prop)->data.pointer))
277# define IDP_IDPArray(prop) \
279 IDProperty *: ((IDProperty *)(prop)->data.pointer), \
280 const IDProperty *: ((const IDProperty *)(prop)->data.pointer))
281# define IDP_Id(prop) \
283 IDProperty *: ((ID *)(prop)->data.pointer), \
284 const IDProperty *: ((const ID *)(prop)->data.pointer))
286# define IDP_Float(prop) (*(float *)&(prop)->data.val)
287# define IDP_Double(prop) (*(double *)&(prop)->data.val)
288# define IDP_String(prop) ((char *)(prop)->data.pointer)
289# define IDP_IDPArray(prop) ((IDProperty *)(prop)->data.pointer)
290# define IDP_Id(prop) ((ID *)(prop)->data.pointer)
324 void (*str_append_fn)(
void *user_data,
const char *
str,
uint str_len),
334 const char *caller_func_id);
335#define IDP_BlendDataRead(reader, prop) IDP_BlendReadData_impl(reader, prop, __func__)
409std::unique_ptr<IDProperty, IDPropertyDeleter>
create(StringRefNull prop_name,
414std::unique_ptr<IDProperty, IDPropertyDeleter>
create(StringRefNull prop_name,
419std::unique_ptr<IDProperty, IDPropertyDeleter>
create(StringRefNull prop_name,
420 const StringRefNull value,
424std::unique_ptr<IDProperty, IDPropertyDeleter>
create(StringRefNull prop_name,
433std::unique_ptr<IDProperty, IDPropertyDeleter>
create(StringRefNull prop_name,
434 Span<int32_t> values,
442std::unique_ptr<IDProperty, IDPropertyDeleter>
create(StringRefNull prop_name,
451std::unique_ptr<IDProperty, IDPropertyDeleter>
create(StringRefNull prop_name,
461std::unique_ptr<IDProperty, IDPropertyDeleter>
create_group(StringRefNull prop_name,
IDProperty * IDP_NewIDPArray(const char *name) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void IDP_Reset(IDProperty *prop, const IDProperty *reference)
void IDP_ui_data_free(IDProperty *prop)
IDPropertyUIData * IDP_TryConvertUIData(IDPropertyUIData *src, eIDPropertyUIDataType src_type, eIDPropertyUIDataType dst_type)
bool IDP_EnumItemsValidate(const IDPropertyUIDataEnumItem *items, int items_num, void(*error_fn)(const char *))
void IDP_FreeFromGroup(IDProperty *group, IDProperty *prop) ATTR_NONNULL()
void IDP_CopyPropertyContent(IDProperty *dst, const IDProperty *src) ATTR_NONNULL()
float IDP_coerce_to_float_or_zero(const IDProperty *prop)
bool IDP_InsertToGroup(IDProperty *group, IDProperty *previous, IDProperty *pnew) ATTR_NONNULL(1
eIDPropertyUIDataType IDP_ui_data_type(const IDProperty *prop)
bool IDP_ui_data_supported(const IDProperty *prop)
void IDP_AssignString(IDProperty *prop, const char *st) ATTR_NONNULL()
void IDP_foreach_property(IDProperty *id_property_root, int type_filter, blender::FunctionRef< void(IDProperty *id_property)> callback)
IDPropertyUIData * IDP_ui_data_copy(const IDProperty *prop)
IDProperty * IDP_GetPropertyFromGroup(const IDProperty *prop, const char *name) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void IDP_MergeGroup_ex(IDProperty *dest, const IDProperty *src, bool do_overwrite, int flag) ATTR_NONNULL()
void IDP_AssignStringMaxSize(IDProperty *prop, const char *st, size_t st_maxncpy) ATTR_NONNULL()
char * IDP_reprN(const IDProperty *prop, uint *r_len)
const char * IDP_type_str(eIDPropertyType type, short sub_type)
void IDP_ResizeIDPArray(IDProperty *prop, int len)
@ IDP_UI_DATA_TYPE_BOOLEAN
@ IDP_UI_DATA_TYPE_UNSUPPORTED
@ IDP_UI_DATA_TYPE_STRING
IDProperty * IDP_GetIndexArray(IDProperty *prop, int index) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void IDP_FreeProperty(IDProperty *prop)
int IDP_coerce_to_int_or_zero(const IDProperty *prop)
IDProperty * IDP_CopyIDPArray(const IDProperty *array, int flag) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void IDP_FreePropertyContent(IDProperty *prop)
void IDP_ReplaceInGroup_ex(IDProperty *group, IDProperty *prop, IDProperty *prop_exist)
void IDP_FreePropertyContent_ex(IDProperty *prop, bool do_id_user)
IDProperty * IDP_GetPropertyTypeFromGroup(const IDProperty *prop, const char *name, char type) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
bool void IDP_RemoveFromGroup(IDProperty *group, IDProperty *prop) ATTR_NONNULL()
void IDP_ClearProperty(IDProperty *prop)
IDProperty * IDP_New(char type, const IDPropertyTemplate *val, const char *name, eIDPropertyFlag flags={}) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
double IDP_coerce_to_double_or_zero(const IDProperty *prop)
void IDP_SetIndexArray(IDProperty *prop, int index, IDProperty *item) ATTR_NONNULL()
bool IDP_AddToGroup(IDProperty *group, IDProperty *prop) ATTR_NONNULL()
IDProperty * IDP_CopyProperty_ex(const IDProperty *prop, int flag) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
bool IDP_EqualsProperties_ex(const IDProperty *prop1, const IDProperty *prop2, bool is_strict) ATTR_WARN_UNUSED_RESULT
void IDP_AppendArray(IDProperty *prop, IDProperty *item)
IDProperty * IDP_EnsureProperties(ID *id) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void IDP_AssignID(IDProperty *prop, ID *id, int flag)
IDProperty * IDP_GetProperties(ID *id) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void IDP_ResizeArray(IDProperty *prop, int newlen)
IDProperty * IDP_CopyProperty(const IDProperty *prop) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void IDP_print(const IDProperty *prop)
void IDP_repr_fn(const IDProperty *prop, void(*str_append_fn)(void *user_data, const char *str, uint str_len), void *user_data)
void IDP_ui_data_free_unique_contents(IDPropertyUIData *ui_data, eIDPropertyUIDataType type, const IDPropertyUIData *other)
void IDP_ReplaceGroupInGroup(IDProperty *dest, const IDProperty *src) ATTR_NONNULL()
IDProperty * IDP_NewStringMaxSize(const char *st, size_t st_maxncpy, const char *name, eIDPropertyFlag flags={}) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(3)
void IDP_MergeGroup(IDProperty *dest, const IDProperty *src, bool do_overwrite) ATTR_NONNULL()
void IDP_FreeString(IDProperty *prop) ATTR_NONNULL()
void IDP_BlendWrite(BlendWriter *writer, const IDProperty *prop)
void IDP_SyncGroupValues(IDProperty *dest, const IDProperty *src) ATTR_NONNULL()
void IDP_FreeProperty_ex(IDProperty *prop, bool do_id_user)
IDPropertyUIData * IDP_ui_data_ensure(IDProperty *prop)
bool IDP_EqualsProperties(const IDProperty *prop1, const IDProperty *prop2) ATTR_WARN_UNUSED_RESULT
void IDP_ReplaceInGroup(IDProperty *group, IDProperty *prop) ATTR_NONNULL()
void IDP_FreeArray(IDProperty *prop)
void(*)(void *user_data, IDProperty *idp) IDPWalkFunc
IDProperty * IDP_NewString(const char *st, const char *name, eIDPropertyFlag flags={}) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(2)
void IDP_BlendReadData_impl(BlendDataReader *reader, IDProperty **prop, const char *caller_func_id)
const IDPropertyUIDataEnumItem * IDP_EnumItemFind(const IDProperty *prop)
void IDP_SyncGroupTypes(IDProperty *dest, const IDProperty *src, bool do_arraylen) ATTR_NONNULL()
#define ATTR_WARN_UNUSED_RESULT
#define ATTR_NONNULL(...)
Enumerations for DNA_ID.h.
void operator()(IDProperty *id_prop)
DEGForeachIDComponentCallback callback
std::unique_ptr< IDProperty, IDPropertyDeleter > create_bool(StringRefNull prop_name, bool value, eIDPropertyFlag flags={})
Allocate a new IDProperty of type IDP_BOOLEAN, set its name and value.
std::unique_ptr< blender::io::serialize::ArrayValue > convert_to_serialize_values(const IDProperty *properties)
Convert the given properties to Value objects for serialization.
std::unique_ptr< IDProperty, IDPropertyDeleter > create(StringRefNull prop_name, int32_t value, eIDPropertyFlag flags={})
Allocate a new IDProperty of type IDP_INT, set its name and value.
std::unique_ptr< IDProperty, IDPropertyDeleter > create_group(StringRefNull prop_name, eIDPropertyFlag flags={})
Allocate a new IDProperty of type IDP_GROUP.
IDProperty * convert_from_serialize_value(const blender::io::serialize::Value &value)
Convert the given value to an IDProperty.
struct IDPropertyTemplate::@30 array
struct IDPropertyTemplate::@29 string