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;
215 for (
int i = 0; i <
ARRAY_SIZE(type_data); i++) {
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"},
228 for (
int i = 0; i <
ARRAY_SIZE(renames); i++) {
229 BLI_ghash_insert(type_map, (
void *)renames[i][elem_key], (
void *)renames[i][elem_val]);
233 *r_type_map = type_map;
237 for (
int i = 0; i <
ARRAY_SIZE(type_data); i++) {
238 BLI_ghash_insert(type_map_local, (
void *)type_data[i][1], (
void *)type_data[i][0]);
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;
262 for (
int i = 0; i <
ARRAY_SIZE(member_data); i++) {
263 const char **str_pair =
static_cast<const char **
>(
265 str_pair[0] =
static_cast<const char *
>(
267 str_pair[1] = member_data[i][elem_key];
268 BLI_ghash_insert(member_map, (
void *)str_pair, (
void *)member_data[i][elem_val]);
270 *r_member_map = member_map;
273 if (type_map_local) {
296 if (
STREQ(
"bScreen", name)) {
300 if (
STREQ(
"Collection", name)) {
303 if (
STREQ(
"CollectionObject", name)) {
304 return "GroupObject";
312 if (
STREQ(
"Screen", name)) {
316 if (
STREQ(
"Group", name)) {
319 if (
STREQ(
"GroupObject", name)) {
320 return "CollectionObject";
334 memcpy(dst, src, size);
340 memset(dst, 0, size);
346 void *tmp = alloca(size);
347 memcpy(tmp, a, size);
349 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(struct 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.
local_group_size(16, 16) .push_constant(Type b
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)
void DNA_alias_maps(enum eDNA_RenameDir version_dir, GHash **r_type_map, GHash **r_member_map)
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
static MemArena * mem_arena
void *(* MEM_mallocN)(size_t len, const char *str)