+ provide a tsym based variant of ChangeOwnerAndName

This commit is contained in:
Sven/Sarah Barth 2022-01-17 22:18:40 +01:00
parent a7a0f47d98
commit eaeb614887
2 changed files with 11 additions and 1 deletions

View File

@ -680,7 +680,7 @@ uses
for i:=0 to unnamed_syms.count-1 do for i:=0 to unnamed_syms.count-1 do
begin begin
sym:=tsym(unnamed_syms[i]); sym:=tsym(unnamed_syms[i]);
sym.ChangeOwnerAndName(owner.symlist,sym.realname); sym.ChangeOwnerAndName(owner,sym.realname);
end; end;
unnamed_syms.clear; unnamed_syms.clear;
end; end;

View File

@ -143,6 +143,7 @@ interface
procedure buildderef;virtual; procedure buildderef;virtual;
procedure deref;virtual; procedure deref;virtual;
procedure ChangeOwner(st:TSymtable); procedure ChangeOwner(st:TSymtable);
procedure ChangeOwnerAndName(st:TSymtable;const aname:tsymstr);
procedure IncRefCount; procedure IncRefCount;
procedure IncRefCountBy(AValue : longint); procedure IncRefCountBy(AValue : longint);
procedure MaybeCreateRefList; procedure MaybeCreateRefList;
@ -687,6 +688,15 @@ implementation
end; end;
procedure tsym.ChangeOwnerAndName(st:TSymtable;const aname:tsymstr);
begin
if assigned(owner) and owner.SymList.OwnsObjects then
owner.symlist.extract(self);
Owner:=st;
inherited ChangeOwnerAndName(Owner.SymList,aname);
end;
{**************************************************************************** {****************************************************************************
tpropaccesslist tpropaccesslist
****************************************************************************} ****************************************************************************}