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

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

#ifndef Fmx_UxlssstHPP
#define Fmx_UxlssstHPP

#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 <FMX.XlsMessages.hpp>	// Pascal unit
#include <FMX.UXlsBaseRecords.hpp>	// Pascal unit
#include <FMX.UXlsOtherRecords.hpp>	// Pascal unit
#include <FMX.UXlsStrings.hpp>	// Pascal unit
#include <System.Classes.hpp>	// Pascal unit
#include <FMX.UFlxMessages.hpp>	// Pascal unit
#include <System.Generics.Collections.hpp>	// Pascal unit
#include <FMX.UOle2Impl.hpp>	// Pascal unit
#include <System.Generics.Defaults.hpp>	// Pascal unit
#include <System.Types.hpp>	// Pascal unit

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

namespace Fmx
{
namespace Uxlssst
{
//-- type declarations -------------------------------------------------------
#pragma pack(push,1)
struct DECLSPEC_DRECORD TExtraData
{
public:
	System::Word Refs;
	unsigned AbsStreamPos;
	System::Word RecordStreamPos;
	unsigned PosInTable;
};
#pragma pack(pop)


typedef TExtraData *PExtraData;

typedef int TiSSTEntry;

typedef Fmx::Xlsmessages::PArrayOfByte PiSSTEntry;

struct DECLSPEC_DRECORD TMemSST
{
private:
	typedef System::DynamicArray<System::Byte> _TMemSST__1;
	
	
public:
	int UsedSize;
	_TMemSST__1 Buffer;
};


class DELPHICLASS TSST;
class PASCALIMPLEMENTATION TSST : public System::Generics::Collections::TList__1<int>
{
	typedef System::Generics::Collections::TList__1<int> inherited;
	
private:
	TMemSST MemSST;
	void __fastcall QuickSort(int L, int R);
	__int64 __fastcall SSTRecordSize(void);
	__int64 __fastcall ExtSSTRecordSize(void);
	
public:
	__fastcall TSST(void);
	bool __fastcall Find(const Fmx::Xlsmessages::PArrayOfByte s, int &Index);
	void __fastcall Load(Fmx::Uxlsotherrecords::TSSTRecord* const aSSTRecord);
	void __fastcall SaveToStream(Fmx::Uole2impl::TOle2File* const DataStream);
	void __fastcall WriteExtSST(Fmx::Uole2impl::TOle2File* const DataStream);
	int __fastcall AddString(const System::UnicodeString s, const Fmx::Uflxmessages::TRTFRunList RTFRuns);
	HIDESBASE void __fastcall Sort(void);
	__int64 __fastcall TotalSize(void);
	void __fastcall FixRefs(void);
	Fmx::Xlsmessages::PArrayOfByte __fastcall GetEntry(const int aEntry);
public:
	/* {System_Generics_Collections}TList<System_Integer>.Destroy */ inline __fastcall virtual ~TSST(void) { }
	
};


class DELPHICLASS TLabelSSTRecord;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TLabelSSTRecord : public Fmx::Uxlsbaserecords::TCellRecord
{
	typedef Fmx::Uxlsbaserecords::TCellRecord inherited;
	
private:
	int pSSTEntry;
	TSST* SST;
	System::UnicodeString __fastcall GetAsString(void);
	void __fastcall SetAsString(const System::UnicodeString Value);
	System::UnicodeString __fastcall GetAsRTF(void);
	void __fastcall SetAsRTF(const System::UnicodeString Value);
	Fmx::Uflxmessages::TRichString __fastcall GetAsRichString(void);
	void __fastcall SetAsRichString(const Fmx::Uflxmessages::TRichString &Value);
	
protected:
	virtual System::Variant __fastcall GetValue(void);
	virtual void __fastcall SetValue(const System::Variant &Value);
	virtual Fmx::Uxlsbaserecords::TBaseRecord* __fastcall DoCopyTo(void);
	
public:
	__fastcall virtual TLabelSSTRecord(const System::Word aId, const Fmx::Xlsmessages::PArrayOfByte aData, const int aDataSize);
	__fastcall TLabelSSTRecord(const System::Word aRow, const System::Word aCol, const System::Word aXF, TSST* const aSST);
	void __fastcall AttachToSST(TSST* const aSST);
	virtual void __fastcall SaveToStream(Fmx::Uole2impl::TOle2File* const Workbook);
	__fastcall virtual ~TLabelSSTRecord(void);
	__property System::UnicodeString AsString = {read=GetAsString, write=SetAsString};
	__property Fmx::Uflxmessages::TRichString AsRichString = {read=GetAsRichString, write=SetAsRichString};
	__property System::UnicodeString AsRTF = {read=GetAsRTF, write=SetAsRTF};
};

#pragma pack(pop)

class DELPHICLASS TLabelRecord;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TLabelRecord : public Fmx::Uxlsbaserecords::TCellRecord
{
	typedef Fmx::Uxlsbaserecords::TCellRecord inherited;
	
public:
	virtual System::Variant __fastcall GetValue(void);
public:
	/* TCellRecord.CreateFromData */ inline __fastcall TLabelRecord(const System::Word aId, const System::Word aDataSize, const System::Word aRow, const System::Word aCol, const System::Word aXF) : Fmx::Uxlsbaserecords::TCellRecord(aId, aDataSize, aRow, aCol, aXF) { }
	
public:
	/* TBaseRowColRecord.Create */ inline __fastcall virtual TLabelRecord(const System::Word aId, const Fmx::Xlsmessages::PArrayOfByte aData, const int aDataSize) : Fmx::Uxlsbaserecords::TCellRecord(aId, aData, aDataSize) { }
	
public:
	/* TBaseRecord.Destroy */ inline __fastcall virtual ~TLabelRecord(void) { }
	
};

#pragma pack(pop)

class DELPHICLASS TRStringRecord;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TRStringRecord : public Fmx::Uxlsbaserecords::TCellRecord
{
	typedef Fmx::Uxlsbaserecords::TCellRecord inherited;
	
private:
	Fmx::Uflxmessages::TRichString __fastcall GetAsRichString(void);
	
public:
	virtual System::Variant __fastcall GetValue(void);
	__property Fmx::Uflxmessages::TRichString AsRichString = {read=GetAsRichString};
public:
	/* TCellRecord.CreateFromData */ inline __fastcall TRStringRecord(const System::Word aId, const System::Word aDataSize, const System::Word aRow, const System::Word aCol, const System::Word aXF) : Fmx::Uxlsbaserecords::TCellRecord(aId, aDataSize, aRow, aCol, aXF) { }
	
public:
	/* TBaseRowColRecord.Create */ inline __fastcall virtual TRStringRecord(const System::Word aId, const Fmx::Xlsmessages::PArrayOfByte aData, const int aDataSize) : Fmx::Uxlsbaserecords::TCellRecord(aId, aData, aDataSize) { }
	
public:
	/* TBaseRecord.Destroy */ inline __fastcall virtual ~TRStringRecord(void) { }
	
};

#pragma pack(pop)

//-- var, const, procedure ---------------------------------------------------
}	/* namespace Uxlssst */
}	/* namespace Fmx */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMX_UXLSSST)
using namespace Fmx::Uxlssst;
#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_UxlssstHPP
