#ifdef VB_ONLY
	#define I_dxj_DirectXFile 		DirectXFile
   	#define I_dxj_DirectXFileEnum 		DirectXFileEnum 
    	#define I_dxj_DirectXFileSave 		DirectXFileSave
	#define I_dxj_DirectXFileObject		DirectXFileObject
	#define I_dxj_DirectXFileData 		DirectXFileData
	#define I_dxj_DirectXFileReference 	DirectXFileReference 
	#define I_dxj_DirectXFileBinary 	DirectXFileBinary


 [helpcontext(86633)]
typedef enum CONST_DXFILEFORMATFLAGS {
	DXFILEFORMAT_BINARY     =0,
	DXFILEFORMAT_TEXT       =1,
	DXFILEFORMAT_COMPRESSED =2,
[hidden] DXFILEFORMAT_FORCEDWORD=0x7FFFFFFF,
} CONST_DXFILEFORMATFLAGS;

 [helpcontext(87000)]
typedef enum CONST_DXFILELOADOPTIONS {
	DXFILELOAD_FROMFILE  = 0x00,
	DXFILELOAD_FROMRESOURCE =0x01,
	DXFILELOAD_FROMMEMORY =0x02,
	DXFILELOAD_FROMSTREAM =0x04,
	DXFILELOAD_FROMURL =0x08,
[hidden] DXFILELOAD_FORCEDWORD=0x7FFFFFFF,
} CONST_DXFILELOADOPTIONS;



 [helpcontext(86632)]
typedef enum CONST_DXFILEERR {
	DXFILEERR_BADOBJECT                 =0x88760352,	//	MAKE_DDHRESULT(850)
	DXFILEERR_BADVALUE                  =0x88760353,	//MAKE_DDHRESULT(851)
	DXFILEERR_BADTYPE                   =0x88760354,	//MAKE_DDHRESULT(852)
	DXFILEERR_BADSTREAMHANDLE           =0x88760355,	//MAKE_DDHRESULT(853)
	DXFILEERR_BADALLOC                  =0x88760356,	//MAKE_DDHRESULT(854)
	DXFILEERR_NOTFOUND                  =0x88760357,	//MAKE_DDHRESULT(855)
	DXFILEERR_NOTDONEYET                =0x88760358,	//MAKE_DDHRESULT(856)
	DXFILEERR_FILENOTFOUND              =0x88760359,	//MAKE_DDHRESULT(857)
	DXFILEERR_RESOURCENOTFOUND          =0x8876035A,	//MAKE_DDHRESULT(858)
	DXFILEERR_URLNOTFOUND               =0x8876035B,	//MAKE_DDHRESULT(859)
	DXFILEERR_BADRESOURCE               =0x8876035C,	//MAKE_DDHRESULT(860)
	DXFILEERR_BADFILETYPE               =0x8876035D,	//MAKE_DDHRESULT(861)
	DXFILEERR_BADFILEVERSION            =0x8876035E,	//MAKE_DDHRESULT(862)
	DXFILEERR_BADFILEFLOATSIZE          =0x8876035F,	//MAKE_DDHRESULT(863)
	DXFILEERR_BADFILECOMPRESSIONTYPE    =0x88760360,	//MAKE_DDHRESULT(864)
	DXFILEERR_BADFILE                   =0x88760361,	//MAKE_DDHRESULT(865)
	DXFILEERR_PARSEERROR                =0x88760362,	//MAKE_DDHRESULT(866)
	DXFILEERR_NOTEMPLATE                =0x88760363,	//MAKE_DDHRESULT(867)
	DXFILEERR_BADARRAYSIZE              =0x88760364,	//MAKE_DDHRESULT(868)
	DXFILEERR_BADDATAREFERENCE          =0x88760365,	//MAKE_DDHRESULT(869)
	DXFILEERR_INTERNALERROR             =0x88760366,	//MAKE_DDHRESULT(870)
	DXFILEERR_NOMOREOBJECTS             =0x88760367,	//MAKE_DDHRESULT(871)
	DXFILEERR_BADINTRINSICS             =0x88760368,	//MAKE_DDHRESULT(872)
	DXFILEERR_NOMORESTREAMHANDLES       =0x88760369,	//MAKE_DDHRESULT(873)
	DXFILEERR_NOMOREDATA                =0x8876036A,	//MAKE_DDHRESULT(874)
	DXFILEERR_BADCACHEFILE              =0x8876036B,	//MAKE_DDHRESULT(875)
	DXFILEERR_NOINTERNET                =0x8876036C,	//MAKE_DDHRESULT(876)
} CONST_DXFILEERR;
#endif



interface I_dxj_DirectXFile 	;
interface I_dxj_DirectXFileEnum ;
interface I_dxj_DirectXFileSave ;
interface I_dxj_DirectXFileObject;
interface I_dxj_DirectXFileData ;
interface I_dxj_DirectXFileReference;
interface I_dxj_DirectXFileBinary;




