diff options
author | Campbell Barton <ideasman42@gmail.com> | 2016-07-12 04:48:04 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2016-07-12 04:56:45 +0300 |
commit | 0b3183d13cdbdcb06317fd1dd9b04ccd93a767c1 (patch) | |
tree | 84cde74eaf3706116c94920ecc813b83a1346017 /source/blender/makesdna/DNA_genfile.h | |
parent | 7212ebd09f9720883581221be923ae5e97ff5d76 (diff) |
writefile: remove SDNA last-hit, optimize DNA reconstruct
- Move last-hit index out of SDNA struct
(allows for access by multiple threads).
- Replace O(n^2) search with hash lookup in DNA reconstruction.
Diffstat (limited to 'source/blender/makesdna/DNA_genfile.h')
-rw-r--r-- | source/blender/makesdna/DNA_genfile.h | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/source/blender/makesdna/DNA_genfile.h b/source/blender/makesdna/DNA_genfile.h index 77877f7bada..1b558b11cf0 100644 --- a/source/blender/makesdna/DNA_genfile.h +++ b/source/blender/makesdna/DNA_genfile.h @@ -79,10 +79,13 @@ struct SDNA *DNA_sdna_from_data( bool do_endian_swap, bool data_alloc); void DNA_sdna_free(struct SDNA *sdna); -int DNA_struct_find_nr(struct SDNA *sdna, const char *str); -void DNA_struct_switch_endian(struct SDNA *oldsdna, int oldSDNAnr, char *data); -char *DNA_struct_get_compareflags(struct SDNA *sdna, struct SDNA *newsdna); -void *DNA_struct_reconstruct(struct SDNA *newsdna, struct SDNA *oldsdna, char *compflags, int oldSDNAnr, int blocks, void *data); +int DNA_struct_find_nr_ex(const struct SDNA *sdna, const char *str, unsigned int *index_last); +int DNA_struct_find_nr(const struct SDNA *sdna, const char *str); +void DNA_struct_switch_endian(const struct SDNA *oldsdna, int oldSDNAnr, char *data); +char *DNA_struct_get_compareflags(const struct SDNA *sdna, const struct SDNA*newsdna); +void *DNA_struct_reconstruct( + const struct SDNA *newsdna, const struct SDNA *oldsdna, + char *compflags, int oldSDNAnr, int blocks, void *data); int DNA_elem_array_size(const char *str); int DNA_elem_offset(struct SDNA *sdna, const char *stype, const char *vartype, const char *name); |