laz_writer: reduced temporary objects

git-svn-id: trunk@12111 -
This commit is contained in:
mattias 2007-09-21 11:23:09 +00:00
parent 2a4cf8b92f
commit 6a971cab15
3 changed files with 24 additions and 14 deletions

View File

@ -26,10 +26,10 @@
</RunParams>
<RequiredPackages Count="2">
<Item1>
<PackageName Value="CodeTools"/>
<PackageName Value="LCL"/>
</Item1>
<Item2>
<PackageName Value="LCL"/>
<PackageName Value="CodeTools"/>
</Item2>
</RequiredPackages>
<Units Count="3">

View File

@ -203,6 +203,8 @@ type
function Release: LongInt; virtual;
end;
{ TDOMNode }
TDOMNode = class
protected
FNodeName, FNodeValue: DOMString;
@ -241,6 +243,7 @@ type
function AppendChild(NewChild: TDOMNode): TDOMNode; virtual;
function HasChildNodes: Boolean; virtual;
function CloneNode(deep: Boolean): TDOMNode; overload;
function IsEmpty: Boolean; virtual;
// Extensions to DOM interface:
function CloneNode(deep: Boolean; ACloneOwner: TDOMDocument): TDOMNode; overload; virtual;
@ -445,7 +448,7 @@ type
function RemoveAttributeNode(OldAttr: TDOMAttr): TDOMAttr;
// Free NodeList with TDOMNodeList.Release!
function GetElementsByTagName(const name: DOMString): TDOMNodeList;
function IsEmpty: Boolean;
function IsEmpty: Boolean; override;
procedure Normalize;
property AttribStrings[const Name: DOMString]: DOMString
@ -728,6 +731,11 @@ begin
Result:=CloneNode(deep, FOwnerDocument);
end;
function TDOMNode.IsEmpty: Boolean;
begin
Result:=true;
end;
function TDOMNode.CloneNode(deep: Boolean; ACloneOwner: TDOMDocument): TDOMNode;
begin
raise EDOMNotSupported.Create('CloneNode not implemented for ' + ClassName);

View File

@ -248,17 +248,19 @@ begin
wrtIndent;
wrtChr('<');
wrtStr(node.NodeName);
for i := 0 to node.Attributes.Length - 1 do
begin
attr := node.Attributes.Item[i];
wrtChr(' ');
wrtStr(attr.NodeName);
wrtChr('=');
s := attr.NodeValue;
// !!!: Replace special characters in "s" such as '&', '<', '>'
wrtChr('"');
ConvWrite(s, AttrSpecialChars, @AttrSpecialCharCallback);
wrtChr('"');
if not (node.IsEmpty) then begin
for i := 0 to node.Attributes.Length - 1 do
begin
attr := node.Attributes.Item[i];
wrtChr(' ');
wrtStr(attr.NodeName);
wrtChr('=');
s := attr.NodeValue;
// !!!: Replace special characters in "s" such as '&', '<', '>'
wrtChr('"');
ConvWrite(s, AttrSpecialChars, @AttrSpecialCharCallback);
wrtChr('"');
end;
end;
Child := node.FirstChild;
if Child = nil then begin