54 current = current * 10 + (c -
'0');
70 return ((c >=
'a' && c <=
'z') || (c >=
'A' && c <=
'Z') || (c >=
'0' && c <=
'9') ||
76 uint elem_full_offset = 0;
81 while (!
is_identifier(member_full[elem_full_offset]) && member_full[elem_full_offset]) {
84 return elem_full_offset;
89 uint elem_full_offset = 0;
90 while (
is_identifier(member_full_trimmed[elem_full_offset])) {
93 return elem_full_offset;
99 const char *member_src_trimmed = member_full_src + member_src_offset;
101 memcpy(member_id_dst, member_src_trimmed, member_src_trimmed_len);
102 member_id_dst[member_src_trimmed_len] =
'\0';
103 return member_src_trimmed_len;
109 const char *member_trimmed = member + member_offset;
111 memmove(member, member_trimmed, member_trimmed_len);
112 member[member_trimmed_len] =
'\0';
113 return member_trimmed_len;
117 const int member_id_len,
118 const char *member_full,
119 uint *r_member_full_offset)
121 BLI_assert(strlen(member_id) == member_id_len);
123 const char *elem_full_trim = member_full + elem_full_offset;
124 if (strncmp(member_id, elem_full_trim, member_id_len) == 0) {
125 const char c = elem_full_trim[member_id_len];
127 *r_member_full_offset = elem_full_offset;
135 const char *member_id_src,
136 const int member_id_src_len,
137 const char *member_id_dst,
138 const int member_id_dst_len,
139 const char *member_full_src,
140 const int member_full_src_len,
141 const uint member_full_src_offset_len)
143 BLI_assert(strlen(member_id_src) == member_id_src_len);
144 BLI_assert(strlen(member_id_dst) == member_id_dst_len);
145 BLI_assert(strlen(member_full_src) == member_full_src_len);
149 const int member_full_dst_len = (member_full_src_len - member_id_src_len) + member_id_dst_len;
150 char *member_full_dst =
static_cast<char *
>(
153 if (member_full_src_offset_len != 0) {
154 memcpy(member_full_dst, member_full_src, member_full_src_offset_len);
155 i = member_full_src_offset_len;
157 memcpy(&member_full_dst[
i], member_id_dst, member_id_dst_len + 1);
158 i += member_id_dst_len;
159 const uint member_full_src_offset_end = member_full_src_offset_len + member_id_src_len;
161 (member_full_src_offset_end - member_full_src_offset_len));
162 if (member_full_src[member_full_src_offset_end] !=
'\0') {
163 const int member_full_tail_len = (member_full_src_len - member_full_src_offset_end);
164 memcpy(&member_full_dst[
i],
165 &member_full_src[member_full_src_offset_end],
166 member_full_tail_len + 1);
167 i += member_full_tail_len;
169 BLI_assert((strlen(member_full_dst) == member_full_dst_len) && (
i == member_full_dst_len));
171 return member_full_dst;
182 const char *
const *pair =
static_cast<const char *
const *
>(
ptr);
188 const char *
const *pair_a =
static_cast<const char *
const *
>(a);
189 const char *
const *pair_b =
static_cast<const char *
const *
>(
b);
190 return (
STREQ(pair_a[0], pair_b[0]) &&
STREQ(pair_a[1], pair_b[1])) ?
false :
true;
195 GHash *type_map_local =
nullptr;
197 const char *type_data[][2] = {
198#define DNA_STRUCT_RENAME(old, new) {#old, #new},
199#define DNA_STRUCT_RENAME_MEMBER(struct_name, old, new)
201#undef DNA_STRUCT_RENAME
202#undef DNA_STRUCT_RENAME_MEMBER
205 int elem_key, elem_val;
216 BLI_ghash_insert(type_map, (
void *)type_data[
i][elem_key], (
void *)type_data[
i][elem_val]);
220 const char *renames[][2] = {
222 {
"uchar",
"uint8_t"},
223 {
"short",
"int16_t"},
224 {
"ushort",
"uint16_t"},
229 BLI_ghash_insert(type_map, (
void *)renames[
i][elem_key], (
void *)renames[
i][elem_val]);
233 *r_type_map = type_map;
242 if (r_member_map !=
nullptr) {
243 const char *member_data[][3] = {
244#define DNA_STRUCT_RENAME(old, new)
245#define DNA_STRUCT_RENAME_MEMBER(struct_name, old, new) {#struct_name, #old, #new},
247#undef DNA_STRUCT_RENAME
248#undef DNA_STRUCT_RENAME_MEMBER
251 int elem_key, elem_val;
264 str_pair[0] =
static_cast<const char *
>(
266 str_pair[1] = member_data[
i][elem_key];
267 BLI_ghash_insert(member_map, (
void *)str_pair, (
void *)member_data[
i][elem_val]);
269 *r_member_map = member_map;
272 if (type_map_local) {
303 return "GroupObject";
319 return "CollectionObject";
333 memcpy(dst, src,
size);
339 memset(dst, 0,
size);
345 void *tmp = alloca(
size);
346 memcpy(tmp, a,
size);
348 memcpy(
b, tmp,
size);
void * BLI_ghash_lookup_default(const GHash *gh, const void *key, void *val_default) ATTR_WARN_UNUSED_RESULT
unsigned int BLI_ghashutil_strhash_p(const void *ptr)
GHash * BLI_ghash_new_ex(GHashHashFP hashfp, GHashCmpFP cmpfp, const char *info, unsigned int nentries_reserve) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
GHash * BLI_ghash_str_new_ex(const char *info, unsigned int nentries_reserve) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void BLI_ghash_insert(GHash *gh, void *key, void *val)
void BLI_ghash_free(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
void * BLI_memarena_alloc(MemArena *ma, size_t size) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC ATTR_ALLOC_SIZE(2)
#define UNUSED_VARS_NDEBUG(...)
Read Guarded memory(de)allocation.
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
const char * DNA_struct_rename_legacy_hack_static_from_alias(const char *name)
const char * DNA_struct_rename_legacy_hack_alias_from_static(const char *name)
uint DNA_member_id_offset_end(const char *member_full_trimmed)
int DNA_member_array_num(const char *str)
static bool strhash_pair_cmp(const void *a, const void *b)
void _DNA_internal_memzero(void *dst, size_t size)
void _DNA_internal_swap(void *a, void *b, size_t size)
bool DNA_member_id_match(const char *member_id, const int member_id_len, const char *member_full, uint *r_member_full_offset)
uint DNA_member_id_offset_start(const char *member_full)
void _DNA_internal_memcpy(void *dst, const void *src, size_t size)
uint DNA_member_id_strip(char *member)
uint DNA_member_id_strip_copy(char *member_id_dst, const char *member_full_src)
static bool is_identifier(const char c)
char * DNA_member_id_rename(MemArena *mem_arena, const char *member_id_src, const int member_id_src_len, const char *member_id_dst, const int member_id_dst_len, const char *member_full_src, const int member_full_src_len, const uint member_full_src_offset_len)
static uint strhash_pair_p(const void *ptr)
@ DNA_RENAME_ALIAS_FROM_STATIC
@ DNA_RENAME_STATIC_FROM_ALIAS
void DNA_alias_maps(enum eDNA_RenameDir version_dir, struct GHash **r_type_map, struct GHash **r_member_map)
static MemArena * mem_arena
void * MEM_malloc_arrayN(size_t len, size_t size, const char *str)