[Bf-blender-cvs] [fde14db] asset-engine: Switch definitively to int32[4] for uuid's, mixing mixing it with char[16] is confusing at least.
Bastien Montagne
noreply at git.blender.org
Wed Apr 15 12:52:32 CEST 2015
Commit: fde14db4893eb118ddefac9c3b9573cc471d8bc4
Author: Bastien Montagne
Date: Wed Apr 15 12:50:04 2015 +0200
Branches: asset-engine
https://developer.blender.org/rBfde14db4893eb118ddefac9c3b9573cc471d8bc4
Switch definitively to int32[4] for uuid's, mixing mixing it with char[16] is confusing at least.
This is only on human-level anyway... And endianess should not be an issue
either, hopefully, that way!
===================================================================
M release/scripts/startup/bl_operators/amber.py
M source/blender/editors/space_file/filelist.c
M source/blender/editors/space_file/filelist.h
M source/blender/makesdna/DNA_space_types.h
===================================================================
diff --git a/release/scripts/startup/bl_operators/amber.py b/release/scripts/startup/bl_operators/amber.py
index 9ddcfc7..ce1eebe 100644
--- a/release/scripts/startup/bl_operators/amber.py
+++ b/release/scripts/startup/bl_operators/amber.py
@@ -93,6 +93,14 @@ def uuid_revision_gen(used_uuids, variant_uuid, number, size, time):
return _uuid_gen_single(used_uuids, uuid_root, variant_uuid, str(number), str(size), str(timestamp))
+def uuid_unpack(uuid_hexstr):
+ return struct.unpack("!iiii", binascii.unhexlify(uuid_hexstr).ljust(16, b'\0'))
+
+
+def uuid_pack(uuid_iv4):
+ return binascii.hexlify(struct.pack("!iiii", uuid_iv4))
+
+
#############
# Amber Jobs.
class AmberJob:
@@ -126,15 +134,15 @@ class AmberJobList(AmberJob):
for vuuid, v in e["variants"].items():
new_revisions = {}
for ruuid, r in v["revisions"].items():
- new_revisions[struct.unpack("!iiii", binascii.unhexlify(ruuid).ljust(16, b'\0'))] = r
- new_variants[struct.unpack("!iiii", binascii.unhexlify(vuuid).ljust(16, b'\0'))] = v
+ new_revisions[uuid_unpack(ruuid)] = r
+ new_variants[uuid_unpack(vuuid)] = v
v["revisions"] = new_revisions
ruuid = v["revision_default"]
- v["revision_default"] = struct.unpack("!iiii", binascii.unhexlify(ruuid).ljust(16, b'\0'))
- new_entries[struct.unpack("!iiii", binascii.unhexlify(euuid).ljust(16, b'\0'))] = e
+ v["revision_default"] = uuid_unpack(ruuid)
+ new_entries[uuid_unpack(euuid)] = e
e["variants"] = new_variants
vuuid = e["variant_default"]
- e["variant_default"] = struct.unpack("!iiii", binascii.unhexlify(vuuid).ljust(16, b'\0'))
+ e["variant_default"] = uuid_unpack(vuuid)
repo["entries"] = new_entries
print(repo)
return repo
diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c
index a673391..e7a7ef5 100644
--- a/source/blender/editors/space_file/filelist.c
+++ b/source/blender/editors/space_file/filelist.c
@@ -1122,7 +1122,7 @@ static void filelist_cache_init(FileListEntryCache *cache)
cache->misc_cursor = 0;
/* XXX This assumes uint is 32 bits and uuid is 128 bits (char[16]), be careful! */
- cache->uuids = BLI_ghash_new_ex(BLI_ghashutil_uinthash_v4, BLI_ghashutil_uinthash_v4_cmp,
+ cache->uuids = BLI_ghash_new_ex(BLI_ghashutil_uinthash_v4_p, BLI_ghashutil_uinthash_v4_cmp,
__func__, FILELIST_ENTRYCACHESIZE * 2);
}
@@ -1536,7 +1536,7 @@ int filelist_file_findpath(struct FileList *filelist, const char *filename)
return -1;
}
-FileDirEntry *filelist_entry_find_uuid(struct FileList *filelist, const char uuid[ASSET_UUID_LENGTH])
+FileDirEntry *filelist_entry_find_uuid(struct FileList *filelist, const int uuid[4])
{
if (filelist->filelist.nbr_entries_filtered < 0) {
return NULL;
@@ -2129,7 +2129,7 @@ FileDirEntryArr *filelist_selection_get(FileList *filelist, FileCheckType check,
strcpy(selection->root, filelist->filelist.root);
for (; !BLI_ghashIterator_done(iter); BLI_ghashIterator_step(iter)) {
- const char *uuid = BLI_ghashIterator_getKey(iter);
+ const int *uuid = BLI_ghashIterator_getKey(iter);
FileDirEntry *entry_org = filelist_entry_find_uuid(filelist, uuid);
BLI_assert(BLI_ghashIterator_getValue(iter));
diff --git a/source/blender/editors/space_file/filelist.h b/source/blender/editors/space_file/filelist.h
index 3907f11..6f7a1d0 100644
--- a/source/blender/editors/space_file/filelist.h
+++ b/source/blender/editors/space_file/filelist.h
@@ -91,7 +91,7 @@ int filelist_empty(struct FileList *filelist);
int filelist_numfiles(struct FileList *filelist);
struct FileDirEntry *filelist_file(struct FileList *filelist, int index);
int filelist_file_findpath(struct FileList *filelist, const char *file);
-FileDirEntry * filelist_entry_find_uuid(struct FileList *filelist, const char uuid[ASSET_UUID_LENGTH]);
+FileDirEntry * filelist_entry_find_uuid(struct FileList *filelist, const int uuid[4]);
bool filelist_file_cache_block(struct FileList *filelist, const int index);
bool filelist_force_reset(struct FileList *filelist);
diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h
index e9c384b..f1fc19b 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -751,9 +751,9 @@ typedef enum eDirEntry_SelectFlag {
/* Used to communicate with asset engines outside of 'import' context. */
typedef struct AssetUUID {
- char uuid_asset[16]; /* ASSET_UUID_LENGTH */
- char uuid_variant[16]; /* ASSET_UUID_LENGTH */
- char uuid_revision[16]; /* ASSET_UUID_LENGTH */
+ int uuid_asset[4];
+ int uuid_variant[4];
+ int uuid_revision[4];
} AssetUUID;
typedef struct AssetUUIDList {
@@ -769,7 +769,7 @@ typedef struct FileDirEntryRevision {
* asset/variant/version (concatenating the three into a single 72 bytes one).
* Handled as bytes, **but** NULL-terminated (because of RNA).
*/
- char uuid[16]; /* ASSET_UUID_LENGTH */
+ int uuid[4];
char *comment;
@@ -796,7 +796,7 @@ typedef struct FileDirEntryVariant {
* asset/variant/version (concatenating the three into a single 72 bytes one).
* Handled as bytes, **but** NULL-terminated (because of RNA).
*/
- char uuid[16]; /* ASSET_UUID_LENGTH */
+ int uuid[4];
char *name;
char *description;
@@ -814,7 +814,7 @@ typedef struct FileDirEntry {
* asset/variant/version (concatenating the three into a single 72 bytes one).
* Handled as bytes, **but** NULL-terminated (because of RNA).
*/
- char uuid[16]; /* ASSET_UUID_LENGTH */
+ int uuid[4];
char *name;
char *description;
More information about the Bf-blender-cvs
mailing list