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

// (DO NOT EDIT: machine generated header) 'UXlsMD5.pas' rev: 5.00

#ifndef UXlsMD5HPP
#define UXlsMD5HPP

#pragma delphiheader begin
#pragma option push -w-
#pragma option push -Vx
#include <Classes.hpp>	// Pascal unit
#include <SysUtils.hpp>	// Pascal unit
#include <SysInit.hpp>	// Pascal unit
#include <System.hpp>	// Pascal unit

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

namespace Uxlsmd5
{
//-- type declarations -------------------------------------------------------
typedef unsigned TMd5Digest[4];

class DELPHICLASS TMd5Stream;
class PASCALIMPLEMENTATION TMd5Stream : public Classes::TStream 
{
	typedef Classes::TStream inherited;
	
private:
	__int64 BlockCount;
	unsigned BufCount;
	unsigned Buffer[16];
	unsigned A;
	unsigned B;
	unsigned C;
	unsigned D;
	unsigned __fastcall F(unsigned X, unsigned Y, unsigned Z);
	unsigned __fastcall G(unsigned X, unsigned Y, unsigned Z);
	unsigned __fastcall H(unsigned X, unsigned Y, unsigned Z);
	unsigned __fastcall I(unsigned X, unsigned Y, unsigned Z);
	unsigned __fastcall Rotate(unsigned L, unsigned NumBits);
	
protected:
	virtual void __fastcall AddByte(Byte B);
	virtual AnsiString __fastcall GetDigestString();
	virtual void __fastcall Initialize(void);
	virtual void __fastcall UpdateDigest(void);
	
public:
	__fastcall TMd5Stream(void);
	virtual int __fastcall Read(void *Buffer, int Count);
	virtual int __fastcall Seek(int Offset, Word Origin);
	virtual int __fastcall Write(const void *Buffer, int Count);
	virtual unsigned __fastcall GetDigest();
	__property AnsiString DigestString = {read=GetDigestString};
public:
	#pragma option push -w-inl
	/* TObject.Destroy */ inline __fastcall virtual ~TMd5Stream(void) { }
	#pragma option pop
	
};


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

}	/* namespace Uxlsmd5 */
#if !defined(NO_IMPLICIT_NAMESPACE_USE)
using namespace Uxlsmd5;
#endif
#pragma option pop	// -w-
#pragma option pop	// -Vx

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