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:
authorCampbell Barton <ideasman42@gmail.com>2016-07-12 04:48:04 +0300
committerCampbell Barton <ideasman42@gmail.com>2016-07-12 04:56:45 +0300
commit0b3183d13cdbdcb06317fd1dd9b04ccd93a767c1 (patch)
tree84cde74eaf3706116c94920ecc813b83a1346017 /source/blender/makesdna/DNA_genfile.h
parent7212ebd09f9720883581221be923ae5e97ff5d76 (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.h11
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);