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

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

#ifndef Fmx_Vector_tileHPP
#define Fmx_Vector_tileHPP

#pragma delphiheader begin
#pragma option push
#if defined(__BORLANDC__) && !defined(__clang__)
#pragma option -w-      // All warnings off
#pragma option -Vx      // Zero-length empty class member 
#endif
#pragma pack(push,8)
#include <System.hpp>
#include <SysInit.hpp>
#include <System.SysUtils.hpp>
#include <System.Types.hpp>
#include <System.UITypes.hpp>
#include <System.Rtti.hpp>
#include <System.Classes.hpp>
#include <System.Math.hpp>
#include <System.SyncObjs.hpp>
#include <System.UIConsts.hpp>
#include <System.Generics.Collections.hpp>
#include <System.Generics.Defaults.hpp>
#include <FMX.Types.hpp>
#include <FMX.Controls.hpp>
#include <FMX.Forms.hpp>
#include <FMX.Objects.hpp>
#include <FMX.Platform.hpp>
#include <FMX.pbInput.hpp>
#include <FMX.pbOutput.hpp>
#include <FMX.pbPublic.hpp>
#include <FMX.uAbstractProtoBufClasses.hpp>

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

namespace Fmx
{
namespace Vector_tile
{
//-- forward type declarations -----------------------------------------------
class DELPHICLASS TValue;
class DELPHICLASS TFeature;
class DELPHICLASS TLayer;
class DELPHICLASS TTile;
//-- type declarations -------------------------------------------------------
enum DECLSPEC_DENUM TGeomType : unsigned char { UNKNOWN, POINT, LINESTRING, POLYGON };

typedef System::Generics::Collections::TList__1<unsigned> TListCardinal;

class PASCALIMPLEMENTATION TValue : public Fmx::Uabstractprotobufclasses::TAbstractProtoBufClass
{
	typedef Fmx::Uabstractprotobufclasses::TAbstractProtoBufClass inherited;
	
private:
	System::UnicodeString Fstring_value;
	float Ffloat_value;
	double Fdouble_value;
	__int64 Fint_value;
	unsigned __int64 Fuint_value;
	__int64 Fsint_value;
	bool Fbool_value;
	
protected:
	virtual bool __fastcall LoadSingleFieldFromBuf(Fmx::Pbinput::TProtoBufInput* ProtoBuf, int FieldNumber, int WireType);
	virtual void __fastcall SaveFieldsToBuf(Fmx::Pboutput::TProtoBufOutput* ProtoBuf);
	
public:
	__property System::UnicodeString string_value = {read=Fstring_value, write=Fstring_value};
	__property float float_value = {read=Ffloat_value, write=Ffloat_value};
	__property double double_value = {read=Fdouble_value, write=Fdouble_value};
	__property __int64 int_value = {read=Fint_value, write=Fint_value};
	__property unsigned __int64 uint_value = {read=Fuint_value, write=Fuint_value};
	__property __int64 sint_value = {read=Fsint_value, write=Fsint_value};
	__property bool bool_value = {read=Fbool_value, write=Fbool_value, nodefault};
public:
	/* TAbstractProtoBufClass.Create */ inline __fastcall virtual TValue() : Fmx::Uabstractprotobufclasses::TAbstractProtoBufClass() { }
	/* TAbstractProtoBufClass.Destroy */ inline __fastcall virtual ~TValue() { }
	
};


class PASCALIMPLEMENTATION TFeature : public Fmx::Uabstractprotobufclasses::TAbstractProtoBufClass
{
	typedef Fmx::Uabstractprotobufclasses::TAbstractProtoBufClass inherited;
	
private:
	unsigned __int64 Fid;
	TListCardinal* FtagsList;
	TGeomType Ftype;
	TListCardinal* FgeometryList;
	
protected:
	virtual bool __fastcall LoadSingleFieldFromBuf(Fmx::Pbinput::TProtoBufInput* ProtoBuf, int FieldNumber, int WireType);
	virtual void __fastcall SaveFieldsToBuf(Fmx::Pboutput::TProtoBufOutput* ProtoBuf);
	
public:
	__fastcall virtual TFeature();
	__fastcall virtual ~TFeature();
	__property unsigned __int64 id = {read=Fid, write=Fid, default=0};
	__property TListCardinal* tagsList = {read=FtagsList};
	__property TGeomType Geomtype = {read=Ftype, write=Ftype, default=0};
	__property TListCardinal* geometryList = {read=FgeometryList};
};


typedef Fmx::Uabstractprotobufclasses::TProtoBufClassList__1<TFeature*> TProtoBufClassListFeature;

typedef System::Classes::TStringList TListString;

typedef Fmx::Uabstractprotobufclasses::TProtoBufClassList__1<TValue*> TProtoBufClassListValue;

#pragma pack(push,4)
class PASCALIMPLEMENTATION TLayer : public Fmx::Uabstractprotobufclasses::TAbstractProtoBufClass
{
	typedef Fmx::Uabstractprotobufclasses::TAbstractProtoBufClass inherited;
	
private:
	System::UnicodeString Fname;
	TProtoBufClassListFeature* FfeaturesList;
	TListString* FkeysList;
	TProtoBufClassListValue* FvaluesList;
	unsigned Fextent;
	unsigned Fversion;
	
protected:
	virtual bool __fastcall LoadSingleFieldFromBuf(Fmx::Pbinput::TProtoBufInput* ProtoBuf, int FieldNumber, int WireType);
	virtual void __fastcall SaveFieldsToBuf(Fmx::Pboutput::TProtoBufOutput* ProtoBuf);
	
public:
	__fastcall virtual TLayer();
	__fastcall virtual ~TLayer();
	__property System::UnicodeString name = {read=Fname, write=Fname};
	__property TProtoBufClassListFeature* featuresList = {read=FfeaturesList};
	__property TListString* keysList = {read=FkeysList};
	__property TProtoBufClassListValue* valuesList = {read=FvaluesList};
	__property unsigned extent = {read=Fextent, write=Fextent, default=4096};
	__property unsigned version = {read=Fversion, write=Fversion, default=1};
};

#pragma pack(pop)

typedef Fmx::Uabstractprotobufclasses::TProtoBufClassList__1<TLayer*> TProtoBufClassListLayer;

#pragma pack(push,4)
class PASCALIMPLEMENTATION TTile : public Fmx::Uabstractprotobufclasses::TAbstractProtoBufClass
{
	typedef Fmx::Uabstractprotobufclasses::TAbstractProtoBufClass inherited;
	
private:
	TProtoBufClassListLayer* FlayersList;
	
protected:
	virtual bool __fastcall LoadSingleFieldFromBuf(Fmx::Pbinput::TProtoBufInput* ProtoBuf, int FieldNumber, int WireType);
	virtual void __fastcall SaveFieldsToBuf(Fmx::Pboutput::TProtoBufOutput* ProtoBuf);
	
public:
	__fastcall virtual TTile();
	__fastcall virtual ~TTile();
	void __fastcall Clear();
	__property TProtoBufClassListLayer* layersList = {read=FlayersList};
};

#pragma pack(pop)

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