541{
544 IDirectXFileEnumObject *dxfile_enum_object;
545 void *dxfile_source;
549 IDirectXFileData *data_object;
550 unsigned children_array_size = 0;
552
553 TRACE(
"iface %p, source %p, options %#lx, enum_object %p.\n", iface,
source,
options, enum_object);
554
555 if (!enum_object)
557
559
561 {
562 dxfile_source = (
void*)
source;
564 }
566 {
568
572 dxfile_source = &dxfile_resource;
574 }
576 {
578
581 dxfile_source = &dxfile_memory;
583 }
584 else
585 {
588 }
589
590 object =
calloc(1,
sizeof(*
object));
591 if (!object)
593
595 object->ref = 1;
596
598
600 {
603 }
604
605
607 {
608 if (
object->child_count >= children_array_size)
609 {
610 ID3DXFileData **new_children;
611
612 children_array_size = object->children ? children_array_size * 2 : 4;
614 if (!new_children)
615 {
617 break;
618 }
619 object->children = new_children;
620 }
623 IUnknown_Release(data_object);
625 break;
626 ++object->child_count;
627 }
629 {
630 ID3DXFileData **new_children;
631
633 if (new_children)
634 object->children = new_children;
635 }
636
638
640 WARN(
"Cannot get all top level data objects\n");
641
642 TRACE(
"Found %u children.\n",
object->child_count);
643
644 *enum_object = &object->ID3DXFileEnumObject_iface;
645
647}
static const ID3DXFileEnumObjectVtbl d3dx9_file_enum_object_vtbl
static HRESULT d3dx9_file_data_create(IDirectXFileObject *dxfile_object, ID3DXFileData **ret_iface)
#define D3DXF_FILELOAD_FROMFILE
#define D3DXF_FILELOAD_FROMRESOURCE
#define D3DXF_FILELOAD_FROMMEMORY
#define IDirectXFileEnumObject_GetNextDataObject(p, a)
#define IDirectXFileEnumObject_Release(p)
#define DXFILELOAD_FROMFILE
#define IDirectXFile_CreateEnumObject(p, a, b, c)
#define DXFILELOAD_FROMRESOURCE
#define DXFILEERR_NOMOREOBJECTS
#define DXFILELOAD_FROMMEMORY
static char memory[1024 *256]