// VPinMAME.idl : IDL source for VPinMAME.dll
//

// This file will be processed by the MIDL tool to
// produce the type library (VPinMAME.tlb) and marshalling code.

import "oaidl.idl";
import "ocidl.idl";

	[
		object,
		uuid(AF29EADA-63C3-4CB9-89AB-1A8D2F280710),
		dual,
		helpstring("IRom Interface"),
		pointer_default(unique),
		hidden
	]
	interface IRom : IDispatch
	{
		[propget, id(1), helpstring("property Name")] HRESULT Name([out, retval] BSTR *pVal);
		[propget, id(2), helpstring("property State")] HRESULT State([out, retval] long *pVal);
		[propget, id(3), helpstring("property StateDescription")] HRESULT StateDescription([out, retval] BSTR *pVal);
		[id(4), helpstring("method Audit")] HRESULT Audit([in,defaultvalue(0)] BOOL fStrict);
		[propget, id(5), helpstring("property Length")] HRESULT Length([out, retval] long *pVal);
		[propget, id(6), helpstring("property ExpLength")] HRESULT ExpLength([out, retval] long *pVal);
		[propget, id(7), helpstring("property Checksum")] HRESULT Checksum([out, retval] long *pVal);
		[propget, id(8), helpstring("property ExpChecksum")] HRESULT ExpChecksum([out, retval] long *pVal);
		[propget, id(9), helpstring("property Flags")] HRESULT Flags([out, retval] long *pVal);
	};

	[
		object,
		uuid(FDAD01BA-CE74-46AA-A1BC-6A176AB22902),
		dual,
		helpstring("IRoms Interface"),
		pointer_default(unique),
		hidden
	]
	interface IRoms : IDispatch
	{
		[propget] HRESULT Count([out, retval] long* pnCount);
		[propget, id(DISPID_VALUE)] HRESULT Item([in] VARIANT *pKey, [out, retval] IRom* *ppGame);
		[propget, id(DISPID_NEWENUM)] HRESULT _NewEnum([out, retval] IUnknown** ppunkEnum);
		[propget, id(1), helpstring("property Available")] HRESULT Available([out, retval] BOOL *pVal);
		[propget, id(2), helpstring("property State")] HRESULT State([out, retval] long *pVal);
		[propget, id(3), helpstring("property StateDescription")] HRESULT StateDescription([out, retval] BSTR *pVal);
		[id(4), helpstring("method Audit")] HRESULT Audit([in,defaultvalue(0)] BOOL fStrict);
	};

	[
		object,
		uuid(821A5916-A71F-4AE0-B48E-DA6ffC0AF6CD),
		dual,
		helpstring("IEnumRoms Interface"),
		pointer_default(unique),
		hidden
	]
	interface IEnumRoms : IDispatch
	{
		[local] HRESULT Next([in] ULONG celt, [out] VARIANT* rgVar, [out] ULONG *pCeltFetched);
		HRESULT Skip([in] ULONG celt);
		HRESULT Reset();
		HRESULT Clone([out] IUnknown **ppEnum);
	};

	[
		object,
		uuid(BD262BEE-902B-47D2-8CC4-54890BB7DC1C),
		dual,
		helpstring("IGame Interface"),
		pointer_default(unique),
		hidden
	]
	interface IGame : IDispatch
	{
		[propget, id(1), helpstring("property Name")] HRESULT Name([out, retval] BSTR *pVal);
		[propget, id(2), helpstring("property Description")] HRESULT Description([out, retval] BSTR *pVal);
		[propget, id(3), helpstring("property Year")] HRESULT Year([out, retval] BSTR *pVal);
		[propget, id(4), helpstring("property Manufacturer")] HRESULT Manufacturer([out, retval] BSTR *pVal);
		[propget, id(5), helpstring("property CloneOf")] HRESULT CloneOf([out, retval] BSTR *pVal);
		[propget, id(6), helpstring("property Roms")] HRESULT Roms([out, retval] IRoms* *pVal);
	};

	[
		object,
		uuid(0F7B0EC8-343F-48D3-B3B8-98BA4AC621E9),
		dual,
		helpstring("IGames Interface"),
		pointer_default(unique),
		hidden
	]
	interface IGames : IDispatch
	{
		[propget] HRESULT Count([out, retval] long* pnCount);
		[propget, id(DISPID_VALUE)] HRESULT Item([in] VARIANT *pKey, [out, retval] IGame* *ppGame);
		[propget, id(DISPID_NEWENUM)] HRESULT _NewEnum([out, retval] IUnknown** ppunkEnum);
	};

	[
		object,
		uuid(6A4DAE2F-2FEE-4E6F-86BA-5A93742E584C),
		dual,
		helpstring("IEnumGames Interface"),
		pointer_default(unique),
		hidden
	]
	interface IEnumGames : IDispatch
	{
		[local] HRESULT Next([in] ULONG celt, [out] VARIANT* rgVar, [out] ULONG *pCeltFetched);
		HRESULT Skip([in] ULONG celt);
		HRESULT Reset();
		HRESULT Clone([out] IUnknown **ppEnum);
	};

	[
		object,
		uuid(CE9ECC7C-960F-407E-B27B-62E39AB1E30F),
		dual,
		helpstring("IController Interface"),
		pointer_default(unique)
	]
	interface IController : IDispatch
	{
		[id(1), helpstring("method Run")] HRESULT Run([in,defaultvalue(0)] long hParentWnd, [in,defaultvalue(99)] int nMinVersion);
		[id(2), helpstring("method Stop")] HRESULT Stop();
		[id(3), helpstring("method ShowOptsDialog")] HRESULT ShowOptsDialog([in,defaultvalue(0)] long hParentWnd);
		[id(4), helpstring("method ShowAboutDialog")] HRESULT ShowAboutDialog([in,defaultvalue(0)] long hParentWnd);
		[propget, id(5), helpstring("property Lamp")] HRESULT Lamp([in] int nLamp, [out, retval] BOOL *pVal);
		[propget, id(6), helpstring("property Solenoid")] HRESULT Solenoid([in] int nSolenoid, [out, retval] BOOL *pVal);
		[propget, id(7), helpstring("property Switch")] HRESULT Switch([in] int nSwitchNo, [out, retval] BOOL *pVal);
		[propput, id(7), helpstring("property Switch")] HRESULT Switch([in] int nSwitchNo, [in] BOOL newVal);
		[propget, id(8), helpstring("property RomDirs")] HRESULT RomDirs([out, retval] BSTR *pVal);
		[propput, id(8), helpstring("property RomDirs")] HRESULT RomDirs([in] BSTR newVal);
		[propget, id(9), helpstring("property NVRamDir")] HRESULT NVRamDir([out, retval] BSTR *pVal);
		[propput, id(9), helpstring("property NVRamDir")] HRESULT NVRamDir([in] BSTR newVal);
		[propget, id(10), helpstring("property SamplesDir")] HRESULT SamplesDir([out, retval] BSTR *pVal);
		[propput, id(10), helpstring("property SamplesDir")] HRESULT SamplesDir([in] BSTR newVal);
		[propget, id(11), helpstring("property CfgDir")] HRESULT CfgDir([out, retval] BSTR *pVal);
		[propput, id(11), helpstring("property CfgDir")] HRESULT CfgDir([in] BSTR newVal);
		[propget, id(12), helpstring("property WPCNumbering")] HRESULT WPCNumbering([out, retval] BOOL *pVal);
		[propget, id(13), helpstring("property Lamps")] HRESULT Lamps([out, retval] VARIANT *pVal);
		[propget, id(14), helpstring("property ChangedLamps")] HRESULT ChangedLamps([out, retval] VARIANT *pVal);
		[propget, id(15), helpstring("property Switches")] HRESULT Switches([out, retval] VARIANT *pVal);
		[propput, id(15), helpstring("property Switches")] HRESULT Switches([in] VARIANT newVal);
		[propget, id(16), helpstring("property ChangedSolenoids")] HRESULT ChangedSolenoids([out, retval] VARIANT *pVal);
		[propget, id(17), helpstring("property GameName")] HRESULT GameName([out, retval] BSTR *pVal);
		[propput, id(17), helpstring("property GameName")] HRESULT GameName([in] BSTR newVal);
		[propget, id(18), helpstring("property InstallDir")] HRESULT InstallDir([out, retval] BSTR *pVal);
		[propget, id(19), helpstring("property HandleKeyboard")] HRESULT HandleKeyboard([out, retval] BOOL *pVal);
		[propput, id(19), helpstring("property HandleKeyboard")] HRESULT HandleKeyboard([in] BOOL newVal);
		[propget, id(20), helpstring("property UseSamples")] HRESULT UseSamples([out, retval] BOOL *pVal);
		[propput, id(20), helpstring("property UseSamples")] HRESULT UseSamples([in] BOOL newVal);
		[propget, id(21), helpstring("property ShowTitle")] HRESULT ShowTitle([out, retval] BOOL *pVal);
		[propput, id(21), helpstring("property ShowTitle")] HRESULT ShowTitle([in] BOOL newVal);
		[propget, id(22), helpstring("property Pause")] HRESULT Pause([out, retval] BOOL *pVal);
		[propput, id(22), helpstring("property Pause")] HRESULT Pause([in] BOOL newVal);
		[propget, id(23), helpstring("property Machines")] HRESULT Machines([in,defaultvalue("")] BSTR sMachine, [out, retval] VARIANT *pVal);
		[propget, id(24), helpstring("property Running")] HRESULT Running([out, retval] BOOL *pVal);
		[id(25), helpstring("method CheckROMS")] HRESULT CheckROMS([in,defaultvalue(0)] int nShowOptions, [in,defaultvalue(0)] long hParentWnd, [out, retval] BOOL *pVal);
		[propget, id(26), helpstring("property HandleMechanics")] HRESULT HandleMechanics([out, retval] int *pVal);
		[propput, id(26), helpstring("property HandleMechanics")] HRESULT HandleMechanics([in] int newVal);
		[propget, id(27), helpstring("property GIString")] HRESULT GIString(int nString, [out, retval] BOOL *pVal);
		[propget, id(28), helpstring("property ChangedGIStrings")] HRESULT ChangedGIStrings([out, retval] VARIANT *pVal);
		[propget, id(29), helpstring("property ShowDMDOnly")] HRESULT ShowDMDOnly([out, retval] BOOL *pVal);
		[propput, id(29), helpstring("property ShowDMDOnly")] HRESULT ShowDMDOnly([in] BOOL newVal);
		[propget, id(30), helpstring("property SplashInfoLine")] HRESULT SplashInfoLine([out, retval] BSTR *pVal);
		[propput, id(30), helpstring("property SplashInfoLine")] HRESULT SplashInfoLine([in] BSTR newVal);
		[propget, id(31), helpstring("property Solenoids")] HRESULT Solenoids([out, retval] VARIANT *pVal);
		[propget, id(32), helpstring("property Dip")] HRESULT Dip([in] int nNo, [out, retval] int *pVal);
		[propput, id(32), helpstring("property Dip")] HRESULT Dip([in] int nNo, [in] int newVal);
		[propget, id(33), helpstring("property GIStrings")] HRESULT GIStrings([out, retval] VARIANT *pVal);
		[propget, id(34), helpstring("property GetMech")] HRESULT GetMech([in] int mechNo, [out, retval] int *pVal);
		[propget, id(35), helpstring("property ShowFrame")] HRESULT ShowFrame([out, retval] BOOL *pVal);
		[propput, id(35), helpstring("property ShowFrame")] HRESULT ShowFrame([in] BOOL newVal);
		[propget, id(36), helpstring("property BorderSizeX")] HRESULT BorderSizeX([out, retval] int *pVal);
		[propput, id(36), helpstring("property BorderSizeX")] HRESULT BorderSizeX([in] int newVal);
		[propget, id(37), helpstring("property BorderSizeY")] HRESULT BorderSizeY([out, retval] int *pVal);
		[propput, id(37), helpstring("property BorderSizeY")] HRESULT BorderSizeY([in] int newVal);
		[propget, id(38), helpstring("property WindowPosX")] HRESULT WindowPosX([out, retval] int *pVal);
		[propput, id(38), helpstring("property WindowPosX")] HRESULT WindowPosX([in] int newVal);
		[propget, id(39), helpstring("property WindowPosY")] HRESULT WindowPosY([out, retval] int *pVal);
		[propput, id(39), helpstring("property WindowPosY")] HRESULT WindowPosY([in] int newVal);
		[propget, id(40), helpstring("property SampleRate")] HRESULT SampleRate([out, retval] int *pVal);
		[propput, id(40), helpstring("property SampleRate")] HRESULT SampleRate([in] int newVal);
		[propget, id(41), helpstring("property DoubleSize")] HRESULT DoubleSize([out, retval] BOOL *pVal);
		[propput, id(41), helpstring("property DoubleSize")] HRESULT DoubleSize([in] BOOL newVal);
		[id(42), helpstring("method SetDisplayPosition")] HRESULT SetDisplayPosition([in] int x, [in] int y, [in,defaultvalue(0)] long hParentWindow);
		[propget, id(43), helpstring("property LockDisplay")] HRESULT LockDisplay([out, retval] BOOL *pVal);
		[propput, id(43), helpstring("property LockDisplay")] HRESULT LockDisplay([in] BOOL newVal);
		[propget, id(44), helpstring("property Antialias")] HRESULT Antialias([out, retval] BOOL *pVal);
		[propput, id(44), helpstring("property Antialias")] HRESULT Antialias([in] BOOL newVal);
		[propget, id(45), helpstring("property SolMask")] HRESULT SolMask([in] int nLow, [out, retval] long *pVal);
		[propput, id(45), helpstring("property SolMask")] HRESULT SolMask([in] int nLow, [in] long newVal);
		[id(46), helpstring("method ShowPathesDialog")] HRESULT ShowPathesDialog([in,defaultvalue(0)] long hParentWnd);
		[propget, id(47), helpstring("property ImgDir")] HRESULT ImgDir([out, retval] BSTR *pVal);
		[propput, id(47), helpstring("property ImgDir")] HRESULT ImgDir([in] BSTR newVal);
		[propget, id(48), helpstring("property Version")] HRESULT Version([out, retval] BSTR *pVal);
		[propput, id(49), helpstring("property Mech")] HRESULT Mech([in] int param, [in] int newVal);
		[propget, id(50), helpstring("property NewSoundCommands")] HRESULT NewSoundCommands([out, retval] VARIANT *pVal);
		[propget, id(51), helpstring("property Games")] HRESULT Games([out, retval] IGames* *pVal);
	};
