37 # define DYNAMIC_ARRAY_SIZE 64
38 # define MARRAY_DIM [3][4][5]
39 # define MARRAY_TOTDIM 3
40 # define MARRAY_DIMSIZE 4, 5
41 # define MARRAY_SIZE(type) (sizeof(type MARRAY_DIM) / sizeof(type))
42 # define DYNAMIC_MARRAY_DIM [3][4][5]
43 # define DYNAMIC_MARRAY_SIZE(type) (sizeof(type DYNAMIC_MARRAY_DIM) / sizeof(type))
47 # define DEF_VARS(type, prefix) \
48 static type prefix##arr[ARRAY_SIZE]; \
49 static type prefix##darr[DYNAMIC_ARRAY_SIZE]; \
50 static int prefix##darr_len = ARRAY_SIZE; \
51 static type prefix##marr MARRAY_DIM; \
52 static type prefix##dmarr DYNAMIC_MARRAY_DIM; \
53 static int prefix##dmarr_len = sizeof(prefix##dmarr); \
56 # define DEF_GET_SET(type, arr) \
57 void rna_Test_##arr##_get(PointerRNA *ptr, type *values) \
59 memcpy(values, arr, sizeof(arr)); \
62 void rna_Test_##arr##_set(PointerRNA *ptr, const type *values) \
64 memcpy(arr, values, sizeof(arr)); \
68 # define DEF_GET_SET_LEN(arr, max) \
69 static int rna_Test_##arr##_get_length(PointerRNA *ptr) \
74 static int rna_Test_##arr##_set_length(PointerRNA *ptr, int length) \
89 DEF_GET_SET(
float, farr);
90 DEF_GET_SET(
int, iarr);
91 DEF_GET_SET(
int, barr);
93 DEF_GET_SET(
float, fmarr);
94 DEF_GET_SET(
int, imarr);
95 DEF_GET_SET(
int, bmarr);
97 DEF_GET_SET(
float, fdarr);
98 DEF_GET_SET_LEN(fdarr, DYNAMIC_ARRAY_SIZE);
99 DEF_GET_SET(
int, idarr);
100 DEF_GET_SET_LEN(idarr, DYNAMIC_ARRAY_SIZE);
101 DEF_GET_SET(
int, bdarr);
102 DEF_GET_SET_LEN(bdarr, DYNAMIC_ARRAY_SIZE);
104 DEF_GET_SET(
float, fdmarr);
105 DEF_GET_SET_LEN(fdmarr, DYNAMIC_MARRAY_SIZE(
float));
106 DEF_GET_SET(
int, idmarr);
107 DEF_GET_SET_LEN(idmarr, DYNAMIC_MARRAY_SIZE(
int));
108 DEF_GET_SET(
int, bdmarr);
109 DEF_GET_SET_LEN(bdmarr, DYNAMIC_MARRAY_SIZE(
int));
120 unsigned short dimsize[] = {MARRAY_DIMSIZE};
126 srna,
"farr",
ARRAY_SIZE,
NULL, 0.0f, 0.0f,
"farr",
"float array", 0.0f, 0.0f);
144 "dynamic float array",
149 prop,
"rna_Test_fdarr_get_length",
"rna_Test_fdarr_set_length");
153 srna,
"idarr", DYNAMIC_ARRAY_SIZE,
NULL, 0, 0,
"idarr",
"int array", 0, 0);
156 prop,
"rna_Test_idarr_get_length",
"rna_Test_idarr_set_length");
162 prop,
"rna_Test_bdarr_get_length",
"rna_Test_bdarr_set_length");
168 RNA_def_property_multidimensional_array(prop, MARRAY_SIZE(
float), MARRAY_TOTDIM, dimsize);
172 RNA_def_property_multidimensional_array(prop, MARRAY_SIZE(
int), MARRAY_TOTDIM, dimsize);
176 RNA_def_property_multidimensional_array(prop, MARRAY_SIZE(
int), MARRAY_TOTDIM, dimsize);
182 RNA_def_property_multidimensional_array(
183 prop, DYNAMIC_MARRAY_SIZE(
float), MARRAY_TOTDIM, dimsize);
186 prop,
"rna_Test_fdmarr_get_length",
"rna_Test_fdmarr_set_length");
190 RNA_def_property_multidimensional_array(prop, DYNAMIC_MARRAY_SIZE(
int), MARRAY_TOTDIM, dimsize);
193 prop,
"rna_Test_idmarr_get_length",
"rna_Test_idmarr_set_length");
197 RNA_def_property_multidimensional_array(prop, DYNAMIC_MARRAY_SIZE(
int), MARRAY_TOTDIM, dimsize);
200 prop,
"rna_Test_bdmarr_get_length",
"rna_Test_bdmarr_set_length");
PropertyRNA * RNA_def_int_array(StructOrFunctionRNA *cont_, const char *identifier, int len, const int *default_value, int hardmin, int hardmax, const char *ui_name, const char *ui_description, int softmin, int softmax)
PropertyRNA * RNA_def_float_array(StructOrFunctionRNA *cont_, const char *identifier, int len, const float *default_value, float hardmin, float hardmax, const char *ui_name, const char *ui_description, float softmin, float softmax)
void RNA_def_property_float_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
void RNA_def_property_boolean_funcs(PropertyRNA *prop, const char *get, const char *set)
void RNA_def_property_dynamic_array_funcs(PropertyRNA *prop, const char *getlength)
void RNA_def_struct_sdna(StructRNA *srna, const char *structname)
PropertyRNA * RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
StructRNA * RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *from)
void RNA_def_property_int_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
PropertyRNA * RNA_def_boolean_array(StructOrFunctionRNA *cont_, const char *identifier, int len, bool *default_value, const char *ui_name, const char *ui_description)
void RNA_def_test(BlenderRNA *brna)