Skip to content

Commit

Permalink
(WIP) considering NeonIncludeAttribute when serializing every value
Browse files Browse the repository at this point in the history
  • Loading branch information
paolo-rossi committed May 27, 2019
1 parent 9ede915 commit 5d25dae
Show file tree
Hide file tree
Showing 4 changed files with 221 additions and 42 deletions.
18 changes: 18 additions & 0 deletions Demos/Main/Demo.Forms.Serialization.Simple.dfm
Original file line number Diff line number Diff line change
Expand Up @@ -147,4 +147,22 @@ inherited frmSerializationSimple: TfrmSerializationSimple
inherited memoLog: TMemo
TabOrder = 15
end
object btnSerTypeClass: TButton
Left = 3
Top = 248
Width = 131
Height = 25
Caption = 'Types Class'
TabOrder = 19
OnClick = btnSerTypeClassClick
end
object btnDesTypeClass: TButton
Left = 485
Top = 248
Width = 131
Height = 25
Caption = 'Types Class'
TabOrder = 20
OnClick = btnDesTypeClassClick
end
end
29 changes: 29 additions & 0 deletions Demos/Main/Demo.Forms.Serialization.Simple.pas
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ TfrmSerializationSimple = class(TfrmSerializationBase)
btnDesSimpleArray: TButton;
btnDesSimpleFloat: TButton;
btnDesSimpleBool: TButton;
btnSerTypeClass: TButton;
btnDesTypeClass: TButton;
procedure btnDesSimpleArrayClick(Sender: TObject);
procedure btnDesSimpleBoolClick(Sender: TObject);
procedure btnDesSimpleDateTimeClick(Sender: TObject);
Expand All @@ -32,11 +34,13 @@ TfrmSerializationSimple = class(TfrmSerializationBase)
procedure btnDesSimpleStringClick(Sender: TObject);
procedure btnSerSimpleArrayClick(Sender: TObject);
procedure btnSerSimpleBoolClick(Sender: TObject);
procedure btnSerTypeClassClick(Sender: TObject);
procedure btnSerSimpleDatTimeClick(Sender: TObject);
procedure btnSerSimpleFloatClick(Sender: TObject);
procedure btnSerSimpleIntegerClick(Sender: TObject);
procedure btnSerSimpleRecordClick(Sender: TObject);
procedure btnSerSimpleStringClick(Sender: TObject);
procedure btnDesTypeClassClick(Sender: TObject);
private
procedure SerializeSimple<T>(AValue: T);
procedure DeserializeSimple<T>; overload;
Expand Down Expand Up @@ -113,6 +117,18 @@ procedure TfrmSerializationSimple.btnSerSimpleBoolClick(Sender: TObject);
SerializeSimple<Boolean>(True);
end;

procedure TfrmSerializationSimple.btnSerTypeClassClick(Sender: TObject);
var
LTypeObj: TTypeClass;
begin
LTypeObj := TTypeClass.Create;
try
SerializeObject(LTypeObj, memoSerialize.Lines, frmConfiguration.BuildSerializerConfig);
finally
LTypeObj.Free;
end;
end;

procedure TfrmSerializationSimple.btnSerSimpleDatTimeClick(Sender: TObject);
begin
SerializeSimple<TDateTime>(Now);
Expand Down Expand Up @@ -142,6 +158,19 @@ procedure TfrmSerializationSimple.btnSerSimpleStringClick(Sender: TObject);
SerializeSimple<string>('Paolo Rossi');
end;

procedure TfrmSerializationSimple.btnDesTypeClassClick(Sender: TObject);
var
LTypeClass: TTypeClass;
begin
LTypeClass := TTypeClass.Create;
try
DeserializeObject(LTypeClass, memoSerialize.Lines, frmConfiguration.BuildSerializerConfig);
SerializeObject(LTypeClass, memoDeserialize.Lines, frmConfiguration.BuildSerializerConfig);
finally
LTypeClass.Free;
end;
end;

procedure TfrmSerializationSimple.DeserializeSimple<T>(AValue: T);
var
LVal: T;
Expand Down
56 changes: 56 additions & 0 deletions Demos/Main/Demo.Neon.Entities.pas
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,44 @@ TMyClass = class
property Vector: TVector3D read FVector write FVector;
end;

TTypeClass = class
private
FPropInteger: Integer;
FPropInt64: Int64;
FPropDouble: Double;
FPropDate: TDateTime;
FPropChar: Char;
FPropString: string;
FPropBoolean: Boolean;
FPropEnum: TTypeKind;
public
constructor Create;

[NeonInclude(Include.NotDefault)]
property PropInteger: Integer read FPropInteger write FPropInteger;

[NeonInclude(Include.NotDefault)]
property PropInt64: Int64 read FPropInt64 write FPropInt64;

[NeonInclude(Include.NotDefault)]
property PropDouble: Double read FPropDouble write FPropDouble;

[NeonInclude(Include.NotDefault)]
property PropDate: TDateTime read FPropDate write FPropDate;

[NeonInclude(Include.NotEmpty)]
property PropChar: Char read FPropChar write FPropChar;

[NeonInclude(Include.NotEmpty)]
property PropString: string read FPropString write FPropString;

[NeonInclude(Include.NotEmpty)]
property PropBoolean: Boolean read FPropBoolean write FPropBoolean;

[NeonInclude(Include.NotEmpty)]
property PropEnum: TTypeKind read FPropEnum write FPropEnum;
end;


implementation

Expand Down Expand Up @@ -467,4 +505,22 @@ destructor TParameterContainer.Destroy;
inherited;
end;

{ TTypeClass }

constructor TTypeClass.Create;
begin
FPropInteger := Random(10000);
FPropInt64 := Random(100000000);
FPropDouble := Random * 100;
FPropEnum := TTypeKind(Random(20));
FPropString := 'Lorem ipsum';
FPropChar := Char(Random(125));

FPropBoolean := FPropInteger > 4000;
FPropDate := IfThen(FPropEnum = tkInteger, Random * 50000, 0);
end;

initialization
Randomize();

end.
Loading

0 comments on commit 5d25dae

Please sign in to comment.