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

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

#ifndef Inpop3HPP
#define Inpop3HPP

#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 <Classes.hpp>	// Pascal unit
#include <Inassignednumbers.hpp>	// Pascal unit
#include <Inglobal.hpp>	// Pascal unit
#include <Inexception.hpp>	// Pascal unit
#include <Inexplicittlsclientserverbase.hpp>	// Pascal unit
#include <Inglobalprotocols.hpp>	// Pascal unit
#include <Inmessage.hpp>	// Pascal unit
#include <Inmessageclient.hpp>	// Pascal unit
#include <Inreply.hpp>	// Pascal unit
#include <Insasl.hpp>	// Pascal unit
#include <Insaslcollection.hpp>	// Pascal unit
#include <Inuserpassprovider.hpp>	// Pascal unit
#include <Intcpclient.hpp>	// Pascal unit
#include <Intcpconnection.hpp>	// Pascal unit
#include <Incomponent.hpp>	// Pascal unit
#include <Inbasecomponent.hpp>	// Pascal unit

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

namespace Inpop3
{
//-- type declarations -------------------------------------------------------
#pragma option push -b-
enum TInPOP3AuthenticationType { atUserPass, atAPOP, atSASL };
#pragma option pop

class DELPHICLASS TInPOP3;
class PASCALIMPLEMENTATION TInPOP3 : public Inmessageclient::TInMessageClient 
{
	typedef Inmessageclient::TInMessageClient inherited;
	
protected:
	TInPOP3AuthenticationType FAuthType;
	bool FAutoLogin;
	AnsiString FGreetingBanner;
	bool FHasCAPA;
	Insaslcollection::TInSASLEntries* FSASLMechanisms;
	virtual TMetaClass* __fastcall GetReplyClass(void);
	virtual bool __fastcall GetSupportsTLS(void);
	virtual void __fastcall InitComponent(void);
	virtual void __fastcall Notification(Classes::TComponent* AComponent, Classes::TOperation Operation);
	
public:
	int __fastcall CheckMessages(void);
	virtual void __fastcall Connect(void)/* overload */;
	virtual void __fastcall Login(void);
	__fastcall virtual ~TInPOP3(void);
	bool __fastcall Delete(const int MsgNum);
	virtual void __fastcall DisconnectNotifyPeer(void);
	void __fastcall KeepAlive(void);
	bool __fastcall Reset(void);
	bool __fastcall Retrieve(const int MsgNum, Inmessage::TInMessage* AMsg);
	bool __fastcall RetrieveHeader(const int MsgNum, Inmessage::TInMessage* AMsg);
	int __fastcall RetrieveMsgSize(const int MsgNum);
	int __fastcall RetrieveMailBoxSize(void);
	bool __fastcall RetrieveRaw(const int MsgNum, const Classes::TStrings* Dest);
	bool __fastcall UIDL(const Classes::TStrings* ADest, const int AMsgNum = 0xffffffff);
	bool __fastcall Top(const int AMsgNum, const Classes::TStrings* ADest, const int AMaxLines = 0x0);
	bool __fastcall CAPA(void);
	__property bool HasCAPA = {read=FHasCAPA, nodefault};
	AnsiString __fastcall GetPassword();
	AnsiString __fastcall GetUsername();
	
__published:
	__property TInPOP3AuthenticationType AuthType = {read=FAuthType, write=FAuthType, default=0};
	__property bool AutoLogin = {read=FAutoLogin, write=FAutoLogin, nodefault};
	__property Host ;
	__property Username ;
	__property UseTLS  = {default=0};
	__property Password ;
	__property Port  = {default=110};
	__property Insaslcollection::TInSASLEntries* SASLMechanisms = {read=FSASLMechanisms, write=FSASLMechanisms};
public:
	#pragma option push -w-inl
	/* TInBaseComponent.Create */ inline __fastcall TInPOP3(Classes::TComponent* AOwner)/* overload */ : Inmessageclient::TInMessageClient(AOwner) { }
	#pragma option pop
	
	
/* Hoisted overloads: */
	
public:
	inline void __fastcall  Connect(const AnsiString AHost, const int APort = 0xffffffff){ TInTCPClientCustom::Connect(AHost, APort); }
	
};


class DELPHICLASS EInPOP3Exception;
class PASCALIMPLEMENTATION EInPOP3Exception : public Inexception::EInException 
{
	typedef Inexception::EInException inherited;
	
public:
	#pragma option push -w-inl
	/* EInExceptionBase.Create */ inline __fastcall virtual EInPOP3Exception(AnsiString AMsg)/* overload */ : Inexception::EInException(AMsg) { }
	#pragma option pop
	
public:
	#pragma option push -w-inl
	/* Exception.CreateFmt */ inline __fastcall EInPOP3Exception(const AnsiString Msg, System::TVarRec const * Args, const int Args_Size) : Inexception::EInException(Msg, Args, Args_Size) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateRes */ inline __fastcall EInPOP3Exception(int Ident)/* overload */ : Inexception::EInException(Ident) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateResFmt */ inline __fastcall EInPOP3Exception(int Ident, System::TVarRec const * Args, const int Args_Size)/* overload */ : Inexception::EInException(Ident, Args, Args_Size) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateHelp */ inline __fastcall EInPOP3Exception(const AnsiString Msg, int AHelpContext) : Inexception::EInException(Msg, AHelpContext) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateFmtHelp */ inline __fastcall EInPOP3Exception(const AnsiString Msg, System::TVarRec const * Args, const int Args_Size, int AHelpContext) : Inexception::EInException(Msg, Args, Args_Size, AHelpContext) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateResHelp */ inline __fastcall EInPOP3Exception(int Ident, int AHelpContext)/* overload */ : Inexception::EInException(Ident, AHelpContext) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateResFmtHelp */ inline __fastcall EInPOP3Exception(System::PResStringRec ResStringRec, System::TVarRec const * Args, const int Args_Size, int AHelpContext)/* overload */ : Inexception::EInException(ResStringRec, Args, Args_Size, AHelpContext) { }
	#pragma option pop
	
public:
	#pragma option push -w-inl
	/* TObject.Destroy */ inline __fastcall virtual ~EInPOP3Exception(void) { }
	#pragma option pop
	
};


class DELPHICLASS EIdDoesNotSupportAPOP;
class PASCALIMPLEMENTATION EIdDoesNotSupportAPOP : public EInPOP3Exception 
{
	typedef EInPOP3Exception inherited;
	
public:
	#pragma option push -w-inl
	/* EInExceptionBase.Create */ inline __fastcall virtual EIdDoesNotSupportAPOP(AnsiString AMsg)/* overload */ : EInPOP3Exception(AMsg) { }
	#pragma option pop
	
public:
	#pragma option push -w-inl
	/* Exception.CreateFmt */ inline __fastcall EIdDoesNotSupportAPOP(const AnsiString Msg, System::TVarRec const * Args, const int Args_Size) : EInPOP3Exception(Msg, Args, Args_Size) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateRes */ inline __fastcall EIdDoesNotSupportAPOP(int Ident)/* overload */ : EInPOP3Exception(Ident) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateResFmt */ inline __fastcall EIdDoesNotSupportAPOP(int Ident, System::TVarRec const * Args, const int Args_Size)/* overload */ : EInPOP3Exception(Ident, Args, Args_Size) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateHelp */ inline __fastcall EIdDoesNotSupportAPOP(const AnsiString Msg, int AHelpContext) : EInPOP3Exception(Msg, AHelpContext) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateFmtHelp */ inline __fastcall EIdDoesNotSupportAPOP(const AnsiString Msg, System::TVarRec const * Args, const int Args_Size, int AHelpContext) : EInPOP3Exception(Msg, Args, Args_Size, AHelpContext) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateResHelp */ inline __fastcall EIdDoesNotSupportAPOP(int Ident, int AHelpContext)/* overload */ : EInPOP3Exception(Ident, AHelpContext) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateResFmtHelp */ inline __fastcall EIdDoesNotSupportAPOP(System::PResStringRec ResStringRec, System::TVarRec const * Args, const int Args_Size, int AHelpContext)/* overload */ : EInPOP3Exception(ResStringRec, Args, Args_Size, AHelpContext) { }
	#pragma option pop
	
public:
	#pragma option push -w-inl
	/* TObject.Destroy */ inline __fastcall virtual ~EIdDoesNotSupportAPOP(void) { }
	#pragma option pop
	
};


class DELPHICLASS EIdUnrecognizedReply;
class PASCALIMPLEMENTATION EIdUnrecognizedReply : public EInPOP3Exception 
{
	typedef EInPOP3Exception inherited;
	
public:
	#pragma option push -w-inl
	/* EInExceptionBase.Create */ inline __fastcall virtual EIdUnrecognizedReply(AnsiString AMsg)/* overload */ : EInPOP3Exception(AMsg) { }
	#pragma option pop
	
public:
	#pragma option push -w-inl
	/* Exception.CreateFmt */ inline __fastcall EIdUnrecognizedReply(const AnsiString Msg, System::TVarRec const * Args, const int Args_Size) : EInPOP3Exception(Msg, Args, Args_Size) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateRes */ inline __fastcall EIdUnrecognizedReply(int Ident)/* overload */ : EInPOP3Exception(Ident) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateResFmt */ inline __fastcall EIdUnrecognizedReply(int Ident, System::TVarRec const * Args, const int Args_Size)/* overload */ : EInPOP3Exception(Ident, Args, Args_Size) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateHelp */ inline __fastcall EIdUnrecognizedReply(const AnsiString Msg, int AHelpContext) : EInPOP3Exception(Msg, AHelpContext) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateFmtHelp */ inline __fastcall EIdUnrecognizedReply(const AnsiString Msg, System::TVarRec const * Args, const int Args_Size, int AHelpContext) : EInPOP3Exception(Msg, Args, Args_Size, AHelpContext) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateResHelp */ inline __fastcall EIdUnrecognizedReply(int Ident, int AHelpContext)/* overload */ : EInPOP3Exception(Ident, AHelpContext) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateResFmtHelp */ inline __fastcall EIdUnrecognizedReply(System::PResStringRec ResStringRec, System::TVarRec const * Args, const int Args_Size, int AHelpContext)/* overload */ : EInPOP3Exception(ResStringRec, Args, Args_Size, AHelpContext) { }
	#pragma option pop
	
public:
	#pragma option push -w-inl
	/* TObject.Destroy */ inline __fastcall virtual ~EIdUnrecognizedReply(void) { }
	#pragma option pop
	
};


//-- var, const, procedure ---------------------------------------------------
static const bool DEF_POP3USE_IMPLICIT_TLS = false;
#define DEF_ATYPE (TInPOP3AuthenticationType)(0)

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

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