[
	uuid(57270B76-C846-4B1E-88D4-53C8337A0623),
	version(1.0),
	helpstring("Visual PinMAME 1.0 Type Library")
]
library VPinMAMELib
{
	importlib("stdole32.tlb");
	importlib("stdole2.tlb");

	[
		uuid(75D6FFF0-21E5-4B71-90B4-59409A27297C),
		helpstring("Game Class"),
		hidden
	]
	coclass Game
	{
		[default] interface IGame;
	};

	[
		uuid(B31AD191-C0C5-4E44-AF24-BD0459EDA52F),
		helpstring("Visual PinMAME Games"),
		hidden
	]
	coclass Games
	{
		[default] interface IGames;
	};

	[
		uuid(D1FAB4A1-F9E6-4FEF-A02F-BD218EC5B792),
		helpstring("EnumGames Class"),
		hidden
	]
	coclass EnumGames
	{
		[default] interface IEnumGames;
	};

	[
		uuid(CCBAD9CC-CC5A-4DD3-BA51-391f3744D815),
		helpstring("Rom Class"),
		hidden
	]
	coclass Rom
	{
		[default] interface IRom;
	};

	[
		uuid(C983A522-7DC2-4153-BF78-5DD5A2DADE01),
		helpstring("Roms Class"),
		hidden
	]
	coclass Roms
	{
		[default] interface IRoms;
	};
	[
		uuid(EF1F6336-7983-4CC4-8FA2-1CE9EDFC964F),
		helpstring("EnumRoms Class"),
		hidden
	]
	coclass EnumRoms
	{
		[default] interface IEnumRoms;
	};

	[
		uuid(2CE80EC7-AC05-4087-83E7-414DE4F0F545),
		helpstring("_IControllerEvents Interface")
	]
	dispinterface _IControllerEvents
	{
		properties:
		methods:
		[id(1), helpstring("method OnSolenoid")] HRESULT OnSolenoid([in] int nSolenoid, [in] int IsActive);
		[id(2), helpstring("method OnStateChange")] HRESULT OnStateChange([in] int nState);
	};
	
	[
		uuid(F389C8B7-144F-4C63-A2E3-246D168F9D39),
		helpstring("Controller Class")
	]
	coclass Controller
	{
		[default] interface IController;
		[default, source] dispinterface _IControllerEvents;
	};
};
