* Support for generics

git-svn-id: trunk@19622 -
This commit is contained in:
michael 2011-11-11 15:08:42 +00:00
parent 5ea8e65ea2
commit 91a2b7ae18
5 changed files with 52 additions and 20 deletions

View File

@ -2828,6 +2828,22 @@ var
AppendText(ParaEl, '] '); AppendText(ParaEl, '] ');
end; end;
procedure AppendGenericTypes(CodeEl : TDomElement; AList : TList; isSpecialize : Boolean);
Var
I : integer;
begin
for I:=0 to AList.Count-1 do
begin
if I=0 then
AppendSym(CodeEl, '<')
else
AppendSym(CodeEl, ',');
AppendText(CodeEl,TPasGenericTemplateType(AList[i]).Name);
end;
AppendSym(CodeEl, '>');
end;
procedure CreateMainPage; procedure CreateMainPage;
var var
TableEl, TREl, TDEl, CodeEl: TDOMElement; TableEl, TREl, TDEl, CodeEl: TDOMElement;
@ -2858,12 +2874,26 @@ var
TDEl := CreateTD(TREl); TDEl := CreateTD(TREl);
CodeEl := CreateCode(CreatePara(TDEl)); CodeEl := CreateCode(CreatePara(TDEl));
AppendKw(CodeEl, 'type'); AppendKw(CodeEl, 'type');
if AClass.ObjKind=okGeneric then
AppendKw(CodeEl, ' generic ');
AppendText(CodeEl, ' ' + AClass.Name + ' '); AppendText(CodeEl, ' ' + AClass.Name + ' ');
if AClass.ObjKind=okGeneric then
AppendGenericTypes(CodeEl,AClass.GenericTemplateTypes,false);
AppendSym(CodeEl, '='); AppendSym(CodeEl, '=');
AppendText(CodeEl, ' '); AppendText(CodeEl, ' ');
AppendKw(CodeEl, ObjKindNames[AClass.ObjKind]); if AClass.ObjKind<>okSpecialize then
AppendKw(CodeEl, ObjKindNames[AClass.ObjKind])
else
AppendKw(CodeEl, ' specialize ');
if Assigned(AClass.AncestorType) then if Assigned(AClass.AncestorType) then
begin
if AClass.ObjKind=okSpecialize then
begin
AppendHyperlink(CodeEl, AClass.AncestorType);
AppendGenericTypes(CodeEl,AClass.GenericTemplateTypes,true)
end
else
begin begin
AppendSym(CodeEl, '('); AppendSym(CodeEl, '(');
AppendHyperlink(CodeEl, AClass.AncestorType); AppendHyperlink(CodeEl, AClass.AncestorType);
@ -2877,6 +2907,7 @@ var
end; end;
AppendSym(CodeEl, ')'); AppendSym(CodeEl, ')');
end; end;
end;
if AClass.Members.Count > 0 then if AClass.Members.Count > 0 then
begin begin
@ -2965,6 +2996,7 @@ var
end; end;
AppendText(CodeEl, ' '); // !!!: Dirty trick, necessary for current XML writer AppendText(CodeEl, ' '); // !!!: Dirty trick, necessary for current XML writer
if not AClass.IsShortDefinition then
AppendKw(CodeEl, 'end'); AppendKw(CodeEl, 'end');
AppendSym(CodeEl, ';'); AppendSym(CodeEl, ';');

View File

@ -35,7 +35,7 @@ resourcestring
Const Const
RootNames : Array[TPasObjKind] of string RootNames : Array[TPasObjKind] of string
= ('Objects', 'Classes', 'Interfaces'); = ('Objects', 'Classes', 'Interfaces','Generics','Specializations');
type type

View File

@ -13,7 +13,6 @@
<Title Value="FPDoc Documentation generator"/> <Title Value="FPDoc Documentation generator"/>
<ResourceType Value="res"/> <ResourceType Value="res"/>
<UseXPManifest Value="True"/> <UseXPManifest Value="True"/>
<Icon Value="0"/>
</General> </General>
<i18n> <i18n>
<EnableI18N LFM="False"/> <EnableI18N LFM="False"/>
@ -60,7 +59,7 @@
<Unit3> <Unit3>
<Filename Value="dw_html.pp"/> <Filename Value="dw_html.pp"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="dw_html"/> <UnitName Value="dw_HTML"/>
</Unit3> </Unit3>
<Unit4> <Unit4>
<Filename Value="dw_ipflin.pas"/> <Filename Value="dw_ipflin.pas"/>
@ -70,7 +69,7 @@
<Unit5> <Unit5>
<Filename Value="dw_latex.pp"/> <Filename Value="dw_latex.pp"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="dw_latex"/> <UnitName Value="dw_LaTeX"/>
</Unit5> </Unit5>
<Unit6> <Unit6>
<Filename Value="dwlinear.pp"/> <Filename Value="dwlinear.pp"/>
@ -80,7 +79,7 @@
<Unit7> <Unit7>
<Filename Value="dw_linrtf.pp"/> <Filename Value="dw_linrtf.pp"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="dw_linrtf"/> <UnitName Value="dw_LinRTF"/>
</Unit7> </Unit7>
<Unit8> <Unit8>
<Filename Value="dw_man.pp"/> <Filename Value="dw_man.pp"/>
@ -90,7 +89,7 @@
<Unit9> <Unit9>
<Filename Value="dwriter.pp"/> <Filename Value="dwriter.pp"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="dwriter"/> <UnitName Value="dWriter"/>
</Unit9> </Unit9>
<Unit10> <Unit10>
<Filename Value="dw_txt.pp"/> <Filename Value="dw_txt.pp"/>
@ -100,7 +99,7 @@
<Unit11> <Unit11>
<Filename Value="dw_xml.pp"/> <Filename Value="dw_xml.pp"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="dw_xml"/> <UnitName Value="dw_XML"/>
</Unit11> </Unit11>
<Unit12> <Unit12>
<Filename Value="fpdocproj.pas"/> <Filename Value="fpdocproj.pas"/>
@ -115,7 +114,7 @@
</Units> </Units>
</ProjectOptions> </ProjectOptions>
<CompilerOptions> <CompilerOptions>
<Version Value="9"/> <Version Value="10"/>
<Target> <Target>
<Filename Value="fpdoc"/> <Filename Value="fpdoc"/>
</Target> </Target>

View File

@ -339,6 +339,7 @@ begin
end; end;
WriterClass:=GetWriterClass(Options.Backend); WriterClass:=GetWriterClass(Options.Backend);
Writer:=WriterClass.Create(Engine.Package,Engine); Writer:=WriterClass.Create(Engine.Package,Engine);
Writeln('Writing doc');
With Writer do With Writer do
Try Try
If Options.BackendOptions.Count>0 then If Options.BackendOptions.Count>0 then

View File

@ -40,7 +40,7 @@ Type
2 : (phi,Omega : Real); 2 : (phi,Omega : Real);
end; end;
// TADeprecatedType = Integer deprecated; TADeprecatedType = Integer deprecated;
Var Var
ASimpleVar : Integer; ASimpleVar : Integer;