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:
authorJacques Lucke <jacques@blender.org>2020-09-29 13:12:09 +0300
committerJacques Lucke <jacques@blender.org>2020-09-29 13:12:09 +0300
commit762d93a26b973b61ef52e7326aa8f272ccbe7007 (patch)
tree608e44f29ac506d31a12214261b96841534f85b6 /source/blender/makesrna/intern/rna_define.c
parent32d4a67017ecf4af75a9bfde885526550a6534ba (diff)
DNA: use better type for SDNA->structs
The data layout remains exactly the same.. This change just gives all the elements in `SDNA->structs` names, making it more comfortable to work with the data. Reviewers: campbellbarton Differential Revision: https://developer.blender.org/D8926
Diffstat (limited to 'source/blender/makesrna/intern/rna_define.c')
-rw-r--r--source/blender/makesrna/intern/rna_define.c21
1 files changed, 9 insertions, 12 deletions
diff --git a/source/blender/makesrna/intern/rna_define.c b/source/blender/makesrna/intern/rna_define.c
index e94dad59176..875c5398488 100644
--- a/source/blender/makesrna/intern/rna_define.c
+++ b/source/blender/makesrna/intern/rna_define.c
@@ -457,8 +457,7 @@ static int rna_find_sdna_member(SDNA *sdna,
int *offset)
{
const char *dnaname;
- const short *sp;
- int a, b, structnr, totmember, cmp;
+ int b, structnr, cmp;
if (!DefRNA.preprocess) {
CLOG_ERROR(&LOG, "only during preprocessing.");
@@ -474,17 +473,15 @@ static int rna_find_sdna_member(SDNA *sdna,
return 0;
}
- sp = sdna->structs[structnr];
- totmember = sp[1];
- sp += 2;
-
- for (a = 0; a < totmember; a++, sp += 2) {
- const int size = DNA_elem_size_nr(sdna, sp[0], sp[1]);
- dnaname = sdna->alias.names[sp[1]];
+ const SDNA_Struct *struct_info = sdna->structs[structnr];
+ for (int a = 0; a < struct_info->members_len; a++) {
+ const SDNA_StructMember *member = &struct_info->members[a];
+ const int size = DNA_elem_size_nr(sdna, member->type, member->name);
+ dnaname = sdna->alias.names[member->name];
cmp = rna_member_cmp(dnaname, membername);
if (cmp == 1) {
- smember->type = sdna->alias.types[sp[0]];
+ smember->type = sdna->alias.types[member->type];
smember->name = dnaname;
smember->offset = *offset;
smember->size = size;
@@ -512,7 +509,7 @@ static int rna_find_sdna_member(SDNA *sdna,
smember->arraylength = 0;
membername = strstr(membername, ".") + strlen(".");
- rna_find_sdna_member(sdna, sdna->alias.types[sp[0]], membername, smember, offset);
+ rna_find_sdna_member(sdna, sdna->alias.types[member->type], membername, smember, offset);
return 1;
}
@@ -528,7 +525,7 @@ static int rna_find_sdna_member(SDNA *sdna,
*offset = -1;
}
membername = strstr(membername, "->") + strlen("->");
- rna_find_sdna_member(sdna, sdna->alias.types[sp[0]], membername, smember, offset);
+ rna_find_sdna_member(sdna, sdna->alias.types[member->type], membername, smember, offset);
return 1;
}