Przeglądaj źródła

+ add a method to retrieve a copy of a specialization context

Sven/Sarah Barth 3 lat temu
rodzic
commit
3444b23c9a
1 zmienionych plików z 24 dodań i 0 usunięć
  1. 24 0
      compiler/pgentype.pas

+ 24 - 0
compiler/pgentype.pas

@@ -51,6 +51,7 @@ type
     symtable : tsymtable;
     constructor create;
     destructor destroy;override;
+    function getcopy:tspecializationcontext;
   end;
 
 
@@ -73,5 +74,28 @@ begin
   inherited destroy;
 end;
 
+function tspecializationcontext.getcopy:tspecializationcontext;
+var
+  posinfo : pfileposinfo;
+  i : longint;
+begin
+  result:=tspecializationcontext.create;
+  for i:=0 to paramlist.count-1 do
+    begin
+      result.paramlist.add(paramlist[i]);
+    end;
+  for i:=0 to poslist.count-1 do
+    begin
+      new(posinfo);
+      posinfo^:=pfileposinfo(poslist[i])^;
+      result.poslist.add(posinfo);
+    end;
+  result.prettyname:=prettyname;
+  result.specializename:=specializename;
+  result.genname:=genname;
+  result.sym:=sym;
+  result.symtable:=symtable;
+end;
+
 end.