/****************** adomd.idl : IDL source for adomd.dll *****************/

#include "adomd.hh"
#include "adords.hh"

// Forwards
interface       ICatalog;
coclass         Catalog;

interface       ICellset;
coclass			Cellset;

interface       Cell;
interface       Axis;
interface       Position;
interface       Member;
interface       Level;
interface       CubeDef;
interface       Dimension;
interface       Hierarchy;
interface       Axes;
interface       Positions;
interface       Members;
interface       CubeDefs;
interface       Dimensions;
interface       Hierarchies;
interface       Levels;

#define UUIID_EnumMemberType uuid(000002AE-0000-0010-8000-00AA006D2EA4)
#define DISPID_COLLECT  ( -8 )
#define DEFAULT_METHOD id(0)
#define CONNECTION_BASEDISPID   1
cpp_quote("#define TARGET_IS_NT40_OR_LATER   1")


[
	uuid(22813728-8BD3-11D0-B4EF-00A0C9138CA4),
	version(1.0),
	helpfile("ado210.chm"),
	helpstring("Microsoft ActiveX Data Objects (Multi-dimensional) 1.0 Library")
]
library ADOMD
{
	importlib("stdole32.tlb");
	importlib("msado15.dll");

	/************************************ Enums **********************************************/

	typedef [
		UUIID_EnumMemberType
		]
	enum MemberTypeEnum {
		[]		adMemberUnknown	= 0x0000,
		[]		adMemberRegular	= 0x0001,
		[]		adMemberAll		= 0x0002,
		[]		adMemberMeasure	= 0x0003,
		[]		adMemberFormula	= 0x0004
	} MemberTypeEnum;


	/******************************* Interfaces **********************************************/

	[
		object,
		uuid(228136B1-8BD3-11D0-B4EF-00A0C9138CA4),
		dual,
		helpstring("Catalog Interface"),
		pointer_default(unique)
	]
	interface ICatalog : IDispatch
	{
		import "oaidl.idl";

 		[
			propget,
			helpcontext(amproName)
		]
		HRESULT Name( [out, retval] BSTR *pbstr );

		[
			propputref,
			helpcontext(amproActiveConnection)
		]
		HRESULT ActiveConnection(	[in] IDispatch *pconn	);
  
		[
			propput,
			helpcontext(amproActiveConnection)
		]
		HRESULT ActiveConnection(	[in] BSTR bstrConn	);

		[
			propget,
			helpcontext(amproActiveConnection)
		]
		HRESULT ActiveConnection(	[out, retval] IDispatch **ppConn	);

 		[
			propget,
			DEFAULT_METHOD,
			helpcontext(amcolCubeDefs)
		]
		HRESULT CubeDefs( [out, retval] CubeDefs **ppvObject );
	};

//---------------------------------------------------------------------------------------------

	[
		object,
		uuid(2281372A-8BD3-11D0-B4EF-00A0C9138CA4),
		dual,
		helpstring("Cellset Interface"),
		pointer_default(unique)
	]
	interface ICellset : IDispatch
	{
		import "oaidl.idl";

		[
			propget, 
			vararg,
			DEFAULT_METHOD,
			helpcontext(ammthItem)
		]
		HRESULT Item(	[in] SAFEARRAY(VARIANT)* idx, 
						[out, retval] Cell **ppvObject	);

		[
			helpcontext(ammthOpen)
		]
		HRESULT Open(	[in, optional] VARIANT DataSource,
						[in, optional] VARIANT ActiveConnection	);
		[
			helpcontext(ammthClose)
		]
		HRESULT Close();

 		[
			propputref,
			helpcontext(amproSource)
		]
		HRESULT Source([in] IDispatch *pcmd);

 		[
			propput,
			helpcontext(amproSource)
		]
		HRESULT Source(	[in] BSTR bstrCmd	);

		[
			propget,
			helpcontext(amproSource)
		]
		HRESULT Source(	[out, retval] VARIANT *pvSource	);


		[
			propputref,
			helpcontext(amproActiveConnection)
		]
		HRESULT ActiveConnection(	[in] IDispatch *pconn	);
  
		[
			propput,
			helpcontext(amproActiveConnection)
		]
		HRESULT ActiveConnection(	[in] BSTR bstrConn	);

		[
			propget,
			helpcontext(amproActiveConnection)
		]
		HRESULT ActiveConnection(	[out, retval] IDispatch **ppConn	);

		[
			propget,
			helpcontext(amproState)
		]
		HRESULT State([out, retval] LONG *plState); 

 		[
			propget,
			helpcontext(amcolAxes)
		]
		HRESULT Axes( [out, retval] Axes **ppvObject );

 		[
			propget,
			helpcontext(amproFilterAxis)
		]
		HRESULT FilterAxis( [out, retval] Axis **ppvObject );

 		[
			propget,
			helpcontext(mdcolProperties)
		]
		HRESULT Properties( [out, retval] ADODB.Properties **ppvObject );

	};

//---------------------------------------------------------------------------------------------

	[
		object,
		uuid(2281372E-8BD3-11D0-B4EF-00A0C9138CA4),
		dual,
		helpstring("Cell Interface"),
		pointer_default(unique)
	]
	interface Cell : IDispatch
	{
		import "oaidl.idl";


		[
			propget, 
			DEFAULT_METHOD,
			helpcontext(amproValue)
		]
		HRESULT Value( [out, retval] VARIANT *pvar );

 		[
			propput,
			helpcontext(amproValue)
		]
		HRESULT Value(	[in] VARIANT var	);

 		[
			propget,
			helpcontext(amcolPositions)
		]
		HRESULT Positions( [out, retval] Positions **ppvObject );

 		[
			propget,
			helpcontext(mdcolProperties)
		]
		HRESULT Properties( [out, retval] ADODB.Properties **ppvObject );

 		[
			propget,
			helpcontext(amproFormattedValue)
		]
		HRESULT FormattedValue( [out, retval] BSTR *pbstr );

 		[
			propput,
			helpcontext(amproFormattedValue)
		]
		HRESULT FormattedValue(	[in] BSTR bstr	);

		[
			propget,
			helpcontext(amproOrdinalCell)
		]
		HRESULT Ordinal(	[out, retval] long *pl	);

	};

//---------------------------------------------------------------------------------------------

	[
		object,
		uuid(22813732-8BD3-11D0-B4EF-00A0C9138CA4),
		dual,
		helpstring("Axis Interface"),
		pointer_default(unique)
	]
	interface Axis : IDispatch
	{
		import "oaidl.idl";

 		[
			propget,
			helpcontext(amproName)
		]
		HRESULT Name( [out, retval] BSTR *pbstr );

		[
			propget,
			helpcontext(amproDimensionCount)
		]
		HRESULT DimensionCount(	[out, retval] long *pl	);

 		[
			propget,,
			helpcontext(amcolPositions),
			DEFAULT_METHOD
		]
		HRESULT Positions( [out, retval] Positions **ppvObject );
 		[
			propget,
			helpcontext(mdcolProperties)
		]
		HRESULT Properties( [out, retval] ADODB.Properties **ppvObject );

	};

//---------------------------------------------------------------------------------------------

	[
		object,
		uuid(22813734-8BD3-11D0-B4EF-00A0C9138CA4),
		dual,
		helpstring("Position Interface"),
		pointer_default(unique)
	]
	interface Position : IDispatch
	{
		import "oaidl.idl";

 		[
			propget,
			helpcontext(amproOrdinalPosition)
		]
		HRESULT Ordinal(	[out, retval] long *pl	);

		[
			propget, 
			DEFAULT_METHOD,
			helpcontext(amcolMembers)
		]
		HRESULT Members( [out, retval] Members **ppvObject );
	};


//---------------------------------------------------------------------------------------------

	[
		object,
		uuid(22813736-8BD3-11D0-B4EF-00A0C9138CA4),
		dual,
		helpstring("Member Interface"),
		pointer_default(unique)
	]
	interface Member : IDispatch
	{
		import "oaidl.idl";

 		[
			propget,
			helpcontext(amproName)
		]
		HRESULT Name( [out, retval] BSTR *pbstr );

 		[
			propget,
			helpcontext(amproUniqueName)
		]
		HRESULT UniqueName( [out, retval] BSTR *pbstr );

 		[
			propget, 
			DEFAULT_METHOD,
			helpcontext(amproCaption)
		]
		HRESULT Caption( [out, retval] BSTR *pbstr );

 		[
			propget,
			helpcontext(amproDescription)
		]
		HRESULT Description( [out, retval] BSTR *pbstr );

		[
			propget,
			helpcontext(amproParent)
		]
		HRESULT Parent(	[out, retval] Member **ppvObject	);

		[
			propget,
			helpcontext(amproLevelDepth)
		]
		HRESULT LevelDepth(	[out, retval] long *pl	);

 		[
			propget,
			helpcontext(amproLevelName)
		]
		HRESULT LevelName( [out, retval] BSTR *pbstr );

 		[
			propget,
			helpcontext(mdcolProperties)
		]
		HRESULT Properties( [out, retval] ADODB.Properties **ppvObject );

		[
			propget,
			helpcontext(amproType)
		]
		HRESULT Type( [out, retval] MemberTypeEnum  *ptype );

		[
			propget,
			helpcontext(amproChildCount)
		]
		HRESULT ChildCount(	[out, retval] long *pl	);

		[
			propget,
			helpcontext(amproDrilledDown)
		]
		HRESULT DrilledDown( [out, retval] VARIANT_BOOL *pf	);

		[
			propget,
			helpcontext(amproParentSameAsPrev)
		]
		HRESULT ParentSameAsPrev( [out, retval] VARIANT_BOOL *pf	);

 		[
			propget,
			helpcontext(amproChildren)
		]
		HRESULT Children( [out, retval] Members **ppvObject );
	};

//---------------------------------------------------------------------------------------------

	[
		object,
		uuid(2281373A-8BD3-11D0-B4EF-00A0C9138CA4),
		dual,
		helpstring("Level Interface"),
		pointer_default(unique)
	]
	interface Level : IDispatch
	{
		import "oaidl.idl";

		[
			propget,
			helpcontext(amproName)
		]
		HRESULT Name( [out, retval] BSTR *pbstr );

 		[
			propget,
			helpcontext(amproUniqueName)
		]
		HRESULT UniqueName( [out, retval] BSTR *pbstr );

 		[
			propget,
			helpcontext(amproCaption)
		]
		HRESULT Caption( [out, retval] BSTR *pbstr );

		[
			propget,
			helpcontext(amproDescription)
		]
		HRESULT Description( [out, retval] BSTR *pbstr );

		[
			propget,
			helpcontext(amproDepth)
		]
		HRESULT Depth([out, retval] short *pw); 

		[
			propget,
			helpcontext(mdcolProperties)
		]
		HRESULT Properties( [out, retval] ADODB.Properties **ppvObject );

 		[
			propget,
			DEFAULT_METHOD,
			helpcontext(amcolMembers)
		]
		HRESULT Members( [out, retval] Members **ppvObject );
	};

//---------------------------------------------------------------------------------------------

	[
		object,
		uuid(2281373E-8BD3-11D0-B4EF-00A0C9138CA4),
		dual,
		helpstring("CubeDef Interface"),
		pointer_default(unique)
	]
	interface CubeDef : IDispatch
	{
		import "oaidl.idl";
	
		[
			propget,
			helpcontext(amproName)
		]
		HRESULT Name( [out, retval] BSTR *pbstr );

		[
			propget,
			helpcontext(amproDescription)
		]
		HRESULT Description( [out, retval] BSTR *pbstr );

 		[
			propget,
			helpcontext(mdcolProperties)
		]
		HRESULT Properties( [out, retval] ADODB.Properties **ppvObject );

 		[
			propget,
			DEFAULT_METHOD,
			helpcontext(amcolDimensions)
		]
		HRESULT Dimensions( [out, retval] Dimensions **ppvObject );
		
	};

//---------------------------------------------------------------------------------------------

	[
		object,
		uuid(22813742-8BD3-11D0-B4EF-00A0C9138CA4),
		dual,
		helpstring("Dimension Interface"),
		pointer_default(unique)
	]
	interface Dimension : IDispatch
	{
		import "oaidl.idl";

		[
			propget,
			helpcontext(amproName)
		]
		HRESULT Name( [out, retval] BSTR *pbstr );

 		[
			propget,
			helpcontext(amproUniqueName)
		]
		HRESULT UniqueName( [out, retval] BSTR *pbstr );

		[
			propget,
			helpcontext(amproDescription)
		]
		HRESULT Description( [out, retval] BSTR *pbstr );

 		[
			propget,
			helpcontext(mdcolProperties)
		]
		HRESULT Properties( [out, retval] ADODB.Properties **ppvObject );

 		[
			propget,
			DEFAULT_METHOD,
			helpcontext(amcolHierarchies)
		]
		HRESULT Hierarchies( [out, retval] Hierarchies **ppvObject );
	};

//---------------------------------------------------------------------------------------------

	[
		object,
		uuid(22813746-8BD3-11D0-B4EF-00A0C9138CA4),
		dual,
		helpstring("Hierarchy Interface"),
		pointer_default(unique)
	]
	interface Hierarchy : IDispatch
	{
		import "oaidl.idl";

		[
			propget,
			helpcontext(amproName)
		]
		HRESULT Name( [out, retval] BSTR *pbstr );

 		[
			propget,
			helpcontext(amproUniqueName)
		]
		HRESULT UniqueName( [out, retval] BSTR *pbstr );


		[
			propget,
			helpcontext(amproDescription)
		]
		HRESULT Description( [out, retval] BSTR *pbstr );

 		[
			propget,
			helpcontext(mdcolProperties)
		]
		HRESULT Properties( [out, retval] ADODB.Properties **ppvObject );
		

 		[
			propget,
			DEFAULT_METHOD,
			helpcontext(amcolLevels)
		]
		HRESULT Levels( [out, retval] Levels **ppvObject );
	};

//---------------------------------------------------------------------------------------------

	[
		object,
		uuid(22813751-8BD3-11D0-B4EF-00A0C9138CA4),
		dual,
		helpstring("Collection Interface"),
		pointer_default(unique)
	]
	interface MD_Collection : IDispatch
	{
		[
			helpcontext(ammthRefresh)
		]
		HRESULT Refresh();

		[
			restricted, 
			id(-4)
		]
		HRESULT _NewEnum( [out, retval] IUnknown **ppvObject );

		[
			propget,
			helpcontext(amproCount)
		]
		HRESULT Count( [out, retval]long *c );
	}


//---------------------------------------------------------------------------------------------

	[
		object,
		uuid(22813757-8BD3-11D0-B4EF-00A0C9138CA4),
		dual, 
	    helpstring("Members collection"),
		pointer_default(unique)
	]
	interface Members : MD_Collection
	{
		import "oaidl.idl";	   //..
		[
			propget, 
			DEFAULT_METHOD,
			helpcontext(ammthItemCol)
		]
		HRESULT Item(
			[in] VARIANT Index, 
			[out, retval] Member **ppvObject
			);
	}

//---------------------------------------------------------------------------------------------

	[
		object,
		uuid(22813758-8BD3-11D0-B4EF-00A0C9138CA4),
		dual, 
	    helpstring("Levels collection"),
		pointer_default(unique)
	]
	interface Levels : MD_Collection
	{
		import "oaidl.idl";	   //..
		[
			propget, 
			DEFAULT_METHOD,
			helpcontext(ammthItemCol)
		]
		HRESULT Item(
			[in] VARIANT Index, 
			[out, retval] Level **ppvObject
			);
	}

//---------------------------------------------------------------------------------------------

	[
		object,
		uuid(22813759-8BD3-11D0-B4EF-00A0C9138CA4),
		dual, 
	    helpstring("Axes collection"),
		pointer_default(unique)
	]
	interface Axes : MD_Collection
	{
		import "oaidl.idl";	   //..
		[
			propget, 
			DEFAULT_METHOD,
			helpcontext(ammthItemCol)
		]
		HRESULT Item(
			[in] VARIANT Index, 
			[out, retval] Axis **ppvObject
			);
	}


//---------------------------------------------------------------------------------------------

	[
		object,
		uuid(2281375A-8BD3-11D0-B4EF-00A0C9138CA4),
		dual, 
	    helpstring("Positions collection"),
		pointer_default(unique)
	]
	interface Positions : MD_Collection
	{
		import "oaidl.idl";	   //..

		[
			propget, 
			DEFAULT_METHOD,
			helpcontext(ammthItemCol)
		]
		HRESULT Item(
			[in] VARIANT Index, 
			[out, retval] Position **ppvObject
			);
	}

//---------------------------------------------------------------------------------------------

	[
		object,
		uuid(2281375B-8BD3-11D0-B4EF-00A0C9138CA4),
		dual, 
	    helpstring("Hierarchies collection"),
		pointer_default(unique)
	]
	interface Hierarchies : MD_Collection
	{
		import "oaidl.idl";	   //..
		[
			propget, 
			DEFAULT_METHOD,
			helpcontext(ammthItemCol)
		]
		HRESULT Item(
			[in] VARIANT Index, 
			[out, retval] Hierarchy **ppvObject
			);
	}

//---------------------------------------------------------------------------------------------

	[
		object,
		uuid(2281375C-8BD3-11D0-B4EF-00A0C9138CA4),
		dual, 
	    helpstring("Dimensions collection"),
		pointer_default(unique)
	]
	interface Dimensions : MD_Collection
	{
		import "oaidl.idl";	   //..
		[
			propget, 
			DEFAULT_METHOD,
			helpcontext(ammthItemCol)
		]
		HRESULT Item(
			[in] VARIANT Index, 
			[out, retval] Dimension **ppvObject
			);
	}

//---------------------------------------------------------------------------------------------

	[
		object,
		uuid(2281375D-8BD3-11D0-B4EF-00A0C9138CA4),
		dual, 
	    helpstring("CubeDefs collection"),
		pointer_default(unique)
	]
	interface CubeDefs : MD_Collection
	{
		import "oaidl.idl";	   //..
		[
			propget, 
			DEFAULT_METHOD,
			helpcontext(ammthItemCol)
		]
		HRESULT Item(
			[in] VARIANT Index, 
			[out, retval] CubeDef **ppvObject
			);
	}
	

	/******************************* Coclasses **********************************************/

	[
		uuid(228136B0-8BD3-11D0-B4EF-00A0C9138CA4),
		helpstring("ADOMD Catalog Class")
	]
	coclass Catalog
	{
		[default] interface ICatalog;
	};

//---------------------------------------------------------------------------------------------

	[
		uuid(228136B8-8BD3-11D0-B4EF-00A0C9138CA4),
		helpstring("ADOMD Cellset Class")
	]
	coclass Cellset
	{
		[default] interface ICellset;
	};
};

