// Borland C++ Builder
// Copyright (c) 1995, 1998 by Borland International
// All rights reserved

// (DO NOT EDIT: machine generated header) 'AHMTWaveHolder.pas' rev: 3.00

#ifndef AHMTWaveHolderHPP
#define AHMTWaveHolderHPP
#include <MMSystem.hpp>
#include <AHMSystemClass.hpp>
#include <Dialogs.hpp>
#include <Forms.hpp>
#include <Controls.hpp>
#include <Graphics.hpp>
#include <Classes.hpp>
#include <SysUtils.hpp>
#include <Messages.hpp>
#include <Windows.hpp>
#include <SysInit.hpp>
#include <System.hpp>

//-- user supplied -----------------------------------------------------------

namespace Ahmtwaveholder
{
//-- type declarations -------------------------------------------------------
class DELPHICLASS TAHMExternalWave;
class DELPHICLASS TAHMWaveHolder;
class DELPHICLASS TAHMInternalWaves;
class DELPHICLASS TAHMInternalWave;
class PASCALIMPLEMENTATION TAHMInternalWaves : public Classes::TCollection 
{
	typedef Classes::TCollection inherited;
	
private:
	TAHMWaveHolder* FAHMWaveHolder;
	TAHMInternalWave* __fastcall GetAHMInternalWave(int Index);
	void __fastcall SetAHMInternalWave(int Index, TAHMInternalWave* Value);
	
protected:
	DYNAMIC Classes::TPersistent* __fastcall GetOwner(void);
	
public:
	__fastcall TAHMInternalWaves(TAHMWaveHolder* AOwner);
	HIDESBASE TAHMInternalWave* __fastcall Add(void);
	bool __fastcall Delete(int Index);
	__property TAHMWaveHolder* Owner = {read=FAHMWaveHolder};
	__property TAHMInternalWave* Items[int Index] = {read=GetAHMInternalWave, write=SetAHMInternalWave/*
		, default*/};
public:
	/* TCollection.Destroy */ __fastcall virtual ~TAHMInternalWaves(void) { }
	
};

class DELPHICLASS TAHMExternalWaves;
class PASCALIMPLEMENTATION TAHMExternalWaves : public Classes::TCollection 
{
	typedef Classes::TCollection inherited;
	
private:
	TAHMWaveHolder* FAHMWaveHolder;
	TAHMExternalWave* __fastcall GetAHMExternalWave(int Index);
	void __fastcall SetAHMExternalWave(int Index, TAHMExternalWave* Value);
	
protected:
	DYNAMIC Classes::TPersistent* __fastcall GetOwner(void);
	
public:
	__fastcall TAHMExternalWaves(TAHMWaveHolder* AOwner);
	HIDESBASE TAHMExternalWave* __fastcall Add(void);
	bool __fastcall Delete(int Index);
	__property TAHMWaveHolder* Owner = {read=FAHMWaveHolder};
	__property TAHMExternalWave* Items[int Index] = {read=GetAHMExternalWave, write=SetAHMExternalWave/*
		, default*/};
public:
	/* TCollection.Destroy */ __fastcall virtual ~TAHMExternalWaves(void) { }
	
};

class PASCALIMPLEMENTATION TAHMWaveHolder : public Ahmsystemclass::TAHMSystemsComponent 
{
	typedef Ahmsystemclass::TAHMSystemsComponent inherited;
	
private:
	TAHMInternalWaves* FAHMInternalWaves;
	TAHMExternalWaves* FAHMExternalWaves;
	void __fastcall SetAHMExternalWaves(TAHMExternalWaves* Value);
	void __fastcall SetAHMInternalWaves(TAHMInternalWaves* Value);
	
public:
	__fastcall virtual TAHMWaveHolder(Classes::TComponent* AOwner);
	__fastcall virtual ~TAHMWaveHolder(void);
	bool __fastcall PlayInternal(int Index);
	bool __fastcall PlayExternal(int Index);
	void __fastcall StopSounds(void);
	
__published:
	__property TAHMInternalWaves* Internals = {read=FAHMInternalWaves, write=SetAHMInternalWaves};
	__property TAHMExternalWaves* Externals = {read=FAHMExternalWaves, write=SetAHMExternalWaves};
};

class PASCALIMPLEMENTATION TAHMExternalWave : public Classes::TCollectionItem 
{
	typedef Classes::TCollectionItem inherited;
	
private:
	TAHMWaveHolder* FAHMWaveHolder;
	bool FLooped;
	bool FAsynchronous;
	System::AnsiString FFileName;
	void __fastcall SetAsynchronous(const bool Value);
	void __fastcall SetFileName(const System::AnsiString Value);
	void __fastcall SetLooped(const bool Value);
	
protected:
	virtual System::AnsiString __fastcall GetDisplayName(void);
	
public:
	bool __fastcall Play(void);
	__fastcall virtual TAHMExternalWave(Classes::TCollection* Collection);
	virtual void __fastcall Assign(Classes::TPersistent* Source);
	__property TAHMWaveHolder* Owner = {read=FAHMWaveHolder};
	__property System::AnsiString DisplayName = {read=GetDisplayName};
	
__published:
	__property bool Asynchronous = {read=FAsynchronous, write=SetAsynchronous, default=1};
	__property bool Looped = {read=FLooped, write=SetLooped, default=0};
	__property System::AnsiString WavFileName = {read=FFileName, write=SetFileName};
public:
	/* TCollectionItem.Destroy */ __fastcall virtual ~TAHMExternalWave(void) { }
	
};

class PASCALIMPLEMENTATION TAHMInternalWave : public Classes::TCollectionItem 
{
	typedef Classes::TCollectionItem inherited;
	
private:
	Classes::TMemoryStream* FWaveData;
	System::AnsiString FWave;
	TAHMWaveHolder* FAHMWaveHolder;
	bool FLooped;
	bool FAsynchronous;
	void __fastcall ReadData(Classes::TStream* Stream);
	void __fastcall WriteData(Classes::TStream* Stream);
	bool __fastcall Empty(void);
	void __fastcall SetWave(const System::AnsiString Value);
	void __fastcall SetLooped(const bool Value);
	void __fastcall SetAsynchronous(const bool Value);
	
protected:
	virtual System::AnsiString __fastcall GetDisplayName(void);
	virtual void __fastcall DefineProperties(Classes::TFiler* Filer);
	
public:
	void __fastcall Clear(void);
	void __fastcall LoadFromFile(System::AnsiString FileName);
	void __fastcall SaveToFile(System::AnsiString FileName);
	void __fastcall LoadFromStream(Classes::TStream* Stream);
	void __fastcall SaveToStream(Classes::TStream* Stream);
	__fastcall virtual TAHMInternalWave(Classes::TCollection* Collection);
	virtual void __fastcall Assign(Classes::TPersistent* Source);
	__property TAHMWaveHolder* Owner = {read=FAHMWaveHolder};
	__property System::AnsiString DisplayName = {read=GetDisplayName};
	__fastcall virtual ~TAHMInternalWave(void);
	bool __fastcall Play(void);
	
__published:
	__property bool Asynchronous = {read=FAsynchronous, write=SetAsynchronous, default=1};
	__property bool Looped = {read=FLooped, write=SetLooped, nodefault};
	__property System::AnsiString Wave = {read=FWave, write=SetWave};
};

//-- var, const, procedure ---------------------------------------------------

}	/* namespace Ahmtwaveholder */
#if !defined(NO_IMPLICIT_NAMESPACE_USE)
using namespace Ahmtwaveholder;
#endif
//-- end unit ----------------------------------------------------------------
#endif	// AHMTWaveHolder
