- BKE_idcode_iter_step() - function to step over all ID codes.
- BLO_blendhandle_get_datablock_names() now takes an arg for the total items in the list, saves the caller counting.
This commit is contained in:
@@ -76,4 +76,12 @@ int BKE_idcode_is_linkable(int code);
|
||||
*/
|
||||
int BKE_idcode_is_valid(int code);
|
||||
|
||||
/**
|
||||
* Return an ID code and steps the index forward 1.
|
||||
*
|
||||
* @param index, start as 0.
|
||||
* @return the code, 0 when all codes have been returned.
|
||||
*/
|
||||
int BKE_idcode_iter_step(int *index);
|
||||
|
||||
#endif
|
||||
|
@@ -133,3 +133,8 @@ const char *BKE_idcode_to_name_plural(int code)
|
||||
|
||||
return idt?idt->plural:NULL;
|
||||
}
|
||||
|
||||
int BKE_idcode_iter_step(int *index)
|
||||
{
|
||||
return (*index < nidtypes) ? idtypes[(*index)++].code : 0;
|
||||
}
|
||||
|
@@ -146,13 +146,15 @@ BLO_blendhandle_from_memory(
|
||||
*
|
||||
* @param bh The blendhandle to access.
|
||||
* @param ofblocktype The type of names to get.
|
||||
* @param totnames The length of the returned list.
|
||||
* @return A BLI_linklist of strings. The string links
|
||||
* should be freed with malloc.
|
||||
*/
|
||||
struct LinkNode*
|
||||
BLO_blendhandle_get_datablock_names(
|
||||
BlendHandle *bh,
|
||||
int ofblocktype);
|
||||
int ofblocktype,
|
||||
int *totnames);
|
||||
|
||||
/**
|
||||
* Gets the previews of all the datablocks in a file
|
||||
|
@@ -123,21 +123,24 @@ void BLO_blendhandle_print_sizes(BlendHandle *bh, void *fp)
|
||||
fprintf(fp, "]\n");
|
||||
}
|
||||
|
||||
LinkNode *BLO_blendhandle_get_datablock_names(BlendHandle *bh, int ofblocktype)
|
||||
LinkNode *BLO_blendhandle_get_datablock_names(BlendHandle *bh, int ofblocktype, int *tot_names)
|
||||
{
|
||||
FileData *fd= (FileData*) bh;
|
||||
LinkNode *names= NULL;
|
||||
BHead *bhead;
|
||||
int tot= 0;
|
||||
|
||||
for (bhead= blo_firstbhead(fd); bhead; bhead= blo_nextbhead(fd, bhead)) {
|
||||
if (bhead->code==ofblocktype) {
|
||||
char *idname= bhead_id_name(fd, bhead);
|
||||
|
||||
BLI_linklist_prepend(&names, strdup(idname+2));
|
||||
tot++;
|
||||
} else if (bhead->code==ENDB)
|
||||
break;
|
||||
}
|
||||
|
||||
*tot_names= tot;
|
||||
return names;
|
||||
}
|
||||
|
||||
|
@@ -997,16 +997,15 @@ void filelist_from_library(struct FileList* filelist)
|
||||
previews = NULL;
|
||||
if (idcode) {
|
||||
previews= BLO_blendhandle_get_previews(filelist->libfiledata, idcode);
|
||||
names= BLO_blendhandle_get_datablock_names(filelist->libfiledata, idcode);
|
||||
names= BLO_blendhandle_get_datablock_names(filelist->libfiledata, idcode, &nnames);
|
||||
/* ugh, no rewind, need to reopen */
|
||||
BLO_blendhandle_close(filelist->libfiledata);
|
||||
filelist->libfiledata= BLO_blendhandle_from_file(dir);
|
||||
|
||||
} else {
|
||||
names= BLO_blendhandle_get_linkable_groups(filelist->libfiledata);
|
||||
}
|
||||
|
||||
nnames= BLI_linklist_length(names);
|
||||
}
|
||||
|
||||
filelist->numfiles= nnames + 1;
|
||||
filelist->filelist= malloc(filelist->numfiles * sizeof(*filelist->filelist));
|
||||
|
@@ -985,7 +985,8 @@ bool KX_BlenderSceneConverter::LinkBlendFile(BlendHandle *bpy_openlib, const cha
|
||||
/* here appending/linking starts */
|
||||
main_tmp = BLO_library_append_begin(C, &bpy_openlib, (char *)path);
|
||||
|
||||
names = BLO_blendhandle_get_datablock_names( bpy_openlib, idcode);
|
||||
int totnames_dummy;
|
||||
names = BLO_blendhandle_get_datablock_names( bpy_openlib, idcode, &totnames_dummy);
|
||||
|
||||
int i=0;
|
||||
LinkNode *n= names;
|
||||
|
Reference in New Issue
Block a user