ソースを参照

[yamlSerializer] some improvements

Exilon 5 年 前
コミット
c2084d603e
2 ファイル変更9 行追加6 行削除
  1. 5 2
      Quick.YAML.Serializer.pas
  2. 4 4
      Quick.YAML.pas

+ 5 - 2
Quick.YAML.Serializer.pas

@@ -7,7 +7,7 @@
   Author      : Kike Pérez
   Version     : 1.0
   Created     : 12/04/2019
-  Modified    : 05/04/20120
+  Modified    : 07/04/20120
 
   This file is part of QuickLib: https://github.com/exilon/QuickLib
 
@@ -513,6 +513,7 @@ begin
     if (TObjectList<TObject>(aObject) <> nil) and (rvalue.IsArray) then
     begin
       TObjectList<TObject>(aObject).Clear;
+      TObjectList<TObject>(aObject).Capacity := rvalue.GetArrayLength;
       for i := 0 to rvalue.GetArrayLength - 1 do
       begin
         TObjectList<TObject>(aObject).Add(rvalue.GetArrayElement(i).AsObject);
@@ -1501,9 +1502,10 @@ function TYamlSerializer.YamlToObject(aType: TClass; const aYaml: string): TObje
 var
   Yaml: TYamlObject;
 begin
+  Result := nil;
   Yaml := TYamlObject.ParseYamlValue(aYaml) as TYamlObject;
   try
-    fRTTIYaml.DeserializeClass(aType,Yaml);
+    Result := fRTTIYaml.DeserializeClass(aType,Yaml);
   finally
     Yaml.Free;
   end;
@@ -1519,6 +1521,7 @@ function TYamlSerializer.YamlToObject(aObject: TObject; const aYaml: string): TO
 var
   Yaml: TYamlObject;
 begin
+  Result := aObject;
   Yaml := TYamlObject(TYamlObject.ParseYamlValue(aYaml));
   try
     fRTTIYaml.DeserializeObject(aObject,Yaml);

+ 4 - 4
Quick.YAML.pas

@@ -66,7 +66,7 @@ type
     fValue : string;
     fIsNull : Boolean;
   protected
-    function IsNull : Boolean; virtual;
+    function IsNull : Boolean; override;
   public
     constructor Create; overload;
     constructor Create(const aValue : string); overload;
@@ -80,7 +80,7 @@ type
     fValue : Integer;
     fIsNull : Boolean;
   protected
-    function IsNull : Boolean; virtual;
+    function IsNull : Boolean; override;
   public
     constructor Create; overload;
     constructor Create(const aValue : Integer); overload;
@@ -94,7 +94,7 @@ type
     fValue : Double;
     fIsNull : Boolean;
   protected
-    function IsNull : Boolean; virtual;
+    function IsNull : Boolean; override;
   public
     constructor Create; overload;
     constructor Create(const aValue : Double); overload;
@@ -108,7 +108,7 @@ type
     fValue : Boolean;
     fIsNull : Boolean;
   protected
-    function IsNull : Boolean; virtual;
+    function IsNull : Boolean; override;
   public
     constructor Create; overload;
     constructor Create(const aValue : Boolean); overload;