diff --git a/utils/fpdoc/dw_html.pp b/utils/fpdoc/dw_html.pp index e256817748..5a5a8bf2ec 100644 --- a/utils/fpdoc/dw_html.pp +++ b/utils/fpdoc/dw_html.pp @@ -2828,6 +2828,22 @@ var AppendText(ParaEl, '] '); 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; var TableEl, TREl, TDEl, CodeEl: TDOMElement; @@ -2858,24 +2874,39 @@ var TDEl := CreateTD(TREl); CodeEl := CreateCode(CreatePara(TDEl)); AppendKw(CodeEl, 'type'); + if AClass.ObjKind=okGeneric then + AppendKw(CodeEl, ' generic '); AppendText(CodeEl, ' ' + AClass.Name + ' '); + if AClass.ObjKind=okGeneric then + AppendGenericTypes(CodeEl,AClass.GenericTemplateTypes,false); AppendSym(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 begin - AppendSym(CodeEl, '('); - AppendHyperlink(CodeEl, AClass.AncestorType); - if AClass.Interfaces.count>0 Then + if AClass.ObjKind=okSpecialize then begin - for i:=0 to AClass.interfaces.count-1 do - begin - AppendSym(CodeEl, ', '); - AppendHyperlink(CodeEl,TPasClassType(AClass.Interfaces[i])); - end; + AppendHyperlink(CodeEl, AClass.AncestorType); + AppendGenericTypes(CodeEl,AClass.GenericTemplateTypes,true) + end + else + begin + AppendSym(CodeEl, '('); + AppendHyperlink(CodeEl, AClass.AncestorType); + if AClass.Interfaces.count>0 Then + begin + for i:=0 to AClass.interfaces.count-1 do + begin + AppendSym(CodeEl, ', '); + AppendHyperlink(CodeEl,TPasClassType(AClass.Interfaces[i])); + end; + end; + AppendSym(CodeEl, ')'); end; - AppendSym(CodeEl, ')'); end; if AClass.Members.Count > 0 then @@ -2965,7 +2996,8 @@ var end; AppendText(CodeEl, ' '); // !!!: Dirty trick, necessary for current XML writer - AppendKw(CodeEl, 'end'); + if not AClass.IsShortDefinition then + AppendKw(CodeEl, 'end'); AppendSym(CodeEl, ';'); diff --git a/utils/fpdoc/fpclasschart.pp b/utils/fpdoc/fpclasschart.pp index e4049dca09..914892d5bd 100644 --- a/utils/fpdoc/fpclasschart.pp +++ b/utils/fpdoc/fpclasschart.pp @@ -35,7 +35,7 @@ resourcestring Const RootNames : Array[TPasObjKind] of string - = ('Objects', 'Classes', 'Interfaces'); + = ('Objects', 'Classes', 'Interfaces','Generics','Specializations'); type diff --git a/utils/fpdoc/fpdoc.lpi b/utils/fpdoc/fpdoc.lpi index 80b1aa589e..8d595f44c6 100644 --- a/utils/fpdoc/fpdoc.lpi +++ b/utils/fpdoc/fpdoc.lpi @@ -13,7 +13,6 @@