Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArystanbek Dyussenov <arystan.d@gmail.com>2009-09-06 19:13:57 +0400
committerArystanbek Dyussenov <arystan.d@gmail.com>2009-09-06 19:13:57 +0400
commit62138aaa5a7f931fa2ddb4815f755413111cceb0 (patch)
treed675dc3decf8f86ec0dd60a659976723784dd5f4 /source/blender/makesrna/intern/rna_internal_types.h
parent3d64d65ad9c43f82bd4b9241b4a7fdde0fd12000 (diff)
Python part of multidim. array support for RNA complete.
Multidim. arrays can now be modified at any level, for example: struc.arrayprop = x struc.arrayprop[i] = x struc.arrayprop[i][j] = x struc.arrayprop[i][j][k] = x etc... Approriate rvalue type/length checking is done. To ensure all works correctly, I wrote automated tests in release/test/rna_array.py. These tests cover: array/item access, assignment on different levels, tests that proper exceptions are thrown on invalid item access/assignment. The tests use properties of the RNA Test struct defined in rna_test.c. This struct is only compiled when building with BF_UNIT_TEST=1 scons arg. Currently unit tests are run manually by loading the script in the Text Editor. Here's the output I have: http://www.pasteall.org/7644 Things to improve here: - better exception messages when multidim. array assignment fails. Those we have currently are not very useful for multidim. - add tests for slice assignment
Diffstat (limited to 'source/blender/makesrna/intern/rna_internal_types.h')
-rw-r--r--source/blender/makesrna/intern/rna_internal_types.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/source/blender/makesrna/intern/rna_internal_types.h b/source/blender/makesrna/intern/rna_internal_types.h
index d706fd5ac19..2bd89dbd3bf 100644
--- a/source/blender/makesrna/intern/rna_internal_types.h
+++ b/source/blender/makesrna/intern/rna_internal_types.h
@@ -39,7 +39,12 @@ struct bContext;
struct IDProperty;
struct GHash;
+#ifdef UNIT_TEST
+#define RNA_MAX_ARRAY 64
+#else
#define RNA_MAX_ARRAY 32
+#endif
+
#define RNA_MAX_ARRAY_DIMENSION 3
/* Function Callbacks */
@@ -134,11 +139,10 @@ struct PropertyRNA {
PropertySubType subtype;
/* if an array this is > 0, specifying the length */
unsigned int arraylength;
- /* these, if non-NULL, override arraylength */
+ /* if non-NULL, overrides arraylength. Must not return 0? */
PropArrayLengthGetFunc getlength;
/* if NULL, length cannot be changed by a user */
PropArrayLengthSetFunc setlength;
- /* used only for dynamic arrays for now, default 1 */
unsigned short arraydimension;
/* dimension sizes for dimensions greater than 1, first dimension size is not specified */
unsigned short dimsize[RNA_MAX_ARRAY_DIMENSION - 1];