// Borland C++ Builder
// Copyright (c) 1995, 2005 by Borland Software Corporation
// All rights reserved

// (DO NOT EDIT: machine generated header) 'Pfibeventlists.pas' rev: 10.00

#ifndef PfibeventlistsHPP
#define PfibeventlistsHPP

#pragma delphiheader begin
#pragma option push
#pragma option -w-      // All warnings off
#pragma option -Vx      // Zero-length empty class member functions
#pragma pack(push,8)
#include <System.hpp>	// Pascal unit
#include <Sysinit.hpp>	// Pascal unit
#include <Windows.hpp>	// Pascal unit
#include <Sysutils.hpp>	// Pascal unit
#include <Classes.hpp>	// Pascal unit

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

namespace Pfibeventlists
{
//-- type declarations -------------------------------------------------------
typedef System::TMethod *PMethod;

class DELPHICLASS TCallBackList;
class PASCALIMPLEMENTATION TCallBackList : public Classes::TComponent 
{
	typedef Classes::TComponent inherited;
	
private:
	Classes::TList* FCallBackList;
	_RTL_CRITICAL_SECTION FCS;
	PMethod __fastcall GetCallBackAddr(int Index);
	int __fastcall GetCount(void);
	
protected:
	virtual void __fastcall Notification(Classes::TComponent* AComponent, Classes::TOperation Operation);
	
public:
	__fastcall virtual TCallBackList(Classes::TComponent* AOwner);
	__fastcall virtual ~TCallBackList(void);
	int __fastcall RegisterCallBack(const System::TMethod &Proc);
	void __fastcall UnRegisterCallBack(const System::TMethod &Proc);
	void __fastcall UnRegisterCallBacks(System::TObject* ProcOwner);
	void __fastcall Delete(int Index);
	int __fastcall IndexOfMethod(const System::TMethod &Proc);
	__property PMethod CallBackAddr[int Index] = {read=GetCallBackAddr};
	__property int Count = {read=GetCount, nodefault};
};


class DELPHICLASS TNotifyEventList;
class PASCALIMPLEMENTATION TNotifyEventList : public TCallBackList 
{
	typedef TCallBackList inherited;
	
public:
	Classes::TNotifyEvent operator[](int Index) { return Event[Index]; }
	
private:
	Classes::TNotifyEvent __fastcall Get(int Index);
	
public:
	int __fastcall Add(Classes::TNotifyEvent Event);
	HIDESBASE void __fastcall Remove(Classes::TNotifyEvent Event);
	__property Classes::TNotifyEvent Event[int Index] = {read=Get/*, default*/};
public:
	#pragma option push -w-inl
	/* TCallBackList.Create */ inline __fastcall virtual TNotifyEventList(Classes::TComponent* AOwner) : TCallBackList(AOwner) { }
	#pragma option pop
	#pragma option push -w-inl
	/* TCallBackList.Destroy */ inline __fastcall virtual ~TNotifyEventList(void) { }
	#pragma option pop
	
};


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

}	/* namespace Pfibeventlists */
using namespace Pfibeventlists;
#pragma pack(pop)
#pragma option pop

#pragma delphiheader end.
//-- end unit ----------------------------------------------------------------
#endif	// Pfibeventlists
