// CodeGear C++Builder
// Copyright (c) 1995, 2010 by Embarcadero Technologies, Inc.
// All rights reserved

// (DO NOT EDIT: machine generated header) 'ObjList.pas' rev: 22.00

#ifndef ObjlistHPP
#define ObjlistHPP

#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 Objlist
{
//-- type declarations -------------------------------------------------------
class DELPHICLASS TObjList;
class PASCALIMPLEMENTATION TObjList : public System::TObject
{
	typedef System::TObject inherited;
	
public:
	void * operator[](int Index) { return Items[Index]; }
	
private:
	Classes::TPointerList *FList;
	int FCount;
	int FCapacity;
	System::WideString FName;
	
protected:
	void * __fastcall Get(int Index);
	virtual void __fastcall Grow(void);
	void __fastcall Put(int Index, void * Item);
	void __fastcall SetCapacity(int NewCapacity);
	void __fastcall SetCount(int NewCount);
	
public:
	__fastcall virtual ~TObjList(void);
	int __fastcall Add(void * Item);
	virtual void __fastcall Clear(void);
	void __fastcall Delete(int Index);
	__classmethod virtual void __fastcall Error(const System::UnicodeString Msg, int Data)/* overload */;
	__classmethod void __fastcall Error(System::PResStringRec Msg, int Data)/* overload */;
	void __fastcall Exchange(int Index1, int Index2);
	TObjList* __fastcall Expand(void);
	void * __fastcall Extract(void * Item);
	void * __fastcall First(void);
	int __fastcall IndexOf(void * Item);
	void __fastcall Insert(int Index, void * Item);
	void * __fastcall Last(void);
	void __fastcall Move(int CurIndex, int NewIndex);
	int __fastcall Remove(void * Item);
	void __fastcall Pack(void);
	void __fastcall Sort(Classes::TListSortCompare Compare);
	__property int Capacity = {read=FCapacity, write=SetCapacity, nodefault};
	__property int Count = {read=FCount, write=SetCount, nodefault};
	__property void * Items[int Index] = {read=Get, write=Put/*, default*/};
	__property Classes::PPointerList List = {read=FList};
	__property System::WideString Name = {read=FName, write=FName};
public:
	/* TObject.Create */ inline __fastcall TObjList(void) : System::TObject() { }
	
};


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

}	/* namespace Objlist */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE)
using namespace Objlist;
#endif
#pragma pack(pop)
#pragma option pop

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