Browse Source

* Rename for management operators (proposed by Florian): AddRef -> Copy and Copy -> Clone

git-svn-id: branches/maciej/smart_pointers@33657 -
maciej-izak 9 years ago
parent
commit
d83889c6d2

+ 2 - 2
compiler/htypechk.pas

@@ -141,8 +141,8 @@ interface
       tok2op: array[1..tok2ops] of ttok2oprec = (
       tok2op: array[1..tok2ops] of ttok2oprec = (
         (tok:_OP_INITIALIZE; managementoperator: mop_initialize),
         (tok:_OP_INITIALIZE; managementoperator: mop_initialize),
         (tok:_OP_FINALIZE  ; managementoperator: mop_finalize),
         (tok:_OP_FINALIZE  ; managementoperator: mop_finalize),
-        (tok:_OP_ADDREF    ; managementoperator: mop_addref),
-        (tok:_OP_COPY      ; managementoperator: mop_copy)
+        (tok:_OP_COPY      ; managementoperator: mop_copy),
+        (tok:_OP_CLONE    ; managementoperator: mop_clone)
       );
       );
 
 
       { true, if we are parsing stuff which allows array constructors }
       { true, if we are parsing stuff which allows array constructors }

+ 4 - 4
compiler/pdecsub.pas

@@ -595,7 +595,7 @@ implementation
                     _DEC:optoken:=_OP_DEC;
                     _DEC:optoken:=_OP_DEC;
                     _INITIALIZE:optoken:=_OP_INITIALIZE;
                     _INITIALIZE:optoken:=_OP_INITIALIZE;
                     _FINALIZE:optoken:=_OP_FINALIZE;
                     _FINALIZE:optoken:=_OP_FINALIZE;
-                    _ADDREF:optoken:=_OP_ADDREF;
+                    _CLONE:optoken:=_OP_CLONE;
                     _COPY:optoken:=_OP_COPY;
                     _COPY:optoken:=_OP_COPY;
                     else
                     else
                     if (m_delphi in current_settings.modeswitches) then
                     if (m_delphi in current_settings.modeswitches) then
@@ -1411,10 +1411,10 @@ implementation
                 end;
                 end;
 
 
               { operators without result }
               { operators without result }
-              if optoken in [_OP_INITIALIZE, _OP_FINALIZE, _OP_ADDREF, _OP_COPY] then
+              if optoken in [_OP_INITIALIZE, _OP_FINALIZE, _OP_COPY, _OP_CLONE] then
                 begin
                 begin
                   { single var parameter to point the record }
                   { single var parameter to point the record }
-                  if (optoken in [_OP_INITIALIZE, _OP_FINALIZE, _OP_ADDREF]) and
+                  if (optoken in [_OP_INITIALIZE, _OP_FINALIZE, _OP_COPY]) and
                      (
                      (
                       (pd.parast.SymList.Count <> 1) or
                       (pd.parast.SymList.Count <> 1) or
                       (tparavarsym(pd.parast.SymList[0]).vardef<>pd.struct) or
                       (tparavarsym(pd.parast.SymList[0]).vardef<>pd.struct) or
@@ -1422,7 +1422,7 @@ implementation
                      ) then
                      ) then
                     Message(parser_e_overload_impossible)
                     Message(parser_e_overload_impossible)
                   { constref (source) and var (dest) parameter to point the records }
                   { constref (source) and var (dest) parameter to point the records }
