diff options
Diffstat (limited to 'source/blender/makesrna/intern/rna_access.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_access.c | 44 |
1 files changed, 18 insertions, 26 deletions
diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index 71ebad2127a..55e3ae28342 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -55,7 +55,6 @@ void RNA_exit() void RNA_main_pointer_create(struct Main *main, PointerRNA *r_ptr) { - r_ptr->id.type= NULL; r_ptr->id.data= NULL; r_ptr->type= &RNA_Main; r_ptr->data= main; @@ -72,7 +71,6 @@ void RNA_id_pointer_create(ID *id, PointerRNA *r_ptr) idtype= rna_ID_refine(&tmp); } - r_ptr->id.type= idtype; r_ptr->id.data= id; r_ptr->type= idtype; r_ptr->data= id; @@ -89,7 +87,6 @@ void RNA_pointer_create(ID *id, StructRNA *type, void *data, PointerRNA *r_ptr) idtype= rna_ID_refine(&tmp); } - r_ptr->id.type= idtype; r_ptr->id.data= id; r_ptr->type= type; r_ptr->data= data; @@ -99,22 +96,37 @@ static void rna_pointer_inherit_id(StructRNA *type, PointerRNA *parent, PointerR { if(type && type->flag & STRUCT_ID) { ptr->id.data= ptr->data; - ptr->id.type= type; } else { ptr->id.data= parent->id.data; - ptr->id.type= parent->id.type; } } void RNA_blender_rna_pointer_create(PointerRNA *r_ptr) { - r_ptr->id.type= NULL; r_ptr->id.data= NULL; r_ptr->type= &RNA_BlenderRNA; r_ptr->data= &BLENDER_RNA; } +PointerRNA rna_pointer_inherit_refine(PointerRNA *ptr, StructRNA *type, void *data) +{ + PointerRNA result; + + if(data) { + result.data= data; + result.type= type; + rna_pointer_inherit_id(type, ptr, &result); + + if(type->refine) + result.type= type->refine(&result); + } + else + memset(&result, 0, sizeof(result)); + + return result; +} + /* ID Properties */ IDProperty *rna_idproperties_get(PointerRNA *ptr, int create) @@ -1365,26 +1377,6 @@ void rna_iterator_array_end(CollectionPropertyIterator *iter) MEM_freeN(iter->internal); } -/* Pointer Handling */ - -PointerRNA rna_pointer_inherit_refine(PointerRNA *ptr, StructRNA *type, void *data) -{ - PointerRNA result; - - if(data) { - result.data= data; - result.type= type; - rna_pointer_inherit_id(type, ptr, &result); - - if(type->refine) - result.type= type->refine(&result); - } - else - memset(&result, 0, sizeof(result)); - - return result; -} - /* RNA Path - Experiment */ static char *rna_path_token(const char **path, char *fixedbuf, int fixedlen, int bracket) |