mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-12 09:29:07 +02:00
fpdoc: free TPasElement instead of reference count
This commit is contained in:
parent
eae098ae3e
commit
acc8c69cf5
@ -474,12 +474,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TFPDocEngine.Destroy;
|
destructor TFPDocEngine.Destroy;
|
||||||
var
|
|
||||||
i: Integer;
|
|
||||||
begin
|
begin
|
||||||
if FPackages.Count > 0 then
|
|
||||||
for i := 0 to FPackages.Count - 1 do
|
|
||||||
TPasPackage(FPackages[i]).Release{$IFDEF CheckPasTreeRefCount}('TFPDocEngine.Destroy'){$ENDIF};
|
|
||||||
FreeAndNil(FPackages);
|
FreeAndNil(FPackages);
|
||||||
FreeAndNil(FRootDocNode);
|
FreeAndNil(FRootDocNode);
|
||||||
FreeAndNil(FRootLinkNode);
|
FreeAndNil(FRootLinkNode);
|
||||||
@ -567,14 +562,14 @@ var
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function ResolvePackageModule(AName:String;out pkg:TPasPackage;out module:TPasModule;createnew:boolean):String;
|
function ResolvePackageModule(AName: String; out pkg: TPasPackage; out Module: TPasModule; CreateNew: boolean): String;
|
||||||
var
|
var
|
||||||
DotPos, DotPos2, i: Integer;
|
DotPos, DotPos2, i: Integer;
|
||||||
s: String;
|
s: String;
|
||||||
HPackage: TPasPackage;
|
HPackage: TPasPackage;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
pkg:=nil; module:=nil; result:='';
|
pkg:=nil; Module:=nil; result:='';
|
||||||
|
|
||||||
// Find or create package
|
// Find or create package
|
||||||
DotPos := Pos('.', AName);
|
DotPos := Pos('.', AName);
|
||||||
@ -595,7 +590,7 @@ var
|
|||||||
FPackages.Add(HPackage);
|
FPackages.Add(HPackage);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// Find or create module
|
// Find or create Module
|
||||||
DotPos2 := DotPos;
|
DotPos2 := DotPos;
|
||||||
repeat
|
repeat
|
||||||
Inc(DotPos2);
|
Inc(DotPos2);
|
||||||
@ -613,8 +608,10 @@ var
|
|||||||
if not CreateNew then
|
if not CreateNew then
|
||||||
exit;
|
exit;
|
||||||
Module := TPasExternalModule.Create(s, HPackage);
|
Module := TPasExternalModule.Create(s, HPackage);
|
||||||
|
FOwnedElements.Add(Module);
|
||||||
HPackage.Modules.Add(Module);
|
HPackage.Modules.Add(Module);
|
||||||
Module.InterfaceSection := TInterfaceSection.Create('', Module);
|
Module.InterfaceSection := TInterfaceSection.Create('', Module);
|
||||||
|
FOwnedElements.Add(Module.InterfaceSection);
|
||||||
Module.PackageName:= HPackage.Name;
|
Module.PackageName:= HPackage.Name;
|
||||||
end;
|
end;
|
||||||
pkg:=hpackage;
|
pkg:=hpackage;
|
||||||
@ -674,6 +671,7 @@ var
|
|||||||
s:= ResolvePackageModule(AName,HPackage,Module,True);
|
s:= ResolvePackageModule(AName,HPackage,Module,True);
|
||||||
// Create node for class
|
// Create node for class
|
||||||
Result := TPasExternalClassType.Create(s, Module.InterfaceSection);
|
Result := TPasExternalClassType.Create(s, Module.InterfaceSection);
|
||||||
|
FOwnedElements.Add(Result);
|
||||||
Result.ObjKind := okClass;
|
Result.ObjKind := okClass;
|
||||||
Module.InterfaceSection.Declarations.Add(Result);
|
Module.InterfaceSection.Declarations.Add(Result);
|
||||||
Module.InterfaceSection.Classes.Add(Result);
|
Module.InterfaceSection.Classes.Add(Result);
|
||||||
@ -703,7 +701,6 @@ var
|
|||||||
result:=TPasClassType(ResolveClassType(clname));
|
result:=TPasClassType(ResolveClassType(clname));
|
||||||
if assigned(result) and not (cls=result) then // save from tobject=implicit tobject
|
if assigned(result) and not (cls=result) then // save from tobject=implicit tobject
|
||||||
begin
|
begin
|
||||||
result.addref{$IFDEF CheckPasTreeRefCount}('ReadContentFile.ResolveAndLinkClass'){$ENDIF};
|
|
||||||
if IsClass then
|
if IsClass then
|
||||||
begin
|
begin
|
||||||
cls.ancestortype:=result;
|
cls.ancestortype:=result;
|
||||||
@ -745,7 +742,6 @@ var
|
|||||||
Result := TPasAliasType(CreateElement(TPasAliasType,s,module.interfacesection,vispublic,'',0));
|
Result := TPasAliasType(CreateElement(TPasAliasType,s,module.interfacesection,vispublic,'',0));
|
||||||
module.interfacesection.Declarations.Add(Result);
|
module.interfacesection.Declarations.Add(Result);
|
||||||
TPasAliasType(Result).DestType := cl2;
|
TPasAliasType(Result).DestType := cl2;
|
||||||
cl2.addref{$IFDEF CheckPasTreeRefCount}('ReadContentFile.CreateAliasType'){$ENDIF};
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end;
|
end;
|
||||||
@ -838,6 +834,7 @@ var
|
|||||||
else
|
else
|
||||||
raise Exception.Create('Invalid member type: ' + s[2]);
|
raise Exception.Create('Invalid member type: ' + s[2]);
|
||||||
end;
|
end;
|
||||||
|
FOwnedElements.Add(Member);
|
||||||
CurClass.Members.Add(Member);
|
CurClass.Members.Add(Member);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -1016,6 +1013,7 @@ function TFPDocEngine.CreateElement(AClass: TPTreeElement; const AName: String;
|
|||||||
const ASourceFilename: String; ASourceLinenumber: Integer): TPasElement;
|
const ASourceFilename: String; ASourceLinenumber: Integer): TPasElement;
|
||||||
begin
|
begin
|
||||||
Result := AClass.Create(AName, AParent);
|
Result := AClass.Create(AName, AParent);
|
||||||
|
FOwnedElements.Add(Result);
|
||||||
Result.Visibility := AVisibility;
|
Result.Visibility := AVisibility;
|
||||||
if AClass.InheritsFrom(TPasModule) then
|
if AClass.InheritsFrom(TPasModule) then
|
||||||
CurModule := TPasModule(Result);
|
CurModule := TPasModule(Result);
|
||||||
|
Loading…
Reference in New Issue
Block a user