-                  else if (optoken = _OP_COPY) and
+                  else if (optoken = _OP_CLONE) and
                      (
                      (
                       (pd.parast.SymList.Count <> 2) or
                       (pd.parast.SymList.Count <> 2) or
                       (tparavarsym(pd.parast.SymList[0]).vardef<>pd.struct) or
                       (tparavarsym(pd.parast.SymList[0]).vardef<>pd.struct) or

+ 2 - 2
compiler/symconst.pas

@@ -575,8 +575,8 @@ type
   tmanagementoperator=(mop_none,
   tmanagementoperator=(mop_none,
     mop_initialize,
     mop_initialize,
     mop_finalize,
     mop_finalize,
-    mop_addref,
-    mop_copy
+    mop_copy,
+    mop_clone
   );
   );
   tmanagementoperators=set of tmanagementoperator;
   tmanagementoperators=set of tmanagementoperator;
 
 

+ 3 - 3
compiler/symtable.pas

@@ -431,8 +431,8 @@ interface
     { _OP_ENUMERATOR }  'enumerator',
     { _OP_ENUMERATOR }  'enumerator',
     { _OP_INITIALIZE }  'initialize',
     { _OP_INITIALIZE }  'initialize',
     { _OP_FINALIZE   }  'finalize',
     { _OP_FINALIZE   }  'finalize',
-    { _OP_ADDREF     }  'addref',
     { _OP_COPY       }  'copy',
     { _OP_COPY       }  'copy',
+    { _OP_CLONE      }  'clone',
     { _OP_INC        }  'inc',
     { _OP_INC        }  'inc',
     { _OP_DEC        }  'dec');
     { _OP_DEC        }  'dec');
 
 
@@ -440,8 +440,8 @@ interface
     { mop_none       }  NOTOKEN,
     { mop_none       }  NOTOKEN,
     { mop_initialize }  _OP_INITIALIZE,
     { mop_initialize }  _OP_INITIALIZE,
     { mop_finalize   }  _OP_FINALIZE,
     { mop_finalize   }  _OP_FINALIZE,
-    { mop_addref     }  _OP_ADDREF,
-    { mop_copy       }  _OP_COPY
+    { mop_copy       }  _OP_COPY,
+    { mop_clone      }  _OP_CLONE
     );
     );
 
 
 
 

+ 4 - 4
compiler/tokens.pas

@@ -58,7 +58,7 @@ type
     _OP_ENUMERATOR,
     _OP_ENUMERATOR,
     _OP_INITIALIZE,
     _OP_INITIALIZE,
     _OP_FINALIZE,
     _OP_FINALIZE,
-    _OP_ADDREF,
+    _OP_CLONE,
     _OP_COPY,
     _OP_COPY,
     _OP_INC,
     _OP_INC,
     _OP_DEC,
     _OP_DEC,
@@ -158,6 +158,7 @@ type
     _BREAK,
     _BREAK,
     _CDECL,
     _CDECL,
     _CLASS,
     _CLASS,
+    _CLONE,
     _CONST,
     _CONST,
     _EQUAL,
     _EQUAL,
     _FAR16,
     _FAR16,
@@ -169,7 +170,6 @@ type
     _UNTIL,
     _UNTIL,
     _WHILE,
     _WHILE,
     _WRITE,
     _WRITE,
-    _ADDREF,
     _DISPID,
     _DISPID,
     _DIVIDE,
     _DIVIDE,
     _DOWNTO,
     _DOWNTO,
@@ -389,8 +389,8 @@ const
       (str:'enumerator'    ;special:true ;keyword:[m_none];op:NOTOKEN),
       (str:'enumerator'    ;special:true ;keyword:[m_none];op:NOTOKEN),
       (str:'initialize'    ;special:true ;keyword:[m_none];op:NOTOKEN),
       (str:'initialize'    ;special:true ;keyword:[m_none];op:NOTOKEN),
       (str:'finalize'      ;special:true ;keyword:[m_none];op:NOTOKEN),
       (str:'finalize'      ;special:true ;keyword:[m_none];op:NOTOKEN),
-      (str:'addref'        ;special:true ;keyword:[m_none];op:NOTOKEN),
       (str:'copy'          ;special:true ;keyword:[m_none];op:NOTOKEN),
       (str:'copy'          ;special:true ;keyword:[m_none];op:NOTOKEN),
