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

Reply via email to