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

// (DO NOT EDIT: machine generated header) 'FMX.UXlsMD5.pas' rev: 27.00 (Windows)

#ifndef Fmx_Uxlsmd5HPP
#define Fmx_Uxlsmd5HPP

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

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

namespace Fmx
{
namespace Uxlsmd5
{
//-- type declarations -------------------------------------------------------
typedef System::StaticArray<unsigned, 4> TMd5Digest;

class DELPHICLASS TMd5Stream;
class PASCALIMPLEMENTATION TMd5Stream : public System::Classes::TStream
{
	typedef System::Classes::TStream inherited;
	
private:
	__int64 BlockCount;
	unsigned BufCount;
	System::StaticArray<unsigned, 16> Buffer;
	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(System::Byte B);
	virtual System::UnicodeString __fastcall GetDigestString(void);
	virtual void __fastcall Initialize(void);
	virtual void __fastcall UpdateDigest(void);
	
public:
	__fastcall TMd5Stream(void);
	virtual int __fastcall Read(void *Buffer, int Count)/* overload */;
	virtual int __fastcall Seek(int Offset, System::Word Origin)/* overload */;
	virtual int __fastcall Write(const void *Buffer, int Count)/* overload */;
	virtual TMd5Digest __fastcall GetDigest(void);
	__property System::UnicodeString DigestString = {read=GetDigestString};
public:
	/* TObject.Destroy */ inline __fastcall virtual ~TMd5Stream(void) { }
	
	/* Hoisted overloads: */
	
public:
	inline int __fastcall  Read(System::DynamicArray<System::Byte> Buffer, int Offset, int Count){ return System::Classes::TStream::Read(Buffer, Offset, Count); }
	inline int __fastcall  Read(System::DynamicArray<System::Byte> &Buffer, int Count){ return System::Classes::TStream::Read(Buffer, Count); }
	inline __int64 __fastcall  Seek(const __int64 Offset, System::Classes::TSeekOrigin Origin){ return System::Classes::TStream::Seek(Offset, Origin); }
	inline __int64 __fastcall  Seek _DEPRECATED_ATTRIBUTE0 (const __int64 Offset, System::Word Origin){ return System::Classes::TStream::Seek(Offset, Origin); }
	inline int __fastcall  Write(const System::DynamicArray<System::Byte> Buffer, int Offset, int Count){ return System::Classes::TStream::Write(Buffer, Offset, Count); }
	inline int __fastcall  Write(const System::DynamicArray<System::Byte> Buffer, int Count){ return System::Classes::TStream::Write(Buffer, Count); }
	
};


//-- var, const, procedure ---------------------------------------------------
}	/* namespace Uxlsmd5 */
}	/* namespace Fmx */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMX_UXLSMD5)
using namespace Fmx::Uxlsmd5;
#endif
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMX)
using namespace Fmx;
#endif
#pragma pack(pop)
#pragma option pop

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