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

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

#ifndef InreplysmtpHPP
#define InreplysmtpHPP

#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 <Inexception.hpp>	// Pascal unit
#include <Inreply.hpp>	// Pascal unit
#include <Inreplyrfc.hpp>	// Pascal unit

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

namespace Inreplysmtp
{
//-- type declarations -------------------------------------------------------
class DELPHICLASS TInSMTPEnhancedCode;
class PASCALIMPLEMENTATION TInSMTPEnhancedCode : public Classes::TPersistent 
{
	typedef Classes::TPersistent inherited;
	
protected:
	unsigned FStatusClass;
	unsigned FSubject;
	unsigned FDetails;
	bool FAvailable;
	virtual void __fastcall AssignTo(Classes::TPersistent* ADest);
	bool __fastcall IsValInReplyCode(const AnsiString AText);
	AnsiString __fastcall GetReplyAsStr();
	void __fastcall SetReplyAsStr(const AnsiString AText);
	void __fastcall SetStatusClass(const unsigned AValue);
	void __fastcall SetAvailable(const bool AValue);
	
public:
	__fastcall TInSMTPEnhancedCode(void);
	
__published:
	__property unsigned StatusClass = {read=FStatusClass, write=SetStatusClass, default=2};
	__property unsigned Subject = {read=FSubject, write=FSubject, default=0};
	__property unsigned Details = {read=FDetails, write=FDetails, default=0};
	__property bool Available = {read=FAvailable, write=SetAvailable, default=0};
	__property AnsiString ReplyAsStr = {read=GetReplyAsStr, write=SetReplyAsStr};
public:
	#pragma option push -w-inl
	/* TPersistent.Destroy */ inline __fastcall virtual ~TInSMTPEnhancedCode(void) { }
	#pragma option pop
	
};


class DELPHICLASS TInReplySMTP;
class PASCALIMPLEMENTATION TInReplySMTP : public Inreplyrfc::TInReplyRFC 
{
	typedef Inreplyrfc::TInReplyRFC inherited;
	
protected:
	TInSMTPEnhancedCode* FEnhancedCode;
	virtual void __fastcall AssignTo(Classes::TPersistent* ADest);
	void __fastcall SetEnhancedCode(TInSMTPEnhancedCode* AValue);
	virtual Classes::TStrings* __fastcall GetFormattedReply(void);
	virtual void __fastcall SetFormattedReply(const Classes::TStrings* AValue);
	
public:
	__fastcall virtual TInReplySMTP(Classes::TCollection* ACollection, Inreply::TIdReplies* AReplyTexts)/* overload */;
	__fastcall virtual ~TInReplySMTP(void);
	virtual void __fastcall RaiseReplyError(void);
	void __fastcall SetEnhReply(const int ANumericCode, const AnsiString AEnhReply, const AnsiString AText);
	
__published:
	__property TInSMTPEnhancedCode* EnhancedCode = {read=FEnhancedCode, write=SetEnhancedCode};
};


class DELPHICLASS TIdRepliesSMTP;
class PASCALIMPLEMENTATION TIdRepliesSMTP : public Inreplyrfc::TIdRepliesRFC 
{
	typedef Inreplyrfc::TIdRepliesRFC inherited;
	
public:
	__fastcall virtual TIdRepliesSMTP(Classes::TPersistent* AOwner)/* overload */;
public:
	#pragma option push -w-inl
	/* TCollection.Destroy */ inline __fastcall virtual ~TIdRepliesSMTP(void) { }
	#pragma option pop
	
};


class DELPHICLASS EInSMTPReplyError;
class PASCALIMPLEMENTATION EInSMTPReplyError : public Inreplyrfc::EInReplyRFCError 
{
	typedef Inreplyrfc::EInReplyRFCError inherited;
	
protected:
	TInSMTPEnhancedCode* FEnhancedCode;
	
public:
	__fastcall EInSMTPReplyError(const int AErrCode, TInSMTPEnhancedCode* AEnhanced, const AnsiString AReplyMessage);
	__fastcall virtual ~EInSMTPReplyError(void);
	__property TInSMTPEnhancedCode* EnhancedCode = {read=FEnhancedCode};
public:
	#pragma option push -w-inl
	/* EInExceptionBase.Create */ inline __fastcall virtual EInSMTPReplyError(AnsiString AMsg)/* overload */ : Inreplyrfc::EInReplyRFCError(AMsg) { }
	#pragma option pop
	
public:
	#pragma option push -w-inl
	/* Exception.CreateFmt */ inline __fastcall EInSMTPReplyError(const AnsiString Msg, System::TVarRec const * Args, const int Args_Size) : Inreplyrfc::EInReplyRFCError(Msg, Args, Args_Size) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateRes */ inline __fastcall EInSMTPReplyError(int Ident)/* overload */ : Inreplyrfc::EInReplyRFCError(Ident) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateResFmt */ inline __fastcall EInSMTPReplyError(int Ident, System::TVarRec const * Args, const int Args_Size)/* overload */ : Inreplyrfc::EInReplyRFCError(Ident, Args, Args_Size) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateHelp */ inline __fastcall EInSMTPReplyError(const AnsiString Msg, int AHelpContext) : Inreplyrfc::EInReplyRFCError(Msg, AHelpContext) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateFmtHelp */ inline __fastcall EInSMTPReplyError(const AnsiString Msg, System::TVarRec const * Args, const int Args_Size, int AHelpContext) : Inreplyrfc::EInReplyRFCError(Msg, Args, Args_Size, AHelpContext) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateResHelp */ inline __fastcall EInSMTPReplyError(int Ident, int AHelpContext)/* overload */ : Inreplyrfc::EInReplyRFCError(Ident, AHelpContext) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateResFmtHelp */ inline __fastcall EInSMTPReplyError(System::PResStringRec ResStringRec, System::TVarRec const * Args, const int Args_Size, int AHelpContext)/* overload */ : Inreplyrfc::EInReplyRFCError(ResStringRec, Args, Args_Size, AHelpContext) { }
	#pragma option pop
	
};


class DELPHICLASS EInSMTPReply;
class PASCALIMPLEMENTATION EInSMTPReply : public Inexception::EInException 
{
	typedef Inexception::EInException inherited;
	
public:
	#pragma option push -w-inl
	/* EInExceptionBase.Create */ inline __fastcall virtual EInSMTPReply(AnsiString AMsg)/* overload */ : Inexception::EInException(AMsg) { }
	#pragma option pop
	
public:
	#pragma option push -w-inl
	/* Exception.CreateFmt */ inline __fastcall EInSMTPReply(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 EInSMTPReply(int Ident)/* overload */ : Inexception::EInException(Ident) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateResFmt */ inline __fastcall EInSMTPReply(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 EInSMTPReply(const AnsiString Msg, int AHelpContext) : Inexception::EInException(Msg, AHelpContext) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateFmtHelp */ inline __fastcall EInSMTPReply(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 EInSMTPReply(int Ident, int AHelpContext)/* overload */ : Inexception::EInException(Ident, AHelpContext) { }
	#pragma option pop
	#pragma option push -w-inl
	/* Exception.CreateResFmtHelp */ inline __fastcall EInSMTPReply(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 ~EInSMTPReply(void) { }
	#pragma option pop
	
};


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


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


//-- var, const, procedure ---------------------------------------------------
#define ValidClassChars (Set<char, 0, 255> () << '\x32' << '\x34' << '\x35' )
#define ValidClassVals (Set<Byte, 0, 255> () << 0x2 << 0x4 << 0x5 )
static const Shortint CLASS_DEF = 0x2;
static const bool AVAIL_DEF = false;
static const Shortint NODETAILS = 0x0;
static const char PARTSEP = '\x2e';
#define Id_EHR_USE_STARTTLS "5.7.0"
#define Id_EHR_GENERIC_OK "2.0.0"
#define Id_EHR_GENERIC_TRANS "4.0.0"
#define Id_EHR_GENERIC_PERM "5.0.0"
#define Id_EHR_MSG_OTH_OK "2.1.0"
#define Id_EHR_MSG_OTH_TRANS "4.1.0"
#define Id_EHR_MSG_OTH_PERM "5.1.0"
#define Id_EHR_MSG_BAD_DEST "5.1.1"
#define Id_EHR_MSG_BAD_DEST_SYST "5.1.2"
#define Id_EHR_MSG_BAD_DEST_SYNTAX "5.1.3"
#define Id_EHR_MSG_AMBIG_DEST "5.1.4"
#define Id_EHR_MSG_VALID_DEST "2.1.5"
#define Id_EHR_MSG_DEST_MOVED_NOFORWARD "2.1.6"
#define Id_EHR_MSG_SENDER_BOX_SYNTAX "5.1.7"
#define Id_EHR_MSG_BAD_SENDER_ADDR "5.1.8"
#define Id_EHR_MB_OTHER_STATUS_OK "2.2.0"
#define Id_EHR_MB_OTHER_STATUS_TRANS "4.2.0"
#define Id_EHR_MB_OTHER_STATUS_PERM "5.2.0"
#define Id_EHR_MB_DISABLED_TEMP "4.2.1"
#define Id_EHR_MB_DISABLED_PERM "5.2.1"
#define Id_EHR_MB_FULL "4.2.2"
#define Id_EHR_MB_MSG_LEN_LIMIT "5.2.3"
#define Id_EHR_MB_ML_EXPAN_TEMP "4.2.4"
#define Id_EHR_MB_ML_EXPAN_PERM "5.2.4"
#define Id_EHR_MD_OTHER_OK "2.3.0"
#define Id_EHR_MD_OTHER_TRANS "4.3.0"
#define Id_EHR_MD_OTHER_PERM "5.3.0"
#define Id_EHR_MD_MAIL_SYSTEM_FULL "4.3.1"
#define Id_EHR_MD_NOT_EXCEPTING_TRANS "4.3.2"
#define Id_EHR_MD_NOT_EXCEPTING_PERM "5.3.2"
#define Id_EHR_MD_NOT_CAPABLE_FEAT_TRANS "4.3.3"
#define Id_EHR_MD_NOT_CAPABLE_FEAT_PERM "5.3.3"
#define Id_EHR_MD_TOO_BIG "5.3.4"
#define Id_EHR_MD_INCORRECT_CONFIG_TRANS "4.3.5"
#define Id_EHR_MD_INCORRECT_CONFIG_PERM "5.3.5"
#define Id_EHR_NR_OTHER_OK "2.4.0"
#define Id_EHR_NR_OTHER_TRANS "4.4.0"
#define Id_EHR_NR_OTHER_PERM "5.4.0"
#define Id_EHR_NR_NO_ANSWER "4.4.1"
#define Id_EHR_NR_BAD_CONNECTION "4.4.2"
#define Id_EHR_NR_DIR_SVR_FAILURE "4.4.3"
#define Id_EHR_NR_UNABLE_TO_ROUTE_TRANS "4.4.4"
#define Id_EHR_NR_UNABLE_TO_ROUTE_PERM "5.4.4"
#define Id_EHR_NR_SYSTEM_CONGESTION "4.4.5"
#define Id_EHR_NR_LOOP_DETECTED "4.4.6"
#define Id_EHR_NR_DELIVERY_EXPIRED_TEMP "4.4.7"
#define Id_EHR_NR_DELIVERY_EXPIRED_PERM "5.4.7"
#define Id_EHR_PR_OTHER_OK "2.5.0"
#define Id_EHR_PR_OTHER_TEMP "4.5.0"
#define Id_EHR_PR_OTHER_PERM "5.5.0"
#define Id_EHR_PR_INVALID_CMD "5.5.1"
#define Id_EHR_PR_SYNTAX_ERR "5.5.2"
#define Id_EHR_PR_TOO_MANY_RECIPIENTS_TEMP "4.5.3"
#define Id_EHR_PR_TOO_MANY_RECIPIENTS_PERM "5.5.3"
#define Id_EHR_PR_INVALID_CMD_ARGS "5.5.4"
#define Id_EHR_PR_WRONG_VER_TRANS "4.5.5"
#define Id_EHR_PR_WRONG_VER_PERM "5.5.5"
#define Id_EHR_MED_OTHER_OK "2.6.0"
#define Id_EHR_MED_OTHER_TRANS "4.6.0"
#define Id_EHR_MED_OTHER_PERM "5.6.0"
#define Id_EHR_MED_NOT_SUPPORTED "5.6.1"
#define Id_EHR_MED_CONV_REQUIRED_PROHIB_TRANS "4.6.2"
#define Id_EHR_MED_CONV_REQUIRED_PROHIB_PERM "5.6.2"
#define Id_EHR_MED_CONV_REQUIRED_NOT_SUP_TRANS "4.6.3"
#define Id_EHR_MED_CONV_REQUIRED_NOT_SUP_PERM "5.6.3"
#define Id_EHR_MED_CONV_LOSS_WARNING "2.6.4"
#define Id_EHR_MED_CONV_LOSS_ERROR "5.6.4"
#define Id_EHR_MED_CONV_FAILED_TRANS "4.6.5"
#define Id_EHR_MED_CONV_FAILED_PERM "5.6.5"
#define Id_EHR_SEC_OTHER_OK "2.7.0"
#define Id_EHR_SEC_OTHER_TRANS "4.7.0"
#define Id_EHR_SEC_OTHER_PERM "5.7.0"
#define Id_EHR_SEC_DEL_NOT_AUTH "5.7.1"
#define Id_EHR_SEC_EXP_NOT_AUTH "5.7.2"
#define Id_EHR_SEC_CONV_REQ_NOT_POSSIBLE "5.7.3"
#define Id_EHR_SEC_NOT_SUPPORTED "5.7.4"
#define Id_EHR_SEC_CRYPT_FAILURE_TRANS "4.7.5"
#define Id_EHR_SEC_CRYPT_FAILURE_PERM "5.7.5"
#define Id_EHR_SEC_CRYPT_ALG_NOT_SUP_TRANS "4.7.6"
#define Id_EHR_SEC_CRYPT_ALG_NOT_SUP_PERM "5.7.6"
#define Id_EHR_SEC_INTEGRETIY_FAILED_WARN "2.7.7"
#define Id_EHR_SEC_INTEGRETIY_FAILED_TRANS "4.7.7"

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

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