+      (str:'clone'         ;special:true ;keyword:[m_none];op:NOTOKEN),
       (str:'inc'           ;special:true ;keyword:[m_none];op:NOTOKEN),
       (str:'inc'           ;special:true ;keyword:[m_none];op:NOTOKEN),
       (str:'dec'           ;special:true ;keyword:[m_none];op:NOTOKEN),
       (str:'dec'           ;special:true ;keyword:[m_none];op:NOTOKEN),
     { Special chars }
     { Special chars }
@@ -489,6 +489,7 @@ const
       (str:'BREAK'         ;special:false;keyword:[m_none];op:NOTOKEN),
       (str:'BREAK'         ;special:false;keyword:[m_none];op:NOTOKEN),
       (str:'CDECL'         ;special:false;keyword:[m_none];op:NOTOKEN),
       (str:'CDECL'         ;special:false;keyword:[m_none];op:NOTOKEN),
       (str:'CLASS'         ;special:false;keyword:[m_class];op:NOTOKEN),
       (str:'CLASS'         ;special:false;keyword:[m_class];op:NOTOKEN),
+      (str:'CLONE'         ;special:false;keyword:[m_none];op:NOTOKEN),
       (str:'CONST'         ;special:false;keyword:alllanguagemodes;op:NOTOKEN),
       (str:'CONST'         ;special:false;keyword:alllanguagemodes;op:NOTOKEN),
       (str:'EQUAL'         ;special:false;keyword:[m_none];op:NOTOKEN), { delphi operator name }
       (str:'EQUAL'         ;special:false;keyword:[m_none];op:NOTOKEN), { delphi operator name }
       (str:'FAR16'         ;special:false;keyword:[m_none];op:NOTOKEN),
       (str:'FAR16'         ;special:false;keyword:[m_none];op:NOTOKEN),
@@ -500,7 +501,6 @@ const
       (str:'UNTIL'         ;special:false;keyword:alllanguagemodes;op:NOTOKEN),
       (str:'UNTIL'         ;special:false;keyword:alllanguagemodes;op:NOTOKEN),
       (str:'WHILE'         ;special:false;keyword:alllanguagemodes;op:NOTOKEN),
       (str:'WHILE'         ;special:false;keyword:alllanguagemodes;op:NOTOKEN),
       (str:'WRITE'         ;special:false;keyword:[m_none];op:NOTOKEN),
       (str:'WRITE'         ;special:false;keyword:[m_none];op:NOTOKEN),
-      (str:'ADDREF'        ;special:false;keyword:[m_none];op:NOTOKEN),
       (str:'DISPID'        ;special:false;keyword:[m_none];op:NOTOKEN),
       (str:'DISPID'        ;special:false;keyword:[m_none];op:NOTOKEN),
       (str:'DIVIDE'        ;special:false;keyword:[m_none];op:NOTOKEN), { delphi operator name }
       (str:'DIVIDE'        ;special:false;keyword:[m_none];op:NOTOKEN), { delphi operator name }
       (str:'DOWNTO'        ;special:false;keyword:alllanguagemodes;op:NOTOKEN),
       (str:'DOWNTO'        ;special:false;keyword:alllanguagemodes;op:NOTOKEN),

+ 7 - 7
rtl/inc/rtti.inc

@@ -54,7 +54,7 @@ type
 
 
 {$if FPC_FULLVERSION>30100}
 {$if FPC_FULLVERSION>30100}
   TRTTIRecVarOp=procedure(ARec: Pointer);
   TRTTIRecVarOp=procedure(ARec: Pointer);
-  TRTTIRecCopyOp=procedure(ASrc, ADest: Pointer);
+  TRTTIRecCloneOp=procedure(ASrc, ADest: Pointer);
 
 
   PRTTIRecordOpVMT=^TRTTIRecordOpVMT;
   PRTTIRecordOpVMT=^TRTTIRecordOpVMT;
   TRTTIRecordOpVMT=
   TRTTIRecordOpVMT=
