1105 lines
30 KiB
ObjectPascal
1105 lines
30 KiB
ObjectPascal
{ Unit pbTest1Messages.pas }
|
|
{ Generated from Test1.proto }
|
|
{ Package Test1 }
|
|
|
|
unit pbTest1Messages;
|
|
|
|
interface
|
|
|
|
uses
|
|
flcUtils,
|
|
flcStrings,
|
|
flcProtoBufUtils,
|
|
pbTestImport1Messages;
|
|
|
|
|
|
|
|
{ TEnumG0 }
|
|
|
|
type
|
|
TEnumG0 = (
|
|
enumg0G1 = 1,
|
|
enumg0G2 = 2
|
|
);
|
|
|
|
function pbEncodeValueEnumG0(var Buf; const BufSize: Integer; const Value: TEnumG0): Integer;
|
|
function pbEncodeFieldEnumG0(var Buf; const BufSize: Integer; const FieldNum: Integer; const Value: TEnumG0): Integer;
|
|
function pbDecodeValueEnumG0(const Buf; const BufSize: Integer; var Value: TEnumG0): Integer;
|
|
procedure pbDecodeFieldEnumG0(const Field: TpbProtoBufDecodeField; var Value: TEnumG0);
|
|
|
|
|
|
|
|
{ TTestMsg0Record }
|
|
|
|
type
|
|
TTestMsg0Record = record
|
|
Field1 : LongInt;
|
|
Field2 : Int64;
|
|
end;
|
|
PTestMsg0Record = ^TTestMsg0Record;
|
|
|
|
procedure TestMsg0RecordInit(var A: TTestMsg0Record);
|
|
procedure TestMsg0RecordFinalise(var A: TTestMsg0Record);
|
|
function pbEncodeDataTestMsg0Record(var Buf; const BufSize: Integer; const A: TTestMsg0Record): Integer;
|
|
function pbEncodeValueTestMsg0Record(var Buf; const BufSize: Integer; const A: TTestMsg0Record): Integer;
|
|
function pbEncodeFieldTestMsg0Record(var Buf; const BufSize: Integer; const FieldNum: Integer; const A: TTestMsg0Record): Integer;
|
|
function pbDecodeValueTestMsg0Record(const Buf; const BufSize: Integer; var Value: TTestMsg0Record): Integer;
|
|
procedure pbDecodeFieldTestMsg0Record(const Field: TpbProtoBufDecodeField; var Value: TTestMsg0Record);
|
|
|
|
|
|
|
|
{ TEnum1 }
|
|
|
|
type
|
|
TEnum1 = (
|
|
enum1Val1 = 1,
|
|
enum1Val2 = 2
|
|
);
|
|
|
|
function pbEncodeValueEnum1(var Buf; const BufSize: Integer; const Value: TEnum1): Integer;
|
|
function pbEncodeFieldEnum1(var Buf; const BufSize: Integer; const FieldNum: Integer; const Value: TEnum1): Integer;
|
|
function pbDecodeValueEnum1(const Buf; const BufSize: Integer; var Value: TEnum1): Integer;
|
|
procedure pbDecodeFieldEnum1(const Field: TpbProtoBufDecodeField; var Value: TEnum1);
|
|
|
|
|
|
|
|
{ TDynArrayInt32 }
|
|
|
|
type
|
|
TDynArrayInt32 = array of LongInt;
|
|
|
|
function pbEncodeFieldDynArrayInt32(var Buf; const BufSize: Integer; const FieldNum: Integer; const Value: TDynArrayInt32): Integer;
|
|
function pbEncodeFieldDynArrayInt32_Packed(var Buf; const BufSize: Integer; const FieldNum: Integer; const Value: TDynArrayInt32): Integer;
|
|
procedure pbDecodeFieldDynArrayInt32(const Field: TpbProtoBufDecodeField; var Value: TDynArrayInt32);
|
|
procedure pbDecodeFieldDynArrayInt32_Packed(const Field: TpbProtoBufDecodeField; var Value: TDynArrayInt32);
|
|
|
|
|
|
|
|
{ TDynArrayString }
|
|
|
|
type
|
|
TDynArrayString = array of RawByteString;
|
|
|
|
function pbEncodeFieldDynArrayString(var Buf; const BufSize: Integer; const FieldNum: Integer; const Value: TDynArrayString): Integer;
|
|
function pbEncodeFieldDynArrayString_Packed(var Buf; const BufSize: Integer; const FieldNum: Integer; const Value: TDynArrayString): Integer;
|
|
procedure pbDecodeFieldDynArrayString(const Field: TpbProtoBufDecodeField; var Value: TDynArrayString);
|
|
procedure pbDecodeFieldDynArrayString_Packed(const Field: TpbProtoBufDecodeField; var Value: TDynArrayString);
|
|
|
|
|
|
|
|
{ TDynArrayEnum1 }
|
|
|
|
type
|
|
TDynArrayEnum1 = array of TEnum1;
|
|
|
|
function pbEncodeFieldDynArrayEnum1(var Buf; const BufSize: Integer; const FieldNum: Integer; const Value: TDynArrayEnum1): Integer;
|
|
function pbEncodeFieldDynArrayEnum1_Packed(var Buf; const BufSize: Integer; const FieldNum: Integer; const Value: TDynArrayEnum1): Integer;
|
|
procedure pbDecodeFieldDynArrayEnum1(const Field: TpbProtoBufDecodeField; var Value: TDynArrayEnum1);
|
|
procedure pbDecodeFieldDynArrayEnum1_Packed(const Field: TpbProtoBufDecodeField; var Value: TDynArrayEnum1);
|
|
|
|
|
|
|
|
{ TDynArrayTestMsg0Record }
|
|
|
|
type
|
|
TDynArrayTestMsg0Record = array of TTestMsg0Record;
|
|
|
|
function pbEncodeFieldDynArrayTestMsg0Record(var Buf; const BufSize: Integer; const FieldNum: Integer; const Value: TDynArrayTestMsg0Record): Integer;
|
|
function pbEncodeFieldDynArrayTestMsg0Record_Packed(var Buf; const BufSize: Integer; const FieldNum: Integer; const Value: TDynArrayTestMsg0Record): Integer;
|
|
procedure pbDecodeFieldDynArrayTestMsg0Record(const Field: TpbProtoBufDecodeField; var Value: TDynArrayTestMsg0Record);
|
|
procedure pbDecodeFieldDynArrayTestMsg0Record_Packed(const Field: TpbProtoBufDecodeField; var Value: TDynArrayTestMsg0Record);
|
|
|
|
|
|
|
|
{ TTestNested1Record }
|
|
|
|
type
|
|
TTestNested1Record = record
|
|
Field1_HasValue : Boolean;
|
|
Field1 : LongInt;
|
|
end;
|
|
PTestNested1Record = ^TTestNested1Record;
|
|
|
|
procedure TestNested1RecordInit(var A: TTestNested1Record);
|
|
procedure TestNested1RecordFinalise(var A: TTestNested1Record);
|
|
function pbEncodeDataTestNested1Record(var Buf; const BufSize: Integer; const A: TTestNested1Record): Integer;
|
|
function pbEncodeValueTestNested1Record(var Buf; const BufSize: Integer; const A: TTestNested1Record): Integer;
|
|
function pbEncodeFieldTestNested1Record(var Buf; const BufSize: Integer; const FieldNum: Integer; const A: TTestNested1Record): Integer;
|
|
function pbDecodeValueTestNested1Record(const Buf; const BufSize: Integer; var Value: TTestNested1Record): Integer;
|
|
procedure pbDecodeFieldTestNested1Record(const Field: TpbProtoBufDecodeField; var Value: TTestNested1Record);
|
|
|
|
|
|
|
|
{ TTestMsg1Record }
|
|
|
|
type
|
|
TTestMsg1Record = record
|
|
DefField1_HasValue : Boolean;
|
|
DefField1 : LongInt;
|
|
DefField2_HasValue : Boolean;
|
|
DefField2 : Int64;
|
|
DefField3_HasValue : Boolean;
|
|
DefField3 : RawByteString;
|
|
DefField4_HasValue : Boolean;
|
|
DefField4 : Double;
|
|
DefField5_HasValue : Boolean;
|
|
DefField5 : Boolean;
|
|
DefField6_HasValue : Boolean;
|
|
DefField6 : TEnumG0;
|
|
DefField7_HasValue : Boolean;
|
|
DefField7 : Int64;
|
|
DefField8_HasValue : Boolean;
|
|
DefField8 : LongWord;
|
|
DefField9_HasValue : Boolean;
|
|
DefField9 : Single;
|
|
FieldMsg1_HasValue : Boolean;
|
|
FieldMsg1 : TTestMsg0Record;
|
|
FieldE1_HasValue : Boolean;
|
|
FieldE1 : TEnum1;
|
|
FieldE2_HasValue : Boolean;
|
|
FieldE2 : TEnum1;
|
|
FieldNested1_HasValue : Boolean;
|
|
FieldNested1 : TTestNested1Record;
|
|
FieldNested2_HasValue : Boolean;
|
|
FieldNested2 : TTestNested1Record;
|
|
FieldArr1 : TDynArrayInt32;
|
|
FieldArr2 : TDynArrayInt32;
|
|
FieldArr3 : TDynArrayString;
|
|
FieldArrE1 : TDynArrayEnum1;
|
|
FieldMArr2 : TDynArrayTestMsg0Record;
|
|
FieldImp1_HasValue : Boolean;
|
|
FieldImp1 : TEnumGlobal;
|
|
FieldImp2_HasValue : Boolean;
|
|
FieldImp2 : TEnumGlobal;
|
|
end;
|
|
PTestMsg1Record = ^TTestMsg1Record;
|
|
|
|
procedure TestMsg1RecordInit(var A: TTestMsg1Record);
|
|
procedure TestMsg1RecordFinalise(var A: TTestMsg1Record);
|
|
function pbEncodeDataTestMsg1Record(var Buf; const BufSize: Integer; const A: TTestMsg1Record): Integer;
|
|
function pbEncodeValueTestMsg1Record(var Buf; const BufSize: Integer; const A: TTestMsg1Record): Integer;
|
|
function pbEncodeFieldTestMsg1Record(var Buf; const BufSize: Integer; const FieldNum: Integer; const A: TTestMsg1Record): Integer;
|
|
function pbDecodeValueTestMsg1Record(const Buf; const BufSize: Integer; var Value: TTestMsg1Record): Integer;
|
|
procedure pbDecodeFieldTestMsg1Record(const Field: TpbProtoBufDecodeField; var Value: TTestMsg1Record);
|
|
|
|
|
|
|
|
{ TTestIden1Record }
|
|
|
|
type
|
|
TTestIden1Record = record
|
|
FieldNameTest1_HasValue : Boolean;
|
|
FieldNameTest1 : LongInt;
|
|
FieldNameTest2_HasValue : Boolean;
|
|
FieldNameTest2 : LongInt;
|
|
end;
|
|
PTestIden1Record = ^TTestIden1Record;
|
|
|
|
procedure TestIden1RecordInit(var A: TTestIden1Record);
|
|
procedure TestIden1RecordFinalise(var A: TTestIden1Record);
|
|
function pbEncodeDataTestIden1Record(var Buf; const BufSize: Integer; const A: TTestIden1Record): Integer;
|
|
function pbEncodeValueTestIden1Record(var Buf; const BufSize: Integer; const A: TTestIden1Record): Integer;
|
|
function pbEncodeFieldTestIden1Record(var Buf; const BufSize: Integer; const FieldNum: Integer; const A: TTestIden1Record): Integer;
|
|
function pbDecodeValueTestIden1Record(const Buf; const BufSize: Integer; var Value: TTestIden1Record): Integer;
|
|
procedure pbDecodeFieldTestIden1Record(const Field: TpbProtoBufDecodeField; var Value: TTestIden1Record);
|
|
|
|
|
|
|
|
implementation
|
|
|
|
|
|
|
|
{ TEnumG0 }
|
|
|
|
function pbEncodeValueEnumG0(var Buf; const BufSize: Integer; const Value: TEnumG0): Integer;
|
|
begin
|
|
Result := pbEncodeValueInt32(Buf, BufSize, Ord(Value));
|
|
end;
|
|
|
|
function pbEncodeFieldEnumG0(var Buf; const BufSize: Integer; const FieldNum: Integer; const Value: TEnumG0): Integer;
|
|
begin
|
|
Result := pbEncodeFieldInt32(Buf, BufSize, FieldNum, Ord(Value));
|
|
end;
|
|
|
|
function pbDecodeValueEnumG0(const Buf; const BufSize: Integer; var Value: TEnumG0): Integer;
|
|
var I : LongInt;
|
|
begin
|
|
Result := pbDecodeValueInt32(Buf, BufSize, I);
|
|
Value := TEnumG0(I);
|
|
end;
|
|
|
|
procedure pbDecodeFieldEnumG0(const Field: TpbProtoBufDecodeField; var Value: TEnumG0);
|
|
var I : LongInt;
|
|
begin
|
|
pbDecodeFieldInt32(Field, I);
|
|
Value := TEnumG0(I);
|
|
end;
|
|
|
|
|
|
|
|
{ TTestMsg0Record }
|
|
|
|
procedure TestMsg0RecordInit(var A: TTestMsg0Record);
|
|
begin
|
|
with A do
|
|
begin
|
|
Field1 := 0;
|
|
Field2 := 0;
|
|
end;
|
|
end;
|
|
|
|
procedure TestMsg0RecordFinalise(var A: TTestMsg0Record);
|
|
begin
|
|
end;
|
|
|
|
function pbEncodeDataTestMsg0Record(var Buf; const BufSize: Integer; const A: TTestMsg0Record): Integer;
|
|
var
|
|
P : PByte;
|
|
L : Integer;
|
|
I : Integer;
|
|
begin
|
|
P := @Buf;
|
|
L := BufSize;
|
|
I := pbEncodeFieldInt32(P^, L, 1, A.Field1);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
I := pbEncodeFieldInt64(P^, L, 2, A.Field2);
|
|
Dec(L, I);
|
|
Result := BufSize - L;
|
|
end;
|
|
|
|
function pbEncodeValueTestMsg0Record(var Buf; const BufSize: Integer; const A: TTestMsg0Record): Integer;
|
|
var
|
|
P : PByte;
|
|
L, N, I : Integer;
|
|
begin
|
|
P := @Buf;
|
|
L := BufSize;
|
|
N := pbEncodeDataTestMsg0Record(P^, 0, A);
|
|
I := pbEncodeValueInt32(P^, L, N);
|
|
Inc(P, I);
|
|
Dec(L, I);
|
|
I := pbEncodeDataTestMsg0Record(P^, L, A);
|
|
Assert(I = N);
|
|
Dec(L, I);
|
|
Result := BufSize - L;
|
|
end;
|
|
|
|
function pbEncodeFieldTestMsg0Record(var Buf; const BufSize: Integer; const FieldNum: Integer; const A: TTestMsg0Record): Integer;
|
|
var
|
|
P : PByte;
|
|
L : Integer;
|
|
I : Integer;
|
|
begin
|
|
P := @Buf;
|
|
L := BufSize;
|
|
I := pbEncodeFieldKey(P^, L, FieldNum, pwtVarBytes);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
I := pbEncodeValueTestMsg0Record(P^, L, A);
|
|
Dec(L, I);
|
|
Result := BufSize - L;
|
|
end;
|
|
|
|
procedure pbDecodeFieldTestMsg0Record_CallbackProc(const Field: TpbProtoBufDecodeField; const Data: Pointer);
|
|
var
|
|
A : PTestMsg0Record;
|
|
begin
|
|
A := Data;
|
|
case Field.FieldNum of
|
|
1 : pbDecodeFieldInt32(Field, A^.Field1);
|
|
2 : pbDecodeFieldInt64(Field, A^.Field2);
|
|
end;
|
|
end;
|
|
|
|
function pbDecodeValueTestMsg0Record(const Buf; const BufSize: Integer; var Value: TTestMsg0Record): Integer;
|
|
var
|
|
P : PByte;
|
|
L, I, N : Integer;
|
|
begin
|
|
P := @Buf;
|
|
L := BufSize;
|
|
I := pbDecodeValueInt32(P^, L, N);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
pbDecodeProtoBuf(P^, N, pbDecodeFieldTestMsg0Record_CallbackProc, @Value);
|
|
Dec(L, N);
|
|
Result := BufSize - L;
|
|
end;
|
|
|
|
procedure pbDecodeFieldTestMsg0Record(const Field: TpbProtoBufDecodeField; var Value: TTestMsg0Record);
|
|
begin
|
|
pbDecodeProtoBuf(Field.ValueVarBytesPtr^, Field.ValueVarBytesLen, pbDecodeFieldTestMsg0Record_CallbackProc, @Value);
|
|
end;
|
|
|
|
|
|
|
|
{ TEnum1 }
|
|
|
|
function pbEncodeValueEnum1(var Buf; const BufSize: Integer; const Value: TEnum1): Integer;
|
|
begin
|
|
Result := pbEncodeValueInt32(Buf, BufSize, Ord(Value));
|
|
end;
|
|
|
|
function pbEncodeFieldEnum1(var Buf; const BufSize: Integer; const FieldNum: Integer; const Value: TEnum1): Integer;
|
|
begin
|
|
Result := pbEncodeFieldInt32(Buf, BufSize, FieldNum, Ord(Value));
|
|
end;
|
|
|
|
function pbDecodeValueEnum1(const Buf; const BufSize: Integer; var Value: TEnum1): Integer;
|
|
var I : LongInt;
|
|
begin
|
|
Result := pbDecodeValueInt32(Buf, BufSize, I);
|
|
Value := TEnum1(I);
|
|
end;
|
|
|
|
procedure pbDecodeFieldEnum1(const Field: TpbProtoBufDecodeField; var Value: TEnum1);
|
|
var I : LongInt;
|
|
begin
|
|
pbDecodeFieldInt32(Field, I);
|
|
Value := TEnum1(I);
|
|
end;
|
|
|
|
|
|
|
|
{ TDynArrayInt32 }
|
|
|
|
function pbEncodeFieldDynArrayInt32(var Buf; const BufSize: Integer; const FieldNum: Integer; const Value: TDynArrayInt32): Integer;
|
|
var
|
|
P : PByte;
|
|
I, L, N : Integer;
|
|
begin
|
|
P := @Buf;
|
|
L := BufSize;
|
|
for I := 0 to Length(Value) - 1 do
|
|
begin
|
|
N := pbEncodeFieldInt32(P^, L, FieldNum, Value[I]);
|
|
Inc(P, N);
|
|
Dec(L, N);
|
|
end;
|
|
Result := BufSize - L;
|
|
end;
|
|
|
|
function pbEncodeFieldDynArrayInt32_Packed(var Buf; const BufSize: Integer; const FieldNum: Integer; const Value: TDynArrayInt32): Integer;
|
|
var
|
|
P : PByte;
|
|
I, T, L, N : Integer;
|
|
begin
|
|
P := @Buf;
|
|
T := 0;
|
|
for I := 0 to Length(Value) - 1 do
|
|
Inc(T, pbEncodeValueInt32(P^, 0, Value[I]));
|
|
L := BufSize;
|
|
N := pbEncodeFieldVarBytesHdr(P^, L, FieldNum, T);
|
|
Inc(P, N);
|
|
Dec(L, N);
|
|
for I := 0 to Length(Value) - 1 do
|
|
begin
|
|
N := pbEncodeValueInt32(P^, L, Value[I]);
|
|
Inc(P, N);
|
|
Dec(L, N);
|
|
end;
|
|
Result := BufSize - L;
|
|
end;
|
|
|
|
procedure pbDecodeFieldDynArrayInt32(const Field: TpbProtoBufDecodeField; var Value: TDynArrayInt32);
|
|
var
|
|
L : Integer;
|
|
begin
|
|
L := Length(Value);
|
|
SetLength(Value, L + 1);
|
|
pbDecodeFieldInt32(Field, Value[L]);
|
|
end;
|
|
|
|
procedure pbDecodeFieldDynArrayInt32_Packed(const Field: TpbProtoBufDecodeField; var Value: TDynArrayInt32);
|
|
var
|
|
P : PByte;
|
|
L, N, I : Integer;
|
|
begin
|
|
P := Field.ValueVarBytesPtr;
|
|
L := 0;
|
|
N := Field.ValueVarBytesLen;
|
|
while N > 0 do
|
|
begin
|
|
SetLength(Value, L + 1);
|
|
I := pbDecodeValueInt32(P^, N, Value[L]);
|
|
Inc(L);
|
|
Inc(P, I);
|
|
Dec(N, I);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
{ TDynArrayString }
|
|
|
|
function pbEncodeFieldDynArrayString(var Buf; const BufSize: Integer; const FieldNum: Integer; const Value: TDynArrayString): Integer;
|
|
var
|
|
P : PByte;
|
|
I, L, N : Integer;
|
|
begin
|
|
P := @Buf;
|
|
L := BufSize;
|
|
for I := 0 to Length(Value) - 1 do
|
|
begin
|
|
N := pbEncodeFieldString(P^, L, FieldNum, Value[I]);
|
|
Inc(P, N);
|
|
Dec(L, N);
|
|
end;
|
|
Result := BufSize - L;
|
|
end;
|
|
|
|
function pbEncodeFieldDynArrayString_Packed(var Buf; const BufSize: Integer; const FieldNum: Integer; const Value: TDynArrayString): Integer;
|
|
var
|
|
P : PByte;
|
|
I, T, L, N : Integer;
|
|
begin
|
|
P := @Buf;
|
|
T := 0;
|
|
for I := 0 to Length(Value) - 1 do
|
|
Inc(T, pbEncodeValueString(P^, 0, Value[I]));
|
|
L := BufSize;
|
|
N := pbEncodeFieldVarBytesHdr(P^, L, FieldNum, T);
|
|
Inc(P, N);
|
|
Dec(L, N);
|
|
for I := 0 to Length(Value) - 1 do
|
|
begin
|
|
N := pbEncodeValueString(P^, L, Value[I]);
|
|
Inc(P, N);
|
|
Dec(L, N);
|
|
end;
|
|
Result := BufSize - L;
|
|
end;
|
|
|
|
procedure pbDecodeFieldDynArrayString(const Field: TpbProtoBufDecodeField; var Value: TDynArrayString);
|
|
var
|
|
L : Integer;
|
|
begin
|
|
L := Length(Value);
|
|
SetLength(Value, L + 1);
|
|
pbDecodeFieldString(Field, Value[L]);
|
|
end;
|
|
|
|
procedure pbDecodeFieldDynArrayString_Packed(const Field: TpbProtoBufDecodeField; var Value: TDynArrayString);
|
|
var
|
|
P : PByte;
|
|
L, N, I : Integer;
|
|
begin
|
|
P := Field.ValueVarBytesPtr;
|
|
L := 0;
|
|
N := Field.ValueVarBytesLen;
|
|
while N > 0 do
|
|
begin
|
|
SetLength(Value, L + 1);
|
|
I := pbDecodeValueString(P^, N, Value[L]);
|
|
Inc(L);
|
|
Inc(P, I);
|
|
Dec(N, I);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
{ TDynArrayEnum1 }
|
|
|
|
function pbEncodeFieldDynArrayEnum1(var Buf; const BufSize: Integer; const FieldNum: Integer; const Value: TDynArrayEnum1): Integer;
|
|
var
|
|
P : PByte;
|
|
I, L, N : Integer;
|
|
begin
|
|
P := @Buf;
|
|
L := BufSize;
|
|
for I := 0 to Length(Value) - 1 do
|
|
begin
|
|
N := pbEncodeFieldEnum1(P^, L, FieldNum, Value[I]);
|
|
Inc(P, N);
|
|
Dec(L, N);
|
|
end;
|
|
Result := BufSize - L;
|
|
end;
|
|
|
|
function pbEncodeFieldDynArrayEnum1_Packed(var Buf; const BufSize: Integer; const FieldNum: Integer; const Value: TDynArrayEnum1): Integer;
|
|
var
|
|
P : PByte;
|
|
I, T, L, N : Integer;
|
|
begin
|
|
P := @Buf;
|
|
T := 0;
|
|
for I := 0 to Length(Value) - 1 do
|
|
Inc(T, pbEncodeValueEnum1(P^, 0, Value[I]));
|
|
L := BufSize;
|
|
N := pbEncodeFieldVarBytesHdr(P^, L, FieldNum, T);
|
|
Inc(P, N);
|
|
Dec(L, N);
|
|
for I := 0 to Length(Value) - 1 do
|
|
begin
|
|
N := pbEncodeValueEnum1(P^, L, Value[I]);
|
|
Inc(P, N);
|
|
Dec(L, N);
|
|
end;
|
|
Result := BufSize - L;
|
|
end;
|
|
|
|
procedure pbDecodeFieldDynArrayEnum1(const Field: TpbProtoBufDecodeField; var Value: TDynArrayEnum1);
|
|
var
|
|
L : Integer;
|
|
begin
|
|
L := Length(Value);
|
|
SetLength(Value, L + 1);
|
|
pbDecodeFieldEnum1(Field, Value[L]);
|
|
end;
|
|
|
|
procedure pbDecodeFieldDynArrayEnum1_Packed(const Field: TpbProtoBufDecodeField; var Value: TDynArrayEnum1);
|
|
var
|
|
P : PByte;
|
|
L, N, I : Integer;
|
|
begin
|
|
P := Field.ValueVarBytesPtr;
|
|
L := 0;
|
|
N := Field.ValueVarBytesLen;
|
|
while N > 0 do
|
|
begin
|
|
SetLength(Value, L + 1);
|
|
I := pbDecodeValueEnum1(P^, N, Value[L]);
|
|
Inc(L);
|
|
Inc(P, I);
|
|
Dec(N, I);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
{ TDynArrayTestMsg0Record }
|
|
|
|
function pbEncodeFieldDynArrayTestMsg0Record(var Buf; const BufSize: Integer; const FieldNum: Integer; const Value: TDynArrayTestMsg0Record): Integer;
|
|
var
|
|
P : PByte;
|
|
I, L, N : Integer;
|
|
begin
|
|
P := @Buf;
|
|
L := BufSize;
|
|
for I := 0 to Length(Value) - 1 do
|
|
begin
|
|
N := pbEncodeFieldTestMsg0Record(P^, L, FieldNum, Value[I]);
|
|
Inc(P, N);
|
|
Dec(L, N);
|
|
end;
|
|
Result := BufSize - L;
|
|
end;
|
|
|
|
function pbEncodeFieldDynArrayTestMsg0Record_Packed(var Buf; const BufSize: Integer; const FieldNum: Integer; const Value: TDynArrayTestMsg0Record): Integer;
|
|
var
|
|
P : PByte;
|
|
I, T, L, N : Integer;
|
|
begin
|
|
P := @Buf;
|
|
T := 0;
|
|
for I := 0 to Length(Value) - 1 do
|
|
Inc(T, pbEncodeValueTestMsg0Record(P^, 0, Value[I]));
|
|
L := BufSize;
|
|
N := pbEncodeFieldVarBytesHdr(P^, L, FieldNum, T);
|
|
Inc(P, N);
|
|
Dec(L, N);
|
|
for I := 0 to Length(Value) - 1 do
|
|
begin
|
|
N := pbEncodeValueTestMsg0Record(P^, L, Value[I]);
|
|
Inc(P, N);
|
|
Dec(L, N);
|
|
end;
|
|
Result := BufSize - L;
|
|
end;
|
|
|
|
procedure pbDecodeFieldDynArrayTestMsg0Record(const Field: TpbProtoBufDecodeField; var Value: TDynArrayTestMsg0Record);
|
|
var
|
|
L : Integer;
|
|
begin
|
|
L := Length(Value);
|
|
SetLength(Value, L + 1);
|
|
TestMsg0RecordInit(Value[L]);
|
|
pbDecodeFieldTestMsg0Record(Field, Value[L]);
|
|
end;
|
|
|
|
procedure pbDecodeFieldDynArrayTestMsg0Record_Packed(const Field: TpbProtoBufDecodeField; var Value: TDynArrayTestMsg0Record);
|
|
var
|
|
P : PByte;
|
|
L, N, I : Integer;
|
|
begin
|
|
P := Field.ValueVarBytesPtr;
|
|
L := 0;
|
|
N := Field.ValueVarBytesLen;
|
|
while N > 0 do
|
|
begin
|
|
SetLength(Value, L + 1);
|
|
TestMsg0RecordInit(Value[L]);
|
|
I := pbDecodeValueTestMsg0Record(P^, N, Value[L]);
|
|
Inc(L);
|
|
Inc(P, I);
|
|
Dec(N, I);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
{ TTestNested1Record }
|
|
|
|
procedure TestNested1RecordInit(var A: TTestNested1Record);
|
|
begin
|
|
with A do
|
|
begin
|
|
Field1_HasValue := False;
|
|
Field1 := 0;
|
|
end;
|
|
end;
|
|
|
|
procedure TestNested1RecordFinalise(var A: TTestNested1Record);
|
|
begin
|
|
end;
|
|
|
|
function pbEncodeDataTestNested1Record(var Buf; const BufSize: Integer; const A: TTestNested1Record): Integer;
|
|
var
|
|
P : PByte;
|
|
L : Integer;
|
|
I : Integer;
|
|
begin
|
|
P := @Buf;
|
|
L := BufSize;
|
|
if A.Field1_HasValue then
|
|
begin
|
|
I := pbEncodeFieldInt32(P^, L, 1, A.Field1);
|
|
Dec(L, I);
|
|
end;
|
|
Result := BufSize - L;
|
|
end;
|
|
|
|
function pbEncodeValueTestNested1Record(var Buf; const BufSize: Integer; const A: TTestNested1Record): Integer;
|
|
var
|
|
P : PByte;
|
|
L, N, I : Integer;
|
|
begin
|
|
P := @Buf;
|
|
L := BufSize;
|
|
N := pbEncodeDataTestNested1Record(P^, 0, A);
|
|
I := pbEncodeValueInt32(P^, L, N);
|
|
Inc(P, I);
|
|
Dec(L, I);
|
|
I := pbEncodeDataTestNested1Record(P^, L, A);
|
|
Assert(I = N);
|
|
Dec(L, I);
|
|
Result := BufSize - L;
|
|
end;
|
|
|
|
function pbEncodeFieldTestNested1Record(var Buf; const BufSize: Integer; const FieldNum: Integer; const A: TTestNested1Record): Integer;
|
|
var
|
|
P : PByte;
|
|
L : Integer;
|
|
I : Integer;
|
|
begin
|
|
P := @Buf;
|
|
L := BufSize;
|
|
I := pbEncodeFieldKey(P^, L, FieldNum, pwtVarBytes);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
I := pbEncodeValueTestNested1Record(P^, L, A);
|
|
Dec(L, I);
|
|
Result := BufSize - L;
|
|
end;
|
|
|
|
procedure pbDecodeFieldTestNested1Record_CallbackProc(const Field: TpbProtoBufDecodeField; const Data: Pointer);
|
|
var
|
|
A : PTestNested1Record;
|
|
begin
|
|
A := Data;
|
|
case Field.FieldNum of
|
|
1 : begin pbDecodeFieldInt32(Field, A^.Field1); A^.Field1_HasValue := True; end;
|
|
end;
|
|
end;
|
|
|
|
function pbDecodeValueTestNested1Record(const Buf; const BufSize: Integer; var Value: TTestNested1Record): Integer;
|
|
var
|
|
P : PByte;
|
|
L, I, N : Integer;
|
|
begin
|
|
P := @Buf;
|
|
L := BufSize;
|
|
I := pbDecodeValueInt32(P^, L, N);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
pbDecodeProtoBuf(P^, N, pbDecodeFieldTestNested1Record_CallbackProc, @Value);
|
|
Dec(L, N);
|
|
Result := BufSize - L;
|
|
end;
|
|
|
|
procedure pbDecodeFieldTestNested1Record(const Field: TpbProtoBufDecodeField; var Value: TTestNested1Record);
|
|
begin
|
|
pbDecodeProtoBuf(Field.ValueVarBytesPtr^, Field.ValueVarBytesLen, pbDecodeFieldTestNested1Record_CallbackProc, @Value);
|
|
end;
|
|
|
|
|
|
|
|
{ TTestMsg1Record }
|
|
|
|
procedure TestMsg1RecordInit(var A: TTestMsg1Record);
|
|
begin
|
|
with A do
|
|
begin
|
|
DefField1_HasValue := False;
|
|
DefField1 := 2;
|
|
DefField2_HasValue := False;
|
|
DefField2 := -1;
|
|
DefField3_HasValue := False;
|
|
DefField3 := 'yes';
|
|
DefField4_HasValue := False;
|
|
DefField4 := 1.1;
|
|
DefField5_HasValue := False;
|
|
DefField5 := True;
|
|
DefField6_HasValue := False;
|
|
DefField6 := enumg0G2;
|
|
DefField7_HasValue := False;
|
|
DefField7 := 100;
|
|
DefField8_HasValue := False;
|
|
DefField8 := 1;
|
|
DefField9_HasValue := False;
|
|
DefField9 := 12.3;
|
|
TestMsg0RecordInit(FieldMsg1);
|
|
FieldE1_HasValue := False;
|
|
FieldE1 := enum1Val1;
|
|
FieldE2_HasValue := False;
|
|
FieldE2 := enum1Val2;
|
|
TestNested1RecordInit(FieldNested1);
|
|
TestNested1RecordInit(FieldNested2);
|
|
FieldArr1 := nil;
|
|
FieldArr2 := nil;
|
|
FieldArr3 := nil;
|
|
FieldArrE1 := nil;
|
|
FieldMArr2 := nil;
|
|
FieldImp1_HasValue := False;
|
|
FieldImp1 := enumglobalGVal1;
|
|
FieldImp2_HasValue := False;
|
|
FieldImp2 := enumglobalGVal1;
|
|
end;
|
|
end;
|
|
|
|
procedure TestMsg1RecordFinalise(var A: TTestMsg1Record);
|
|
begin
|
|
with A do
|
|
begin
|
|
TestNested1RecordFinalise(FieldNested2);
|
|
TestNested1RecordFinalise(FieldNested1);
|
|
TestMsg0RecordFinalise(FieldMsg1);
|
|
end;
|
|
end;
|
|
|
|
function pbEncodeDataTestMsg1Record(var Buf; const BufSize: Integer; const A: TTestMsg1Record): Integer;
|
|
var
|
|
P : PByte;
|
|
L : Integer;
|
|
I : Integer;
|
|
begin
|
|
P := @Buf;
|
|
L := BufSize;
|
|
if A.DefField1_HasValue then
|
|
begin
|
|
I := pbEncodeFieldInt32(P^, L, 1, A.DefField1);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
end;
|
|
if A.DefField2_HasValue then
|
|
begin
|
|
I := pbEncodeFieldInt64(P^, L, 2, A.DefField2);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
end;
|
|
if A.DefField3_HasValue then
|
|
begin
|
|
I := pbEncodeFieldString(P^, L, 3, A.DefField3);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
end;
|
|
if A.DefField4_HasValue then
|
|
begin
|
|
I := pbEncodeFieldDouble(P^, L, 4, A.DefField4);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
end;
|
|
if A.DefField5_HasValue then
|
|
begin
|
|
I := pbEncodeFieldBool(P^, L, 5, A.DefField5);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
end;
|
|
if A.DefField6_HasValue then
|
|
begin
|
|
I := pbEncodeFieldEnumG0(P^, L, 6, A.DefField6);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
end;
|
|
if A.DefField7_HasValue then
|
|
begin
|
|
I := pbEncodeFieldSInt64(P^, L, 7, A.DefField7);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
end;
|
|
if A.DefField8_HasValue then
|
|
begin
|
|
I := pbEncodeFieldFixed32(P^, L, 8, A.DefField8);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
end;
|
|
if A.DefField9_HasValue then
|
|
begin
|
|
I := pbEncodeFieldFloat(P^, L, 9, A.DefField9);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
end;
|
|
if A.FieldMsg1_HasValue then
|
|
begin
|
|
I := pbEncodeFieldTestMsg0Record(P^, L, 20, A.FieldMsg1);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
end;
|
|
if A.FieldE1_HasValue then
|
|
begin
|
|
I := pbEncodeFieldEnum1(P^, L, 21, A.FieldE1);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
end;
|
|
if A.FieldE2_HasValue then
|
|
begin
|
|
I := pbEncodeFieldEnum1(P^, L, 22, A.FieldE2);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
end;
|
|
if A.FieldNested1_HasValue then
|
|
begin
|
|
I := pbEncodeFieldTestNested1Record(P^, L, 30, A.FieldNested1);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
end;
|
|
if A.FieldNested2_HasValue then
|
|
begin
|
|
I := pbEncodeFieldTestNested1Record(P^, L, 31, A.FieldNested2);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
end;
|
|
I := pbEncodeFieldDynArrayInt32(P^, L, 40, A.FieldArr1);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
I := pbEncodeFieldDynArrayInt32_Packed(P^, L, 41, A.FieldArr2);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
I := pbEncodeFieldDynArrayString(P^, L, 42, A.FieldArr3);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
I := pbEncodeFieldDynArrayEnum1(P^, L, 43, A.FieldArrE1);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
I := pbEncodeFieldDynArrayTestMsg0Record(P^, L, 44, A.FieldMArr2);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
if A.FieldImp1_HasValue then
|
|
begin
|
|
I := pbEncodeFieldEnumGlobal(P^, L, 50, A.FieldImp1);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
end;
|
|
if A.FieldImp2_HasValue then
|
|
begin
|
|
I := pbEncodeFieldEnumGlobal(P^, L, 51, A.FieldImp2);
|
|
Dec(L, I);
|
|
end;
|
|
Result := BufSize - L;
|
|
end;
|
|
|
|
function pbEncodeValueTestMsg1Record(var Buf; const BufSize: Integer; const A: TTestMsg1Record): Integer;
|
|
var
|
|
P : PByte;
|
|
L, N, I : Integer;
|
|
begin
|
|
P := @Buf;
|
|
L := BufSize;
|
|
N := pbEncodeDataTestMsg1Record(P^, 0, A);
|
|
I := pbEncodeValueInt32(P^, L, N);
|
|
Inc(P, I);
|
|
Dec(L, I);
|
|
I := pbEncodeDataTestMsg1Record(P^, L, A);
|
|
Assert(I = N);
|
|
Dec(L, I);
|
|
Result := BufSize - L;
|
|
end;
|
|
|
|
function pbEncodeFieldTestMsg1Record(var Buf; const BufSize: Integer; const FieldNum: Integer; const A: TTestMsg1Record): Integer;
|
|
var
|
|
P : PByte;
|
|
L : Integer;
|
|
I : Integer;
|
|
begin
|
|
P := @Buf;
|
|
L := BufSize;
|
|
I := pbEncodeFieldKey(P^, L, FieldNum, pwtVarBytes);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
I := pbEncodeValueTestMsg1Record(P^, L, A);
|
|
Dec(L, I);
|
|
Result := BufSize - L;
|
|
end;
|
|
|
|
procedure pbDecodeFieldTestMsg1Record_CallbackProc(const Field: TpbProtoBufDecodeField; const Data: Pointer);
|
|
var
|
|
A : PTestMsg1Record;
|
|
begin
|
|
A := Data;
|
|
case Field.FieldNum of
|
|
1 : begin pbDecodeFieldInt32(Field, A^.DefField1); A^.DefField1_HasValue := True; end;
|
|
2 : begin pbDecodeFieldInt64(Field, A^.DefField2); A^.DefField2_HasValue := True; end;
|
|
3 : begin pbDecodeFieldString(Field, A^.DefField3); A^.DefField3_HasValue := True; end;
|
|
4 : begin pbDecodeFieldDouble(Field, A^.DefField4); A^.DefField4_HasValue := True; end;
|
|
5 : begin pbDecodeFieldBool(Field, A^.DefField5); A^.DefField5_HasValue := True; end;
|
|
6 : begin pbDecodeFieldEnumG0(Field, A^.DefField6); A^.DefField6_HasValue := True; end;
|
|
7 : begin pbDecodeFieldSInt64(Field, A^.DefField7); A^.DefField7_HasValue := True; end;
|
|
8 : begin pbDecodeFieldFixed32(Field, A^.DefField8); A^.DefField8_HasValue := True; end;
|
|
9 : begin pbDecodeFieldFloat(Field, A^.DefField9); A^.DefField9_HasValue := True; end;
|
|
20 : begin pbDecodeFieldTestMsg0Record(Field, A^.FieldMsg1); A^.FieldMsg1_HasValue := True; end;
|
|
21 : begin pbDecodeFieldEnum1(Field, A^.FieldE1); A^.FieldE1_HasValue := True; end;
|
|
22 : begin pbDecodeFieldEnum1(Field, A^.FieldE2); A^.FieldE2_HasValue := True; end;
|
|
30 : begin pbDecodeFieldTestNested1Record(Field, A^.FieldNested1); A^.FieldNested1_HasValue := True; end;
|
|
31 : begin pbDecodeFieldTestNested1Record(Field, A^.FieldNested2); A^.FieldNested2_HasValue := True; end;
|
|
40 : pbDecodeFieldDynArrayInt32(Field, A^.FieldArr1);
|
|
41 : pbDecodeFieldDynArrayInt32_Packed(Field, A^.FieldArr2);
|
|
42 : pbDecodeFieldDynArrayString(Field, A^.FieldArr3);
|
|
43 : pbDecodeFieldDynArrayEnum1(Field, A^.FieldArrE1);
|
|
44 : pbDecodeFieldDynArrayTestMsg0Record(Field, A^.FieldMArr2);
|
|
50 : begin pbDecodeFieldEnumGlobal(Field, A^.FieldImp1); A^.FieldImp1_HasValue := True; end;
|
|
51 : begin pbDecodeFieldEnumGlobal(Field, A^.FieldImp2); A^.FieldImp2_HasValue := True; end;
|
|
end;
|
|
end;
|
|
|
|
function pbDecodeValueTestMsg1Record(const Buf; const BufSize: Integer; var Value: TTestMsg1Record): Integer;
|
|
var
|
|
P : PByte;
|
|
L, I, N : Integer;
|
|
begin
|
|
P := @Buf;
|
|
L := BufSize;
|
|
I := pbDecodeValueInt32(P^, L, N);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
pbDecodeProtoBuf(P^, N, pbDecodeFieldTestMsg1Record_CallbackProc, @Value);
|
|
Dec(L, N);
|
|
Result := BufSize - L;
|
|
end;
|
|
|
|
procedure pbDecodeFieldTestMsg1Record(const Field: TpbProtoBufDecodeField; var Value: TTestMsg1Record);
|
|
begin
|
|
pbDecodeProtoBuf(Field.ValueVarBytesPtr^, Field.ValueVarBytesLen, pbDecodeFieldTestMsg1Record_CallbackProc, @Value);
|
|
end;
|
|
|
|
|
|
|
|
{ TTestIden1Record }
|
|
|
|
procedure TestIden1RecordInit(var A: TTestIden1Record);
|
|
begin
|
|
with A do
|
|
begin
|
|
FieldNameTest1_HasValue := False;
|
|
FieldNameTest1 := 0;
|
|
FieldNameTest2_HasValue := False;
|
|
FieldNameTest2 := 0;
|
|
end;
|
|
end;
|
|
|
|
procedure TestIden1RecordFinalise(var A: TTestIden1Record);
|
|
begin
|
|
end;
|
|
|
|
function pbEncodeDataTestIden1Record(var Buf; const BufSize: Integer; const A: TTestIden1Record): Integer;
|
|
var
|
|
P : PByte;
|
|
L : Integer;
|
|
I : Integer;
|
|
begin
|
|
P := @Buf;
|
|
L := BufSize;
|
|
if A.FieldNameTest1_HasValue then
|
|
begin
|
|
I := pbEncodeFieldInt32(P^, L, 1, A.FieldNameTest1);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
end;
|
|
if A.FieldNameTest2_HasValue then
|
|
begin
|
|
I := pbEncodeFieldInt32(P^, L, 2, A.FieldNameTest2);
|
|
Dec(L, I);
|
|
end;
|
|
Result := BufSize - L;
|
|
end;
|
|
|
|
function pbEncodeValueTestIden1Record(var Buf; const BufSize: Integer; const A: TTestIden1Record): Integer;
|
|
var
|
|
P : PByte;
|
|
L, N, I : Integer;
|
|
begin
|
|
P := @Buf;
|
|
L := BufSize;
|
|
N := pbEncodeDataTestIden1Record(P^, 0, A);
|
|
I := pbEncodeValueInt32(P^, L, N);
|
|
Inc(P, I);
|
|
Dec(L, I);
|
|
I := pbEncodeDataTestIden1Record(P^, L, A);
|
|
Assert(I = N);
|
|
Dec(L, I);
|
|
Result := BufSize - L;
|
|
end;
|
|
|
|
function pbEncodeFieldTestIden1Record(var Buf; const BufSize: Integer; const FieldNum: Integer; const A: TTestIden1Record): Integer;
|
|
var
|
|
P : PByte;
|
|
L : Integer;
|
|
I : Integer;
|
|
begin
|
|
P := @Buf;
|
|
L := BufSize;
|
|
I := pbEncodeFieldKey(P^, L, FieldNum, pwtVarBytes);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
I := pbEncodeValueTestIden1Record(P^, L, A);
|
|
Dec(L, I);
|
|
Result := BufSize - L;
|
|
end;
|
|
|
|
procedure pbDecodeFieldTestIden1Record_CallbackProc(const Field: TpbProtoBufDecodeField; const Data: Pointer);
|
|
var
|
|
A : PTestIden1Record;
|
|
begin
|
|
A := Data;
|
|
case Field.FieldNum of
|
|
1 : begin pbDecodeFieldInt32(Field, A^.FieldNameTest1); A^.FieldNameTest1_HasValue := True; end;
|
|
2 : begin pbDecodeFieldInt32(Field, A^.FieldNameTest2); A^.FieldNameTest2_HasValue := True; end;
|
|
end;
|
|
end;
|
|
|
|
function pbDecodeValueTestIden1Record(const Buf; const BufSize: Integer; var Value: TTestIden1Record): Integer;
|
|
var
|
|
P : PByte;
|
|
L, I, N : Integer;
|
|
begin
|
|
P := @Buf;
|
|
L := BufSize;
|
|
I := pbDecodeValueInt32(P^, L, N);
|
|
Dec(L, I);
|
|
Inc(P, I);
|
|
pbDecodeProtoBuf(P^, N, pbDecodeFieldTestIden1Record_CallbackProc, @Value);
|
|
Dec(L, N);
|
|
Result := BufSize - L;
|
|
end;
|
|
|
|
procedure pbDecodeFieldTestIden1Record(const Field: TpbProtoBufDecodeField; var Value: TTestIden1Record);
|
|
begin
|
|
pbDecodeProtoBuf(Field.ValueVarBytesPtr^, Field.ValueVarBytesLen, pbDecodeFieldTestIden1Record_CallbackProc, @Value);
|
|
end;
|
|
|
|
|
|
|
|
end.
|
|
|