44# define ASSERT_SOFT_HARD_LIMITS \
45 if (softmin < hardmin || softmax > hardmax) { \
46 CLOG_ERROR(&LOG, "error with soft/hard limits: %s.%s", CONTAINER_RNA_ID(cont), identifier); \
47 BLI_assert_msg(0, "invalid soft/hard limits"); \
51# define ASSERT_SOFT_HARD_LIMITS (void)0
60#define IS_DNATYPE_BOOLEAN_BITSHIFT_FULLRANGE_COMPAT(_str) \
61 STR_ELEM(_str, "char", "uchar", "ushort", "uint", "uint8_t", "uint16_t", "uint32_t")
94 "dna_type=%s, dna_offset=%d, dna_struct=%s, dna_name=%s, id=%s\n",
105 Link *link =
static_cast<Link *
>(vlink);
107 link->
next =
nullptr;
110 if (listbase->
last) {
111 ((
Link *)listbase->
last)->next = link;
113 if (listbase->
first ==
nullptr) {
114 listbase->
first = link;
116 listbase->
last = link;
121 Link *link =
static_cast<Link *
>(vlink);
130 if (listbase->
last == link) {
133 if (listbase->
first == link) {
159 for (link =
static_cast<Link *
>(listbase->
first); link; link =
next) {
164 listbase->
first = listbase->
last =
nullptr;
205 g_version_data.type_map_static_from_alias, type_name, (
void *)type_name));
222 if (dsrna->
srna == srna) {
243 for (; dprop; dprop = dprop->
prev) {
244 if (dprop->
prop == prop) {
252 for (; dprop; dprop = dprop->
prev) {
253 if (dprop->
prop == prop) {
301 if (dfunc->
func == func) {
310 if (dfunc->
func == func) {
335 for (; dparm; dparm = dparm->
prev) {
336 if (dparm->
prop == parm) {
347 for (; dparm; dparm = dparm->
prev) {
348 if (dparm->
prop == parm) {
398 while (name[0] ==
'*') {
401 while (oname[0] ==
'*') {
406 if (name[a] ==
'[' && oname[a] == 0) {
409 if (name[a] ==
'[' && oname[a] ==
'[') {
415 if (name[a] != oname[a]) {
420 if (name[a] == 0 && oname[a] ==
'.') {
423 if (name[a] == 0 && oname[a] ==
'-' && oname[a + 1] ==
'>') {
427 return (name[a] == oname[a]);
431 const char *structname,
432 const char *membername,
437 int b, structnr, cmp;
446 if (structnr == -1) {
452 for (
int a = 0; a < struct_info->
members_num; a++) {
460 smember->
name = dnaname;
461 smember->
offset = *offset;
464 if (strstr(membername,
"[")) {
472 for (
b = 0; dnaname[
b] ==
'*';
b++) {
480 smember->
name = dnaname;
481 smember->
offset = *offset;
486 membername = strstr(membername,
".") + strlen(
".");
494 smember->
name = dnaname;
495 smember->
offset = *offset;
501 membername = strstr(membername,
"->") + strlen(
"->");
529 static const char *kwlist[] = {
531 "and",
"as",
"assert",
"async",
"await",
"break",
"class",
"continue",
"def",
532 "del",
"elif",
"else",
"except",
"finally",
"for",
"from",
"global",
"if",
533 "import",
"in",
"is",
"lambda",
"nonlocal",
"not",
"or",
"pass",
"raise",
534 "return",
"try",
"while",
"with",
"yield",
nullptr,
537 if (!isalpha(identifier[0])) {
538 *r_error =
"first character failed isalpha() check";
542 for (a = 0; identifier[a]; a++) {
543 if (
DefRNA.preprocess && property) {
544 if (isalpha(identifier[a]) && isupper(identifier[a])) {
545 *r_error =
"property names must contain lower case characters only";
550 if (identifier[a] ==
'_') {
554 if (identifier[a] ==
' ') {
555 *r_error =
"spaces are not okay in identifier names";
559 if (isalnum(identifier[a]) == 0) {
560 *r_error =
"one of the characters failed an isalnum() check and is not an underscore";
565 for (a = 0; kwlist[a]; a++) {
566 if (
STREQ(identifier, kwlist[a])) {
567 *r_error =
"this keyword is reserved by Python";
573 static const char *kwlist_prop[] = {
582 for (a = 0; kwlist_prop[a]; a++) {
583 if (
STREQ(identifier, kwlist_prop[a])) {
584 *r_error =
"this keyword is reserved by Python";
598 static const char *kwlist[] = {
600 "and",
"as",
"assert",
"break",
"class",
"continue",
"def",
"del",
601 "elif",
"else",
"except",
"finally",
"for",
"from",
"global",
"if",
602 "import",
"in",
"is",
"lambda",
"nonlocal",
"not",
"or",
"pass",
603 "raise",
"return",
"try",
"while",
"with",
"yield",
nullptr,
606 if (!isalpha(identifier[0])) {
611 for (a = 0; identifier[a]; a++) {
612 if (
DefRNA.preprocess && property) {
613 if (isalpha(identifier[a]) && isupper(identifier[a])) {
615 identifier[a] = tolower(identifier[a]);
619 if (identifier[a] ==
'_') {
623 if (identifier[a] ==
' ') {
628 if (isalnum(identifier[a]) == 0) {
634 for (a = 0; kwlist[a]; a++) {
635 if (
STREQ(identifier, kwlist[a])) {
639 identifier[strlen(identifier) - 1] =
'_';
645 static const char *kwlist_prop[] = {
654 for (a = 0; kwlist_prop[a]; a++) {
655 if (
STREQ(identifier, kwlist_prop[a])) {
659 identifier[strlen(identifier) - 1] =
'_';
669 if (
STR_ELEM(dnatype,
"char",
"uchar")) {
670 r_range[0] = CHAR_MIN;
671 r_range[1] = CHAR_MAX;
674 if (
STREQ(dnatype,
"short")) {
675 r_range[0] = SHRT_MIN;
676 r_range[1] = SHRT_MAX;
679 if (
STREQ(dnatype,
"int")) {
680 r_range[0] = INT_MIN;
681 r_range[1] = INT_MAX;
684 if (
STREQ(dnatype,
"int8_t")) {
699 const char *error_message =
nullptr;
708 const bool do_alias =
true;
711 if (
DefRNA.sdna ==
nullptr) {
712 CLOG_ERROR(&
LOG,
"Failed to decode SDNA: %s.", error_message);
764 DefRNA.make_overridable = make_overridable;
777 DefRNA.fallback.property_update.noteflag = noteflag;
778 DefRNA.fallback.property_update.updatefunc = updatefunc;
810 const char *srna_identifier =
"UNKNOWN";
815 "RNA Struct definition '%s' freed while holding a Python reference.\n",
821 nextprop = prop->
next;
834 nextparm = parm->
next;
850 rna_brna_structs_remove_and_free(brna, srna);
926 if (ds->
srna == srna) {
941 const char *
error =
nullptr;
955 memcpy(srna, srnafrom,
sizeof(
StructRNA));
961 srna->
base = srnafrom;
977 srna->
name = identifier;
982 srna->
icon = ICON_DOT;
1009 MEM_new<blender::CustomIDVectorSet<PropertyRNA *, PropertyRNAIdentifierGetter>>(__func__);
1029 "rna_builtin_properties_begin",
1030 "rna_builtin_properties_next",
1031 "rna_iterator_listbase_end",
1032 "rna_builtin_properties_get",
1035 "rna_builtin_properties_lookup_string",
1060 pprop->
type = &RNA_Struct;
1080 CLOG_ERROR(&
LOG,
"struct %s not found to define %s.", from, identifier);
1092 if (!
DefRNA.preprocess) {
1119 if (!
DefRNA.preprocess) {
1127 CLOG_ERROR(&
LOG,
"%s base struct must know DNA already.", structname);
1190 if (!
DefRNA.preprocess) {
1202 if (!
DefRNA.preprocess) {
1215 const char *instance)
1217 if (!
DefRNA.preprocess) {
1235 if (!
DefRNA.preprocess) {
1258 if (identifier[0] !=
'\0') {
1296 const char *identifier,
1307 const char *
error =
nullptr;
1328 const char *
error =
nullptr;
1331 "runtime property identifier \"%s.%s\" - %s",
1348 "subtype does not apply to 'PROP_BOOLEAN' \"%s.%s\"",
1361 "subtype does not apply to 'PROP_INT' \"%s.%s\"",
1429 prop->
name = identifier;
1450 if (
DefRNA.make_overridable) {
1510 prop,
DefRNA.fallback.property_update.noteflag,
DefRNA.fallback.property_update.updatefunc);
1550 prop->
flag |= flag_property;
1558 prop->
flag &= ~flag_property;
1579 "\"%s.%s\", array length must be zero of greater.",
1588 "\"%s.%s\", array length must be smaller than %d.",
1598 "\"%s.%s\", array dimensions has been set to %u but would be overwritten as 1.",
1615 "\"%s.%s\", cannot define a bitflags boolean array wrapping a scalar DNA member. "
1616 "`RNA_def_property_boolean_bitset_array_sdna` should be used instead.",
1624 switch (prop->
type) {
1634 "\"%s.%s\", only boolean/int/float can be array.",
1657 "\"%s.%s\", array dimension must be between 1 and %d.",
1665 switch (prop->
type) {
1672 "\"%s.%s\", only boolean/int/float can be array.",
1686 for (
i = 1;
i < dimension;
i++) {
1706 if (consecutive != 0) {
1709 if (consecutive < 0) {
1741 switch (prop->
type) {
1769 switch (prop->
type) {
1798 switch (prop->
type) {
1826 if (!
DefRNA.preprocess) {
1831 switch (prop->
type) {
1862 switch (prop->
type) {
1872 "\"%s.%s\", this struct type (probably an Operator, Keymap or UserPreference) "
1873 "does not accept ID pointer properties.",
1893 "\"%s.%s\", invalid type for struct type.",
1908 switch (prop->
type) {
1925 int i, defaultfound = 0;
1927 switch (prop->
type) {
1931 int enum_dna_size = -1;
1932 int enum_dna_range[2];
1936 if (dp->dnatype ==
nullptr || dp->dnatype[0] ==
'\0') {
1940 else if (dp->dnaarraylength > 1) {
1943 else if (dp->dnasize == 0) {
1947 enum_dna_size = dp->dnasize;
1950 "\"%s.%s\", enum type \"%s\" size is not known.",
1965 if (item[
i].identifier[0]) {
1967 if (
DefRNA.preprocess && strstr(item[
i].identifier,
" ")) {
1969 "\"%s.%s\", enum identifiers must not contain spaces.",
1977 if (enum_dna_size != -1) {
1979 uint32_t enum_type_mask = 0;
1980 if (enum_dna_size == 1) {
1981 enum_type_mask = 0xff;
1983 else if (enum_dna_size == 2) {
1984 enum_type_mask = 0xffff;
1986 if (enum_type_mask != 0) {
1987 if (uint32_t(item[
i].value) != (uint32_t(item[
i].value) & enum_type_mask)) {
1989 "\"%s.%s\", enum value for '%s' does not fit into %d byte(s).",
2000 if (
ELEM(enum_dna_size, 1, 2)) {
2001 if ((item[
i].value < enum_dna_range[0]) || (item[
i].value > enum_dna_range[1])) {
2003 "\"%s.%s\", enum value for '%s' is outside of range [%d - %d].",
2022 if (!defaultfound) {
2024 if (item[
i].identifier[0]) {
2045 switch (prop->
type) {
2062 switch (prop->
type) {
2086 switch (prop->
type) {
2103 switch (prop->
type) {
2125 switch (prop->
type) {
2147 switch (prop->
type) {
2168 switch (prop->
type) {
2190 switch (prop->
type) {
2194 if (value ==
nullptr) {
2196 "\"%s.%s\", nullptr string passed (don't call in this case).",
2205 "\"%s.%s\", empty string passed (don't call in this case).",
2230 int i, defaultfound = 0;
2232 switch (prop->
type) {
2248 "\"%s.%s\", default includes unused bits (%d).",
2262 if (!defaultfound && eprop->
totitem) {
2286 const char *structname,
2287 const char *propname)
2294 if (dp ==
nullptr) {
2326 "\"%s.%s\" (identifier \"%s\") not found. Struct must be in DNA.",
2358 const char *structname,
2359 const char *propname,
2361 const bool booleannegative,
2368 if (!
DefRNA.preprocess) {
2385 if (booleanbit <= 0) {
2387 "%s.%s is using a null or negative 'booleanbit' value of %" PRId64
2388 ", which is invalid "
2389 "for 'bitset arrays' boolean properties.",
2398 if ((booleanbit & ~(1 << bit_index)) != 0) {
2400 "%s.%s is using a multi-bit 'booleanbit' value of %" PRId64
2401 ", which is invalid for "
2402 "'bitset arrays' boolean properties.",
2420 "%s.%s is a '%s' but wrapped as type '%s'.",
2430 const bool is_bitset_array = (
length > 1);
2431 if (is_bitset_array) {
2433 const short max_length = (dp->
dnasize * 8) -
2435 if ((bit_index +
length) > max_length) {
2437 "%s.%s is a '%s' of %d bytes, but wrapped as type '%s' 'bitset array' of %d "
2438 "items starting at bit %u.",
2466 bool has_default =
true;
2468 has_default =
false;
2470 fprintf(stderr,
"%s default: unsupported boolean array default\n", __func__);
2475 bprop->
defaultvalue = *(
const char *)default_data & booleanbit;
2478 bprop->
defaultvalue = *(
const short *)default_data & booleanbit;
2481 bprop->
defaultvalue = *(
const int *)default_data & booleanbit;
2484 has_default =
false;
2487 stderr,
"%s default: unsupported boolean type (%s)\n", __func__, dp->
dnatype);
2511 const char *structname,
2512 const char *propname,
2519 const char *structname,
2520 const char *propname,
2527 const char *structname,
2528 const char *propname,
2541 if (!
DefRNA.preprocess) {
2558 "%s.%s is a '%s' but wrapped as type '%s'.",
2577 "\"%s.%s\", type \"%s\" range not known.",
2605 bool has_default =
true;
2610 int *defaultarray =
static_cast<int *
>(
rna_calloc(size_final));
2611 for (
int i = 0;
i < prop->
totarraylength && default_data < default_data_end;
i++) {
2612 defaultarray[
i] = *(
const char *)default_data;
2619 int *defaultarray =
static_cast<int *
>(
rna_calloc(size_final));
2620 for (
int i = 0;
i < prop->
totarraylength && default_data < default_data_end;
i++) {
2622 *(
const ushort *)default_data;
2628 int *defaultarray =
static_cast<int *
>(
rna_calloc(size_final));
2629 memcpy(defaultarray, default_data, std::min(size_final, dp->
dnasize));
2633 has_default =
false;
2636 "%s default: unsupported int array type (%s)\n",
2644 fprintf(stderr,
"value=(");
2648 fprintf(stderr,
"), ");
2659 *(
const short *)default_data :
2660 *(
const ushort *)default_data;
2664 *(
const uint *)default_data;
2667 has_default =
false;
2669 fprintf(stderr,
"%s default: unsupported int type (%s)\n", __func__, dp->
dnatype);
2693 if (!
DefRNA.preprocess) {
2711 "%s.%s is a '%s' but wrapped as type '%s'.",
2735 bool has_default =
true;
2739 float *defaultarray =
static_cast<float *
>(
rna_calloc(size_final));
2740 memcpy(defaultarray, default_data, std::min(size_final, dp->
dnasize));
2744 has_default =
false;
2747 "%s default: unsupported float array type (%s)\n",
2755 fprintf(stderr,
"value=(");
2759 fprintf(stderr,
"), ");
2769 fprop->
defaultvalue = float(*(
const char *)default_data) * (1.0f / 255.0f);
2772 has_default =
false;
2775 stderr,
"%s default: unsupported float type (%s)\n", __func__, dp->
dnatype);
2801 if (!
DefRNA.preprocess) {
2818 CLOG_ERROR(&
LOG,
"\"%s.%s\", array not supported for enum type.", structname, propname);
2831 bool has_default =
true;
2842 has_default =
false;
2844 fprintf(stderr,
"%s default: unsupported enum type (%s)\n", __func__, dp->
dnatype);
2864 const char *structname,
2865 const char *propname)
2877 int defaultvalue_mask = 0;
2895 if (!
DefRNA.preprocess) {
2921 sprop->
defaultvalue =
static_cast<const char *
>(default_data);
2924 fprintf(stderr,
"value=\"%s\", ", sprop->
defaultvalue);
2939 if (!
DefRNA.preprocess) {
2956 CLOG_ERROR(&
LOG,
"\"%s.%s\", array not supported for pointer type.", structname, propname);
2964 const char *structname,
2965 const char *propname,
2966 const char *lengthpropname)
2972 if (!
DefRNA.preprocess) {
2989 CLOG_ERROR(&
LOG,
"\"%s.%s\", array of collections not supported.", structname, propname);
3001 if (dp && lengthpropname) {
3010 if (lengthpropname[0] == 0 ||
3013 if (lengthpropname[0] == 0) {
3036 CLOG_ERROR(&
LOG,
"\"%s.%s\" not found.", structname, lengthpropname);
3052 if (!
DefRNA.preprocess) {
3064 if (!
DefRNA.preprocess) {
3079 if (!
DefRNA.preprocess) {
3097 if (!
DefRNA.preprocess) {
3135 if (!
DefRNA.preprocess) {
3155 if (!
DefRNA.preprocess) {
3160 switch (prop->
type) {
3202 if (getfunc || setfunc) {
3225 if (getfunc || setfunc) {
3242 if (!
DefRNA.preprocess) {
3247 switch (prop->
type) {
3296 if (getfunc || setfunc) {
3323 if (getfunc || setfunc) {
3340 if (!
DefRNA.preprocess) {
3345 switch (prop->
type) {
3394 if (getfunc || setfunc) {
3421 if (getfunc || setfunc) {
3438 if (!
DefRNA.preprocess) {
3443 switch (prop->
type) {
3482 if (getfunc || setfunc) {
3499 if (!
DefRNA.preprocess) {
3504 switch (prop->
type) {
3532 if (!
DefRNA.preprocess) {
3537 switch (prop->
type) {
3541 if (search !=
nullptr) {
3557 if (!
DefRNA.preprocess) {
3562 switch (prop->
type) {
3592 if (getfunc || setfunc) {
3608 sprop->
search = search_fn;
3609 if (search_fn !=
nullptr) {
3615 PropertyRNA *prop,
const char *get,
const char *set,
const char *type_fn,
const char *poll)
3619 if (!
DefRNA.preprocess) {
3624 switch (prop->
type) {
3655 const char *lookupint,
3656 const char *lookupstring,
3657 const char *assignint)
3661 if (!
DefRNA.preprocess) {
3666 switch (prop->
type) {
3707 if (!
DefRNA.preprocess) {
3711 switch (prop->
type) {
3738 if (!
DefRNA.preprocess) {
3742 switch (prop->
type) {
3769 if (!
DefRNA.preprocess) {
3773 switch (prop->
type) {
3800 if (!
DefRNA.preprocess) {
3804 switch (prop->
type) {
3826 const char *
error =
nullptr;
3844 const char *identifier,
3845 const bool default_value,
3846 const char *ui_name,
3847 const char *ui_description)
3860 const char *identifier,
3862 const bool *default_value,
3863 const char *ui_name,
3864 const char *ui_description)
3873 if (default_value) {
3882 const char *identifier,
3884 const bool *default_value,
3885 const char *ui_name,
3886 const char *ui_description)
3895 if (default_value) {
3904 const char *identifier,
3906 const bool *default_value,
3907 const char *ui_name,
3908 const char *ui_description)
3917 if (default_value) {
3926 const char *identifier,
3928 const bool *default_value,
3929 const char *ui_name,
3930 const char *ui_description)
3939 if (default_value) {
3948 const char *identifier,
3949 const int default_value,
3952 const char *ui_name,
3953 const char *ui_description,
3964 if (hardmin != hardmax) {
3974 const char *identifier,
3976 const int *default_value,
3979 const char *ui_name,
3980 const char *ui_description,
3993 if (default_value) {
3996 if (hardmin != hardmax) {
4006 const char *identifier,
4008 const int *default_value,
4011 const char *ui_name,
4012 const char *ui_description,
4025 if (default_value) {
4028 if (hardmin != hardmax) {
4038 const char *identifier,
4039 const char *default_value,
4041 const char *ui_name,
4042 const char *ui_description)
4047 BLI_assert(default_value ==
nullptr || default_value[0]);
4053 if (default_value) {
4062 const char *identifier,
4063 const char *default_value,
4065 const char *ui_name,
4066 const char *ui_description)
4071 BLI_assert(default_value ==
nullptr || default_value[0]);
4077 if (default_value) {
4086 const char *identifier,
4087 const char *default_value,
4089 const char *ui_name,
4090 const char *ui_description)
4095 BLI_assert(default_value ==
nullptr || default_value[0]);
4101 if (default_value) {
4110 const char *identifier,
4111 const char *default_value,
4113 const char *ui_name,
4114 const char *ui_description)
4119 BLI_assert(default_value ==
nullptr || default_value[0]);
4125 if (default_value) {
4134 const char *identifier,
4136 const int default_value,
4137 const char *ui_name,
4138 const char *ui_description)
4143 if (items ==
nullptr) {
4157 const char *identifier,
4159 const int default_value,
4160 const char *ui_name,
4161 const char *ui_description)
4166 if (items ==
nullptr) {
4187 const char *identifier,
4188 const float default_value,
4189 const float hardmin,
4190 const float hardmax,
4191 const char *ui_name,
4192 const char *ui_description,
4193 const float softmin,
4194 const float softmax)
4203 if (hardmin != hardmax) {
4213 const char *identifier,
4215 const float *default_value,
4216 const float hardmin,
4217 const float hardmax,
4218 const char *ui_name,
4219 const char *ui_description,
4220 const float softmin,
4221 const float softmax)
4232 if (default_value) {
4235 if (hardmin != hardmax) {
4245 const char *identifier,
4247 const float *default_value,
4248 const float hardmin,
4249 const float hardmax,
4250 const char *ui_name,
4251 const char *ui_description,
4252 const float softmin,
4253 const float softmax)
4273 const char *identifier,
4275 const float *default_value,
4276 const float hardmin,
4277 const float hardmax,
4278 const char *ui_name,
4279 const char *ui_description,
4280 const float softmin,
4281 const float softmax)
4292 if (default_value) {
4295 if (hardmin != hardmax) {
4305 const char *identifier,
4308 const float *default_value,
4309 const float hardmin,
4310 const float hardmax,
4311 const char *ui_name,
4312 const char *ui_description,
4313 const float softmin,
4314 const float softmax)
4318 const int length[2] = {rows, columns};
4324 if (default_value) {
4327 if (hardmin != hardmax) {
4337 const char *identifier,
4339 const float *default_value,
4340 const float hardmin,
4341 const float hardmax,
4342 const char *ui_name,
4343 const char *ui_description,
4344 const float softmin,
4345 const float softmax)
4367 const char *identifier,
4369 const float *default_value,
4370 const float hardmin,
4371 const float hardmax,
4372 const char *ui_name,
4373 const char *ui_description,
4374 const float softmin,
4375 const float softmax)
4385 if (default_value) {
4393 if (hardmin != hardmax) {
4403 const char *identifier,
4404 const float default_value,
4405 const float hardmin,
4406 const float hardmax,
4407 const char *ui_name,
4408 const char *ui_description,
4409 const float softmin,
4410 const float softmax)
4427 const char *identifier,
4429 const float *default_value,
4430 const float hardmin,
4431 const float hardmax,
4432 const char *ui_name,
4433 const char *ui_description,
4434 const float softmin,
4435 const float softmax)
4446 if (default_value) {
4449 if (hardmin != hardmax) {
4459 const char *identifier,
4460 const float default_value,
4461 const float hardmin,
4462 const float hardmax,
4463 const char *ui_name,
4464 const char *ui_description,
4465 const float softmin,
4466 const float softmax)
4475 if (hardmax < 2.0f) {
4477 "Percentage property with incorrect range: %s.%s",
4485 if (hardmin != hardmax) {
4495 const char *identifier,
4496 const float default_value,
4497 const float hardmin,
4498 const float hardmax,
4499 const char *ui_name,
4500 const char *ui_description,
4501 const float softmin,
4502 const float softmax)
4511 if (hardmin != hardmax) {
4521 const char *identifier,
4523 const char *ui_name,
4524 const char *ui_description)
4537 const char *identifier,
4539 const char *ui_name,
4540 const char *ui_description)
4556 const char *identifier,
4558 const char *ui_name,
4559 const char *ui_description)
4572 const char *identifier,
4574 const char *ui_name,
4575 const char *ui_description)
4596 const char *
error =
nullptr;
4634 if (!
DefRNA.preprocess) {
4665 "\"%s.%s\", dynamic values are not allowed as strict returns, "
4666 "use RNA_def_function_output instead.",
4671 if (
ret->arraydimension) {
4673 "\"%s.%s\", arrays are not allowed as strict returns, "
4674 "use RNA_def_function_output instead.",
4714 return sizeof(bool) *
len;
4716 return sizeof(int) *
len;
4718 return sizeof(float) *
len;
4726 return sizeof(bool);
4731 return sizeof(float);
4739 return sizeof(
char *);
4752 return sizeof(
void *);
4761 return sizeof(
void *);
4770 return sizeof(
void *);
4779 const int alignment =
sizeof(
void *);
4780 return (
size + alignment - 1) & ~(alignment - 1);
4796 else if (tot >= 8 && (tot & (tot - 1)) == 0) {
4805 (*items)[tot] = *item;
4828 if (item->
value == value) {
4869 if (brna !=
nullptr) {
4923 switch (prop->
type) {
4929 "RNA_def_property_store");
4940 "RNA_def_property_store");
4951 "RNA_def_property_store");
4955 for (a = 0; a < eprop->
totitem; a++) {
4956 if (
array[a].identifier) {
4959 if (
array[a].name) {
4962 if (
array[a].description) {
4974 "RNA_def_property_store");
4994static void (*g_py_data_clear_fn)(
PropertyRNA *prop) =
nullptr;
5004 g_py_data_clear_fn = py_data_clear_fn;
5012 if (g_py_data_clear_fn) {
5013 g_py_data_clear_fn(prop);
5029 switch (prop->
type) {
5054 for (a = 0; a < eprop->
totitem; a++) {
5117 PropertyRNA *prop = rna_def_property_find_py_id(cont, identifier);
5118 if (prop !=
nullptr) {
5120 rna_def_property_free(cont, prop);
5131 const char *identifier,
5135 PropertyRNA *prop = rna_def_property_find_py_id(cont, identifier);
5136 if (prop !=
nullptr) {
5154 rna_def_property_free(cont, prop);
5163 return "PROP_BOOLEAN";
5167 return "PROP_FLOAT";
5169 return "PROP_STRING";
5173 return "PROP_POINTER";
5175 return "PROP_COLLECTION";
5178 return "PROP_UNKNOWN";
#define BLI_assert_unreachable()
void * BLI_ghash_lookup_default(const GHash *gh, const void *key, void *val_default) ATTR_WARN_UNUSED_RESULT
GHash * BLI_ghash_str_new_ex(const char *info, unsigned int nentries_reserve) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
bool BLI_ghash_remove(GHash *gh, const void *key, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
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_ghash_free(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
void * BLI_ghash_replace_key(GHash *gh, void *key)
int BLI_findindex(const ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE void BLI_listbase_clear(ListBase *lb)
void * BLI_findstring_ptr(const ListBase *listbase, const char *id, int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE unsigned int bitscan_forward_uint64(unsigned long long a)
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC
#define POINTER_OFFSET(v, ofs)
#define BLT_I18NCONTEXT_DEFAULT_BPYRNA
void BPY_DECREF(void *pyob_ptr)
#define CLOG_ERROR(clg_ref,...)
#define CLOG_WARN(clg_ref,...)
const void * DNA_default_table[SDNA_TYPE_MAX]
blenloader genfile private function prototypes
void DNA_sdna_free(struct SDNA *sdna)
const unsigned char DNAstr[]
struct SDNA * DNA_sdna_from_data(const void *data, int data_len, bool do_endian_swap, bool data_alloc, bool do_alias, const char **r_error_message)
int DNA_struct_member_size(const struct SDNA *sdna, short type, short member_index)
int DNA_struct_find_index_without_alias(const struct SDNA *sdna, const char *str)
Read Guarded memory(de)allocation.
int RNA_def_property_free_identifier(StructOrFunctionRNA *cont_, const char *identifier)
void(*)(Main *, Scene *, PointerRNA *) RNAPropertyUpdateFunc
void RNA_def_struct_free_pointers(BlenderRNA *brna, StructRNA *srna)
#define IS_DNATYPE_BOOLEAN_COMPAT(_str)
void RNA_def_property_duplicate_pointers(StructOrFunctionRNA *cont_, PropertyRNA *prop)
void RNA_def_property_free_pointers_set_py_data_callback(void(*py_data_clear_fn)(PropertyRNA *prop))
#define IS_DNATYPE_FLOAT_COMPAT(_str)
void RNA_def_property_free_identifier_deferred_finish(StructOrFunctionRNA *cont_, void *handle)
#define IS_DNATYPE_INT_COMPAT(_str)
void RNA_def_func_duplicate_pointers(FunctionRNA *func)
void(*)(bContext *C, PointerRNA *ptr, PropertyRNA *prop) RNAPropertyUpdateFuncWithContextAndProperty
#define RNA_MAX_ARRAY_LENGTH
void RNA_def_struct_duplicate_pointers(BlenderRNA *brna, StructRNA *srna)
void RNA_def_property_free_pointers(PropertyRNA *prop)
void RNA_def_func_free_pointers(FunctionRNA *func)
int RNA_def_property_free_identifier_deferred_prepare(StructOrFunctionRNA *cont_, const char *identifier, void **handle)
#define RNA_MAX_ARRAY_DIMENSION
void(*)(PointerRNA *ptr, PropertyRNA *prop, int *min, int *max, int *softmin, int *softmax) IntPropertyRangeFunc
StructRNA *(*)(Main *bmain, ReportList *reports, void *data, const char *identifier, StructValidateFunc validate, StructCallbackFunc call, StructFreeFunc free) StructRegisterFunc
int(*)(PointerRNA *ptr, PropertyRNA *prop) EnumPropertyGetFunc
void(*)(PointerRNA *ptr, PropertyRNA *prop, const bool *values) BooleanArrayPropertySetFunc
void(*)(PointerRNA *ptr, PropertyRNA *prop, char *value) StringPropertyGetFunc
void(*)(PointerRNA *ptr, PropertyRNA *prop, bool *values) BooleanArrayPropertyGetFunc
int(*)(PointerRNA *ptr, PropertyRNA *prop) StringPropertyLengthFunc
@ STRUCT_PUBLIC_NAMESPACE
@ STRUCT_NO_DATABLOCK_IDPROPERTIES
@ STRUCT_PUBLIC_NAMESPACE_INHERIT
void(*)(PointerRNA *ptr, PropertyRNA *prop, float *values) FloatArrayPropertyGetFunc
void(*)(PointerRNA *ptr, PropertyRNA *prop, const char *value) StringPropertySetFunc
eStringPropertySearchFlag
@ PROP_STRING_SEARCH_SUPPORTED
void(*)(PointerRNA *ptr, PropertyRNA *prop, int *values) IntArrayPropertyGetFunc
void(*)(PointerRNA *ptr, PropertyRNA *prop, int value) EnumPropertySetFunc
void(*)(PointerRNA *ptr, PropertyRNA *prop, const int *values) IntArrayPropertySetFunc
#define RNA_ENUM_ITEM_SEPR
bool(*)(Main *bmain, StructRNA *type) StructUnregisterFunc
bool(*)(PointerRNA *ptr, PropertyRNA *prop) BooleanPropertyGetFunc
void(*)(const bContext *C, PointerRNA *ptr, PropertyRNA *prop, const char *edit_text, blender::FunctionRef< void(StringPropertySearchVisitParams)> visit_fn) StringPropertySearchFunc
void **(*)(PointerRNA *ptr) StructInstanceFunc
#define RNA_TRANSLATION_PREC_DEFAULT
float(*)(PointerRNA *ptr, PropertyRNA *prop) FloatPropertyGetFunc
int(*)(PointerRNA *ptr, PropertyRNA *prop) IntPropertyGetFunc
void(*)( PointerRNA *ptr, PropertyRNA *prop, float *min, float *max, float *softmin, float *softmax) FloatPropertyRangeFunc
void(*)(PointerRNA *ptr, PropertyRNA *prop, float value) FloatPropertySetFunc
@ PROPOVERRIDE_OVERRIDABLE_LIBRARY
void(*)(PointerRNA *ptr, PropertyRNA *prop, int value) IntPropertySetFunc
const EnumPropertyItem *(*)(bContext *C, PointerRNA *ptr, PropertyRNA *prop, bool *r_free) EnumPropertyItemFunc
void(*)(bContext *C, ReportList *reports, PointerRNA *ptr, ParameterList *parms) CallFunc
void(*)(PointerRNA *ptr, PropertyRNA *prop, const float *values) FloatArrayPropertySetFunc
@ PROP_CONTEXT_PROPERTY_UPDATE
std::optional< std::string >(*)(const bContext *C, PointerRNA *ptr, PropertyRNA *prop) StringPropertyPathFilterFunc
void(*)(PointerRNA *ptr, PropertyRNA *prop, bool value) BooleanPropertySetFunc
#define UI_PRECISION_FLOAT_MAX
unsigned long long int uint64_t
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
const char * DNA_struct_rename_legacy_hack_static_from_alias(const char *name)
int DNA_member_array_num(const char *str)
@ DNA_RENAME_STATIC_FROM_ALIAS
void DNA_alias_maps(enum eDNA_RenameDir version_dir, struct GHash **r_type_map, struct GHash **r_member_map)
IMETHOD Vector diff(const Vector &a, const Vector &b, double dt)
VecBase< float, D > step(VecOp< float, D >, VecOp< float, D >) RET
float length(VecOp< float, D >) RET
static struct @176141340067202351207022210106244230032023157177 g_version_data
GHash * type_map_static_from_alias
void * rna_calloc(int buffer_size)
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_recallocN_id)(void *vmemh, size_t len, const char *str)
void MEM_freeN(void *vmemh)
static void error(const char *str)
void RNA_struct_py_type_set(StructRNA *srna, void *py_type)
void RNA_struct_blender_type_set(StructRNA *srna, void *blender_type)
void * RNA_struct_py_type_get(StructRNA *srna)
PropertyRNA * RNA_def_float_factor(StructOrFunctionRNA *cont_, const char *identifier, const float default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
void RNA_def_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t booleanbit)
void RNA_enum_items_add(EnumPropertyItem **items, int *totitem, const EnumPropertyItem *item)
void RNA_def_struct_name_property(StructRNA *srna, PropertyRNA *prop)
PropertyRNA * RNA_def_string(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, const int maxlen, const char *ui_name, const char *ui_description)
void RNA_def_struct_refine_func(StructRNA *srna, const char *refine)
PropertyRNA * RNA_def_int_array(StructOrFunctionRNA *cont_, const char *identifier, const int len, const int *default_value, const int hardmin, const int hardmax, const char *ui_name, const char *ui_description, const int softmin, const int softmax)
PropertyRNA * RNA_def_float_percentage(StructOrFunctionRNA *cont_, const char *identifier, const float default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
void RNA_def_property_pointer_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_define_lib_overridable(const bool make_overridable)
void RNA_def_property_struct_runtime(StructOrFunctionRNA *cont, PropertyRNA *prop, StructRNA *type)
void RNA_def_struct_path_func(StructRNA *srna, const char *path)
void RNA_define_animate_sdna(bool animate)
PropertyRNA * RNA_def_boolean_array(StructOrFunctionRNA *cont_, const char *identifier, const int len, const bool *default_value, const char *ui_name, const char *ui_description)
static int DNA_struct_find_index_wrapper(const SDNA *sdna, const char *type_name)
PropertyRNA * RNA_def_float_color(StructOrFunctionRNA *cont_, const char *identifier, const int len, const float *default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
void rna_freelinkN(ListBase *listbase, void *vlink)
void RNA_def_property_string_search_func_runtime(PropertyRNA *prop, StringPropertySearchFunc search_fn, const eStringPropertySearchFlag search_flag)
void RNA_def_struct_flag(StructRNA *srna, int flag)
PropertyRNA * RNA_def_pointer_runtime(StructOrFunctionRNA *cont_, const char *identifier, StructRNA *type, const char *ui_name, const char *ui_description)
FunctionRNA * RNA_def_function_runtime(StructRNA *srna, const char *identifier, CallFunc call)
void RNA_def_parameter_clear_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
void RNA_def_property_string_funcs(PropertyRNA *prop, const char *get, const char *length, const char *set)
const char * RNA_property_typename(PropertyType type)
const float rna_default_quaternion[4]
void RNA_def_property_float_default(PropertyRNA *prop, float value)
static void rna_remlink(ListBase *listbase, void *vlink)
void RNA_def_function_return(FunctionRNA *func, PropertyRNA *ret)
static bool rna_validate_identifier(const char *identifier, bool property, const char **r_error)
void RNA_def_property_enum_default(PropertyRNA *prop, int value)
static void rna_def_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, const int64_t booleanbit, const bool booleannegative, const int length)
void RNA_def_property_float_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
void RNA_define_verify_sdna(bool verify)
void rna_freelistN(ListBase *listbase)
void RNA_def_property_string_search_func(PropertyRNA *prop, const char *search, const eStringPropertySearchFlag search_flag)
void RNA_def_property_enum_native_type(PropertyRNA *prop, const char *native_enum_type)
void RNA_def_property_ui_text(PropertyRNA *prop, const char *name, const char *description)
PropertyRNA * RNA_def_float_rotation(StructOrFunctionRNA *cont_, const char *identifier, const int len, const float *default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
PropertyRNA * RNA_def_float_distance(StructOrFunctionRNA *cont_, const char *identifier, const float default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
void RNA_def_property_string_sdna(PropertyRNA *prop, const char *structname, const char *propname)
const int rna_matrix_dimsize_4x2[]
void RNA_def_property_ui_icon(PropertyRNA *prop, int icon, int consecutive)
void RNA_def_property_boolean_default_func(PropertyRNA *prop, const char *get_default)
void RNA_def_struct_property_tags(StructRNA *srna, const EnumPropertyItem *prop_tag_defines)
PropertyRNA * RNA_def_float_translation(StructOrFunctionRNA *cont_, const char *identifier, const int len, const float *default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
PropertyRNA * RNA_def_boolean_layer(StructOrFunctionRNA *cont_, const char *identifier, const int len, const bool *default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_srna(PropertyRNA *prop, const char *type)
PropertyRNA * RNA_def_float_matrix(StructOrFunctionRNA *cont_, const char *identifier, const int rows, const int columns, const float *default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
PropertyRNA * RNA_def_float(StructOrFunctionRNA *cont_, const char *identifier, const float default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
void RNA_def_property_int_funcs_runtime(PropertyRNA *prop, IntPropertyGetFunc getfunc, IntPropertySetFunc setfunc, IntPropertyRangeFunc rangefunc)
static PropertyDefRNA * rna_def_property_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_collection_funcs(PropertyRNA *prop, const char *begin, const char *next, const char *end, const char *get, const char *length, const char *lookupint, const char *lookupstring, const char *assignint)
void RNA_def_struct_ui_text(StructRNA *srna, const char *name, const char *description)
const float rna_default_scale_3d[3]
void RNA_def_property_boolean_bitset_array_sdna(PropertyRNA *prop, const char *structname, const char *propname, const int64_t booleanbit, const int length)
PropertyRNA * RNA_def_float_vector(StructOrFunctionRNA *cont_, const char *identifier, const int len, const float *default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
#define ASSERT_SOFT_HARD_LIMITS
void RNA_def_property_boolean_default(PropertyRNA *prop, bool value)
void RNA_def_property_boolean_funcs(PropertyRNA *prop, const char *get, const char *set)
void RNA_def_struct_register_funcs(StructRNA *srna, const char *reg, const char *unreg, const char *instance)
void RNA_def_property_update_runtime(PropertyRNA *prop, RNAPropertyUpdateFunc func)
void RNA_identifier_sanitize(char *identifier, int property)
void RNA_def_property_dynamic_array_funcs(PropertyRNA *prop, const char *getlength)
void RNA_def_property_multi_array(PropertyRNA *prop, int dimension, const int length[])
void RNA_def_property_enum_funcs_runtime(PropertyRNA *prop, EnumPropertyGetFunc getfunc, EnumPropertySetFunc setfunc, EnumPropertyItemFunc itemfunc)
void RNA_def_property_boolean_array_funcs_runtime(PropertyRNA *prop, BooleanArrayPropertyGetFunc getfunc, BooleanArrayPropertySetFunc setfunc)
FunctionDefRNA * rna_find_function_def(FunctionRNA *func)
void RNA_def_struct_identifier(BlenderRNA *brna, StructRNA *srna, const char *identifier)
static int rna_member_cmp(const char *name, const char *oname)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_int_default(PropertyRNA *prop, int value)
void RNA_def_property_path_template_type(PropertyRNA *prop, PropertyPathTemplateType path_template_type)
const float rna_default_axis_angle[4]
void RNA_def_property_editable_array_func(PropertyRNA *prop, const char *editable)
PropertyRNA * RNA_def_int_vector(StructOrFunctionRNA *cont_, const char *identifier, const int len, const int *default_value, const int hardmin, const int hardmax, const char *ui_name, const char *ui_description, const int softmin, const int softmax)
PropertyRNA * RNA_def_boolean_vector(StructOrFunctionRNA *cont_, const char *identifier, const int len, const bool *default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_enum_items(PropertyRNA *prop, const EnumPropertyItem *item)
void RNA_def_property_update_notifier(PropertyRNA *prop, const int noteflag)
void RNA_def_struct_sdna(StructRNA *srna, const char *structname)
PropertyRNA * RNA_def_float_vector_xyz(StructOrFunctionRNA *cont_, const char *identifier, const int len, const float *default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
FunctionRNA * RNA_def_function(StructRNA *srna, const char *identifier, const char *call)
void RNA_def_py_data(PropertyRNA *prop, void *py_data)
void RNA_def_struct_clear_flag(StructRNA *srna, int flag)
void RNA_def_property_array(PropertyRNA *prop, int length)
void RNA_def_property_float_default_func(PropertyRNA *prop, const char *get_default)
void RNA_def_property_range(PropertyRNA *prop, double min, double max)
PropertyRNA * RNA_def_string_file_name(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, const int maxlen, const char *ui_name, const char *ui_description)
static bool debugSRNA_defaults
PropertyRNA * RNA_def_pointer(StructOrFunctionRNA *cont_, const char *identifier, const char *type, const char *ui_name, const char *ui_description)
void RNA_def_struct_identifier_no_struct_map(StructRNA *srna, const char *identifier)
void RNA_def_property_poll_runtime(PropertyRNA *prop, const void *func)
void RNA_def_property_string_maxlength(PropertyRNA *prop, int maxlength)
void RNA_def_struct_sdna_from(StructRNA *srna, const char *structname, const char *propname)
void RNA_def_property_struct_type(PropertyRNA *prop, const char *type)
void RNA_def_property_collection_sdna(PropertyRNA *prop, const char *structname, const char *propname, const char *lengthpropname)
static FunctionRNA * rna_def_function(StructRNA *srna, const char *identifier)
void RNA_def_property_update_runtime_with_context_and_property(PropertyRNA *prop, RNAPropertyUpdateFuncWithContextAndProperty func)
void RNA_def_function_ui_description(FunctionRNA *func, const char *description)
void RNA_def_property_update(PropertyRNA *prop, int noteflag, const char *func)
const int rna_matrix_dimsize_4x4[]
PropertyRNA * RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
void RNA_def_property_enum_funcs(PropertyRNA *prop, const char *get, const char *set, const char *item)
static size_t rna_property_type_sizeof(PropertyType type)
StructRNA * RNA_def_struct_ptr(BlenderRNA *brna, const char *identifier, StructRNA *srnafrom)
void RNA_def_property_editable_func(PropertyRNA *prop, const char *editable)
void RNA_def_property_float_funcs_runtime(PropertyRNA *prop, FloatPropertyGetFunc getfunc, FloatPropertySetFunc setfunc, FloatPropertyRangeFunc rangefunc)
PropertyRNA * RNA_def_boolean_layer_member(StructOrFunctionRNA *cont_, const char *identifier, const int len, const bool *default_value, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_collection_runtime(StructOrFunctionRNA *cont_, const char *identifier, StructRNA *type, const char *ui_name, const char *ui_description)
void RNA_def_property_enum_bitflag_sdna(PropertyRNA *prop, const char *structname, const char *propname)
StructRNA * RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *from)
PropertyRNA * RNA_def_enum_flag(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_int_array_default(PropertyRNA *prop, const int *array)
void RNA_free(BlenderRNA *brna)
void RNA_enum_item_end(EnumPropertyItem **items, int *totitem)
void RNA_def_function_flag(FunctionRNA *func, int flag)
static bool rna_range_from_int_type(const char *dnatype, int r_range[2])
static int rna_find_sdna_member(SDNA *sdna, const char *structname, const char *membername, DNAStructMember *smember, int *offset)
void RNA_def_property_clear_flag(PropertyRNA *prop, PropertyFlag flag)
BlenderRNA * RNA_create()
void RNA_struct_free_extension(StructRNA *srna, ExtensionRNA *rna_ext)
void RNA_def_property_enum_default_func(PropertyRNA *prop, const char *get_default)
void RNA_def_property_pointer_funcs(PropertyRNA *prop, const char *get, const char *set, const char *type_fn, const char *poll)
void RNA_def_property_enum_sdna(PropertyRNA *prop, const char *structname, const char *propname)
PropertyRNA * RNA_def_float_array(StructOrFunctionRNA *cont_, const char *identifier, const int len, const float *default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
void RNA_enum_item_add(EnumPropertyItem **items, int *totitem, const EnumPropertyItem *item)
PropertyDefRNA * rna_find_parameter_def(PropertyRNA *parm)
void RNA_def_property_int_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
const int rna_matrix_dimsize_3x3[]
int rna_parameter_size(PropertyRNA *parm)
PropertyRNA * RNA_def_string_file_path(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, const int maxlen, const char *ui_name, const char *ui_description)
void RNA_def_property_string_default(PropertyRNA *prop, const char *value)
void RNA_def_struct_ui_icon(StructRNA *srna, int icon)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, const bool default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_int_array_funcs_runtime(PropertyRNA *prop, IntArrayPropertyGetFunc getfunc, IntArrayPropertySetFunc setfunc, IntPropertyRangeFunc rangefunc)
void RNA_def_property_float_array_funcs_runtime(PropertyRNA *prop, FloatArrayPropertyGetFunc getfunc, FloatArrayPropertySetFunc setfunc, FloatPropertyRangeFunc rangefunc)
void RNA_struct_free(BlenderRNA *brna, StructRNA *srna)
static void print_default_info(const PropertyDefRNA *dp)
PropertyRNA * RNA_def_collection(StructOrFunctionRNA *cont_, const char *identifier, const char *type, const char *ui_name, const char *ui_description)
void RNA_def_struct_idprops_func(StructRNA *srna, const char *idproperties)
void RNA_def_property_override_funcs(PropertyRNA *prop, const char *diff, const char *store, const char *apply)
void RNA_def_property_translation_context(PropertyRNA *prop, const char *context)
void RNA_def_function_output(FunctionRNA *, PropertyRNA *ret)
void RNA_def_property_ui_scale_type(PropertyRNA *prop, PropertyScaleType ui_scale_type)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_property_override_clear_flag(PropertyRNA *prop, PropertyOverrideFlag flag)
void RNA_enum_item_add_separator(EnumPropertyItem **items, int *totitem)
PropertyDefRNA * rna_find_struct_property_def(StructRNA *srna, PropertyRNA *prop)
void RNA_def_enum_funcs(PropertyRNA *prop, EnumPropertyItemFunc itemfunc)
PropertyRNA * RNA_def_string_dir_path(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, const int maxlen, const char *ui_name, const char *ui_description)
static void rna_brna_structs_add(BlenderRNA *brna, StructRNA *srna)
void RNA_def_property_subtype(PropertyRNA *prop, PropertySubType subtype)
void RNA_def_property_float_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_boolean_array_default(PropertyRNA *prop, const bool *array)
void RNA_def_property_boolean_funcs_runtime(PropertyRNA *prop, BooleanPropertyGetFunc getfunc, BooleanPropertySetFunc setfunc)
void RNA_def_property_string_filepath_filter_func(PropertyRNA *prop, const char *filter)
void RNA_enum_items_add_value(EnumPropertyItem **items, int *totitem, const EnumPropertyItem *item, int value)
static ContainerDefRNA * rna_find_container_def(ContainerRNA *cont)
StructDefRNA * rna_find_struct_def(StructRNA *srna)
void RNA_def_property_ui_range(PropertyRNA *prop, double min, double max, double step, int precision)
void RNA_define_free(BlenderRNA *)
#define IS_DNATYPE_BOOLEAN_BITSHIFT_FULLRANGE_COMPAT(_str)
void RNA_def_property_tags(PropertyRNA *prop, int tags)
void RNA_def_property_int_sdna(PropertyRNA *prop, const char *structname, const char *propname)
PropertyDefRNA * rna_findlink(ListBase *listbase, const char *identifier)
void RNA_def_struct_translation_context(StructRNA *srna, const char *context)
void RNA_def_property_float_array_default(PropertyRNA *prop, const float *array)
void RNA_def_property_int_default_func(PropertyRNA *prop, const char *get_default)
static StructDefRNA * rna_find_def_struct(StructRNA *srna)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, const int default_value, const int hardmin, const int hardmax, const char *ui_name, const char *ui_description, const int softmin, const int softmax)
int rna_parameter_size_pad(const int size)
void RNA_def_property_boolean_negative_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t booleanbit)
void RNA_def_struct_nested(BlenderRNA *brna, StructRNA *srna, const char *structname)
void RNA_define_fallback_property_update(int noteflag, const char *updatefunc)
void RNA_def_property_string_funcs_runtime(PropertyRNA *prop, StringPropertyGetFunc getfunc, StringPropertyLengthFunc lengthfunc, StringPropertySetFunc setfunc)
void RNA_def_property_override_flag(PropertyRNA *prop, PropertyOverrideFlag flag)
void rna_addtail(ListBase *listbase, void *vlink)
void RNA_def_parameter_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
void rna_builtin_properties_next(CollectionPropertyIterator *iter)
void rna_builtin_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
PointerRNA rna_builtin_properties_get(CollectionPropertyIterator *iter)
PointerRNA rna_builtin_type_get(PointerRNA *ptr)
bool(*)(Main *bmain, RNAPropertyOverrideApplyContext &rnaapply_ctx) RNAPropOverrideApply
StructRNA *(*)(PointerRNA *ptr) StructRefineFunc
void(*)(PointerRNA *ptr, bool *values) PropBooleanArrayGetFunc
void(*)(CollectionPropertyIterator *iter) PropCollectionNextFunc
int(*)(PointerRNA *ptr) PropStringLengthFunc
void(*)(CollectionPropertyIterator *iter, PointerRNA *ptr) PropCollectionBeginFunc
bool(*)(PointerRNA *ptr, int key, PointerRNA *r_ptr) PropCollectionLookupIntFunc
PointerRNA(*)(CollectionPropertyIterator *iter) PropCollectionGetFunc
IDProperty **(*)(PointerRNA *ptr) IDPropertiesFunc
void(*)(PointerRNA *ptr, const PointerRNA value, ReportList *reports) PropPointerSetFunc
@ PROP_INTERN_PTR_OWNERSHIP_FORCED
@ PROP_INTERN_FREE_POINTERS
int(*)(const PointerRNA *ptr, int index) ItemEditableFunc
bool(*)(PointerRNA *ptr, PropertyRNA *prop) PropBooleanGetFuncEx
void(*)(PointerRNA *ptr, float *min, float *max, float *softmin, float *softmax) PropFloatRangeFunc
void(*)(PointerRNA *ptr, int *min, int *max, int *softmin, int *softmax) PropIntRangeFunc
bool(*)(PointerRNA *ptr, int key, const PointerRNA *assign_ptr) PropCollectionAssignIntFunc
void(*)(PointerRNA *ptr, int value) PropEnumSetFunc
int(*)(PointerRNA *ptr) PropEnumGetFunc
void(*)(Main *bmain, Scene *active_scene, PointerRNA *ptr) UpdateFunc
int(*)(const PointerRNA *ptr, const char **r_info) EditableFunc
int(*)(PointerRNA *ptr, PropertyRNA *prop) PropEnumGetFuncEx
void(*)(PointerRNA *ptr, int value) PropIntSetFunc
int(*)(const PointerRNA *ptr, int length[RNA_MAX_ARRAY_DIMENSION]) PropArrayLengthGetFunc
const EnumPropertyItem *(*)(bContext *C, PointerRNA *ptr, PropertyRNA *prop, bool *r_free) PropEnumItemFunc
PointerRNA(*)(PointerRNA *ptr) PropPointerGetFunc
bool(*)(PointerRNA *ptr, const PointerRNA value) PropPointerPollFunc
void(*)(PointerRNA *ptr, PropertyRNA *prop, float *values) PropFloatArrayGetFuncEx
void(*)(PointerRNA *ptr, const float *values) PropFloatArraySetFunc
StructRNA *(*)(PointerRNA *ptr) PropPointerTypeFunc
void(*)(Main *bmain, RNAPropertyOverrideDiffContext &rnadiff_ctx) RNAPropOverrideDiff
void(*)(PointerRNA *ptr, char *value) PropStringGetFunc
void(*)(PointerRNA *ptr, bool value) PropBooleanSetFunc
bool(*)(PointerRNA *ptr, const char *key, PointerRNA *r_ptr) PropCollectionLookupStringFunc
std::optional< std::string >(*)(const PointerRNA *ptr) StructPathFunc
int(*)(PointerRNA *ptr) PropCollectionLengthFunc
#define CONTAINER_RNA_ID(cont)
void(*)(PointerRNA *ptr, PropertyRNA *prop, int *values) PropIntArrayGetFuncEx
void(*)(PointerRNA *ptr, PropertyRNA *prop, bool *values) PropBooleanArrayGetFuncEx
void(*)(PointerRNA *ptr, const bool *values) PropBooleanArraySetFunc
bool(*)(PointerRNA *ptr) PropBooleanGetFunc
bool(*)(Main *bmain, PointerRNA *ptr_local, PointerRNA *ptr_reference, PointerRNA *ptr_storage, PropertyRNA *prop_local, PropertyRNA *prop_reference, PropertyRNA *prop_storage, int len_local, int len_reference, int len_storage, IDOverrideLibraryPropertyOperation *opop) RNAPropOverrideStore
void(*)(PointerRNA *ptr, int *values) PropIntArrayGetFunc
void(*)(PointerRNA *ptr, float value) PropFloatSetFunc
void(*)(PointerRNA *ptr, const int *values) PropIntArraySetFunc
int(*)(PointerRNA *ptr, PropertyRNA *prop) PropIntGetFuncEx
int(*)(PointerRNA *ptr) PropIntGetFunc
float(*)(PointerRNA *ptr, PropertyRNA *prop) PropFloatGetFuncEx
void(*)(PointerRNA *ptr, const char *value) PropStringSetFunc
float(*)(PointerRNA *ptr) PropFloatGetFunc
void(*)(PointerRNA *ptr, float *values) PropFloatArrayGetFunc
void(*)(CollectionPropertyIterator *iter) PropCollectionEndFunc
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
PropCollectionNextFunc next
PropCollectionLookupStringFunc lookupstring
PropCollectionLengthFunc length
PropCollectionLookupIntFunc lookupint
PropCollectionBeginFunc begin
PropCollectionAssignIntFunc assignint
PropCollectionEndFunc end
PropCollectionGetFunc get
blender::CustomIDVectorSet< PropertyRNA *, PropertyRNAIdentifierGetter > * prop_lookup_set
const EnumPropertyItem * item
PropEnumGetFuncEx get_default
const char * native_enum_type
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
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
const char * dnastructfromprop
const char * dnastructname
const char * dnalengthstructname
const char * dnalengthname
const char * dnastructfromname
ItemEditableFunc itemeditable
PropArrayLengthGetFunc getlength
const char * translation_context
RNAPropOverrideApply override_apply
unsigned int arraydimension
PropertyPathTemplateType path_template_type
RNAPropOverrideStore override_store
RNAPropOverrideDiff override_diff
unsigned int arraylength[RNA_MAX_ARRAY_DIMENSION]
unsigned int totarraylength
SDNA_StructMember members[]
struct SDNA::@004326156331245255142220052114124163207305010377 alias
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