lazutils: dom: add GetChildCount

git-svn-id: trunk@35894 -
This commit is contained in:
mattias 2012-03-11 18:36:50 +00:00
parent ddffec7238
commit b4b796c641

View File

@ -259,6 +259,7 @@ type
procedure FreeInstance; override; procedure FreeInstance; override;
function GetChildNodes: TDOMNodeList; function GetChildNodes: TDOMNodeList;
function GetChildCount: SizeInt; virtual;
property NodeName: DOMString read GetNodeName; property NodeName: DOMString read GetNodeName;
property NodeValue: DOMString read GetNodeValue write SetNodeValue; property NodeValue: DOMString read GetNodeValue write SetNodeValue;
@ -277,7 +278,7 @@ type
function GetNextNodeSkipChildren: TDOMNode; // first next sibling, then next sibling of parent, ... function GetNextNodeSkipChildren: TDOMNode; // first next sibling, then next sibling of parent, ...
function GetPreviousNode: TDOMNode; // the reverse of GetNext function GetPreviousNode: TDOMNode; // the reverse of GetNext
function GetLastLeaf: TDOMNode; // get last child of last child of ... function GetLastLeaf: TDOMNode; // get last child of last child of ...
function GetLevel: integer; // root node has 0 function GetLevel: SizeInt; // root node has 0
function InsertBefore({%H-}NewChild, {%H-}RefChild: TDOMNode): TDOMNode; virtual; function InsertBefore({%H-}NewChild, {%H-}RefChild: TDOMNode): TDOMNode; virtual;
function ReplaceChild({%H-}NewChild, {%H-}OldChild: TDOMNode): TDOMNode; virtual; function ReplaceChild({%H-}NewChild, {%H-}OldChild: TDOMNode): TDOMNode; virtual;
@ -314,6 +315,8 @@ type
extended implementation of TDOMNode, the generic DOM::Node interface extended implementation of TDOMNode, the generic DOM::Node interface
implementation. (Its main purpose is to save memory in a big node tree) } implementation. (Its main purpose is to save memory in a big node tree) }
{ TDOMNode_WithChildren }
TDOMNode_WithChildren = class(TDOMNode) TDOMNode_WithChildren = class(TDOMNode)
protected protected
FFirstChild, FLastChild: TDOMNode; FFirstChild, FLastChild: TDOMNode;
@ -330,6 +333,7 @@ type
function ReplaceChild(NewChild, OldChild: TDOMNode): TDOMNode; override; function ReplaceChild(NewChild, OldChild: TDOMNode): TDOMNode; override;
function DetachChild(OldChild: TDOMNode): TDOMNode; override; function DetachChild(OldChild: TDOMNode): TDOMNode; override;
function HasChildNodes: Boolean; override; function HasChildNodes: Boolean; override;
function GetChildCount: SizeInt; override;
function FindNode(const ANodeName: DOMString): TDOMNode; override; function FindNode(const ANodeName: DOMString): TDOMNode; override;
procedure InternalAppend(NewChild: TDOMNode); procedure InternalAppend(NewChild: TDOMNode);
end; end;
@ -1139,6 +1143,11 @@ begin
Result := FOwnerDocument.GetChildNodeList(Self); Result := FOwnerDocument.GetChildNodeList(Self);
end; end;
function TDOMNode.GetChildCount: SizeInt;
begin
Result:=0;
end;
function TDOMNode.GetEnumerator: TDOMNodeEnumerator; function TDOMNode.GetEnumerator: TDOMNodeEnumerator;
begin begin
Result:=TDOMNodeEnumerator.Create(Self); Result:=TDOMNodeEnumerator.Create(Self);
@ -1194,7 +1203,7 @@ begin
until false; until false;
end; end;
function TDOMNode.GetLevel: integer; function TDOMNode.GetLevel: SizeInt;
var var
Node: TDOMNode; Node: TDOMNode;
begin begin
@ -1710,6 +1719,23 @@ begin
Result := Assigned(FFirstChild); Result := Assigned(FFirstChild);
end; end;
function TDOMNode_WithChildren.GetChildCount: SizeInt;
var
Node: TDOMNode;
begin
if FFirstChild=nil then exit(0);
if FChildNodes<>nil then
Result:=FChildNodes.Count
else begin
Result:=0;
Node:=FFirstChild;
while Node<>nil do begin
inc(Result);
Node:=Node.NextSibling;
end;
end;
end;
function TDOMNode_WithChildren.FindNode(const ANodeName: DOMString): TDOMNode; function TDOMNode_WithChildren.FindNode(const ANodeName: DOMString): TDOMNode;
begin begin