/*
 * DirectX File interfaces.
 */

    	[
    		object,
    		uuid(E7FF12E3-96A5-11d3-AC85-00C04FC2C602),		
    		helpstring("I_dxj_DirectXFile Interface"),
    		pointer_default(unique),
    		local,
    		helpcontext(87001)
    	]

    	interface  I_dxj_DirectXFile : IUnknown
    	{
    		import "oaidl.idl";
 [helpcontext(86619)]		    HRESULT CreateEnumObject ([in] BSTR filename, [out,retval] I_dxj_DirectXFileEnum **ret);
                                 
 [helpcontext(86628)]			HRESULT CreateSaveObject ([in] BSTR filename, [in] LONG flags, [out,retval] I_dxj_DirectXFileSave **ret);

 [helpcontext(86605)]            HRESULT RegisterTemplates ([in] void *templatedata, [in] LONG size);
 [helpcontext(86604)]			HRESULT RegisterDefaultTemplates ();
	
		};

    	[
    		object,
    		uuid(E7FF12E4-96A5-11d3-AC85-00C04FC2C602),		
    		helpstring("I_dxj_DirectXFileEnum  Interface"),
    		pointer_default(unique),
    		local,
    		helpcontext(87002)
    	]

    	interface  I_dxj_DirectXFileEnum : IUnknown
    	{
    		import "oaidl.idl";
 [helpcontext(86622)]			 HRESULT GetNextDataObject    ([out,retval] I_dxj_DirectXFileData **ret);
 [helpcontext(86620)]			 HRESULT GetDataObjectById    ([in] BSTR id, I_dxj_DirectXFileData **ret);
 [helpcontext(86621)]			 HRESULT GetDataObjectByName    ([in] BSTR id, I_dxj_DirectXFileData **ret);
		};


		[
    		object,
    		uuid(E7FF12E5-96A5-11d3-AC85-00C04FC2C602),		,		
    		helpstring("I_dxj_DirectXFileSave Interface"),
    		pointer_default(unique),
    		local,
    		helpcontext(87003)
    	]
		interface I_dxj_DirectXFileSave : IUnknown
		{
    		import "oaidl.idl";
	
 [helpcontext(86631)]			HRESULT SaveTemplates ([in] LONG count, SAFEARRAY(BSTR) *templateGuids);
 [helpcontext(86629)]			HRESULT CreateDataObject ([in] BSTR  templateGuid, [in] BSTR name, [in] BSTR dataTypeGuid,[in] LONG bytecount, [in] void *data, [out,retval] I_dxj_DirectXFileData **ret);
 [helpcontext(86630)]			HRESULT SaveData ([in] I_dxj_DirectXFileData *dataObj);
		};


		[
    		object,
    		uuid(E7FF12E6-96A5-11d3-AC85-00C04FC2C602),				
    		helpstring("I_dxj_DirectXFileObject Interface"),
    		pointer_default(unique),
    		local,
    		helpcontext(87004)
    	]
		interface I_dxj_DirectXFileObject : IUnknown
		{
    		import "oaidl.idl";
	    
 [helpcontext(86625)]			HRESULT GetName ([out,retval] BSTR *name);
 [helpcontext(86624)]			HRESULT GetId ([out,retval] BSTR *name);
    
		};


		[
    		object,
    		uuid(E7FF12E7-96A5-11d3-AC85-00C04FC2C602),				
    		helpstring("I_dxj_DirectXFileData Interface"),
    		pointer_default(unique),
    		local,
    		helpcontext(87005)
    	]
		interface I_dxj_DirectXFileData : IUnknown
		{
    		import "oaidl.idl";
		[hidden] HRESULT InternalGetObject([out,retval] IUnknown **ret);
		[hidden] HRESULT InternalSetObject([in] IUnknown *realinterface);

 [helpcontext(88616)]			HRESULT GetName([out,retval] BSTR *name);
 [helpcontext(88611)]			HRESULT GetId([out,retval] BSTR *name);
 [helpcontext(86616)]			HRESULT GetDataSize([in] BSTR name,[out,retval] LONG *size);
 [helpcontext(86614)]			HRESULT GetData([in] BSTR name,[in] void *data);
 [helpcontext(86618)]			HRESULT GetType ([out,retval] BSTR *type);
 [helpcontext(86623)]			HRESULT GetNextObject ([out,retval] I_dxj_DirectXFileObject **type);
 [helpcontext(86612)]			HRESULT AddDataObject([in] I_dxj_DirectXFileData *data);
 [helpcontext(86613)]			HRESULT AddDataReference([in] BSTR name, [in] BSTR guid);
 [helpcontext(86611)]			HRESULT AddBinaryObject([in] BSTR name, [in] BSTR guidObject,[in] BSTR MimeType,[in] void *data, [in] LONG size);
 [helpcontext(86615)]			HRESULT GetDataFromOffset([in] BSTR name,[in] LONG offset,[in] LONG bytecount, [in] void *data);
    
		};

		[
    		object,
    		uuid(E7FF12E8-96A5-11d3-AC85-00C04FC2C602),	
    		helpstring("I_dxj_DirectXFileReference Interface"),
    		pointer_default(unique),
    		local,
    		helpcontext(87006)
    	]
		interface I_dxj_DirectXFileReference : IUnknown
		{
    		import "oaidl.idl";
 [helpcontext(88612)]			HRESULT GetName ([out,retval] BSTR *name);
 [helpcontext(88613)]			HRESULT GetId ([out,retval] BSTR *name);

		 [helpcontext(86627)]	HRESULT Resolve([out,retval] I_dxj_DirectXFileData **obj);
		};



		[
    		object,
    		uuid(E7FF12E9-96A5-11d3-AC85-00C04FC2C602),		
    		helpstring("I_dxj_DirectXFileBinary Interface"),
    		pointer_default(unique),
    		local,
    		helpcontext(87007)
    	]
		interface I_dxj_DirectXFileBinary : IUnknown
		{
    		import "oaidl.idl";

 [helpcontext(87008)]			HRESULT GetName ([out,retval] BSTR *name);
 [helpcontext(87009)]			HRESULT GetId ([out,retval] BSTR *name);
 [helpcontext(86608)]			HRESULT GetSize ([out,retval] LONG *size);
 [helpcontext(86607)]			HRESULT GetMimeType ([out,retval] BSTR *mime);
		 [helpcontext(86609)]	HRESULT Read([in] void *data,[in] LONG size,[out,retval] LONG *read);

		    		   	
		};