Browse Source

* Patch from Luiz Americo to implement Insert/Move/Exchange in TJSONArray (ID 20145)

git-svn-id: trunk@18964 -
michael 14 years ago
parent
commit
d924b36ee8
1 changed files with 64 additions and 1 deletions
  1. 64 1
      packages/fcl-json/src/fpjson.pp

+ 64 - 1
packages/fcl-json/src/fpjson.pp

@@ -313,6 +313,16 @@ Type
     function Add(AnArray : TJSONArray): Integer;
     function Add(AnArray : TJSONArray): Integer;
     function Add(AnObject: TJSONObject): Integer;
     function Add(AnObject: TJSONObject): Integer;
     Procedure Delete(Index : Integer);
     Procedure Delete(Index : Integer);
+    procedure Exchange(Index1, Index2: Integer);
+    procedure Insert(Index: Integer; Item : TJSONData);
+    procedure Insert(Index: Integer; I : Integer);
+    procedure Insert(Index: Integer; I : Int64);
+    procedure Insert(Index: Integer; const S : String);
+    procedure Insert(Index: Integer; F : TJSONFloat);
+    procedure Insert(Index: Integer; B : Boolean);
+    procedure Insert(Index: Integer; AnArray : TJSONArray);
+    procedure Insert(Index: Integer; AnObject: TJSONObject);
+    procedure Move(CurIndex, NewIndex: Integer);
     Procedure Remove(Item : TJSONData);
     Procedure Remove(Item : TJSONData);
     // Easy Access Properties.
     // Easy Access Properties.
     property Items;default;
     property Items;default;
@@ -1526,6 +1536,60 @@ begin
   FList.Delete(Index);
   FList.Delete(Index);
 end;
 end;
 
 
+procedure TJSONArray.Exchange(Index1, Index2: Integer);
+begin
+  FList.Exchange(Index1, Index2);
+end;
+
+procedure TJSONArray.Insert(Index: Integer; Item: TJSONData);
+begin
+  FList.Insert(Index, Item);
+end;
+
+procedure TJSONArray.Insert(Index: Integer; I: Integer);
+begin
+  FList.Insert(Index, TJSONIntegerNumber.Create(I));
+end;
+
+procedure TJSONArray.Insert(Index: Integer; I: Int64);
+begin
+  FList.Insert(Index, TJSONInt64Number.Create(I));
+end;
+
+procedure TJSONArray.Insert(Index: Integer; const S: String);
+begin
+  FList.Insert(Index, TJSONString.Create(S));
+end;
+
+procedure TJSONArray.Insert(Index: Integer; F: TJSONFloat);
+begin
+  FList.Insert(Index, TJSONFloatNumber.Create(F));
+end;
+
+procedure TJSONArray.Insert(Index: Integer; B: Boolean);
+begin
+  FList.Insert(Index, TJSONBoolean.Create(B));
+end;
+
+procedure TJSONArray.Insert(Index: Integer; AnArray: TJSONArray);
+begin
+  if (IndexOf(AnArray)<>-1) then
+    raise EJSON.Create(SErrCannotAddArrayTwice);
+  FList.Insert(Index, AnArray);
+end;
+
+procedure TJSONArray.Insert(Index: Integer; AnObject: TJSONObject);
+begin
+  if (IndexOf(AnObject)<>-1) then
+    raise EJSON.Create(SErrCannotAddObjectTwice);
+  FList.Insert(Index, AnObject);
+end;
+
+procedure TJSONArray.Move(CurIndex, NewIndex: Integer);
+begin
+  FList.Move(CurIndex, NewIndex);
+end;
+
 procedure TJSONArray.Remove(Item: TJSONData);
 procedure TJSONArray.Remove(Item: TJSONData);
 begin
 begin
   FList.Remove(Item);
   FList.Remove(Item);
@@ -1807,7 +1871,6 @@ function TJSONObject.Clone: TJSONData;
 Var
 Var
   O : TJSONObject;
   O : TJSONObject;
   I: Integer;
   I: Integer;
-  N : TJSONStringType;
 
 
 begin
 begin
   O:=TJSONObject.Create;
   O:=TJSONObject.Create;