@@ -64,8 +64,8 @@ type
   record
   record
     Initialize: TRTTIRecVarOp;
     Initialize: TRTTIRecVarOp;
     Finalize: TRTTIRecVarOp;
     Finalize: TRTTIRecVarOp;
-    AddRef: TRTTIRecVarOp;
-    Copy: TRTTIRecCopyOp;
+    Copy: TRTTIRecVarOp;
+    Clone: TRTTIRecCloneOp;
   end;
   end;
 
 
   PRecordInfoInit=^TRecordInfoInit;
   PRecordInfoInit=^TRecordInfoInit;
@@ -314,8 +314,8 @@ begin
       begin
       begin
         recordrtti(data,typeinfo,@int_addref);
         recordrtti(data,typeinfo,@int_addref);
 {$if FPC_FULLVERSION>30100}
 {$if FPC_FULLVERSION>30100}
-        if Assigned(recordop) and Assigned(recordop^.AddRef) then
-          recordop^.AddRef(Data);
+        if Assigned(recordop) and Assigned(recordop^.Copy) then
+          recordop^.Copy(Data);
 {$endif FPC_FULLVERSION>30100}
 {$endif FPC_FULLVERSION>30100}
       end;
       end;
 {$ifdef FPC_HAS_FEATURE_DYNARRAYS}
 {$ifdef FPC_HAS_FEATURE_DYNARRAYS}
@@ -395,8 +395,8 @@ begin
       begin
       begin
         Temp:=aligntoptr(typeInfo+2+PByte(typeInfo)[1]);
         Temp:=aligntoptr(typeInfo+2+PByte(typeInfo)[1]);
 {$if FPC_FULLVERSION>30100}
 {$if FPC_FULLVERSION>30100}
-        if Assigned(recordop) and Assigned(recordop^.Copy) then
-          recordop^.Copy(Src,Dest)
+        if Assigned(recordop) and Assigned(recordop^.Clone) then
+          recordop^.Clone(Src,Dest)
         else
         else
           begin
           begin
             Result:=Size;
             Result:=Size;

+ 6 - 6
tests/test/toperator96.pp

@@ -9,8 +9,8 @@ type
   private
   private
     class operator Initialize(var aFoo: TFoo);
     class operator Initialize(var aFoo: TFoo);
     class operator Finalize(var aFoo: TFoo);
     class operator Finalize(var aFoo: TFoo);
-    class operator AddRef(var aFoo: TFoo);
-    class operator Copy(constref aSrc: TFoo; var aDst: TFoo);
+    class operator Copy(var aFoo: TFoo);
+    class operator Clone(constref aSrc: TFoo; var aDst: TFoo);
   public
   public
     CopyState: TCopyState;
     CopyState: TCopyState;
     Ref: Boolean;
     Ref: Boolean;
@@ -52,19 +52,19 @@ begin
   aFoo.F := 4;
   aFoo.F := 4;
 end;
 end;
 
 
-class operator TFoo.AddRef(var aFoo: TFoo);
+class operator TFoo.Copy(var aFoo: TFoo);
 begin
 begin
-  WriteLn('TFoo.AddRef');
+  WriteLn('TFoo.Copy');
   aFoo.F := 3;
   aFoo.F := 3;
   aFoo.Test := aFoo.Test + 1;
   aFoo.Test := aFoo.Test + 1;
   aFoo.Ref := True;
   aFoo.Ref := True;
 end;
 end;
 
 
-class operator TFoo.Copy(constref aSrc: TFoo; var aDst: TFoo);
+class operator TFoo.Clone(constref aSrc: TFoo; var aDst: TFoo);
 var
 var
   LSrc: PFoo;
   LSrc: PFoo;
 begin
 begin
-  WriteLn('TFoo.Copy');
+  WriteLn('TFoo.Clone');
   LSrc := @aSrc;
   LSrc := @aSrc;
   LSrc.CopyState := csSource;
   LSrc.CopyState := csSource;
   aDst.CopyState := csDest;
   aDst.CopyState := csDest;