15#include <fmt/format.h>
92 MEM_new<blender::CustomIDVectorSet<PropertyRNA *, PropertyRNAIdentifierGetter>>(
141 if (type == r_ptr.
type) {
158 r_ptr = {
static_cast<ID *
>(
data), type,
data};
172 return {
nullptr, &RNA_BlendData,
main};
214 if (ancestor_idx >=
ptr.ancestors.size()) {
222 ptr.ancestors[ancestor_idx].type,
223 ptr.ancestors[ancestor_idx].data,
224 ptr.ancestors.as_span().slice(0, ancestor_idx)};
236 return (
ptr->data ==
nullptr) || (
ptr->owner_id ==
nullptr) || (
ptr->type ==
nullptr);
242 ptr.owner_id =
nullptr;
243 ptr.type = &RNA_BlenderRNA;
262 for (base =
ptr->type->base; base; base = base->
base) {
284 if (type ==
nullptr) {
297 if (property_ptr ==
nullptr) {
301 if (create && *property_ptr ==
nullptr) {
305 return *property_ptr;
324 printf(
"Got unexpected IDProp container when trying to retrieve %s: %d\n", name, group->
type);
399 switch (idprop->
type) {
456 &rna_PropertyGroupItem_string,
457 &rna_PropertyGroupItem_int,
458 &rna_PropertyGroupItem_float,
462 &rna_PropertyGroupItem_group,
463 &rna_PropertyGroupItem_id,
464 &rna_PropertyGroupItem_double,
465 &rna_PropertyGroupItem_idp_array,
466 &rna_PropertyGroupItem_bool,
471 &rna_PropertyGroupItem_int_array,
472 &rna_PropertyGroupItem_float_array,
476 &rna_PropertyGroupItem_collection,
478 &rna_PropertyGroupItem_double_array,
480 &rna_PropertyGroupItem_bool_array,
493 *r_prop_rna_or_id = {};
495 r_prop_rna_or_id->
ptr =
ptr;
496 r_prop_rna_or_id->
rawprop = prop;
499 r_prop_rna_or_id->
rnaprop = prop;
520 r_prop_rna_or_id->
idprop = idprop;
526 r_prop_rna_or_id->
is_set =
true;
534 if (idprop_evaluated !=
nullptr && idprop->
type != idprop_evaluated->
type) {
535 idprop_evaluated =
nullptr;
538 r_prop_rna_or_id->
idprop = idprop_evaluated;
541 r_prop_rna_or_id->
is_set = (idprop_evaluated !=
nullptr);
547 r_prop_rna_or_id->
array_len = idprop_evaluated !=
nullptr ?
uint(idprop_evaluated->
len) : 0;
555 r_prop_rna_or_id->
rnaprop = &rna_PropertyGroupItem_enum;
570 *prop = prop_rna_or_id.
rnaprop;
571 return prop_rna_or_id.
idprop;
593 return &rna_PropertyGroupItem_enum;
705 if (type->
base == parent_type) {
757 if (srna == &RNA_AnyType) {
766 for (base = type; base; base = base->
base) {
777 if (identifier[0] ==
'[' && identifier[1] ==
'"') {
831 if (prop_type == property_type_check) {
835 "'%s : %s()' expected, got '%s : %s()'",
854 if (prop_type ==
PROP_COLLECTION && prop_struct_type == struct_type_check) {
860 "'%s : %s(type = %s)' expected, got '%s : %s()'",
870 "'%s : %s(type = %s)' expected, got '%s : %s(type = %s)'.",
946 for (; srna; srna = srna->
base) {
948 if (prop !=
nullptr) {
959 for (; srna; srna = srna->
base) {
1006 }
while ((type = type->
base));
1019 }
while ((type = type->
base));
1058 if (
UNLIKELY(srna_exists !=
nullptr)) {
1065 if (srna_exists->
base) {
1086 const char *identifier,
1089 const int len_sep = strlen(sep);
1090 const int len_id = strlen(identifier);
1091 const char *p = strstr(identifier, sep);
1095 const bool failure =
true;
1098 const bool failure =
false;
1100 if (p ==
nullptr || p == identifier || p + len_sep >= identifier + len_id) {
1103 "'%s' does not contain '%s' with prefix and suffix",
1109 const char *c, *start, *end, *last;
1113 for (c = start; c != end; c++) {
1114 if (((*c >=
'A' && *c <=
'Z') || ((c != start) && (*c >=
'0' && *c <=
'9')) ||
1115 ((c != start) && (c != last) && (*c ==
'_'))) == 0)
1119 "'%s' doesn't have upper case alpha-numeric prefix",
1125 start = p + len_sep;
1126 end = identifier + len_id;
1128 for (c = start; c != end; c++) {
1129 if (((*c >=
'A' && *c <=
'Z') || (*c >=
'a' && *c <=
'z') || (*c >=
'0' && *c <=
'9') ||
1130 ((c != start) && (c != last) && (*c ==
'_'))) == 0)
1134 "'%s' doesn't have an alpha-numeric suffix",
1189 switch (rna_prop->
type) {
1259 return len[dimension];
1264 const char *vectoritem =
"XYZW";
1265 const char *quatitem =
"WXYZ";
1266 const char *coloritem =
"RGBA";
1273 return quatitem[index];
1275 if ((index < 4) &&
ELEM(subtype,
1285 return vectoritem[index];
1288 return coloritem[index];
1313 else if (
ELEM(subtype,
1352 int softmin, softmax;
1358 *hardmin = ui_data->
min;
1359 *hardmax = ui_data->
max;
1372 iprop->
range(
ptr, hardmin, hardmax, &softmin, &softmax);
1378 iprop->
range_ex(
ptr, prop, hardmin, hardmax, &softmin, &softmax);
1390 int hardmin, hardmax;
1415 iprop->
range(
ptr, &hardmin, &hardmax, softmin, softmax);
1417 *softmin =
max_ii(*softmin, hardmin);
1418 *softmax =
min_ii(*softmax, hardmax);
1424 iprop->
range_ex(
ptr, prop, &hardmin, &hardmax, softmin, softmax);
1426 *softmin =
max_ii(*softmin, hardmin);
1427 *softmax =
min_ii(*softmax, hardmax);
1436 float softmin, softmax;
1442 *hardmin = float(ui_data->
min);
1443 *hardmax = float(ui_data->
max);
1456 fprop->
range(
ptr, hardmin, hardmax, &softmin, &softmax);
1462 fprop->
range_ex(
ptr, prop, hardmin, hardmax, &softmin, &softmax);
1478 float hardmin, hardmax;
1484 *softmin = float(ui_data->
soft_min);
1485 *softmax = float(ui_data->
soft_max);
1505 fprop->
range(
ptr, &hardmin, &hardmax, softmin, softmax);
1507 *softmin =
max_ff(*softmin, hardmin);
1508 *softmax =
min_ff(*softmax, hardmax);
1514 fprop->
range_ex(
ptr, prop, &hardmin, &hardmax, softmin, softmax);
1516 *softmin =
max_ff(*softmin, hardmin);
1517 *softmax =
min_ff(*softmax, hardmax);
1597 return &RNA_UnknownType;
1625 return pprop->
poll(
ptr, *value);
1631 const bool use_static,
1647 BLI_assert(idprop_item.identifier !=
nullptr);
1650 idprop_item.identifier,
1653 idprop_item.description ? idprop_item.description :
""};
1662 *r_totitem = totitem - 1;
1673 if (!use_static && (eprop->
item_fn !=
nullptr)) {
1676 (
ptr->owner_id ==
nullptr));
1677 if (
C !=
nullptr || no_context) {
1680 item = eprop->
item_fn(no_context ?
nullptr :
C,
ptr, prop, r_free);
1698 *r_item = eprop->
item;
1714#ifdef WITH_INTERNATIONAL
1715static void property_enum_translate(
PropertyRNA *prop,
1728 if (!(do_iface || do_tooltip)) {
1758 if (nitem[
i].name && do_iface) {
1761 if (nitem[
i].description && do_tooltip) {
1780#ifdef WITH_INTERNATIONAL
1783 property_enum_translate(prop, (
EnumPropertyItem **)r_item, r_totitem, r_free);
1798 "enum_gettext_all");
1800 memcpy(item_array, eprop->
item, mem_size);
1806 if (eprop->
item_fn !=
nullptr) {
1809 (
ptr->owner_id ==
nullptr));
1810 if (
C !=
nullptr || no_context) {
1815 item = eprop->
item_fn(no_context ?
nullptr :
nullptr,
ptr, prop, &
free);
1821 bool exists =
false;
1826 for (i_fixed = 0; item[i_fixed].
identifier; i_fixed++) {
1827 if (
STREQ(item[i_fixed].identifier, item_array[
i].identifier)) {
1834 item_array[
i].
name =
nullptr;
1845#ifdef WITH_INTERNATIONAL
1846 property_enum_translate(prop, &item_array, r_totitem, r_free);
1848 *r_item = item_array;
1863 *r_value = item[
i].
value;
1892 const char **r_identifier)
1900 r_identifier[index] =
nullptr;
1908 *r_name = item[
i].
name;
1916 const char *translation_context,
1917 const char **r_name)
1932 const char **r_description)
1954 const char *identifier,
1961 *r_value = item[
i].
value;
2145 const char **r_info)
2147 ID *
id =
ptr->owner_id;
2151 const char *info =
"";
2155 if (r_info !=
nullptr) {
2166 if (r_info !=
nullptr && (*r_info)[0] ==
'\0') {
2167 *r_info =
N_(
"This property is for internal use only and can't be edited");
2173 if (
id ==
nullptr) {
2180 if (is_linked_prop_exception) {
2183 if (r_info !=
nullptr && (*r_info)[0] ==
'\0') {
2184 *r_info =
N_(
"Can't edit this property from a linked data-block");
2191 if (r_info !=
nullptr && (*r_info)[0] ==
'\0') {
2192 *r_info =
N_(
"Can't edit this property from an override data-block");
2196 if (is_liboverride_system && !is_linked_prop_exception) {
2197 if (r_info !=
nullptr && (*r_info)[0] ==
'\0') {
2198 *r_info =
N_(
"Can't edit this property from a system override data-block");
2226 const char *dummy_info;
2264 if (
ptr->owner_id) {
2266 if (anim_data && anim_data->
action &&
2288 nullptr,
ptr->owner_id,
nullptr,
nullptr);
2290 if (linked_reference_anim_data) {
2301 bool driven, special;
2311 for (index = 0; index <
len; index++) {
2330 ret = (prop == r_prop);
2379 const short id_type =
GS(
ptr->owner_id->name);
2415 if (
ptr->owner_id) {
2462 else if (bprop->
get) {
2465 else if (bprop->
get_ex) {
2482#define USE_INT_IDPROPS_FOR_BOOLEAN_RNA_PROP
2500 else if (bprop->
set) {
2503 else if (bprop->
set_ex) {
2508#ifdef USE_INT_IDPROPS_FOR_BOOLEAN_RNA_PROP
2524 const bool *defarr,
int defarr_length,
bool defvalue,
int out_length,
bool *r_values)
2526 if (defarr && defarr_length > 0) {
2527 defarr_length = std::min(defarr_length, out_length);
2528 memcpy(r_values, defarr,
sizeof(
bool) * defarr_length);
2534 for (
int i = defarr_length;
i < out_length;
i++) {
2535 r_values[
i] = defvalue;
2540 const int *defarr,
int defarr_length,
bool defvalue,
int out_length,
bool *r_values)
2542 if (defarr && defarr_length > 0) {
2543 defarr_length = std::min(defarr_length, out_length);
2544 for (
int i = 0;
i < defarr_length;
i++) {
2545 r_values[
i] = defarr[
i] != 0;
2552 for (
int i = defarr_length;
i < out_length;
i++) {
2553 r_values[
i] = defvalue;
2588 int *values_src =
static_cast<int *
>(
IDP_Array(idprop));
2590 values[
i] = bool(values_src[
i]);
2594 bool *values_src =
static_cast<bool *
>(
IDP_Array(idprop));
2595 for (
int i = 0;
i < idprop->
len;
i++) {
2596 values[
i] = values_src[
i];
2620 if (values_num >= array_num) {
2627 memcpy(values, value_buf.
data(),
sizeof(*values) * values_num);
2650 value = tmparray[index];
2674 memcpy(
IDP_Array(idprop), values,
sizeof(int8_t) * idprop->
len);
2679 int *values_dst =
static_cast<int *
>(
IDP_Array(idprop));
2681 values_dst[
i] = int(values[
i]);
2700#ifdef USE_INT_IDPROPS_FOR_BOOLEAN_RNA_PROP
2709 int *values_dst =
static_cast<int *
>(
IDP_Array(idprop));
2711 values_dst[
i] = values[
i];
2723 if (values_num >= array_num) {
2730 memcpy(value_buf.
data(), values,
sizeof(*values) * values_num);
2755 tmparray[index] = value;
2865 bool *tmparray, value;
2869 value = tmparray[index];
2910 else if (iprop->
set) {
2913 else if (iprop->
set_ex) {
2927 const int *defarr,
int defarr_length,
int defvalue,
int out_length,
int *r_values)
2929 if (defarr && defarr_length > 0) {
2930 defarr_length = std::min(defarr_length, out_length);
2931 memcpy(r_values, defarr,
sizeof(
int) * defarr_length);
2937 for (
int i = defarr_length;
i < out_length;
i++) {
2938 r_values[
i] = defvalue;
2973 memcpy(values,
IDP_Array(idprop),
sizeof(
int) * idprop->
len);
2996 if (values_num >= array_num) {
3003 memcpy(values, value_buf.
data(),
sizeof(*values) * values_num);
3010 if (array_len <= 0) {
3014 else if (array_len == 1) {
3016 values[1] = values[0];
3023 if (array_len > 32) {
3031 values[0] = values[1] = arr[0];
3032 for (
i = 1;
i < array_len;
i++) {
3033 values[0] = std::min(values[0], arr[
i]);
3034 values[1] = std::max(values[1], arr[
i]);
3037 if (arr != arr_stack) {
3057 int *tmparray, value;
3061 value = tmparray[index];
3083 memcpy(
IDP_Array(idprop), values,
sizeof(
int) * idprop->
len);
3115 if (values_num >= array_num) {
3122 memcpy(value_buf.
data(), values,
sizeof(*values) * values_num);
3146 tmparray[index] = value;
3234 int *tmparray, value;
3238 value = tmparray[index];
3288 else if (fprop->
set) {
3291 else if (fprop->
set_ex) {
3305 const float *defarr,
int defarr_length,
float defvalue,
int out_length,
float *r_values)
3307 if (defarr && defarr_length > 0) {
3308 defarr_length = std::min(defarr_length, out_length);
3309 memcpy(r_values, defarr,
sizeof(
float) * defarr_length);
3315 for (
int i = defarr_length;
i < out_length;
i++) {
3316 r_values[
i] = defvalue;
3324 const int default_array_len,
3325 const double default_value,
3326 const int out_length,
3329 const int array_copy_len = std::min(out_length, default_array_len);
3331 for (
int i = 0;
i < array_copy_len;
i++) {
3332 r_values[
i] = float(default_array[
i]);
3335 for (
int i = array_copy_len;
i < out_length;
i++) {
3336 r_values[
i] = float(default_value);
3372 memcpy(values,
IDP_Array(idprop),
sizeof(
float) * idprop->
len);
3375 for (
i = 0;
i < idprop->
len;
i++) {
3376 values[
i] = float(((
double *)
IDP_Array(idprop))[
i]);
3400 if (values_num >= array_num) {
3407 memcpy(values, value_buf.
data(),
sizeof(*values) * values_num);
3414 if (array_len <= 0) {
3418 else if (array_len == 1) {
3420 values[1] = values[0];
3423 float arr_stack[32];
3427 if (array_len > 32) {
3435 values[0] = values[1] = arr[0];
3436 for (
i = 1;
i < array_len;
i++) {
3437 values[0] = std::min(values[0], arr[
i]);
3438 values[1] = std::max(values[1], arr[
i]);
3441 if (arr != arr_stack) {
3461 float *tmparray, value;
3465 value = tmparray[index];
3492 memcpy(
IDP_Array(idprop), values,
sizeof(
float) * idprop->
len);
3495 for (
i = 0;
i < idprop->
len;
i++) {
3524 const float *values,
3529 if (values_num >= array_num) {
3536 memcpy(value_buf.
data(), values,
sizeof(*values) * values_num);
3560 tmparray[index] = value;
3646 float *tmparray, value;
3650 value = tmparray[index];
3665 return std::string{
IDP_String(idprop), size_t(idprop->
len)};
3673 std::string string_ret{};
3677 string_ret.resize(
length);
3680 sprop->
get(
ptr, string_ret.data());
3683 sprop->
get_ex(
ptr, prop, string_ret.data());
3701 value[idprop->
len] =
'\0';
3707 else if (sprop->
get) {
3710 else if (sprop->
get_ex) {
3732 if (
length + 1 < fixedlen) {
3772 return idprop->
len - 1;
3795 else if (sprop->
set) {
3798 else if (sprop->
set_ex) {
3828 else if (sprop->
set) {
3832 else if (sprop->
set_ex) {
3882 if (
length + 1 < fixedlen) {
3940 const char *edit_text,
3945 sprop->
search(
C,
ptr, prop, edit_text, visit_fn);
3956 return std::nullopt;
3991 else if (eprop->
set) {
3994 else if (eprop->
set_ex) {
4037 int result_value = from_value;
4039 int single_step = (
step < 0) ? -1 : 1;
4047 i =
mod_i(
i + single_step, totitem);
4048 if (item_array[
i].identifier[0]) {
4049 step_tot += single_step;
4051 }
while ((
i != i_init) && (step_tot !=
step));
4054 result_value = item_array[
i].
value;
4061 return result_value;
4120 "%s: expected %s type, not %s",
4135 ID *value =
static_cast<ID *
>(ptr_value.
data);
4148 if (idprop !=
nullptr) {
4207 printf(
"%s %s.%s: only supported for id properties.\n",
4209 ptr->type->identifier,
4228 printf(
"%s %s.%s: only supported for id properties.\n",
4230 ptr->type->identifier,
4360 bool test = iter.
valid;
4370 bool *r_is_liboverride)
4372 ID *
id =
ptr->owner_id;
4373 if (
id ==
nullptr) {
4374 *r_is_liboverride =
false;
4380 if (!is_liboverride) {
4410 bool is_liboverride;
4422 if (is_liboverride) {
4440 if (is_liboverride) {
4470 bool is_liboverride;
4482 if (key >= 0 && key <
len) {
4488 if (key + 1 <
len) {
4513 bool is_liboverride;
4525 if (key >= 0 && key < len && pos >= 0 &&
pos <
len && key !=
pos) {
4556 bool is_liboverride;
4562 if (is_liboverride) {
4566 for (
int i = 0;
i <
len;
i++) {
4687 char name_buf[256], *name;
4689 int keylen = strlen(key);
4699 &iter.
ptr, nameprop, name_buf,
sizeof(name_buf), &namelen);
4701 if ((keylen == namelen) &&
STREQ(name, key)) {
4706 if (name != name_buf) {
4782 arrayp = (iter.
valid) ?
static_cast<char *
>(iter.
ptr.
data) :
nullptr;
4804#define RAW_GET(dtype, var, raw, a) \
4806 switch (raw.type) { \
4807 case PROP_RAW_CHAR: \
4808 var = (dtype)((char *)raw.array)[a]; \
4810 case PROP_RAW_INT8: \
4811 var = (dtype)((int8_t *)raw.array)[a]; \
4813 case PROP_RAW_UINT8: \
4814 var = (dtype)((uint8_t *)raw.array)[a]; \
4816 case PROP_RAW_SHORT: \
4817 var = (dtype)((short *)raw.array)[a]; \
4819 case PROP_RAW_UINT16: \
4820 var = (dtype)((uint16_t *)raw.array)[a]; \
4822 case PROP_RAW_INT: \
4823 var = (dtype)((int *)raw.array)[a]; \
4825 case PROP_RAW_BOOLEAN: \
4826 var = (dtype)((bool *)raw.array)[a]; \
4828 case PROP_RAW_FLOAT: \
4829 var = (dtype)((float *)raw.array)[a]; \
4831 case PROP_RAW_DOUBLE: \
4832 var = (dtype)((double *)raw.array)[a]; \
4834 case PROP_RAW_INT64: \
4835 var = (dtype)((int64_t *)raw.array)[a]; \
4837 case PROP_RAW_UINT64: \
4838 var = (dtype)((uint64_t *)raw.array)[a]; \
4846#define RAW_SET(dtype, raw, a, var) \
4848 switch (raw.type) { \
4849 case PROP_RAW_CHAR: \
4850 ((char *)raw.array)[a] = char(var); \
4852 case PROP_RAW_INT8: \
4853 ((int8_t *)raw.array)[a] = int8_t(var); \
4855 case PROP_RAW_UINT8: \
4856 ((uint8_t *)raw.array)[a] = uint8_t(var); \
4858 case PROP_RAW_SHORT: \
4859 ((short *)raw.array)[a] = short(var); \
4861 case PROP_RAW_UINT16: \
4862 ((uint16_t *)raw.array)[a] = uint16_t(var); \
4864 case PROP_RAW_INT: \
4865 ((int *)raw.array)[a] = int(var); \
4867 case PROP_RAW_BOOLEAN: \
4868 ((bool *)raw.array)[a] = bool(var); \
4870 case PROP_RAW_FLOAT: \
4871 ((float *)raw.array)[a] = float(var); \
4873 case PROP_RAW_DOUBLE: \
4874 ((double *)raw.array)[a] = double(var); \
4876 case PROP_RAW_INT64: \
4877 ((int64_t *)raw.array)[a] = int64_t(var); \
4879 case PROP_RAW_UINT64: \
4880 ((uint64_t *)raw.array)[a] = uint64_t(var); \
4892 return sizeof(char);
4894 return sizeof(int8_t);
4896 return sizeof(uint8_t);
4898 return sizeof(short);
4900 return sizeof(uint16_t);
4904 return sizeof(bool);
4906 return sizeof(float);
4908 return sizeof(double);
4928 for (
size = 1,
i = 0;
i < dim;
i++) {
4938 const char *propname,
4983 int arraylen = (itemlen == 0) ? 1 : itemlen;
4984 if (
in.len != arraylen *
out.len) {
4987 "Array length mismatch (expected %d, got %d)",
4994 if (
out.type ==
in.type) {
4995 void *inp =
in.array;
4996 void *outp =
out.array;
5004 memcpy(outp, inp,
size *
out.len);
5007 memcpy(inp, outp,
size *
out.len);
5011 for (
int a = 0; a <
out.len; a++) {
5013 memcpy(outp, inp,
size);
5016 memcpy(inp, outp,
size);
5019 inp = (
char *)inp +
size;
5020 outp = (
char *)outp +
out.stride;
5031 "Enum array properties should not exist");
5035 void *tmparray =
nullptr;
5037 int err = 0, j, a = 0;
5071 reports,
RPT_ERROR,
"Only boolean, int, float and enum properties supported");
5076 "Enum array properties should not exist");
5081 if (a + itemlen >
in.len) {
5150 else if (needconv == 1) {
5152 if (tmparray && tmplen != itemlen) {
5165 bool *
array =
static_cast<bool *
>(tmparray);
5166 for (j = 0; j < itemlen; j++, a++) {
5173 int *
array =
static_cast<int *
>(tmparray);
5174 for (j = 0; j < itemlen; j++, a++) {
5181 float *
array =
static_cast<float *
>(tmparray);
5182 for (j = 0; j < itemlen; j++, a++) {
5196 bool *
array =
static_cast<bool *
>(tmparray);
5198 for (j = 0; j < itemlen; j++, a++) {
5199 RAW_SET(
int,
in, a, ((
bool *)tmparray)[j]);
5204 int *
array =
static_cast<int *
>(tmparray);
5206 for (j = 0; j < itemlen; j++, a++) {
5212 float *
array =
static_cast<float *
>(tmparray);
5214 for (j = 0; j < itemlen; j++, a++) {
5289 switch (prop->
type) {
5308 const char *propname,
5319 const char *propname,
5391 if (
data ==
nullptr) {
5455 if (index < 0 || index >=
length) {
5471 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5483 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5495 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5507 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5518 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5530 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5542 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5554 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5565 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5577 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5589 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5601 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5612 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5624 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5638 printf(
"%s: %s.%s has no enum id '%s'.\n", __func__,
ptr->type->identifier, name,
id);
5642 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5670 printf(
"%s: %s.%s item %s not found.\n", __func__,
ptr->type->identifier, name, enumname);
5673 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5681 *r_value = item[
i].
value;
5701 *r_icon = item[
i].
icon;
5711 *r_name = item[
i].
name;
5725 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5731 PointerRNA *
ptr,
const char *name,
char *fixedbuf,
int fixedlen,
int *r_len)
5738 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5739 if (r_len !=
nullptr) {
5752 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5764 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5775 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5788 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5800 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5812 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5824 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5836 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5847 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5858 printf(
"%s: %s.%s not found.\n", __func__,
ptr->type->identifier, name);
5867 return ((idprop !=
nullptr) && (use_ghost ==
false || !(idprop->
flag &
IDP_FLAG_GHOST)));
5939 std::stringstream ss;
5941 const char *propname;
5949 if (
STREQ(propname,
"rna_type")) {
5953 if (first_time == 0) {
5959 ss << fmt::format(
"\"{}\":{}", propname,
str);
5970 if (
ptr->type ==
nullptr ||
ptr->owner_id ==
nullptr) {
5985 if (ptr_prop->
data ==
nullptr) {
5996 const bool as_function,
5997 const bool all_args,
5998 const bool nested_args,
5999 const int max_prop_length,
6002 const char *arg_name =
nullptr;
6006 std::stringstream ss;
6008 bool first_iter =
true;
6009 int flag, flag_parameter;
6017 if (as_function && (flag_parameter &
PARM_OUTPUT)) {
6023 if (
STREQ(arg_name,
"rna_type")) {
6033 ss << fmt::format(fmt::runtime(first_iter ?
"{}" :
", {}"), arg_name);
6039 if (all_args ==
true) {
6062 ss << fmt::format(fmt::runtime(first_iter ?
"{}={}" :
", {}={}"), arg_name, buf);
6074 const bool as_function,
6075 const bool all_args,
6076 const bool nested_args,
6077 const int max_prop_length)
6084 C,
ptr, as_function, all_args, nested_args, max_prop_length, iterprop);
6089 const bool as_function,
6090 const bool all_args,
6091 const int max_prop_length)
6100 C, &funcptr, as_function, all_args,
true, max_prop_length, iterprop);
6105 return var ?
"True" :
"False";
6115 *r_buf_end = buf +
len;
6121 *r_buf_end = buf +
len;
6127 *r_buf_end = buf +
len;
6140 const int end =
len - 1;
6143 bool *buf =
static_cast<bool *
>(*buf_p);
6144 for (
int i = 0;
i <
len;
i++, buf++) {
6145 ss << fmt::format(fmt::runtime((
i < end || !end) ?
"{}, " :
"{}"),
6152 int *buf =
static_cast<int *
>(*buf_p);
6153 for (
int i = 0;
i <
len;
i++, buf++) {
6154 ss << fmt::format(fmt::runtime((
i < end || !end) ?
"{}, " :
"{}"), *buf);
6160 float *buf =
static_cast<float *
>(*buf_p);
6161 for (
int i = 0;
i <
len;
i++, buf++) {
6162 ss << fmt::format(fmt::runtime((
i < end || !end) ?
"{:g}, " :
"{:g}"), *buf);
6173 int type,
void **buf_p,
int totdim,
const int *dim_size, std::stringstream &ss)
6178 const int end = dim_size[totdim] - 1;
6179 for (
int i = 0;
i <= end;
i++) {
6181 if (
i < end || !end) {
6197 void *buf_step = buf;
6213 std::stringstream ss;
6267 ss << fmt::format(
"\"{}\"", buf_esc);
6273 const char *identifier;
6287 bool is_first =
true;
6290 ss << fmt::format(fmt::runtime(is_first ?
"'{}'" :
", '{}'"), item->
identifier);
6308 ss << fmt::format(
"'{}'", identifier);
6311 return "'<UNKNOWN ENUM>'";
6326 (
i < max_prop_length) && collect_iter.
valid;
6344 return "'<UNKNOWN TYPE>'";
6374 return func->
call !=
nullptr;
6384 const char *identifier)
6389 for (; parm; parm = parm->
next) {
6416 int alloc_size = 0,
size;
6447 data_alloc->
array =
nullptr;
6455 switch (parm->type) {
6457 if (parm->arraydimension) {
6466 if (parm->arraydimension) {
6475 if (parm->arraydimension) {
6488 if (defvalue && defvalue[0]) {
6517 for (; parm; parm = parm->
next) {
6520 vector->~CollectionVector();
6532 if (data_alloc->
array) {
6540 parms->
data =
nullptr;
6542 parms->
func =
nullptr;
6565 iter->
parms = parms;
6600 if (iter.
parm == parm) {
6609 *r_value = data_alloc->
array;
6612 *r_value = iter.
data;
6627 for (; parm; parm = parm->
next) {
6645 if (iter.
parm == parm) {
6655 switch (parm->
type) {
6657 size =
sizeof(char);
6664 size =
sizeof(float);
6670 if (data_alloc->
array) {
6685 memcpy(iter.
data, value, iter.
size);
6697 for (; parm; parm = parm->
next) {
6716 if (iter.
parm == parm) {
6737 if (iter.
parm == parm) {
6917 fputc(
'\n', stdout);
6929 const int prop_index,
6934 if ((array_len == 0) || (prop_index < array_len)) {
6936 r_anim_rna->
prop = prop;
6937 r_anim_rna->
prop_index = array_len ? prop_index : -1;
bool id_can_have_animdata(const ID *id)
AnimData * BKE_animdata_from_id(const ID *id)
Scene * CTX_data_scene(const bContext *C)
Main * CTX_data_main(const bContext *C)
wmMsgBus * CTX_wm_message_bus(const bContext *C)
FCurve * BKE_fcurve_find_by_rna(PointerRNA *ptr, PropertyRNA *prop, int rnaindex, AnimData **r_adt, bAction **r_action, bool *r_driven, bool *r_special)
#define IDP_IDPArray(prop)
IDProperty * IDP_GetPropertyFromGroup(const IDProperty *prop, blender::StringRef name) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void IDP_FreeFromGroup(IDProperty *group, IDProperty *prop) ATTR_NONNULL()
eIDPropertyUIDataType IDP_ui_data_type(const IDProperty *prop)
void IDP_AssignStringMaxSize(IDProperty *prop, const char *st, size_t st_maxncpy) ATTR_NONNULL()
void IDP_ReplaceInGroup_ex(IDProperty *group, IDProperty *prop, IDProperty *prop_exist, int flag)
@ IDP_UI_DATA_TYPE_BOOLEAN
IDProperty * IDP_GetIndexArray(IDProperty *prop, int index) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
IDProperty * IDP_New(char type, const IDPropertyTemplate *val, blender::StringRef name, eIDPropertyFlag flags={}) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void IDP_ResizeIDPArray(IDProperty *prop, int newlen)
bool IDP_AddToGroup(IDProperty *group, IDProperty *prop) ATTR_NONNULL()
void IDP_AppendArray(IDProperty *prop, IDProperty *item)
void IDP_AssignID(IDProperty *prop, ID *id, int flag)
void IDP_ResizeArray(IDProperty *prop, int newlen)
IDProperty * IDP_NewStringMaxSize(const char *st, size_t st_maxncpy, blender::StringRef name, eIDPropertyFlag flags={}) ATTR_WARN_UNUSED_RESULT
IDPropertyUIData * IDP_ui_data_ensure(IDProperty *prop)
void IDP_ReplaceInGroup(IDProperty *group, IDProperty *prop) ATTR_NONNULL()
IDProperty * IDP_NewIDPArray(blender::StringRef name) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
bool BKE_id_can_use_id(const ID &id_from, const ID &id_to)
bool BKE_lib_override_library_is_system_defined(const Main *bmain, const ID *id)
IDOverrideLibrary * BKE_lib_override_library_get(Main *bmain, ID *id, ID *owner_id_hint, ID **r_owner_id)
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
void BKE_report(ReportList *reports, eReportType type, const char *message)
#define BLI_assert_unreachable()
#define BLI_assert_msg(a, msg)
A dynamically sized string ADT.
char * BLI_dynstr_get_cstring(const DynStr *ds) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
DynStr * BLI_dynstr_new(void) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void BLI_dynstr_free(DynStr *ds) ATTR_NONNULL()
void BLI_dynstr_appendf(DynStr *__restrict ds, const char *__restrict format,...) ATTR_PRINTF_FORMAT(2
void BLI_dynstr_append(DynStr *__restrict ds, const char *cstr) ATTR_NONNULL()
GHash * BLI_ghash_str_new_ex(const char *info, unsigned int nentries_reserve) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void * BLI_ghash_lookup(const GHash *gh, const void *key) ATTR_WARN_UNUSED_RESULT
void BLI_ghash_insert(GHash *gh, void *key, void *val)
void BLI_kdtree_nd_ free(KDTree *tree)
void * BLI_findlink(const ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
void * BLI_findstring_ptr(const ListBase *listbase, const char *id, int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE float max_ff(float a, float b)
MINLINE int min_ii(int a, int b)
MINLINE float min_ff(float a, float b)
MINLINE int max_ii(int a, int b)
MINLINE int mod_i(int i, int n)
ATTR_WARN_UNUSED_RESULT const size_t num
#define BLI_string_debug_size(str, str_maxncpy)
char * STRNCPY(char(&dst)[N], const char *src)
size_t BLI_str_escape(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
bool BLT_translate_iface()
const char * BLT_pgettext(const char *msgctxt, const char *msgid)
#define CTX_IFACE_(context, msgid)
const char * BLT_translate_do_tooltip(const char *msgctxt, const char *msgid)
bool BLT_translate_tooltips()
const char * BLT_translate_do_iface(const char *msgctxt, const char *msgid)
void BPY_free_srna_pytype(StructRNA *srna)
#define CLOG_WARN(clg_ref,...)
void DEG_id_tag_update(ID *id, unsigned int flags)
void DEG_relations_tag_update(Main *bmain)
ID and Library types, which are fundamental for SDNA.
@ IDP_FLAG_OVERRIDELIBRARY_LOCAL
Read Guarded memory(de)allocation.
#define RNA_STRUCT_BEGIN(sptr, prop)
#define RNA_PROP_BEGIN(sptr, itemptr, prop)
StructRNA * ID_code_to_RNA_type(short idcode)
#define RNA_MAX_ARRAY_LENGTH
#define RNA_MAX_ARRAY_DIMENSION
StructRNA *(*)(Main *bmain, ReportList *reports, void *data, const char *identifier, StructValidateFunc validate, StructCallbackFunc call, StructFreeFunc free) StructRegisterFunc
bool(*)(CollectionPropertyIterator *iter, void *data) IteratorSkipFunc
@ STRUCT_NO_CONTEXT_WITHOUT_OWNER_ID
@ STRUCT_PUBLIC_NAMESPACE
@ STRUCT_NO_DATABLOCK_IDPROPERTIES
@ STRUCT_CONTAINS_DATABLOCK_IDPROPERTIES
eStringPropertySearchFlag
@ PROP_STRING_SEARCH_SUPPORTED
bool(*)(Main *bmain, StructRNA *type) StructUnregisterFunc
#define RNA_SUBTYPE_UNIT(subtype)
@ PROPOVERRIDE_LIBRARY_INSERTION
@ PROP_CONTEXT_PROPERTY_UPDATE
BMesh const char void * data
unsigned long long int uint64_t
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
VecBase< float, D > step(VecOp< float, D >, VecOp< float, D >) RET
float length(VecOp< float, D >) RET
#define ID_TYPE_USE_COPY_ON_EVAL(_id_type)
#define ID_IS_EDITABLE(_id)
#define ID_IS_OVERRIDE_LIBRARY(_id)
void * MEM_mallocN(size_t len, const char *str)
void * MEM_calloc_arrayN(size_t len, size_t size, const char *str)
void * MEM_callocN(size_t len, const char *str)
void * MEM_malloc_arrayN(size_t len, size_t size, const char *str)
void MEM_freeN(void *vmemh)
std::unique_ptr< IDProperty, IDPropertyDeleter > create_bool(StringRef prop_name, bool value, eIDPropertyFlag flags={})
Allocate a new IDProperty of type IDP_BOOLEAN, set its name and value.
std::unique_ptr< IDProperty, IDPropertyDeleter > create(StringRef 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(StringRef prop_name, eIDPropertyFlag flags={})
Allocate a new IDProperty of type IDP_GROUP.
PointerRNA rna_listbase_lookup_int(PointerRNA *ptr, StructRNA *type, ListBase *lb, int index)
StructUnregisterFunc RNA_struct_unregister(StructRNA *type)
float RNA_property_float_get(PointerRNA *ptr, PropertyRNA *prop)
bool RNA_property_is_runtime(const PropertyRNA *prop)
bool RNA_property_collection_lookup_int_has_fn(PropertyRNA *prop)
void RNA_boolean_set_array(PointerRNA *ptr, const char *name, const bool *values)
bool RNA_property_enum_value(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const char *identifier, int *r_value)
StructRegisterFunc RNA_struct_register(StructRNA *type)
bool RNA_property_enum_item_from_value(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, EnumPropertyItem *r_item)
IDProperty * rna_idproperty_find(PointerRNA *ptr, const char *name)
PointerRNA RNA_pointer_create_id_subdata(ID &id, StructRNA *type, void *data)
void RNA_property_float_get_default_array(PointerRNA *ptr, PropertyRNA *prop, float *values)
bool RNA_property_enum_identifier(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **r_identifier)
int RNA_enum_bitflag_identifiers(const EnumPropertyItem *item, const int value, const char **r_identifier)
static void rna_property_float_fill_default_array_values_double(const double *default_array, const int default_array_len, const double default_value, const int out_length, float *r_values)
void RNA_int_set_array(PointerRNA *ptr, const char *name, const int *values)
const char * RNA_property_ui_name_raw(const PropertyRNA *prop)
void RNA_property_boolean_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, bool value)
void RNA_property_int_set(PointerRNA *ptr, PropertyRNA *prop, int value)
const StructRNA * RNA_struct_base_child_of(const StructRNA *type, const StructRNA *parent_type)
void RNA_property_int_ui_range(PointerRNA *ptr, PropertyRNA *prop, int *softmin, int *softmax, int *step)
PropertyRNA * RNA_struct_type_find_property(StructRNA *srna, const char *identifier)
const char * RNA_property_ui_description(const PropertyRNA *prop)
bool RNA_property_update_check(PropertyRNA *prop)
bool RNA_property_array_check(PropertyRNA *prop)
bool RNA_struct_is_a(const StructRNA *type, const StructRNA *srna)
PropertyRNA * RNA_struct_find_collection_property_check(PointerRNA &props, const char *name, const StructRNA *struct_type_check)
bool RNA_property_is_unlink(PropertyRNA *prop)
std::string RNA_pointer_as_string_id(bContext *C, PointerRNA *ptr)
void RNA_parameter_get(ParameterList *parms, PropertyRNA *parm, void **r_value)
void rna_property_rna_or_id_get(PropertyRNA *prop, PointerRNA *ptr, PropertyRNAOrID *r_prop_rna_or_id)
StructRNA * RNA_struct_find(const char *identifier)
static void rna_property_int_fill_default_array_values(const int *defarr, int defarr_length, int defvalue, int out_length, int *r_values)
void RNA_property_float_get_array(PointerRNA *ptr, PropertyRNA *prop, float *values)
bool RNA_property_assign_default(PointerRNA *ptr, PropertyRNA *prop)
const char * RNA_function_identifier(FunctionRNA *func)
void RNA_parameter_list_end(ParameterIterator *)
PropertyScaleType RNA_property_ui_scale(PropertyRNA *prop)
void RNA_struct_state_owner_set(const char *name)
bool RNA_property_int_set_default(PropertyRNA *prop, int value)
void RNA_struct_py_type_set(StructRNA *srna, void *py_type)
void rna_iterator_array_end(CollectionPropertyIterator *iter)
void RNA_int_get_array(PointerRNA *ptr, const char *name, int *values)
bool RNA_property_path_from_ID_check(PointerRNA *ptr, PropertyRNA *prop)
bool RNA_property_boolean_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index)
static void rna_property_int_get_default_array_values(PointerRNA *ptr, IntPropertyRNA *iprop, int *r_values)
IDProperty ** RNA_struct_idprops_p(PointerRNA *ptr)
bool RNA_property_float_set_default(PropertyRNA *prop, float value)
void RNA_property_int_get_array_at_most(PointerRNA *ptr, PropertyRNA *prop, int *values, int values_num)
void RNA_string_set(PointerRNA *ptr, const char *name, const char *value)
static void rna_property_float_get_default_array_values(PointerRNA *ptr, FloatPropertyRNA *fprop, float *r_values)
static void rna_idproperty_free(PointerRNA *ptr, const char *name)
PointerRNA RNA_pointer_get(PointerRNA *ptr, const char *name)
int RNA_collection_length(PointerRNA *ptr, const char *name)
int RNA_enum_from_name(const EnumPropertyItem *item, const char *name)
int RNA_property_int_clamp(PointerRNA *ptr, PropertyRNA *prop, int *value)
int RNA_parameter_dynamic_length_get_data(ParameterList *, PropertyRNA *parm, void *data)
int RNA_property_float_clamp(PointerRNA *ptr, PropertyRNA *prop, float *value)
int RNA_property_int_get_default(PointerRNA *ptr, PropertyRNA *prop)
void RNA_pointer_set(PointerRNA *ptr, const char *name, PointerRNA ptr_value)
void RNA_boolean_get_array(PointerRNA *ptr, const char *name, bool *values)
int RNA_property_enum_bitflag_identifiers(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **r_identifier)
bool RNA_struct_available_or_report(ReportList *reports, const char *identifier)
bool RNA_enum_is_equal(bContext *C, PointerRNA *ptr, const char *name, const char *enumname)
PropertyRNA * RNA_struct_find_property_check(PointerRNA &props, const char *name, const PropertyType property_type_check)
bool RNA_struct_is_ID(const StructRNA *type)
int RNA_property_int_get_index(PointerRNA *ptr, PropertyRNA *prop, int index)
char * RNA_property_string_get_default_alloc(PointerRNA *ptr, PropertyRNA *prop, char *fixedbuf, int fixedlen, int *r_len)
void RNA_property_float_ui_range(PointerRNA *ptr, PropertyRNA *prop, float *softmin, float *softmax, float *step, float *precision)
const ListBase * RNA_struct_type_properties(StructRNA *srna)
void RNA_property_float_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, float value)
bool RNA_enum_value_from_id(const EnumPropertyItem *item, const char *identifier, int *r_value)
const ListBase * RNA_struct_type_functions(StructRNA *srna)
PropertyRNA * rna_struct_find_nested(PointerRNA *ptr, StructRNA *srna)
bool RNA_struct_idprops_check(const StructRNA *srna)
void rna_iterator_listbase_end(CollectionPropertyIterator *)
bool RNA_property_collection_assign_int(PointerRNA *ptr, PropertyRNA *prop, const int key, const PointerRNA *assign_ptr)
static void rna_property_boolean_get_default_array_values(PointerRNA *ptr, BoolPropertyRNA *bprop, bool *r_values)
eStringPropertySearchFlag RNA_property_string_search_flag(PropertyRNA *prop)
bool RNA_property_collection_is_empty(PointerRNA *ptr, PropertyRNA *prop)
PropertyUnit RNA_property_unit(PropertyRNA *prop)
void RNA_struct_blender_type_set(StructRNA *srna, void *blender_type)
int RNA_function_defined(FunctionRNA *func)
int RNA_property_ui_icon(const PropertyRNA *prop)
static const char * rna_ensure_property_identifier(const PropertyRNA *prop)
int RNA_property_collection_lookup_index(PointerRNA *ptr, PropertyRNA *prop, const PointerRNA *t_ptr)
void RNA_collection_clear(PointerRNA *ptr, const char *name)
bool RNA_property_reset(PointerRNA *ptr, PropertyRNA *prop, int index)
void RNA_parameter_dynamic_length_set(ParameterList *parms, PropertyRNA *parm, int length)
void rna_iterator_array_begin(CollectionPropertyIterator *iter, PointerRNA *ptr, void *data, int itemsize, int length, bool free_ptr, IteratorSkipFunc skip)
static void rna_array_as_string_elem(int type, void **buf_p, int len, std::stringstream &ss)
StructRNA * RNA_property_pointer_type(PointerRNA *ptr, PropertyRNA *prop)
void RNA_parameter_dynamic_length_set_data(ParameterList *, PropertyRNA *parm, void *data, int length)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
bool RNA_path_resolved_create(PointerRNA *ptr, PropertyRNA *prop, const int prop_index, PathResolvedRNA *r_anim_rna)
bool RNA_collection_is_empty(PointerRNA *ptr, const char *name)
static const char * bool_as_py_string(const int var)
float RNA_property_float_get_index(PointerRNA *ptr, PropertyRNA *prop, int index)
void RNA_property_pointer_set(PointerRNA *ptr, PropertyRNA *prop, PointerRNA ptr_value, ReportList *reports)
void RNA_property_string_search(const bContext *C, PointerRNA *ptr, PropertyRNA *prop, const char *edit_text, blender::FunctionRef< void(StringPropertySearchVisitParams)> visit_fn)
char * RNA_struct_name_get_alloc(PointerRNA *ptr, char *fixedbuf, int fixedlen, int *r_len)
void _RNA_warning(const char *format,...)
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
const EnumPropertyItem * RNA_struct_property_tag_defines(const StructRNA *type)
void RNA_property_collection_skip(CollectionPropertyIterator *iter, int num)
#define RAW_GET(dtype, var, raw, a)
float RNA_property_float_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index)
void RNA_pointer_add(PointerRNA *ptr, const char *name)
bool RNA_property_collection_lookup_string_has_nameprop(PropertyRNA *prop)
int RNA_enum_from_identifier(const EnumPropertyItem *item, const char *identifier)
int RNA_property_collection_raw_get(ReportList *reports, PointerRNA *ptr, PropertyRNA *prop, const char *propname, void *array, RawPropertyType type, int len)
BLI_INLINE void rna_pointer_refine(PointerRNA &r_ptr)
std::string RNA_pointer_as_string_keywords_ex(bContext *C, PointerRNA *ptr, const bool as_function, const bool all_args, const bool nested_args, const int max_prop_length, PropertyRNA *iterprop)
uint RNA_enum_items_count(const EnumPropertyItem *item)
int RNA_property_multi_array_length(PointerRNA *ptr, PropertyRNA *prop, int dimension)
bool RNA_property_is_set_ex(PointerRNA *ptr, PropertyRNA *prop, bool use_ghost)
bool RNA_property_editable_index(const PointerRNA *ptr, PropertyRNA *prop, const int index)
int RNA_property_enum_get_default(PointerRNA *ptr, PropertyRNA *prop)
const char * RNA_property_ui_description_raw(const PropertyRNA *prop)
bool RNA_property_collection_lookup_string_supported(PropertyRNA *prop)
void RNA_parameter_set(ParameterList *parms, PropertyRNA *parm, const void *value)
bool RNA_struct_property_is_set_ex(PointerRNA *ptr, const char *identifier, bool use_ghost)
bool RNA_property_is_set(PointerRNA *ptr, PropertyRNA *prop)
const char * RNA_property_description(PropertyRNA *prop)
void RNA_property_collection_begin(PointerRNA *ptr, PropertyRNA *prop, CollectionPropertyIterator *iter)
bool RNA_enum_icon_from_value(const EnumPropertyItem *item, int value, int *r_icon)
void RNA_property_float_range(PointerRNA *ptr, PropertyRNA *prop, float *hardmin, float *hardmax)
bool RNA_property_animateable(const PointerRNA *ptr, PropertyRNA *prop_orig)
void RNA_property_boolean_get_array(PointerRNA *ptr, PropertyRNA *prop, bool *values)
PropertyType RNA_property_type(PropertyRNA *prop)
const char * RNA_function_ui_description_raw(FunctionRNA *func)
const PointerRNA PointerRNA_NULL
char * RNA_property_string_get_alloc(PointerRNA *ptr, PropertyRNA *prop, char *fixedbuf, int fixedlen, int *r_len)
void RNA_property_pointer_add(PointerRNA *ptr, PropertyRNA *prop)
void RNA_property_int_set_array_at_most(PointerRNA *ptr, PropertyRNA *prop, const int *values, int values_num)
static PropertyRNA * arraytypemap[IDP_NUMTYPES]
void RNA_int_set(PointerRNA *ptr, const char *name, int value)
void RNA_property_enum_set(PointerRNA *ptr, PropertyRNA *prop, int value)
PointerRNA RNA_property_pointer_get_default(PointerRNA *, PropertyRNA *)
PointerRNA RNA_property_pointer_get(PointerRNA *ptr, PropertyRNA *prop)
void * RNA_struct_blender_type_get(StructRNA *srna)
void RNA_property_float_get_array_at_most(PointerRNA *ptr, PropertyRNA *prop, float *values, int values_num)
void ** RNA_struct_instance(PointerRNA *ptr)
char RNA_property_array_item_char(PropertyRNA *prop, int index)
int RNA_property_enum_step(const bContext *C, PointerRNA *ptr, PropertyRNA *prop, int from_value, int step)
void RNA_parameter_list_free(ParameterList *parms)
static const char * rna_ensure_property_name(const PropertyRNA *prop)
bool RNA_struct_contains_property(PointerRNA *ptr, PropertyRNA *prop_test)
std::string RNA_pointer_as_string_keywords(bContext *C, PointerRNA *ptr, const bool as_function, const bool all_args, const bool nested_args, const int max_prop_length)
IDProperty * RNA_struct_idprops(PointerRNA *ptr, bool create)
void RNA_float_get_array(PointerRNA *ptr, const char *name, float *values)
void rna_idproperty_touch(IDProperty *idprop)
void RNA_property_update(bContext *C, PointerRNA *ptr, PropertyRNA *prop)
int RNA_property_int_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index)
size_t RNA_raw_type_sizeof(RawPropertyType type)
PointerRNA rna_array_lookup_int(PointerRNA *ptr, StructRNA *type, void *data, int itemsize, int length, int index)
bool RNA_property_boolean_get(PointerRNA *ptr, PropertyRNA *prop)
void RNA_property_float_get_array_range(PointerRNA *ptr, PropertyRNA *prop, float values[2])
void RNA_property_boolean_get_default_array(PointerRNA *ptr, PropertyRNA *prop, bool *values)
const char * RNA_struct_identifier(const StructRNA *type)
bool RNA_struct_idprops_contains_datablock(const StructRNA *type)
void RNA_property_boolean_get_array_at_most(PointerRNA *ptr, PropertyRNA *prop, bool *values, int values_num)
void RNA_property_int_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, int value)
static int rna_property_array_length_all_dimensions(PointerRNA *ptr, PropertyRNA *prop)
bool RNA_property_enum_name_gettexted(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **r_name)
void RNA_property_enum_items_gettexted(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const EnumPropertyItem **r_item, int *r_totitem, bool *r_free)
bool RNA_enum_id_from_value(const EnumPropertyItem *item, int value, const char **r_identifier)
int RNA_property_int_get(PointerRNA *ptr, PropertyRNA *prop)
const char * RNA_property_translation_context(const PropertyRNA *prop)
void rna_iterator_listbase_begin(CollectionPropertyIterator *iter, PointerRNA *ptr, ListBase *lb, IteratorSkipFunc skip)
void RNA_property_collection_next(CollectionPropertyIterator *iter)
void RNA_collection_add(PointerRNA *ptr, const char *name, PointerRNA *r_value)
void RNA_parameter_list_next(ParameterIterator *iter)
void * rna_iterator_array_get(CollectionPropertyIterator *iter)
void RNA_enum_set_identifier(bContext *C, PointerRNA *ptr, const char *name, const char *id)
PropertyPathTemplateType RNA_property_path_template_type(PropertyRNA *prop)
static void * rna_array_as_string_alloc(int type, int len, PointerRNA *ptr, PropertyRNA *prop, void **r_buf_end)
void RNA_property_float_set_array_at_most(PointerRNA *ptr, PropertyRNA *prop, const float *values, int values_num)
static bool rna_idproperty_verify_valid(PointerRNA *ptr, PropertyRNA *prop, IDProperty *idprop)
void RNA_string_get(PointerRNA *ptr, const char *name, char *value)
static void rna_property_float_fill_default_array_values(const float *defarr, int defarr_length, float defvalue, int out_length, float *r_values)
const char * RNA_function_ui_description(FunctionRNA *func)
int RNA_int_get(PointerRNA *ptr, const char *name)
static void rna_ensure_property_multi_array_length(const PointerRNA *ptr, PropertyRNA *prop, int length[])
int RNA_property_array_dimension(const PointerRNA *ptr, PropertyRNA *prop, int length[])
bool RNA_enum_value_from_identifier(const EnumPropertyItem *item, const char *identifier, int *r_value)
bool RNA_enum_name_from_value(const EnumPropertyItem *item, int value, const char **r_name)
PropertyRNA * RNA_struct_type_find_property_no_base(StructRNA *srna, const char *identifier)
int RNA_function_flag(FunctionRNA *func)
void * RNA_property_py_data_get(PropertyRNA *prop)
std::string RNA_function_as_string_keywords(bContext *C, FunctionRNA *func, const bool as_function, const bool all_args, const int max_prop_length)
void RNA_property_update_main(Main *bmain, Scene *scene, PointerRNA *ptr, PropertyRNA *prop)
float RNA_property_float_get_default(PointerRNA *ptr, PropertyRNA *prop)
PointerRNA RNA_pointer_create_from_ancestor(const PointerRNA &ptr, const int ancestor_idx)
std::optional< std::string > RNA_property_string_path_filter(const bContext *C, PointerRNA *ptr, PropertyRNA *prop)
bool RNA_property_anim_editable(const PointerRNA *ptr, PropertyRNA *prop_orig)
static bool rna_property_editable_do(const PointerRNA *ptr, PropertyRNA *prop_orig, const int index, const char **r_info)
bool RNA_property_pointer_poll(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *value)
int RNA_property_flag(PropertyRNA *prop)
char * RNA_string_get_alloc(PointerRNA *ptr, const char *name, char *fixedbuf, int fixedlen, int *r_len)
RawPropertyType RNA_property_raw_type(PropertyRNA *prop)
static void rna_property_boolean_fill_default_array_values_from_ints(const int *defarr, int defarr_length, bool defvalue, int out_length, bool *r_values)
const char * RNA_struct_ui_description_raw(const StructRNA *type)
int RNA_struct_ui_icon(const StructRNA *type)
void RNA_property_boolean_set(PointerRNA *ptr, PropertyRNA *prop, bool value)
float RNA_float_get(PointerRNA *ptr, const char *name)
bool RNA_property_builtin(PropertyRNA *prop)
void RNA_property_int_get_array_range(PointerRNA *ptr, PropertyRNA *prop, int values[2])
void rna_iterator_listbase_next(CollectionPropertyIterator *iter)
const char * RNA_struct_ui_description(const StructRNA *type)
int RNA_parameter_list_arg_count(const ParameterList *parms)
bool RNA_property_collection_lookup_int(PointerRNA *ptr, PropertyRNA *prop, int key, PointerRNA *r_ptr)
bool RNA_struct_idprops_register_check(const StructRNA *type)
void RNA_parameter_set_lookup(ParameterList *parms, const char *identifier, const void *value)
static char rna_struct_state_owner[128]
void RNA_property_string_get_default(PropertyRNA *prop, char *value, const int value_maxncpy)
void RNA_property_string_set_bytes(PointerRNA *ptr, PropertyRNA *prop, const char *value, int len)
void RNA_float_set(PointerRNA *ptr, const char *name, float value)
int RNA_string_length(PointerRNA *ptr, const char *name)
static PropertyRNA * typemap[IDP_NUMTYPES]
bool RNA_property_enum_item_from_value_gettexted(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, EnumPropertyItem *r_item)
const char * RNA_struct_ui_name(const StructRNA *type)
bool RNA_struct_undo_check(const StructRNA *type)
void RNA_collection_begin(PointerRNA *ptr, const char *name, CollectionPropertyIterator *iter)
void RNA_struct_property_unset(PointerRNA *ptr, const char *identifier)
void RNA_property_collection_add(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *r_ptr)
bool RNA_pointer_is_null(const PointerRNA *ptr)
int RNA_property_array_length(PointerRNA *ptr, PropertyRNA *prop)
bool RNA_enum_description(const EnumPropertyItem *item, const int value, const char **r_description)
const char * RNA_property_ui_name(const PropertyRNA *prop)
StructRNA * RNA_struct_base(StructRNA *type)
static std::optional< std::string > rna_pointer_as_string__bldata(PointerRNA *ptr)
FunctionRNA * RNA_struct_find_function(StructRNA *srna, const char *identifier)
static int rna_ensure_property_array_length(PointerRNA *ptr, PropertyRNA *prop)
bool RNA_enum_name(const EnumPropertyItem *item, const int value, const char **r_name)
bool RNA_property_is_idprop(const PropertyRNA *prop)
static void rna_property_update(bContext *C, Main *bmain, Scene *scene, PointerRNA *ptr, PropertyRNA *prop)
int RNA_property_string_maxlength(PropertyRNA *prop)
void RNA_property_enum_items_gettexted_all(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const EnumPropertyItem **r_item, int *r_totitem, bool *r_free)
const char * RNA_struct_state_owner_get()
std::optional< std::string > RNA_pointer_as_string(bContext *C, PointerRNA *ptr, PropertyRNA *prop_ptr, PointerRNA *ptr_prop)
bool RNA_struct_idprops_datablock_allowed(const StructRNA *type)
static void rna_array_as_string(int type, int len, PointerRNA *ptr, PropertyRNA *prop, std::stringstream &ss)
int RNA_property_string_default_length(PointerRNA *, PropertyRNA *prop)
bool RNA_property_editable(const PointerRNA *ptr, PropertyRNA *prop)
bool RNA_property_collection_lookup_string_index(PointerRNA *ptr, PropertyRNA *prop, const char *key, PointerRNA *r_ptr, int *r_index)
void RNA_property_float_set_array(PointerRNA *ptr, PropertyRNA *prop, const float *values)
void RNA_property_int_set_array(PointerRNA *ptr, PropertyRNA *prop, const int *values)
void RNA_property_int_get_default_array(PointerRNA *ptr, PropertyRNA *prop, int *values)
static bool property_collection_liboverride_editable(PointerRNA *ptr, PropertyRNA *prop, bool *r_is_liboverride)
bool RNA_property_enum_name(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **r_name)
bool RNA_property_editable_info(const PointerRNA *ptr, PropertyRNA *prop, const char **r_info)
int RNA_property_enum_get(PointerRNA *ptr, PropertyRNA *prop)
void rna_iterator_array_next(CollectionPropertyIterator *iter)
PointerRNA RNA_pointer_recast(PointerRNA *ptr)
void RNA_property_float_set(PointerRNA *ptr, PropertyRNA *prop, float value)
PropertyRNA * RNA_struct_name_property(const StructRNA *type)
static const char * rna_ensure_property_description(const PropertyRNA *prop)
std::string RNA_property_string_get(PointerRNA *ptr, PropertyRNA *prop)
void RNA_property_int_get_array(PointerRNA *ptr, PropertyRNA *prop, int *values)
bool RNA_property_collection_move(PointerRNA *ptr, PropertyRNA *prop, int key, int pos)
int RNA_enum_from_value(const EnumPropertyItem *item, const int value)
PropertySubType RNA_property_subtype(PropertyRNA *prop)
bool RNA_struct_property_is_set(PointerRNA *ptr, const char *identifier)
int RNA_parameter_list_ret_count(const ParameterList *parms)
PointerRNA RNA_main_pointer_create(Main *main)
void RNA_property_int_range(PointerRNA *ptr, PropertyRNA *prop, int *hardmin, int *hardmax)
bool RNA_struct_idprops_unset(PointerRNA *ptr, const char *identifier)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
void rna_pointer_create_with_ancestors(const PointerRNA &parent, StructRNA *type, void *data, PointerRNA &r_ptr)
int RNA_function_call(bContext *C, ReportList *reports, PointerRNA *ptr, FunctionRNA *func, ParameterList *parms)
int RNA_parameter_dynamic_length_get(ParameterList *parms, PropertyRNA *parm)
static void rna_array_as_string_recursive(int type, void **buf_p, int totdim, const int *dim_size, std::stringstream &ss)
const char * RNA_struct_ui_name_raw(const StructRNA *type)
bool RNA_property_collection_lookup_string(PointerRNA *ptr, PropertyRNA *prop, const char *key, PointerRNA *r_ptr)
ParameterList * RNA_parameter_list_create(ParameterList *parms, PointerRNA *, FunctionRNA *func)
void RNA_property_enum_items(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const EnumPropertyItem **r_item, int *r_totitem, bool *r_free)
std::optional< blender::StringRefNull > RNA_translate_ui_text(const char *text, const char *text_ctxt, StructRNA *type, PropertyRNA *prop, int translate)
PropertyRNA * RNA_function_get_parameter(PointerRNA *, FunctionRNA *func, int index)
bool RNA_property_driver_editable(const PointerRNA *ptr, PropertyRNA *prop)
void RNA_property_collection_clear(PointerRNA *ptr, PropertyRNA *prop)
int RNA_property_tags(PropertyRNA *prop)
bool RNA_enum_identifier(const EnumPropertyItem *item, const int value, const char **r_identifier)
void * rna_iterator_array_dereference_get(CollectionPropertyIterator *iter)
static bool rna_ensure_property_array_check(PropertyRNA *prop)
bool RNA_property_collection_type_get(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *r_ptr)
void RNA_property_collection_end(CollectionPropertyIterator *iter)
bool RNA_property_collection_lookup_string_has_fn(PropertyRNA *prop)
void RNA_enum_set(PointerRNA *ptr, const char *name, int value)
void RNA_float_set_array(PointerRNA *ptr, const char *name, const float *values)
int RNA_property_array_item_index(PropertyRNA *prop, char name)
static void rna_property_boolean_fill_default_array_values(const bool *defarr, int defarr_length, bool defvalue, int out_length, bool *r_values)
PointerRNA RNA_blender_rna_pointer_create()
bool RNA_property_boolean_get_index(PointerRNA *ptr, PropertyRNA *prop, int index)
bool RNA_property_boolean_get_default(PointerRNA *ptr, PropertyRNA *prop)
bool RNA_struct_bl_idname_ok_or_report(ReportList *reports, const char *identifier, const char *sep)
PointerRNA RNA_pointer_create_discrete(ID *id, StructRNA *type, void *data)
bool RNA_property_collection_remove(PointerRNA *ptr, PropertyRNA *prop, int key)
int RNA_enum_get(PointerRNA *ptr, const char *name)
void * rna_iterator_listbase_get(CollectionPropertyIterator *iter)
#define RAW_SET(dtype, raw, a, var)
void RNA_property_unset(PointerRNA *ptr, PropertyRNA *prop)
uint RNA_struct_count_properties(StructRNA *srna)
void RNA_parameter_list_begin(ParameterList *parms, ParameterIterator *iter)
IDProperty * rna_idproperty_check(PropertyRNA **prop, PointerRNA *ptr)
void RNA_property_boolean_set_array_at_most(PointerRNA *ptr, PropertyRNA *prop, const bool *values, int values_num)
void RNA_property_pointer_remove(PointerRNA *ptr, PropertyRNA *prop)
std::string RNA_property_as_string(bContext *C, PointerRNA *ptr, PropertyRNA *prop, int index, int max_prop_length)
int RNA_property_string_length(PointerRNA *ptr, PropertyRNA *prop)
PropertyRNA * RNA_struct_iterator_property(StructRNA *type)
void RNA_property_enum_items_ex(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const bool use_static, const EnumPropertyItem **r_item, int *r_totitem, bool *r_free)
int RNA_parameter_list_size(const ParameterList *parms)
int RNA_parameter_flag(PropertyRNA *prop)
void RNA_parameter_get_lookup(ParameterList *parms, const char *identifier, void **r_value)
void * RNA_struct_py_type_get(StructRNA *srna)
bool RNA_property_editable_flag(const PointerRNA *ptr, PropertyRNA *prop)
PointerRNA RNA_pointer_create_with_parent(const PointerRNA &parent, StructRNA *type, void *data)
PropertyRNA * RNA_function_find_parameter(PointerRNA *, FunctionRNA *func, const char *identifier)
const char * RNA_struct_translation_context(const StructRNA *type)
int RNA_property_collection_raw_set(ReportList *reports, PointerRNA *ptr, PropertyRNA *prop, const char *propname, void *array, RawPropertyType type, int len)
bool RNA_property_animated(PointerRNA *ptr, PropertyRNA *prop)
const char * RNA_property_identifier(const PropertyRNA *prop)
int RNA_property_collection_raw_array(PointerRNA *ptr, PropertyRNA *prop, PropertyRNA *itemprop, bool set, RawArray *array)
const ListBase * RNA_function_defined_parameters(FunctionRNA *func)
static const char * rna_property_type_identifier(PropertyType prop_type)
PropertyRNA * rna_ensure_property(PropertyRNA *prop)
static int rna_raw_access(ReportList *reports, PointerRNA *ptr, PropertyRNA *prop, const char *propname, void *inarray, RawPropertyType intype, int inlen, int set)
bool RNA_enum_name_gettexted(const EnumPropertyItem *item, int value, const char *translation_context, const char **r_name)
int RNA_property_collection_length(PointerRNA *ptr, PropertyRNA *prop)
void RNA_property_boolean_set_array(PointerRNA *ptr, PropertyRNA *prop, const bool *values)
PointerRNA RNA_id_pointer_create(ID *id)
void RNA_property_string_set(PointerRNA *ptr, PropertyRNA *prop, const char *value)
static void rna_property_collection_get_idp(CollectionPropertyIterator *iter)
bool RNA_property_overridable_get(const PointerRNA *ptr, PropertyRNA *prop)
void RNA_free(BlenderRNA *brna)
void RNA_enum_item_end(EnumPropertyItem **items, int *totitem)
void RNA_enum_item_add(EnumPropertyItem **items, int *totitem, const EnumPropertyItem *item)
int rna_parameter_size(PropertyRNA *parm)
int rna_parameter_size_pad(const int size)
std::optional< blender::StringRefNull > rna_translate_ui_text(const char *text, const char *text_ctxt, StructRNA *type, PropertyRNA *prop, bool translate)
bool(*)(PointerRNA *ptr, const PointerRNA value, const PropertyRNA *prop) PropPointerPollFuncPy
void(*)(bContext *C, PointerRNA *ptr, PropertyRNA *prop) ContextPropUpdateFunc
void(*)(bContext *C, PointerRNA *ptr) ContextUpdateFunc
std::optional< std::string > RNA_path_full_struct_py(const PointerRNA *ptr)
std::string RNA_path_full_ID_py(ID *id)
std::optional< std::string > RNA_path_from_ID_to_property(const PointerRNA *ptr, PropertyRNA *prop)
bool RNA_path_resolve_property(const PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop)
bool RNA_path_resolve(const PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop)
PropBooleanGetFuncEx get_default
PropBooleanArraySetFuncEx setarray_ex
PropBooleanArrayGetFuncEx getarray_ex
PropBooleanArraySetFunc setarray
const bool * defaultarray
PropBooleanArrayGetFuncEx get_default_array
PropBooleanSetFuncEx set_ex
PropBooleanGetFuncEx get_ex
PropBooleanArrayGetFunc getarray
union CollectionPropertyIterator::@251313231040372062304153161337117373343066046335 internal
ListBaseIterator listbase
PropCollectionNextFunc next
PropCollectionLookupStringFunc lookupstring
PropCollectionLengthFunc length
PropCollectionLookupIntFunc lookupint
PropCollectionBeginFunc begin
PropCollectionAssignIntFunc assignint
PropCollectionEndFunc end
blender::CustomIDVectorSet< PropertyRNA *, PropertyRNAIdentifierGetter > * prop_lookup_set
const EnumPropertyItem * item
PropEnumGetFuncEx get_default
PropFloatSetFuncEx set_ex
PropertyScaleType ui_scale_type
PropFloatRangeFuncEx range_ex
PropFloatArrayGetFuncEx getarray_ex
PropFloatArraySetFuncEx setarray_ex
PropFloatArrayGetFunc getarray
PropFloatGetFuncEx get_default
const float * defaultarray
PropFloatArraySetFunc setarray
PropFloatGetFuncEx get_ex
PropFloatArrayGetFuncEx get_default_array
IDPropertyUIDataEnumItem * enum_items
IDPropertyUIData * ui_data
PropIntRangeFuncEx range_ex
PropIntArrayGetFunc getarray
PropIntArrayGetFuncEx getarray_ex
PropIntArraySetFunc setarray
PropIntArrayGetFuncEx get_default_array
PropIntArraySetFuncEx setarray_ex
PropertyScaleType ui_scale_type
PropIntGetFuncEx get_default
PropPointerTypeFunc type_fn
bool is_rna_storage_idprop
ItemEditableFunc itemeditable
PropArrayLengthGetFunc getlength
const char * translation_context
unsigned int arraydimension
PropertyPathTemplateType path_template_type
unsigned int arraylength[RNA_MAX_ARRAY_DIMENSION]
unsigned int totarraylength
StringPropertyPathFilterFunc path_filter
const char * defaultvalue
PropStringLengthFuncEx length_ex
PropStringLengthFunc length
PropStringGetFuncEx get_ex
PropStringSetFuncEx set_ex
StringPropertySearchFunc search
eStringPropertySearchFlag search_flag
StructUnregisterFunc unreg
StructInstanceFunc instance
const char * translation_context
const EnumPropertyItem * prop_tag_defines
PropertyRNA * nameproperty
IDPropertiesFunc idproperties
PropertyRNA * iteratorproperty
struct IDPropertyTemplate::@347174163205254236177334334344125337263066142041 string
struct IDPropertyTemplate::@057340115353163137130262213324257034202360355133 array
void WM_main_add_notifier(uint type, void *reference)
void WM_msg_publish_rna(wmMsgBus *mbus, PointerRNA *ptr, PropertyRNA *prop)