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

// (DO NOT EDIT: machine generated header) 'pbInput.pas' rev: 37.00 (Windows)

#ifndef pbInputHPP
#define pbInputHPP

#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.Classes.hpp>
#include <System.SysUtils.hpp>
#include <pbPublic.hpp>

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

namespace Pbinput
{
//-- forward type declarations -----------------------------------------------
__interface DELPHIINTERFACE IExtensionRegistry;
typedef System::DelphiInterface<IExtensionRegistry> _di_IExtensionRegistry;
__interface DELPHIINTERFACE IBuilder;
typedef System::DelphiInterface<IBuilder> _di_IBuilder;
class DELPHICLASS TProtoBufInput;
//-- type declarations -------------------------------------------------------
__interface  INTERFACE_UUID("{B08BC625-245E-4C25-98DD-98859B951CC7}") IExtensionRegistry  : public System::IInterface 
{
	
};

__interface  INTERFACE_UUID("{98E70F9E-9236-48B2-A6BB-6468150B3A58}") IBuilder  : public System::IInterface 
{
	virtual void __fastcall mergeFrom(TProtoBufInput* input, _di_IExtensionRegistry extReg) = 0 ;
};

#pragma pack(push,4)
class PASCALIMPLEMENTATION TProtoBufInput : public System::TObject
{
	typedef System::TObject inherited;
	
private:
	char *FBuffer;
	int FPos;
	int FLen;
	int FSizeLimit;
	int FRecursionDepth;
	int FLastTag;
	bool FOwnObject;
	void __fastcall FreeBuffer();
	
public:
	__fastcall TProtoBufInput(bool aOwnsObjects)/* overload */;
	__fastcall TProtoBufInput(char * buf, int len, bool aOwnsObjects)/* overload */;
	__fastcall virtual ~TProtoBufInput();
	void __fastcall reset();
	void __fastcall SaveToStream(System::Classes::TStream* Stream);
	void __fastcall SaveToFile(const System::UnicodeString FileName);
	void __fastcall LoadFromFile(const System::UnicodeString FileName);
	void __fastcall LoadFromStream(System::Classes::TStream* Stream)/* overload */;
	void __fastcall LoadFromStream(System::Classes::TStream* Stream, const __int64 size)/* overload */;
	void __fastcall setPos(const int value);
	int __fastcall readTag();
	void __fastcall checkLastTagWas(int value);
	bool __fastcall skipField(int tag);
	void __fastcall skipMessage();
	double __fastcall readDouble();
	float __fastcall readFloat();
	__int64 __fastcall readInt64();
	int __fastcall readInt32();
	__int64 __fastcall readFixed64();
	int __fastcall readFixed32();
	bool __fastcall readRawBoolean();
	bool __fastcall readBoolean();
	System::UnicodeString __fastcall readString();
	System::Sysutils::TBytes __fastcall readBytes();
	void __fastcall readMessage(_di_IBuilder builder, _di_IExtensionRegistry extensionRegistry);
	int __fastcall readUInt32();
	int __fastcall readEnum();
	int __fastcall readSFixed32();
	__int64 __fastcall readSFixed64();
	int __fastcall readSInt32();
	__int64 __fastcall readSInt64();
	int __fastcall readRawVarint32();
	__int64 __fastcall readRawVarint64();
	int __fastcall readRawLittleEndian32();
	__int64 __fastcall readRawLittleEndian64();
	void __fastcall readRawBytes(void *data, int size);
	void __fastcall skipRawBytes(int size);
	TProtoBufInput* __fastcall ReadSubProtoBufInput();
	__property int BufSize = {read=FLen, nodefault};
	__property int LastTag = {read=FLastTag, nodefault};
	__property int getPos = {read=FPos, nodefault};
};

#pragma pack(pop)

//-- var, const, procedure ---------------------------------------------------
extern DELPHI_PACKAGE int __fastcall decodeZigZag32(int n);
extern DELPHI_PACKAGE __int64 __fastcall decodeZigZag64(__int64 n);
}	/* namespace Pbinput */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_PBINPUT)
using namespace Pbinput;
#endif
#pragma pack(pop)
#pragma option pop

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