I removed an unneeded LowerCase(), the css and html parsers will
already deliver only lowercase element names anyways.
Bernd
Index: components/turbopower_ipro/ipcss.inc
===================================================================
--- components/turbopower_ipro/ipcss.inc (Revision 34379)
+++ components/turbopower_ipro/ipcss.inc (Arbeitskopie)
@@ -96,7 +96,7 @@
{ TCSSGlobalProps }
TCSSGlobalProps = class
- FElements: TStringList;
+ FElements: TFPObjectHashTable;
public
constructor Create;
destructor Destroy; override;
@@ -482,6 +482,7 @@
end;
end;
+
{ TCSSReader }
function TCSSReader.GetStatementElements(AStatement: String): TStringList;
@@ -870,15 +871,13 @@
constructor TCSSGlobalProps.Create;
begin
- FElements := TStringList.Create;
+ FElements := TFPObjectHashTable.Create(True);
end;
destructor TCSSGlobalProps.Destroy;
var
i: Integer;
begin
- for i := 0 to FElements.Count-1 do
- FElements.Objects[i].Free;
FElements.Free;
inherited Destroy;
end;
@@ -889,21 +888,26 @@
ElementName: String;
procedure LookForElement(const aElement: string);
- var
- ElementIndex: Integer;
begin
if length(ClassID) > 0 then
- ElementName := Lowercase(aElement+'.'+ClassId)
+ ElementName := aElement + '.' + ClassId
else
- ElementName := lowercase(aElement);
+ ElementName := aElement;
- ElementIndex := FElements.IndexOf(ElementName);
+ // The element names are already lowercase, this is
+ // already done in the css parser. And the html parser
+ // can only deliver its own built-in node names anyways.
+ // Also the names are not expected to be longer than
+ // ShortString (this would need to be a ridiculously
+ // long ClassID), should this ever happen then
+ // it would be silently truncated in the following
+ // type conversion to ShortString.
+ {$warning GetElement() is called a *lot* of times, this
+ is one of the hot spots, maybe some of the AnsiString
+ usage around here could be avoided a little bit}
+ Result := TCSSProps(FElements.Items[ElementName]);
+ end;
- if ElementIndex>=0 then begin
- result := TCSSProps(FElements.Objects[ElementIndex]);
- end;
-
- end;
begin
Result := nil;
if (length(ClassID) = 0) and (length(AElementID) = 0) then
@@ -916,7 +920,7 @@
if (Result = nil) and CreateIfNotExist then
begin
Result := TCSSProps.Create;
- FElements.AddObject(ElementName, Result);
+ FElements.Add(ElementName, Result);
end;
end;
Index: components/turbopower_ipro/iphtml.pas
===================================================================
--- components/turbopower_ipro/iphtml.pas (Revision 34379)
+++ components/turbopower_ipro/iphtml.pas (Arbeitskopie)
@@ -63,6 +63,7 @@
Translations,
FileUtil,
LConvEncoding,
+ contnrs,
{$ELSE}
Windows,
{$ENDIF}
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus