Blender V4.5
DNA_genfile.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
9
10#pragma once
11
12#include "intern/dna_utils.h"
13
14struct SDNA;
15
21extern const unsigned char DNAstr[];
23extern const int DNAlen;
24
32typedef enum eSDNA_Type {
38 /* SDNA_TYPE_LONG = 5, */ /* deprecated (use as int) */
39 /* SDNA_TYPE_ULONG = 6, */ /* deprecated (use as int) */
42/* ,SDNA_TYPE_VOID = 9 */
43/* define so switch statements don't complain */
44#define SDNA_TYPE_VOID 9
56
61 /* Struct has disappeared
62 * (values of this struct type will not be loaded by the current Blender) */
64 /* Struct is the same
65 * (can be loaded with straight memory copy after any necessary endian conversion) */
67 /* Struct is different in some way
68 * (needs to be copied/converted field by field) */
70 /* This is only used temporarily by #DNA_struct_get_compareflags. */
72};
73
77struct SDNA *DNA_sdna_from_data(const void *data,
78 int data_len,
79 bool do_endian_swap,
80 bool data_alloc,
81 bool do_alias,
82 const char **r_error_message);
83void DNA_sdna_free(struct SDNA *sdna);
84
85/* Access for current Blender versions SDNA. */
86void DNA_sdna_current_init(void);
87/* borrowed reference */
88const struct SDNA *DNA_sdna_current_get(void);
89void DNA_sdna_current_free(void);
90
97 const struct SDNA *newsdna,
98 const char *compare_flags);
99void DNA_reconstruct_info_free(struct DNA_ReconstructInfo *reconstruct_info);
100
108 const char *str,
109 unsigned int *struct_index_last);
112 const char *str,
113 unsigned int *struct_index_last);
117int DNA_struct_find_with_alias(const struct SDNA *sdna, const char *str);
119int DNA_struct_find_index_without_alias(const struct SDNA *sdna, const char *str);
120
124bool DNA_struct_exists_with_alias(const struct SDNA *sdna, const char *str);
126bool DNA_struct_exists_without_alias(const struct SDNA *sdna, const char *stype);
131 const char *stype,
132 const char *vartype,
133 const char *name);
136 const char *stype,
137 const char *vartype,
138 const char *name);
139
147void DNA_struct_switch_endian(const struct SDNA *sdna, int struct_index, char *data);
152const char *DNA_struct_get_compareflags(const struct SDNA *oldsdna, const struct SDNA *newsdna);
161void *DNA_struct_reconstruct(const struct DNA_ReconstructInfo *reconstruct_info,
162 int old_struct_index,
163 int blocks,
164 const void *old_blocks,
165 const char *alloc_name);
166
172 const char *stype,
173 const char *vartype,
174 const char *name);
180 const char *stype,
181 const char *vartype,
182 const char *name);
183
191int DNA_struct_member_size(const struct SDNA *sdna, short type, short member_index);
192
196int DNA_elem_type_size(eSDNA_Type elem_nr);
197
203int DNA_struct_size(const struct SDNA *sdna, int struct_index);
204
208int DNA_struct_alignment(const struct SDNA *sdna, int struct_index);
209
213const char *DNA_struct_identifier(struct SDNA *sdna, int struct_index);
214
222bool DNA_sdna_patch_struct_by_name(struct SDNA *sdna,
223 const char *old_type_name,
224 const char *new_type_name);
235 const char *type_name,
236 const char *old_member_name,
237 const char *new_member_name);
238
239void DNA_sdna_alias_data_ensure(struct SDNA *sdna);
240
246
247/* For versioning, avoid verbosity selecting between with/without alias versions of functions. */
248#ifdef DNA_GENFILE_VERSIONING_MACROS
249# define DNA_struct_exists(sdna, str) DNA_struct_exists_with_alias(sdna, str)
250# define DNA_struct_member_exists(sdna, stype, vartype, name) \
251 DNA_struct_member_exists_with_alias(sdna, stype, vartype, name)
252#endif
const char * DNA_struct_get_compareflags(const struct SDNA *oldsdna, const struct SDNA *newsdna)
void DNA_sdna_free(struct SDNA *sdna)
eSDNA_Type
Definition DNA_genfile.h:32
@ SDNA_TYPE_CHAR
Definition DNA_genfile.h:33
@ SDNA_TYPE_RAW_DATA
Definition DNA_genfile.h:54
@ SDNA_TYPE_INT
Definition DNA_genfile.h:37
@ SDNA_TYPE_UINT64
Definition DNA_genfile.h:46
@ SDNA_TYPE_DOUBLE
Definition DNA_genfile.h:41
@ SDNA_TYPE_SHORT
Definition DNA_genfile.h:35
@ SDNA_TYPE_UCHAR
Definition DNA_genfile.h:34
@ SDNA_TYPE_INT8
Definition DNA_genfile.h:47
@ SDNA_TYPE_INT64
Definition DNA_genfile.h:45
@ SDNA_TYPE_FLOAT
Definition DNA_genfile.h:40
@ SDNA_TYPE_USHORT
Definition DNA_genfile.h:36
const struct SDNA * DNA_sdna_current_get(void)
int DNA_struct_find_with_alias(const struct SDNA *sdna, const char *str)
const unsigned char DNAstr[]
int DNA_elem_type_size(eSDNA_Type elem_nr)
int DNA_struct_member_offset_by_name_with_alias(const struct SDNA *sdna, const char *stype, const char *vartype, const char *name)
int DNA_struct_size(const struct SDNA *sdna, int struct_index)
const char * DNA_struct_identifier(struct SDNA *sdna, int struct_index)
void DNA_sdna_current_free(void)
bool DNA_sdna_patch_struct_by_name(struct SDNA *sdna, const char *old_type_name, const char *new_type_name)
void DNA_sdna_current_init(void)
void * DNA_struct_reconstruct(const struct DNA_ReconstructInfo *reconstruct_info, int old_struct_index, int blocks, const void *old_blocks, const char *alloc_name)
bool DNA_struct_exists_without_alias(const struct SDNA *sdna, const char *stype)
struct DNA_ReconstructInfo * DNA_reconstruct_info_create(const struct SDNA *oldsdna, const struct SDNA *newsdna, const char *compare_flags)
void DNA_sdna_alias_data_ensure(struct SDNA *sdna)
bool DNA_struct_member_exists_with_alias(const struct SDNA *sdna, const char *stype, const char *vartype, const char *name)
struct SDNA * DNA_sdna_from_data(const void *data, int data_len, bool do_endian_swap, bool data_alloc, bool do_alias, const char **r_error_message)
int DNA_struct_member_size(const struct SDNA *sdna, short type, short member_index)
int DNA_struct_find_index_with_alias_ex(const struct SDNA *sdna, const char *str, unsigned int *struct_index_last)
void DNA_struct_switch_endian(const struct SDNA *sdna, int struct_index, char *data)
bool DNA_struct_member_exists_without_alias(const struct SDNA *sdna, const char *stype, const char *vartype, const char *name)
const int DNAlen
int DNA_struct_find_index_without_alias(const struct SDNA *sdna, const char *str)
void DNA_reconstruct_info_free(struct DNA_ReconstructInfo *reconstruct_info)
bool DNA_sdna_patch_struct_member_by_name(struct SDNA *sdna, const char *type_name, const char *old_member_name, const char *new_member_name)
int DNA_struct_alignment(const struct SDNA *sdna, int struct_index)
int DNA_struct_find_index_without_alias_ex(const struct SDNA *sdna, const char *str, unsigned int *struct_index_last)
eSDNA_StructCompare
Definition DNA_genfile.h:60
@ SDNA_CMP_EQUAL
Definition DNA_genfile.h:66
@ SDNA_CMP_REMOVED
Definition DNA_genfile.h:63
@ SDNA_CMP_UNKNOWN
Definition DNA_genfile.h:71
@ SDNA_CMP_NOT_EQUAL
Definition DNA_genfile.h:69
void DNA_sdna_alias_data_ensure_structs_map(struct SDNA *sdna)
bool DNA_struct_exists_with_alias(const struct SDNA *sdna, const char *str)
int DNA_struct_member_offset_by_name_without_alias(const struct SDNA *sdna, const char *stype, const char *vartype, const char *name)
BMesh const char void * data
#define str(s)
const char * compare_flags
bool data_alloc