134 if (
type == idtype) {
142 r_ptr->
type = idtype;
166 if (rtype == r_ptr->
type) {
204 while (
result.type->refine) {
252 for (idprop = ((
IDProperty *)prop)->prev; idprop; idprop = idprop->
prev) {
258 if (idprop ==
NULL) {
287 if (idprop ==
NULL && create) {
302 const char *name = ((
IDProperty *)prop)->name;
305 if (rv ==
NULL && create) {
334 if (idp_ui ==
NULL) {
335 return (value ==
NULL);
377 return type->idproperties(
ptr, create);
400 "Got unexpected IDProp container when trying to retrieve %s: %d\n", name, group->
type);
474 switch (idprop->
type) {
563 memset(r_prop_rna_or_id, 0,
sizeof(*r_prop_rna_or_id));
565 r_prop_rna_or_id->
ptr = *
ptr;
566 r_prop_rna_or_id->
rawprop = prop;
569 r_prop_rna_or_id->
rnaprop = prop;
590 r_prop_rna_or_id->
idprop = idprop;
595 r_prop_rna_or_id->
is_set =
true;
603 if (idprop_evaluated !=
NULL && idprop->
type != idprop_evaluated->
type) {
604 idprop_evaluated =
NULL;
607 r_prop_rna_or_id->
idprop = idprop_evaluated;
610 r_prop_rna_or_id->
is_set = (idprop_evaluated !=
NULL);
632 *prop = prop_rna_or_id.
rnaprop;
633 return prop_rna_or_id.
idprop;
644 *prop = prop_rna_or_id.
rnaprop;
678 const char *description =
NULL;
694 if (description ==
NULL) {
725 return type->identifier;
753 return type->description;
758 return type->translation_context;
763 return type->nameproperty;
768 return type->prop_tag_defines;
773 return type->iteratorproperty;
789 if (
type->base == parent_type) {
857 for (base =
type; base; base = base->
base) {
868 if (identifier[0] ==
'[' && identifier[1] ==
'"') {
933 unsigned int counter = 0;
1021 if (
type->instance) {
1073 if (srna_exists->
base) {
1094 const char *identifier,
1097 const int len_sep = strlen(sep);
1098 const int len_id = strlen(identifier);
1099 const char *p = strstr(identifier, sep);
1103 const bool failure =
true;
1106 const bool failure =
false;
1108 if (p ==
NULL || p == identifier || p + len_sep >= identifier + len_id) {
1111 "'%s' does not contain '%s' with prefix and suffix",
1117 const char *
c, *start, *end, *
last;
1121 for (
c = start;
c != end;
c++) {
1122 if (((*
c >=
'A' && *
c <=
'Z') || ((
c != start) && (*
c >=
'0' && *
c <=
'9')) ||
1123 ((
c != start) && (
c !=
last) && (*
c ==
'_'))) == 0) {
1125 reports, report_level,
"'%s' doesn't have upper case alpha-numeric prefix", identifier);
1130 start = p + len_sep;
1131 end = identifier + len_id;
1133 for (
c = start;
c != end;
c++) {
1134 if (((*
c >=
'A' && *
c <=
'Z') || (*
c >=
'a' && *
c <=
'z') || (*
c >=
'0' && *
c <=
'9') ||
1135 ((
c != start) && (
c !=
last) && (*
c ==
'_'))) == 0) {
1136 BKE_reportf(reports, report_level,
"'%s' doesn't have an alpha-numeric suffix", identifier);
1252 const char *vectoritem =
"XYZW";
1253 const char *quatitem =
"WXYZ";
1254 const char *coloritem =
"RGBA";
1261 return quatitem[index];
1263 if ((index < 4) &&
ELEM(subtype,
1272 return vectoritem[index];
1275 return coloritem[index];
1300 else if (
ELEM(subtype,
1338 int softmin, softmax;
1348 *hardmin = item ?
IDP_Int(item) : INT_MIN;
1351 *hardmax = item ?
IDP_Int(item) : INT_MAX;
1361 iprop->
range(
ptr, hardmin, hardmax, &softmin, &softmax);
1367 iprop->
range_ex(
ptr, prop, hardmin, hardmax, &softmin, &softmax);
1379 int hardmin, hardmax;
1389 *softmin = item ?
IDP_Int(item) : INT_MIN;
1392 *softmax = item ?
IDP_Int(item) : INT_MAX;
1395 *step = item ?
IDP_Int(item) : 1;
1408 iprop->
range(
ptr, &hardmin, &hardmax, softmin, softmax);
1410 *softmin =
max_ii(*softmin, hardmin);
1411 *softmax =
min_ii(*softmax, hardmax);
1417 iprop->
range_ex(
ptr, prop, &hardmin, &hardmax, softmin, softmax);
1419 *softmin =
max_ii(*softmin, hardmin);
1420 *softmax =
min_ii(*softmax, hardmax);
1423 *step = iprop->
step;
1429 float softmin, softmax;
1449 *hardmin = -FLT_MAX;
1452 fprop->
range(
ptr, hardmin, hardmax, &softmin, &softmax);
1455 *hardmin = -FLT_MAX;
1458 fprop->
range_ex(
ptr, prop, hardmin, hardmax, &softmin, &softmax);
1474 float hardmin, hardmax;
1506 fprop->
range(
ptr, &hardmin, &hardmax, softmin, softmax);
1508 *softmin =
max_ff(*softmin, hardmin);
1509 *softmax =
min_ff(*softmax, hardmax);
1515 fprop->
range_ex(
ptr, prop, &hardmin, &hardmax, softmin, softmax);
1517 *softmin =
max_ff(*softmin, hardmin);
1518 *softmax =
min_ff(*softmax, hardmax);
1521 *step = fprop->
step;
1604 return pprop->
poll(
ptr, *value);
1610 printf(
"%s: %s is not a pointer property.\n", __func__, prop->
identifier);
1617 const bool use_static,
1630 if (
C !=
NULL || no_context) {
1651 *r_item = eprop->
item;
1667 #ifdef WITH_INTERNATIONAL
1668 static void property_enum_translate(
PropertyRNA *prop,
1681 if (!(do_iface || do_tooltip)) {
1709 if (nitem[i].name && do_iface) {
1712 if (nitem[i].description && do_tooltip) {
1731 #ifdef WITH_INTERNATIONAL
1734 property_enum_translate(prop, (
EnumPropertyItem **)r_item, r_totitem, r_free);
1750 memcpy(item_array, eprop->
item, mem_size);
1760 if (
C !=
NULL || no_context) {
1770 for (i = 0; i < eprop->
totitem; i++) {
1771 bool exists =
false;
1776 for (i_fixed = 0; item[i_fixed].
identifier; i_fixed++) {
1777 if (
STREQ(item[i_fixed].identifier, item_array[i].identifier)) {
1795 #ifdef WITH_INTERNATIONAL
1796 property_enum_translate(prop, &item_array, r_totitem, r_free);
1798 *r_item = item_array;
1813 *r_value = item[i].
value;
1842 const char **r_identifier)
1850 r_identifier[index] =
NULL;
1858 *r_name = item[i].
name;
1866 const char **r_description)
2077 const char *dummy_info;
2105 flag = prop_type->
flag;
2107 *r_info =
N_(
"This property is for internal use only and can't be edited");
2114 if (!(*r_info)[0]) {
2115 *r_info =
N_(
"Can't edit this property from a linked data-block");
2121 if (!(*r_info)[0]) {
2122 *r_info =
N_(
"Can't edit this property from an override data-block");
2135 const char *dummy_info;
2155 const char *dummy_info;
2187 bool driven, special;
2197 for (index = 0; index <
len; index++) {
2219 ret = (prop == r_prop);
2343 else if (bprop->
get) {
2346 else if (bprop->
get_ex) {
2374 else if (bprop->
set) {
2377 else if (bprop->
set_ex) {
2394 const bool *defarr,
int defarr_length,
bool defvalue,
int out_length,
bool *r_values)
2396 if (defarr && defarr_length > 0) {
2397 defarr_length =
MIN2(defarr_length, out_length);
2398 memcpy(r_values, defarr,
sizeof(
bool) * defarr_length);
2404 for (
int i = defarr_length; i < out_length; i++) {
2405 r_values[i] = defvalue;
2434 for (
uint i = 0; i < idprop->
len; i++) {
2435 values[i] = (bool)values_src[i];
2473 value = tmparray[index];
2496 for (
uint i = 0; i < idprop->
len; i++) {
2497 values_dst[i] = (int)values[i];
2523 for (
uint i = 0; i < idprop->
len; i++) {
2524 values_dst[i] = (int)values[i];
2551 tmparray[index] = value;
2597 bool *tmparray, value;
2601 value = tmparray[index];
2642 else if (iprop->
set) {
2645 else if (iprop->
set_ex) {
2664 const int *defarr,
int defarr_length,
int defvalue,
int out_length,
int *r_values)
2666 if (defarr && defarr_length > 0) {
2667 defarr_length =
MIN2(defarr_length, out_length);
2668 memcpy(r_values, defarr,
sizeof(
int) * defarr_length);
2674 for (
int i = defarr_length; i < out_length; i++) {
2675 r_values[i] = defvalue;
2705 memcpy(values,
IDP_Array(idprop),
sizeof(
int) * idprop->
len);
2726 if (array_len <= 0) {
2730 else if (array_len == 1) {
2732 values[1] = values[0];
2739 if (array_len > 32) {
2740 arr =
MEM_mallocN(
sizeof(
int) * array_len, __func__);
2747 values[0] = values[1] = arr[0];
2748 for (i = 1; i < array_len; i++) {
2749 values[0] =
MIN2(values[0], arr[i]);
2750 values[1] =
MAX2(values[1], arr[i]);
2753 if (arr != arr_stack) {
2773 int *tmparray, value;
2777 value = tmparray[index];
2798 memcpy(
IDP_Array(idprop), values,
sizeof(
int) * idprop->
len);
2825 memcpy(
IDP_Array(idprop), values,
sizeof(
int) * idprop->
len);
2850 tmparray[index] = value;
2931 int *tmparray, value;
2935 value = tmparray[index];
2985 else if (fprop->
set) {
2988 else if (fprop->
set_ex) {
3007 const float *defarr,
int defarr_length,
float defvalue,
int out_length,
float *r_values)
3009 if (defarr && defarr_length > 0) {
3010 defarr_length =
MIN2(defarr_length, out_length);
3011 memcpy(r_values, defarr,
sizeof(
float) * defarr_length);
3017 for (
int i = defarr_length; i < out_length; i++) {
3018 r_values[i] = defvalue;
3049 memcpy(values,
IDP_Array(idprop),
sizeof(
float) * idprop->
len);
3052 for (i = 0; i < idprop->
len; i++) {
3075 if (array_len <= 0) {
3079 else if (array_len == 1) {
3081 values[1] = values[0];
3084 float arr_stack[32];
3088 if (array_len > 32) {
3089 arr =
MEM_mallocN(
sizeof(
float) * array_len, __func__);
3096 values[0] = values[1] = arr[0];
3097 for (i = 1; i < array_len; i++) {
3098 values[0] =
MIN2(values[0], arr[i]);
3099 values[1] =
MAX2(values[1], arr[i]);
3102 if (arr != arr_stack) {
3122 float *tmparray, value;
3126 value = tmparray[index];
3153 memcpy(
IDP_Array(idprop), values,
sizeof(
float) * idprop->
len);
3156 for (i = 0; i < idprop->
len; i++) {
3157 ((
double *)
IDP_Array(idprop))[i] = values[i];
3185 memcpy(
IDP_Array(idprop), values,
sizeof(
float) * idprop->
len);
3210 tmparray[index] = value;
3266 for (
int i = 0; i <
length; i++) {
3267 values[i] = (i < item->
len) ? (
float)defarr[i] : defval;
3300 float *tmparray, value;
3304 value = tmparray[index];
3322 value[idprop->
len] =
'\0';
3328 else if (sprop->
get) {
3331 else if (sprop->
get_ex) {
3349 if (
length + 1 < fixedlen) {
3390 return idprop->
len - 1;
3413 else if (sprop->
set) {
3416 else if (sprop->
set_ex) {
3444 else if (sprop->
set) {
3448 else if (sprop->
set_ex) {
3505 if (
length + 1 < fixedlen) {
3573 else if (eprop->
set) {
3576 else if (eprop->
set_ex) {
3614 int result_value = from_value;
3616 int single_step = (step < 0) ? -1 : 1;
3624 i =
mod_i(i + single_step, totitem);
3625 if (item_array[i].identifier[0]) {
3626 step_tot += single_step;
3628 }
while ((i != i_init) && (step_tot != step));
3631 result_value = item_array[i].
value;
3638 return result_value;
3690 "%s: expected %s type, not %s",
3702 "%s: expected ID type, not %s",
3710 if (idprop !=
NULL) {
3729 else if (pprop->
set) {
3732 pprop->
set(
ptr, ptr_value, reports);
3779 printf(
"%s %s.%s: only supported for id properties.\n",
3800 printf(
"%s %s.%s: only supported for id properties.\n",
3824 memset(iter, 0,
sizeof(*iter));
3875 if (!internal->skip) {
3876 internal->
ptr +=
internal->itemsize * (num - 1);
3877 iter->
valid = (
internal->ptr <
internal->endptr);
3886 for (i = 0; i < num && iter->
valid; i++) {
3933 bool *r_is_liboverride)
3937 *r_is_liboverride =
false;
3943 if (!is_liboverride) {
3973 bool is_liboverride;
3976 memset(r_ptr, 0,
sizeof(*r_ptr));
3986 if (is_liboverride) {
4005 if (is_liboverride) {
4017 else if (cprop->add) {
4027 printf(
"%s %s.%s: not implemented for this property.\n",
4044 memset(r_ptr, 0,
sizeof(*r_ptr));
4056 bool is_liboverride;
4068 if (key >= 0 && key <
len) {
4074 if (key + 1 <
len) {
4092 else if (cprop->remove) {
4104 printf(
"%s %s.%s: only supported for id properties.\n",
4120 bool is_liboverride;
4132 if (key >= 0 && key < len && pos >= 0 &&
pos <
len && key !=
pos) {
4163 bool is_liboverride;
4169 if (is_liboverride) {
4173 for (
int i = 0; i <
len; i++) {
4239 memset(r_ptr, 0,
sizeof(*r_ptr));
4259 char name[256], *nameptr;
4261 int keylen = strlen(key);
4272 if ((keylen == namelen) &&
STREQ(nameptr, key)) {
4277 if ((
char *)&name != nameptr) {
4289 memset(r_ptr, 0,
sizeof(*r_ptr));
4364 array->stride =
internal->itemsize;
4365 array->len = ((
char *)internal->endptr - arrayp) /
internal->itemsize;
4377 #define RAW_GET(dtype, var, raw, a) \
4379 switch (raw.type) { \
4380 case PROP_RAW_CHAR: \
4381 var = (dtype)((char *)raw.array)[a]; \
4383 case PROP_RAW_SHORT: \
4384 var = (dtype)((short *)raw.array)[a]; \
4386 case PROP_RAW_INT: \
4387 var = (dtype)((int *)raw.array)[a]; \
4389 case PROP_RAW_BOOLEAN: \
4390 var = (dtype)((bool *)raw.array)[a]; \
4392 case PROP_RAW_FLOAT: \
4393 var = (dtype)((float *)raw.array)[a]; \
4395 case PROP_RAW_DOUBLE: \
4396 var = (dtype)((double *)raw.array)[a]; \
4404 #define RAW_SET(dtype, raw, a, var) \
4406 switch (raw.type) { \
4407 case PROP_RAW_CHAR: \
4408 ((char *)raw.array)[a] = (char)var; \
4410 case PROP_RAW_SHORT: \
4411 ((short *)raw.array)[a] = (short)var; \
4413 case PROP_RAW_INT: \
4414 ((int *)raw.array)[a] = (int)var; \
4416 case PROP_RAW_BOOLEAN: \
4417 ((bool *)raw.array)[a] = (bool)var; \
4419 case PROP_RAW_FLOAT: \
4420 ((float *)raw.array)[a] = (float)var; \
4422 case PROP_RAW_DOUBLE: \
4423 ((double *)raw.array)[a] = (double)var; \
4435 return sizeof(char);
4437 return sizeof(short);
4441 return sizeof(bool);
4443 return sizeof(
float);
4461 for (
size = 1, i = 0; i < dim; i++) {
4471 const char *propname,
4517 int arraylen = (itemlen == 0) ? 1 : itemlen;
4518 if (in.
len != arraylen * out.
len) {
4521 "Array length mismatch (expected %d, got %d)",
4529 void *inp = in.
array;
4530 void *outp = out.
array;
4535 for (
a = 0;
a < out.
len;
a++) {
4537 memcpy(outp, inp,
size);
4540 memcpy(inp, outp,
size);
4543 inp = (
char *)inp +
size;
4544 outp = (
char *)outp + out.
stride;
4556 void *tmparray =
NULL;
4558 int err = 0, j,
a = 0;
4598 if (
a + itemlen > in.
len) {
4600 reports,
RPT_ERROR,
"Array length mismatch (got %d, expected more)", in.
len);
4654 else if (needconv == 1) {
4656 if (tmparray && tmplen != itemlen) {
4661 tmparray =
MEM_callocN(
sizeof(
float) * itemlen,
"RNA tmparray");
4669 for (j = 0; j < itemlen; j++,
a++) {
4670 RAW_GET(
bool, ((
bool *)tmparray)[j], in,
a);
4676 for (j = 0; j < itemlen; j++,
a++) {
4677 RAW_GET(
int, ((
int *)tmparray)[j], in,
a);
4683 for (j = 0; j < itemlen; j++,
a++) {
4684 RAW_GET(
float, ((
float *)tmparray)[j], in,
a);
4697 for (j = 0; j < itemlen; j++,
a++) {
4698 RAW_SET(
int, in,
a, ((
bool *)tmparray)[j]);
4704 for (j = 0; j < itemlen; j++,
a++) {
4705 RAW_SET(
int, in,
a, ((
int *)tmparray)[j]);
4711 for (j = 0; j < itemlen; j++,
a++) {
4712 RAW_SET(
float, in,
a, ((
float *)tmparray)[j]);
4783 switch (prop->
type) {
4802 const char *propname,
4813 const char *propname,
4830 internal->skip = skip;
4834 if (skip && iter->
valid && skip(iter, internal->link)) {
4843 if (internal->skip) {
4845 internal->
link =
internal->link->
next;
4847 }
while (iter->
valid && internal->skip(iter, internal->link));
4850 internal->link =
internal->link->next;
4859 return internal->
link;
4894 internal->free_ptr = free_ptr ?
ptr :
NULL;
4895 internal->endptr = ((
char *)
ptr) +
length * itemsize;
4896 internal->itemsize = itemsize;
4897 internal->skip = skip;
4898 internal->length =
length;
4900 iter->
valid = (
internal->ptr !=
internal->endptr);
4902 if (skip && iter->
valid && skip(iter, internal->
ptr)) {
4911 if (internal->skip) {
4913 internal->
ptr +=
internal->itemsize;
4914 iter->
valid = (
internal->ptr !=
internal->endptr);
4915 }
while (iter->
valid && internal->skip(iter, internal->
ptr));
4918 internal->ptr +=
internal->itemsize;
4919 iter->
valid = (
internal->ptr !=
internal->endptr);
4927 return internal->
ptr;
4935 return *(
void **)(internal->ptr);
4942 if (internal->free_ptr) {
4944 internal->free_ptr =
NULL;
4951 if (index < 0 || index >=
length) {
4960 static char *
rna_path_token(
const char **path,
char *fixedbuf,
int fixedlen,
int bracket)
4967 if (**path ==
'[') {
4978 while (*p && (*p !=
']')) {
4985 if (p_end ==
NULL) {
5004 while (*p && *p !=
'.' && *p !=
'[') {
5016 char *buf = (
len + 1 < fixedlen) ? fixedbuf :
MEM_mallocN(
sizeof(
char) * (
len + 1), __func__);
5024 memcpy(buf, *path,
sizeof(
char) *
len);
5042 if (token[0] ==
'"') {
5043 int len = strlen(token);
5044 if (
len >= 2 && token[
len - 1] ==
'"') {
5046 token[
len - 1] =
'\0';
5068 if (**path ==
'[') {
5089 intkey = atoi(token);
5090 if (intkey == 0 && (token[0] !=
'0' || token[1] !=
'\0')) {
5101 if (token != fixedbuf) {
5136 for (i = 0; i < dim; i++) {
5137 int temp_index = -1;
5141 if (**path ==
'[') {
5144 if (token ==
NULL) {
5154 temp_index = atoi(token);
5156 if (temp_index == 0 && (token[0] !=
'0' || token[1] !=
'\0')) {
5157 if (token != fixedbuf) {
5165 else if (dim == 1) {
5168 if (token ==
NULL) {
5179 if (token != fixedbuf) {
5184 if (temp_index < 0 || temp_index >=
len[i]) {
5188 index_arr[i] = temp_index;
5202 for (i = dim - 1; i >= 0; i--) {
5203 flat_index += index_arr[i] * totdim;
5207 *r_index = flat_index;
5240 const bool eval_pointer)
5249 const bool do_item_ptr = r_item_ptr !=
NULL && !eval_pointer;
5258 if (path ==
NULL || *path ==
'\0') {
5267 int use_id_prop = (*path ==
'[') ? 1 : 0;
5278 token =
rna_path_token(&path, fixedbuf,
sizeof(fixedbuf), use_id_prop);
5295 if (token != fixedbuf) {
5305 prop_elem->
ptr = curptr;
5306 prop_elem->
prop = prop;
5307 prop_elem->
index = -1;
5321 if (do_item_ptr || eval_pointer || *path !=
'\0') {
5325 if (eval_pointer || *path !=
'\0') {
5342 if (eval_pointer || *path !=
'\0') {
5351 if (r_index || prop_elem) {
5357 prop_elem->
index = index;
5373 if (r_item_ptr && do_item_ptr) {
5374 *r_item_ptr = nextptr;
5377 if (prop_elem && (prop_elem->
ptr.
data != curptr.
data || prop_elem->
prop != prop ||
5378 prop_elem->
index != index)) {
5380 prop_elem->
ptr = curptr;
5381 prop_elem->
prop = prop;
5382 prop_elem->
index = index;
5552 const int strkey_esc_max_size = (strlen(strkey) * 2) + 1;
5560 char appendstr[128];
5561 BLI_snprintf(appendstr,
sizeof(appendstr),
"%d", intkey);
5577 const char *previous, *current;
5598 if (token != fixedbuf) {
5604 if (token && token != fixedbuf) {
5620 i = previous - path;
5623 if (i > 0 &&
result[i - 1] ==
'.') {
5645 bool is_first =
true;
5655 link->
up = link_prev;
5661 for (link = link_prev; link; link = link->
up) {
5663 if (link->
index >= 0) {
5676 if (*path ==
'\0') {
5697 link.
up = parent_link;
5703 if (needle == iter) {
5735 if ((path =
rna_idp_path(&child_ptr, iter, needle, &link))) {
5751 for (j = 0; j < iter->
len; j++,
array++) {
5828 *r_path =
"node_tree";
5831 *r_path =
"collection";
5834 BLI_assert(!
"Missing handling of embedded id type.");
5839 BLI_assert(!
"Missing handling of embedded id type.");
5847 if (r_real_id !=
NULL) {
5854 if (r_real_id !=
NULL) {
5855 *r_real_id = real_id;
5859 char *new_path =
NULL;
5863 new_path =
BLI_sprintfN(
"%s%s%s", prefix, path[0] ==
'[' ?
"" :
".", path);
5878 char *ptrpath =
NULL;
5928 const int index_dim,
5933 int i = totdims - 1;
5934 dimsize_step[i + 1] = 1;
5935 dimsize_step[i] = dimsize[i];
5937 dimsize_step[i] = dimsize[i] * dimsize_step[i + 1];
5939 while (++i != index_dim) {
5940 int index_round =
index / dimsize_step[i + 1];
5941 r_index_multi[i] = index_round;
5942 index -= (index_round * dimsize_step[i + 1]);
5960 for (
int i = 0, offset = 0; (i < index_dim) && (offset < index_str_len); i++) {
5962 &index_str[offset], index_str_len - offset,
"[%d]", index_multi[i]);
5977 const char *propname;
5978 char *ptrpath, *path;
5991 if (index_dim == 0) {
5992 index_str[0] =
'\0';
5996 ptr, prop, index_dim,
index, index_str,
sizeof(index_str));
6001 path =
BLI_sprintfN(
"%s.%s%s", ptrpath, propname, index_str);
6006 path =
BLI_sprintfN(
"%s[\"%s\"]%s", ptrpath, propname_esc, index_str);
6017 path =
BLI_sprintfN(
"[\"%s\"]%s", propname_esc, index_str);
6057 if (full_path ==
NULL) {
6066 for (prop_elem = path_elems.
last; prop_elem; prop_elem = prop_elem->
prev) {
6070 path =
BLI_strdup(full_path + strlen(ref_path) + 1);
6100 char id_esc[(
sizeof(
id->name) - 2) * 2];
6151 const char *data_delim;
6152 const char *data_path;
6153 bool data_path_free;
6166 data_delim = (data_path[0] ==
'[') ?
"" :
".";
6167 data_path_free =
true;
6173 data_delim =
" ... ";
6178 data_path_free =
false;
6188 if (data_path_free) {
6216 if (data_path ==
NULL) {
6478 *r_value = item[i].
value;
6498 *r_icon = item[i].
icon;
6508 *r_name = item[i].
name;
6729 const char *propname;
6737 if (
STREQ(propname,
"rna_type")) {
6741 if (first_time == 0) {
6788 const bool as_function,
6789 const bool all_args,
6790 const bool nested_args,
6791 const int max_prop_length,
6794 const char *arg_name =
NULL;
6799 char *cstring, *buf;
6800 bool first_iter =
true;
6801 int flag, flag_parameter;
6804 prop = propptr.data;
6809 if (as_function && (flag_parameter &
PARM_OUTPUT)) {
6815 if (
STREQ(arg_name,
"rna_type")) {
6831 if (all_args ==
true) {
6868 const bool as_function,
6869 const bool all_args,
6870 const bool nested_args,
6871 const int max_prop_length)
6878 C,
ptr, as_function, all_args, nested_args, max_prop_length, iterprop);
6883 const bool as_function,
6884 const bool all_args,
6885 const int max_prop_length)
6897 C, &funcptr, as_function, all_args,
true, max_prop_length, iterprop);
6902 return var ?
"True" :
"False";
6908 void *buf_ret =
NULL;
6912 *r_buf_end = buf +
len;
6917 *r_buf_end = buf +
len;
6920 float *buf = buf_ret =
MEM_mallocN(
sizeof(*buf) *
len, __func__);
6922 *r_buf_end = buf +
len;
6934 const int end =
len - 1;
6937 for (
int i = 0; i <
len; i++, buf++) {
6944 for (
int i = 0; i <
len; i++, buf++) {
6950 float *buf = *buf_p;
6951 for (
int i = 0; i <
len; i++, buf++) {
6962 int type,
void **buf_p,
int totdim,
const int *dim_size,
DynStr *dynstr)
6967 const int end = dim_size[totdim] - 1;
6968 for (
int i = 0; i <= end; i++) {
6970 if (i < end || !end) {
6986 void *buf_step = buf;
7054 buf_esc =
MEM_mallocN(
sizeof(
char) * (
length * 2 + 1),
"RNA_property_as_string esc");
7064 const char *identifier;
7078 bool is_first =
true;
7119 (i < max_prop_length) && collect_iter.
valid;
7181 const char *identifier)
7186 for (; parm; parm = parm->
next) {
7214 int alloc_size = 0,
size;
7249 switch (parm->
type) {
7280 if (defvalue && defvalue[0]) {
7309 for (tot = 0; parm; parm = parm->
next) {
7316 if (data_alloc->
array) {
7350 iter->
parms = parms;
7385 if (iter.
parm == parm) {
7394 *value = data_alloc->
array;
7412 for (; parm; parm = parm->
next) {
7430 if (iter.
parm == parm) {
7440 switch (parm->
type) {
7442 size =
sizeof(char);
7455 if (data_alloc->
array) {
7462 memcpy(iter.
data, value, iter.
size);
7474 for (; parm; parm = parm->
next) {
7493 if (iter.
parm == parm) {
7514 if (iter.
parm == parm) {
7550 func->
call(
C, reports,
ptr, parms);
7561 const char *identifier,
7593 const char *identifier,
7622 if (
format[ofs++] ==
'[') {
7623 for (; ofs < flen &&
format[ofs] !=
']' && idx <
sizeof(lenbuf) - 1; idx++, ofs++) {
7624 lenbuf[idx] =
format[ofs];
7628 if (ofs < flen &&
format[ofs + 1] ==
']') {
7631 return atoi(lenbuf);
7655 stderr,
"%s.%s: wrong type for parameter %s, a boolean was expected\n", tid, fid, pid);
7660 *((
bool *)dest) = *((
bool *)src);
7663 memcpy(dest, src,
len *
sizeof(
bool));
7671 "%s.%s: wrong type for parameter %s, an integer was expected\n",
7679 *((
int *)dest) = *((
int *)src);
7682 memcpy(dest, src,
len *
sizeof(
int));
7690 stderr,
"%s.%s: wrong type for parameter %s, a float was expected\n", tid, fid, pid);
7695 *((
float *)dest) = *((
float *)src);
7698 memcpy(dest, src,
len *
sizeof(
float));
7706 stderr,
"%s.%s: wrong type for parameter %s, a string was expected\n", tid, fid, pid);
7710 *((
char **)dest) = *((
char **)src);
7717 stderr,
"%s.%s: wrong type for parameter %s, an enum was expected\n", tid, fid, pid);
7721 *((
int *)dest) = *((
int *)src);
7730 stderr,
"%s.%s: wrong type for parameter %s, an object was expected\n", tid, fid, pid);
7743 "%s.%s: wrong type for parameter %s, "
7744 "an object of type %s was expected, passed an object of type %s\n",
7753 *((
void **)dest) = *((
void **)src);
7765 "%s.%s: wrong type for parameter %s, a collection was expected\n",
7778 "%s.%s: wrong type for parameter %s, "
7779 "a collection of objects of type %s was expected, "
7780 "passed a collection of objects of type %s\n",
7789 for (link = lb->
first; link; link = link->
next) {
7799 fprintf(stderr,
"%s.%s: unknown type for parameter %s\n", tid, fid, pid);
7802 fprintf(stderr,
"%s.%s: unknown array type for parameter %s\n", tid, fid, pid);
7824 int i, ofs, flen, flag_parameter,
len, alen,
err = 0;
7825 const char *tid, *fid, *pid =
NULL;
7827 void **retdata =
NULL;
7844 retdata = iter.
data;
7853 if (ofs >= flen ||
format[ofs] ==
'N') {
7856 fprintf(stderr,
"%s.%s: missing required parameter %s\n", tid, fid, pid);
7871 "%s.%s: for parameter %s, "
7872 "was expecting an array of %i elements, "
7873 "passed %i elements instead\n",
7886 int arg = va_arg(args,
int);
7888 &funcptr, parm,
type, ftype,
len, iter.
data, &arg,
NULL, tid, fid, pid);
7892 double arg = va_arg(args,
double);
7894 &funcptr, parm,
type, ftype,
len, iter.
data, &arg,
NULL, tid, fid, pid);
7898 const char *arg = va_arg(args,
char *);
7900 &funcptr, parm,
type, ftype,
len, iter.
data, &arg,
NULL, tid, fid, pid);
7905 void *arg = va_arg(args,
void *);
7907 &funcptr, parm,
type, ftype,
len, iter.
data, &arg, srna, tid, fid, pid);
7914 &funcptr, parm,
type, ftype,
len, iter.
data, &arg, srna, tid, fid, pid);
7920 &funcptr, parm,
type, ftype,
len, iter.
data,
NULL,
NULL, tid, fid, pid);
7935 if (
err == 0 && pret && ofs < flen &&
format[ofs++] ==
'R') {
7946 "%s.%s: for return parameter %s, "
7947 "was expecting an array of %i elements, passed %i elements instead\n",
7959 int *arg = va_arg(args,
int *);
7961 &funcptr, parm,
type, ftype,
len, arg, retdata,
NULL, tid, fid, pid);
7965 float *arg = va_arg(args,
float *);
7967 &funcptr, parm,
type, ftype,
len, arg, retdata,
NULL, tid, fid, pid);
7971 char **arg = va_arg(args,
char **);
7973 &funcptr, parm,
type, ftype,
len, arg, retdata,
NULL, tid, fid, pid);
7978 void **arg = va_arg(args,
void **);
7980 &funcptr, parm,
type, ftype,
len, arg, retdata, srna, tid, fid, pid);
7987 &funcptr, parm,
type, ftype,
len, arg, retdata, srna, tid, fid, pid);
7993 &funcptr, parm,
type, ftype,
len,
NULL,
NULL,
NULL, tid, fid, pid);
8009 const char *identifier,
8042 bool *tmparray =
MEM_callocN(
sizeof(
bool) *
len,
"reset_defaults - boolean");
8062 int *tmparray =
MEM_callocN(
sizeof(
int) *
len,
"reset_defaults - int");
8082 float *tmparray =
MEM_callocN(
sizeof(
float) *
len,
"reset_defaults - float");
8159 fputc(
'\n', stdout);
8172 const int prop_index,
8177 if ((array_len == 0) || (prop_index < array_len)) {
8179 r_anim_rna->
prop = prop;
8180 r_anim_rna->
prop_index = array_len ? prop_index : -1;
typedef float(TangentPoint)[2]
bool id_can_have_animdata(const struct ID *id)
struct Scene * CTX_data_scene(const bContext *C)
struct wmMsgBus * CTX_wm_message_bus(const bContext *C)
struct Main * CTX_data_main(const bContext *C)
struct FCurve * BKE_fcurve_find_by_rna(struct PointerRNA *ptr, struct PropertyRNA *prop, int rnaindex, struct AnimData **r_adt, struct bAction **r_action, bool *r_driven, bool *r_special)
#define IDP_IDPArray(prop)
void IDP_AppendArray(struct IDProperty *prop, struct IDProperty *item)
void IDP_FreePropertyContent(struct IDProperty *prop)
struct IDProperty * IDP_GetPropertyTypeFromGroup(const struct IDProperty *prop, const char *name, const char type) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void IDP_ReplaceInGroup(struct IDProperty *group, struct IDProperty *prop) ATTR_NONNULL()
void IDP_AssignID(struct IDProperty *prop, struct ID *id, const int flag)
struct IDProperty * IDP_GetIndexArray(struct IDProperty *prop, int index) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
struct IDProperty * IDP_NewIDPArray(const char *name) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
bool void IDP_RemoveFromGroup(struct IDProperty *group, struct IDProperty *prop) ATTR_NONNULL()
void IDP_ReplaceInGroup_ex(struct IDProperty *group, struct IDProperty *prop, struct IDProperty *prop_exist)
struct IDProperty * IDP_NewString(const char *st, const char *name, int maxlen) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(2)
void IDP_ResizeIDPArray(struct IDProperty *prop, int len)
void IDP_ResizeArray(struct IDProperty *prop, int newlen)
bool IDP_AddToGroup(struct IDProperty *group, struct IDProperty *prop) ATTR_NONNULL()
struct IDProperty * IDP_GetPropertyFromGroup(const struct IDProperty *prop, const char *name) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
struct IDProperty * IDP_New(const char type, const IDPropertyTemplate *val, const char *name) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void IDP_AssignString(struct IDProperty *prop, const char *st, int maxlen) ATTR_NONNULL()
void IDP_FreeFromGroup(struct IDProperty *group, struct IDProperty *prop) ATTR_NONNULL()
const char * BKE_idtype_idcode_to_name_plural(const short idcode)
const struct IDTypeInfo * BKE_idtype_get_info_from_id(const struct ID *id)
void BKE_report(ReportList *reports, ReportType type, const char *message)
void BKE_reportf(ReportList *reports, ReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
#define BLI_array_alloca(arr, realsize)
A dynamically sized string ADT.
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
char * BLI_dynstr_get_cstring(DynStr *ds) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BLI_dynstr_append(DynStr *__restrict ds, const char *cstr) ATTR_NONNULL()
GHash * BLI_ghash_str_new(const char *info) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
GHash * BLI_ghash_str_new_ex(const char *info, const unsigned int nentries_reserve) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void BLI_ghash_insert(GHash *gh, void *key, void *val)
void BLI_ghash_free(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
void * BLI_ghash_lookup(GHash *gh, const void *key) ATTR_WARN_UNUSED_RESULT
void BLI_kdtree_nd_() free(KDTree *tree)
void * BLI_findstring_ptr(const struct ListBase *listbase, const char *id, const int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void * BLI_findlink(const struct ListBase *listbase, int number) 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)
size_t size_t char * BLI_sprintfN(const char *__restrict format,...) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC ATTR_PRINTF_FORMAT(1
size_t size_t char size_t BLI_str_escape(char *__restrict dst, const char *__restrict src, const size_t dst_maxncpy) ATTR_NONNULL()
size_t BLI_snprintf_rlen(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC
size_t BLI_str_unescape(char *__restrict dst, const char *__restrict src, const size_t src_maxncpy) ATTR_NONNULL()
const char * BLI_str_escape_find_quote(const char *str) ATTR_NONNULL()
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL()
bool BLT_translate_iface(void)
bool BLT_translate_tooltips(void)
#define CTX_IFACE_(context, msgid)
const char * BLT_pgettext(const char *msgctxt, const char *msgid)
typedef double(DMatrix)[4][4]
void DEG_id_tag_update(struct ID *id, int flag)
void DEG_relations_tag_update(struct Main *bmain)
ID and Library types, which are fundamental for sdna.
#define ID_TYPE_IS_COW(_id_type)
@ ID_RECALC_COPY_ON_WRITE
#define ID_IS_LINKED(_id)
#define ID_IS_OVERRIDE_LIBRARY(_id)
@ IDP_FLAG_OVERRIDELIBRARY_LOCAL
Object is a sort of wrapper for general info.
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
Read Guarded memory(de)allocation.
#define RNA_STRUCT_BEGIN(sptr, prop)
#define RNA_POINTER_INVALIDATE(ptr)
#define RNA_PROP_BEGIN(sptr, itemptr, prop)
StructRNA RNA_UnknownType
#define RNA_MAX_ARRAY_LENGTH
#define RNA_MAX_ARRAY_DIMENSION
struct StructRNA *(* StructRegisterFunc)(struct Main *bmain, struct ReportList *reports, void *data, const char *identifier, StructValidateFunc validate, StructCallbackFunc call, StructFreeFunc free)
@ STRUCT_NO_CONTEXT_WITHOUT_OWNER_ID
@ STRUCT_PUBLIC_NAMESPACE
@ STRUCT_NO_DATABLOCK_IDPROPERTIES
@ STRUCT_CONTAINS_DATABLOCK_IDPROPERTIES
struct EnumPropertyItem EnumPropertyItem
#define RNA_SUBTYPE_UNIT(subtype)
@ PROPOVERRIDE_LIBRARY_INSERTION
void(* StructUnregisterFunc)(struct Main *bmain, struct StructRNA *type)
@ PROP_CONTEXT_PROPERTY_UPDATE
int(* IteratorSkipFunc)(struct CollectionPropertyIterator *iter, void *data)
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
SIMD_FORCE_INLINE btScalar length(const btQuaternion &q)
Return the length of a quaternion.
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
int main(int argc, char **argv)
static const IDProperty * rna_idproperty_ui(const PropertyRNA *prop)
StructUnregisterFunc RNA_struct_unregister(StructRNA *type)
float RNA_property_float_get(PointerRNA *ptr, PropertyRNA *prop)
void RNA_boolean_set_array(PointerRNA *ptr, const char *name, const bool *values)
static bool rna_path_parse_array_index(const char **path, PointerRNA *ptr, PropertyRNA *prop, int *r_index)
bool RNA_property_enum_value(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const char *identifier, int *r_value)
StructRegisterFunc RNA_struct_register(StructRNA *type)
int RNA_function_call_direct_lookup(bContext *C, ReportList *reports, PointerRNA *ptr, const char *identifier, const char *format,...)
bool RNA_property_enum_item_from_value(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, EnumPropertyItem *r_item)
const char * RNA_struct_identifier(const StructRNA *type)
void RNA_property_float_get_default_array(PointerRNA *ptr, PropertyRNA *prop, float *values)
static IDProperty * rna_idproperty_ui_ensure(PointerRNA *ptr, PropertyRNA *prop, bool create)
char * RNA_path_resolve_from_type_to_property(PointerRNA *ptr, PropertyRNA *prop, const StructRNA *type)
int RNA_enum_bitflag_identifiers(const EnumPropertyItem *item, const int value, const char **r_identifier)
void RNA_int_set_array(PointerRNA *ptr, const char *name, const int *values)
const char * RNA_function_identifier(FunctionRNA *func)
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)
FunctionRNA * RNA_struct_find_function(StructRNA *srna, const char *identifier)
void RNA_property_int_ui_range(PointerRNA *ptr, PropertyRNA *prop, int *softmin, int *softmax, int *step)
const char * RNA_property_description(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)
int RNA_property_collection_lookup_string_index(PointerRNA *ptr, PropertyRNA *prop, const char *key, PointerRNA *r_ptr, int *r_index)
bool RNA_path_resolve_full(PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop, int *r_index)
int RNA_function_call_direct_va(bContext *C, ReportList *reports, PointerRNA *ptr, FunctionRNA *func, const char *format, va_list args)
bool RNA_property_is_unlink(PropertyRNA *prop)
void rna_property_rna_or_id_get(PropertyRNA *prop, PointerRNA *ptr, PropertyRNAOrID *r_prop_rna_or_id)
const struct ListBase * RNA_struct_type_properties(StructRNA *srna)
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)
PropertyRNA * rna_ensure_property(PropertyRNA *prop)
int RNA_function_call_direct_va_lookup(bContext *C, ReportList *reports, PointerRNA *ptr, const char *identifier, const char *format, va_list args)
void RNA_struct_state_owner_set(const char *name)
void RNA_struct_py_type_set(StructRNA *srna, void *py_type)
void rna_iterator_array_end(CollectionPropertyIterator *iter)
bool RNA_property_animateable(PointerRNA *ptr, PropertyRNA *prop)
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)
IDProperty * rna_idproperty_check(PropertyRNA **prop, PointerRNA *ptr)
static void rna_property_int_get_default_array_values(PointerRNA *ptr, IntPropertyRNA *iprop, int *r_values)
void RNA_pointer_create(ID *id, StructRNA *type, void *data, PointerRNA *r_ptr)
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 *UNUSED(parms), PropertyRNA *parm, void *data)
int RNA_property_float_clamp(PointerRNA *ptr, PropertyRNA *prop, float *value)
void RNA_parameter_get_lookup(ParameterList *parms, const char *identifier, void **value)
void RNA_pointer_set(PointerRNA *ptr, const char *name, PointerRNA ptr_value)
char * RNA_property_as_string(bContext *C, PointerRNA *ptr, PropertyRNA *prop, int index, int max_prop_length)
void RNA_id_pointer_create(ID *id, PointerRNA *r_ptr)
void RNA_boolean_get_array(PointerRNA *ptr, const char *name, bool *values)
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)
void ** RNA_struct_instance(PointerRNA *ptr)
bool RNA_struct_is_ID(const StructRNA *type)
int RNA_property_int_get_index(PointerRNA *ptr, PropertyRNA *prop, int index)
const char * RNA_property_identifier(const PropertyRNA *prop)
const char * RNA_property_ui_description_raw(const PropertyRNA *prop)
void RNA_property_float_ui_range(PointerRNA *ptr, PropertyRNA *prop, float *softmin, float *softmax, float *step, float *precision)
void RNA_property_float_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, float value)
static void rna_array_as_string_recursive(int type, void **buf_p, int totdim, const int *dim_size, DynStr *dynstr)
bool RNA_enum_value_from_id(const EnumPropertyItem *item, const char *identifier, int *r_value)
char * 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)
static void rna_property_boolean_get_default_array_values(PointerRNA *ptr, BoolPropertyRNA *bprop, bool *r_values)
bool RNA_path_resolve_elements(PointerRNA *ptr, const char *path, ListBase *r_elements)
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)
ParameterList * RNA_parameter_list_create(ParameterList *parms, PointerRNA *UNUSED(ptr), FunctionRNA *func)
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)
int RNA_property_collection_assign_int(PointerRNA *ptr, PropertyRNA *prop, const int key, const PointerRNA *assign_ptr)
int RNA_property_array_dimension(PointerRNA *ptr, PropertyRNA *prop, int length[])
static const char * rna_ensure_property_name(const PropertyRNA *prop)
const char * RNA_struct_ui_description(const StructRNA *type)
void RNA_blender_rna_pointer_create(PointerRNA *r_ptr)
char * RNA_struct_name_get_alloc(PointerRNA *ptr, char *fixedbuf, int fixedlen, int *r_len)
float RNA_property_float_get_index(PointerRNA *ptr, PropertyRNA *prop, int index)
int RNA_parameter_list_arg_count(ParameterList *parms)
void RNA_property_pointer_set(PointerRNA *ptr, PropertyRNA *prop, PointerRNA ptr_value, ReportList *reports)
char * RNA_path_back(const char *path)
void _RNA_warning(const char *format,...)
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
void RNA_parameter_dynamic_length_set_data(ParameterList *UNUSED(parms), PropertyRNA *parm, void *data, int length)
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)
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)
bool RNA_property_is_set_ex(PointerRNA *ptr, PropertyRNA *prop, bool use_ghost)
static void * rna_array_as_string_alloc(int type, int len, PointerRNA *ptr, PropertyRNA *prop, void **r_buf_end)
int RNA_parameter_list_ret_count(ParameterList *parms)
bool RNA_property_float_set_default(PointerRNA *ptr, PropertyRNA *prop, float value)
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)
int RNA_property_enum_bitflag_identifiers(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **identifier)
bool RNA_property_is_set(PointerRNA *ptr, PropertyRNA *prop)
const char * RNA_struct_ui_name(const StructRNA *type)
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)
void rna_iterator_listbase_end(CollectionPropertyIterator *UNUSED(iter))
void RNA_property_boolean_get_array(PointerRNA *ptr, PropertyRNA *prop, bool *values)
PropertyType RNA_property_type(PropertyRNA *prop)
const PointerRNA PointerRNA_NULL
const char * RNA_function_ui_description_raw(FunctionRNA *func)
void RNA_property_pointer_add(PointerRNA *ptr, PropertyRNA *prop)
static PropertyRNA * arraytypemap[IDP_NUMTYPES]
PropertyRNA * rna_ensure_property_realdata(PropertyRNA **prop, PointerRNA *ptr)
char * RNA_path_struct_property_py(PointerRNA *ptr, PropertyRNA *prop, int index)
void RNA_int_set(PointerRNA *ptr, const char *name, int value)
void RNA_property_enum_set(PointerRNA *ptr, PropertyRNA *prop, int value)
void * RNA_struct_blender_type_get(StructRNA *srna)
PointerRNA RNA_property_pointer_get(PointerRNA *ptr, PropertyRNA *prop)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
int RNA_property_collection_lookup_int(PointerRNA *ptr, PropertyRNA *prop, int key, PointerRNA *r_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)
bool RNA_property_enum_name_gettexted(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **name)
bool RNA_struct_contains_property(PointerRNA *ptr, PropertyRNA *prop_test)
bool RNA_property_boolean_get_default(PointerRNA *UNUSED(ptr), PropertyRNA *prop)
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)
static char * rna_pointer_as_string__bldata(Main *bmain, PointerRNA *ptr)
static int rna_function_parameter_parse(PointerRNA *ptr, PropertyRNA *prop, PropertyType type, char ftype, int len, void *dest, const void *src, StructRNA *srna, const char *tid, const char *fid, const char *pid)
unsigned int RNA_struct_count_properties(StructRNA *srna)
void rna_iterator_listbase_begin(CollectionPropertyIterator *iter, ListBase *lb, IteratorSkipFunc skip)
int RNA_property_int_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index)
char * RNA_pointer_as_string(bContext *C, PointerRNA *ptr, PropertyRNA *prop_ptr, PointerRNA *ptr_prop)
char * RNA_path_from_ID_to_property(PointerRNA *ptr, PropertyRNA *prop)
static int rna_token_strip_quotes(char *token)
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)
char * RNA_property_string_get_alloc(PointerRNA *ptr, PropertyRNA *prop, char *fixedbuf, int fixedlen, int *r_len)
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)
bool RNA_struct_idprops_contains_datablock(const StructRNA *type)
void RNA_property_int_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, int value)
static const char * rna_ensure_property_description(const PropertyRNA *prop)
static const char * bool_as_py_string(const int var)
bool RNA_path_resolve_property_and_item_pointer_full(PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop, int *r_index, PointerRNA *r_item_ptr)
unsigned int RNA_enum_items_count(const EnumPropertyItem *item)
static int rna_property_array_length_all_dimensions(PointerRNA *ptr, PropertyRNA *prop)
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)
void rna_iterator_array_begin(CollectionPropertyIterator *iter, void *ptr, int itemsize, int length, bool free_ptr, IteratorSkipFunc skip)
char * RNA_path_from_struct_to_idproperty(PointerRNA *ptr, IDProperty *needle)
void RNA_pointer_recast(PointerRNA *ptr, PointerRNA *r_ptr)
int RNA_property_int_get(PointerRNA *ptr, PropertyRNA *prop)
int RNA_property_enum_get_default(PointerRNA *UNUSED(ptr), PropertyRNA *prop)
IDProperty * RNA_struct_idprops(PointerRNA *ptr, bool create)
ID * RNA_find_real_ID_and_path(Main *bmain, ID *id, const char **r_path)
void RNA_property_collection_next(CollectionPropertyIterator *iter)
static void rna_array_as_string(int type, int len, PointerRNA *ptr, PropertyRNA *prop, DynStr *dynstr)
PointerRNA rna_listbase_lookup_int(PointerRNA *ptr, StructRNA *type, struct ListBase *lb, int index)
void RNA_collection_add(PointerRNA *ptr, const char *name, PointerRNA *r_value)
void RNA_parameter_list_next(ParameterIterator *iter)
static char rna_struct_state_owner[64]
char * RNA_path_append(const char *path, PointerRNA *UNUSED(ptr), PropertyRNA *prop, int intkey, const char *strkey)
void RNA_enum_set_identifier(bContext *C, PointerRNA *ptr, const char *name, const char *id)
const char * RNA_property_translation_context(const PropertyRNA *prop)
bool RNA_property_editable_flag(PointerRNA *ptr, PropertyRNA *prop)
int RNA_property_collection_lookup_string(PointerRNA *ptr, PropertyRNA *prop, const char *key, PointerRNA *r_ptr)
const char * RNA_struct_ui_name_raw(const StructRNA *type)
static bool rna_idproperty_verify_valid(PointerRNA *ptr, PropertyRNA *prop, IDProperty *idprop)
static const char * rna_ensure_property_identifier(const PropertyRNA *prop)
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)
bool RNA_property_int_set_default(PointerRNA *ptr, PropertyRNA *prop, int value)
int RNA_int_get(PointerRNA *ptr, const char *name)
char * RNA_path_from_real_ID_to_struct(Main *bmain, PointerRNA *ptr, struct ID **r_real)
PointerRNA RNA_property_pointer_get_default(PointerRNA *UNUSED(ptr), PropertyRNA *UNUSED(prop))
char * RNA_path_full_ID_py(Main *bmain, ID *id)
static char * rna_path_token(const char **path, char *fixedbuf, int fixedlen, int bracket)
bool RNA_enum_name_from_value(const EnumPropertyItem *item, int value, const char **r_name)
PropertyRNA * RNA_struct_type_find_property(StructRNA *srna, const char *identifier)
char * RNA_path_full_property_py_ex(Main *bmain, PointerRNA *ptr, PropertyRNA *prop, int index, bool use_fallback)
static bool rna_idproperty_ui_set_default(PointerRNA *ptr, PropertyRNA *prop, const char type, IDPropertyTemplate *value)
void RNA_parameter_get(ParameterList *parms, PropertyRNA *parm, void **value)
StructRNA * RNA_struct_find(const char *identifier)
void RNA_property_string_get(PointerRNA *ptr, PropertyRNA *prop, char *value)
void RNA_parameter_list_end(ParameterIterator *UNUSED(iter))
int RNA_function_flag(FunctionRNA *func)
PropertyRNA * RNA_function_get_parameter(PointerRNA *UNUSED(ptr), FunctionRNA *func, int index)
static char * rna_idp_path_create(IDP_Chain *child_link)
bool RNA_property_editable_info(PointerRNA *ptr, PropertyRNA *prop, const char **r_info)
StructRNA * RNA_property_pointer_type(PointerRNA *ptr, PropertyRNA *prop)
char * RNA_path_from_real_ID_to_property_index(Main *bmain, PointerRNA *ptr, PropertyRNA *prop, int index_dim, int index, ID **r_real_id)
void RNA_property_update_main(Main *bmain, Scene *scene, PointerRNA *ptr, PropertyRNA *prop)
char * RNA_path_from_ID_to_property_index(PointerRNA *ptr, PropertyRNA *prop, int index_dim, int index)
void * rna_iterator_array_get(CollectionPropertyIterator *iter)
void RNA_property_string_get_default(PointerRNA *UNUSED(ptr), PropertyRNA *prop, char *value)
bool RNA_path_resolve_property_full(PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop, int *r_index)
bool RNA_property_pointer_poll(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *value)
int RNA_property_flag(PropertyRNA *prop)
RawPropertyType RNA_property_raw_type(PropertyRNA *prop)
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)
int RNA_property_string_default_length(PointerRNA *UNUSED(ptr), PropertyRNA *prop)
void RNA_property_int_get_array_range(PointerRNA *ptr, PropertyRNA *prop, int values[2])
void rna_iterator_listbase_next(CollectionPropertyIterator *iter)
bool RNA_property_enum_identifier(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **identifier)
char * RNA_path_full_property_py(Main *bmain, PointerRNA *ptr, PropertyRNA *prop, int index)
static void rna_array_as_string_elem(int type, void **buf_p, int len, DynStr *dynstr)
static bool rna_path_parse_collection_key(const char **path, PointerRNA *ptr, PropertyRNA *prop, PointerRNA *r_nextptr)
bool RNA_struct_idprops_register_check(const StructRNA *type)
void RNA_parameter_set_lookup(ParameterList *parms, const char *identifier, const void *value)
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_property_int_get_default(PointerRNA *UNUSED(ptr), PropertyRNA *prop)
int RNA_string_length(PointerRNA *ptr, const char *name)
PointerRNA rna_pointer_inherit_refine(PointerRNA *ptr, StructRNA *type, void *data)
static PropertyRNA * typemap[IDP_NUMTYPES]
const EnumPropertyItem * RNA_struct_property_tag_defines(const StructRNA *type)
PropertyRNA * RNA_struct_name_property(const StructRNA *type)
int RNA_property_collection_raw_array(PointerRNA *ptr, PropertyRNA *prop, PropertyRNA *itemprop, RawArray *array)
bool RNA_property_enum_item_from_value_gettexted(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, EnumPropertyItem *r_item)
bool RNA_struct_undo_check(const StructRNA *type)
bool RNA_path_resolve_property_and_item_pointer(PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop, PointerRNA *r_item_ptr)
void RNA_collection_begin(PointerRNA *ptr, const char *name, CollectionPropertyIterator *iter)
char * RNA_path_property_py(PointerRNA *UNUSED(ptr), PropertyRNA *prop, int index)
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)
static char * rna_path_from_ID_to_idpgroup(PointerRNA *ptr)
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)
int RNA_function_call_lookup(bContext *C, ReportList *reports, PointerRNA *ptr, const char *identifier, ParameterList *parms)
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)
bool RNA_struct_idprops_datablock_allowed(const StructRNA *type)
const ListBase * RNA_function_defined_parameters(FunctionRNA *func)
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)
int RNA_property_enum_get(PointerRNA *ptr, PropertyRNA *prop)
void rna_iterator_array_next(CollectionPropertyIterator *iter)
void RNA_property_float_set(PointerRNA *ptr, PropertyRNA *prop, float value)
static bool rna_path_parse(PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop, int *r_index, PointerRNA *r_item_ptr, ListBase *r_elements, const bool eval_pointer)
static char * rna_prepend_real_ID_path(Main *bmain, ID *id, char *path, ID **r_real_id)
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)
char * RNA_pointer_as_string_id(bContext *C, PointerRNA *ptr)
PropertySubType RNA_property_subtype(PropertyRNA *prop)
const char * RNA_struct_translation_context(const StructRNA *type)
bool RNA_struct_property_is_set(PointerRNA *ptr, const char *identifier)
void * RNA_struct_py_type_get(StructRNA *srna)
bool RNA_property_editable_index(PointerRNA *ptr, PropertyRNA *prop, int index)
IDProperty * rna_idproperty_find(PointerRNA *ptr, const char *name)
void RNA_property_int_range(PointerRNA *ptr, PropertyRNA *prop, int *hardmin, int *hardmax)
int RNA_function_call_direct(bContext *C, ReportList *reports, PointerRNA *ptr, FunctionRNA *func, const char *format,...)
bool RNA_path_resolve_property(PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop)
bool RNA_struct_idprops_unset(PointerRNA *ptr, const char *identifier)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
int RNA_function_call(bContext *C, ReportList *reports, PointerRNA *ptr, FunctionRNA *func, ParameterList *parms)
struct IDP_Chain IDP_Chain
int RNA_parameter_dynamic_length_get(ParameterList *parms, PropertyRNA *parm)
static void rna_path_array_multi_string_from_flat_index(PointerRNA *ptr, PropertyRNA *prop, int index_dim, int index, char *index_str, int index_str_len)
static void rna_ensure_property_multi_array_length(PointerRNA *ptr, PropertyRNA *prop, int length[])
void RNA_property_enum_items(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const EnumPropertyItem **r_item, int *r_totitem, bool *r_free)
int RNA_parameter_list_size(ParameterList *parms)
static PropertyRNA * RNA_struct_find_nested(PointerRNA *ptr, StructRNA *srna)
static void rna_pointer_inherit_id(StructRNA *type, PointerRNA *parent, PointerRNA *ptr)
void RNA_property_collection_clear(PointerRNA *ptr, PropertyRNA *prop)
PropertyRNA * RNA_function_find_parameter(PointerRNA *UNUSED(ptr), FunctionRNA *func, const char *identifier)
static char * rna_idp_path(PointerRNA *ptr, IDProperty *haystack, IDProperty *needle, IDP_Chain *parent_link)
int RNA_property_tags(PropertyRNA *prop)
bool RNA_enum_identifier(const EnumPropertyItem *item, const int value, const char **r_identifier)
static IDProperty * rna_idproperty_ui_container(PropertyRNA *prop)
char * RNA_path_full_struct_py(Main *bmain, struct PointerRNA *ptr)
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_struct_idprops_check(StructRNA *srna)
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)
bool RNA_property_editable(PointerRNA *ptr, PropertyRNA *prop_orig)
bool RNA_property_boolean_get_index(PointerRNA *ptr, PropertyRNA *prop, int index)
const ListBase * RNA_struct_type_functions(StructRNA *srna)
bool RNA_struct_bl_idname_ok_or_report(ReportList *reports, const char *identifier, const char *sep)
bool RNA_property_collection_remove(PointerRNA *ptr, PropertyRNA *prop, int key)
char * RNA_property_string_get_default_alloc(PointerRNA *ptr, PropertyRNA *prop, char *fixedbuf, int fixedlen)
int RNA_enum_get(PointerRNA *ptr, const char *name)
bool RNA_path_resolved_create(PointerRNA *ptr, struct PropertyRNA *prop, const int prop_index, PathResolvedRNA *r_anim_rna)
void RNA_main_pointer_create(struct Main *main, PointerRNA *r_ptr)
const char * RNA_struct_state_owner_get(void)
char * RNA_path_from_ID_to_struct(PointerRNA *ptr)
#define RAW_SET(dtype, raw, a, var)
void RNA_property_unset(PointerRNA *ptr, PropertyRNA *prop)
char * RNA_function_as_string_keywords(bContext *C, FunctionRNA *func, const bool as_function, const bool all_args, const int max_prop_length)
void RNA_parameter_list_begin(ParameterList *parms, ParameterIterator *iter)
void * rna_iterator_array_dereference_get(CollectionPropertyIterator *iter)
void RNA_property_pointer_remove(PointerRNA *ptr, PropertyRNA *prop)
PropertyRNA * RNA_struct_iterator_property(StructRNA *type)
bool RNA_path_resolve(PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop)
int RNA_property_string_length(PointerRNA *ptr, PropertyRNA *prop)
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_property_collection_lookup_index(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *t_ptr)
const char * RNA_translate_ui_text(const char *text, const char *text_ctxt, StructRNA *type, PropertyRNA *prop, int translate)
float RNA_property_float_get_default(PointerRNA *UNUSED(ptr), PropertyRNA *prop)
int RNA_parameter_flag(PropertyRNA *prop)
int RNA_raw_type_sizeof(RawPropertyType type)
const char * RNA_function_ui_description(FunctionRNA *func)
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)
void * rna_iterator_listbase_get(CollectionPropertyIterator *iter)
const char * RNA_property_ui_name_raw(const PropertyRNA *prop)
const char * RNA_struct_ui_description_raw(const StructRNA *type)
const char * RNA_property_ui_description(const PropertyRNA *prop)
const StructRNA * RNA_struct_base_child_of(const StructRNA *type, const StructRNA *parent_type)
char * 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)
int RNA_property_multi_array_length(PointerRNA *ptr, PropertyRNA *prop, int dim)
static void rna_path_array_multi_from_flat_index(const int dimsize[RNA_MAX_ARRAY_LENGTH], const int totdims, const int index_dim, int index, int r_index_multi[RNA_MAX_ARRAY_LENGTH])
static int rna_raw_access(ReportList *reports, PointerRNA *ptr, PropertyRNA *prop, const char *propname, void *inarray, RawPropertyType intype, int inlen, int set)
int RNA_property_collection_length(PointerRNA *ptr, PropertyRNA *prop)
void RNA_property_boolean_set_array(PointerRNA *ptr, PropertyRNA *prop, const bool *values)
void * RNA_property_py_data_get(PropertyRNA *prop)
const char * RNA_property_ui_name(const PropertyRNA *prop)
StructRNA * RNA_struct_base(StructRNA *type)
void RNA_property_string_set(PointerRNA *ptr, PropertyRNA *prop, const char *value)
bool RNA_property_enum_name(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **name)
char * RNA_string_get_alloc(PointerRNA *ptr, const char *name, char *fixedbuf, int fixedlen)
static int rna_function_format_array_length(const char *format, int ofs, int flen)
static void rna_property_collection_get_idp(CollectionPropertyIterator *iter)
bool RNA_property_overridable_get(PointerRNA *ptr, PropertyRNA *prop)
void RNA_free(BlenderRNA *brna)
int rna_parameter_size(PropertyRNA *parm)
FloatPropertyRNA rna_PropertyGroupItem_double_array
IntPropertyRNA rna_PropertyGroupItem_int_array
CollectionPropertyRNA rna_PropertyGroupItem_collection
CollectionPropertyRNA rna_PropertyGroupItem_idp_array
const char * rna_translate_ui_text(const char *text, const char *text_ctxt, struct StructRNA *type, struct PropertyRNA *prop, bool translate)
FloatPropertyRNA rna_PropertyGroupItem_double
PointerPropertyRNA rna_PropertyGroupItem_id
struct StructRNA * rna_ID_refine(struct PointerRNA *ptr)
StringPropertyRNA rna_PropertyGroupItem_string
PointerPropertyRNA rna_PropertyGroupItem_group
IntPropertyRNA rna_PropertyGroupItem_int
StructRNA RNA_PropertyGroup
FloatPropertyRNA rna_PropertyGroupItem_float_array
FloatPropertyRNA rna_PropertyGroupItem_float
void(* ContextUpdateFunc)(struct bContext *C, struct PointerRNA *ptr)
void(* ContextPropUpdateFunc)(struct bContext *C, struct PointerRNA *ptr, struct PropertyRNA *prop)
bool(* PropPointerPollFuncPy)(struct PointerRNA *ptr, const PointerRNA value, const PropertyRNA *prop)
const EnumPropertyItem rna_enum_property_subtype_items[]
struct GHash * structs_map
PropBooleanArraySetFuncEx setarray_ex
PropBooleanArrayGetFuncEx getarray_ex
PropBooleanArraySetFunc setarray
const bool * defaultarray
PropBooleanSetFuncEx set_ex
PropBooleanGetFuncEx get_ex
PropBooleanArrayGetFunc getarray
union CollectionPropertyIterator::@1099 internal
ListBaseIterator listbase
struct PropertyRNA * prop
PropCollectionNextFunc next
PropCollectionLookupStringFunc lookupstring
PropCollectionLengthFunc length
struct StructRNA * item_type
PropCollectionLookupIntFunc lookupint
PropCollectionBeginFunc begin
PropCollectionAssignIntFunc assignint
PropCollectionEndFunc end
const EnumPropertyItem * item
PropFloatSetFuncEx set_ex
PropFloatRangeFuncEx range_ex
PropFloatArrayGetFuncEx getarray_ex
PropFloatArraySetFuncEx setarray_ex
PropFloatArrayGetFunc getarray
const float * defaultarray
PropFloatArraySetFunc setarray
PropFloatGetFuncEx get_ex
IDTypeEmbeddedOwnerGetFunction owner_get
PropIntRangeFuncEx range_ex
PropIntArrayGetFunc getarray
PropIntArrayGetFuncEx getarray_ex
PropIntArraySetFunc setarray
PropIntArraySetFuncEx setarray_ex
struct ParameterList * parms
struct FunctionRNA * func
struct PropertyRNA * prop
PropPointerTypeFunc type_fn
ItemEditableFunc itemeditable
PropArrayLengthGetFunc getlength
const char * translation_context
unsigned int arraydimension
struct PropertyRNA * next
unsigned int arraylength[RNA_MAX_ARRAY_DIMENSION]
unsigned int totarraylength
const char * defaultvalue
PropStringLengthFuncEx length_ex
PropStringLengthFunc length
PropStringGetFuncEx get_ex
PropStringSetFuncEx set_ex
struct StructRNA * nested
PropertyRNA * nameproperty
IDPropertiesFunc idproperties
struct IDPropertyTemplate::@28 array
struct IDPropertyTemplate::@27 string
void WM_main_add_notifier(unsigned int type, void *reference)
void WM_msg_publish_rna(struct wmMsgBus *mbus, PointerRNA *ptr, PropertyRNA *prop)