prevent cases of superfluous indirections on `Items[i]`

This commit is contained in:
Basile Burg 2019-02-03 21:05:53 +01:00
parent c9fac84dab
commit 6750020d16
4 changed files with 69 additions and 40 deletions

View File

@ -903,7 +903,7 @@ begin
end;
{$ENDREGION --------------------------------------------------------------------}
{$REGION ICommonProject: sources ---------------------------------------------}
{$REGION ICommonProject: sources -----------------------------------------------}
function TDubProject.isSource(const fname: string): boolean;
var
str: string;

View File

@ -481,16 +481,20 @@ end;
procedure TMessagesWidget.ListKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
i: Integer;
i: integer;
n: TTreeNode;
begin
case Key of
VK_BACK, VK_DELETE:
begin
if List.SelectionCount > 0 then
begin
for i := List.Items.Count-1 downto 0 do
if List.Items[i].MultiSelected then
List.Items.Delete(List.Items[i]);
for i := List.Items.Count-1 downto 0 do
begin
n := List.Items[i];
if n.MultiSelected then
List.Items.Delete(n);
end;
end
else clearbyContext(amcAll);
end;
@ -720,23 +724,31 @@ end;
procedure TMessagesWidget.actCopyMsgExecute(Sender: TObject);
var
i: Integer;
str: string = '';
i: integer;
s: string = '';
n: TTreeNode;
begin
for i := 0 to List.Items.Count-1 do
if List.Items[i].MultiSelected then
str += List.Items[i].Text + LineEnding;
Clipboard.AsText := str;
begin
n := List.Items[i];
if n.MultiSelected then
s += n.Text + LineEnding;
end;
Clipboard.AsText := s;
end;
procedure TMessagesWidget.actSelAllExecute(Sender: TObject);
var
i: Integer;
i: integer;
n: TTreeNode;
begin
List.BeginUpdate;
for i := 0 to List.Items.Count-1 do
if List.Items[i].Visible then
List.Items[i].MultiSelected := true;
begin
n := List.Items[i];
if n.Visible then
n.MultiSelected := true;
end;
List.EndUpdate;
end;
@ -933,8 +945,9 @@ end;
procedure TMessagesWidget.clearByContext(aCtxt: TAppMessageCtxt);
var
i: Integer;
msgdt: PMessageData;
i: integer;
d: PMessageData;
n: TTreeNode;
begin
list.BeginUpdate;
TreeFilterEdit1.Filter := '';
@ -942,17 +955,19 @@ begin
List.Items.Clear
else for i := List.Items.Count-1 downto 0 do
begin
msgdt := PMessageData(List.Items[i].Data);
if msgdt^.ctxt = aCtxt then
List.Items.Delete(List.Items[i]);
n := List.Items[i];
d := PMessageData(n.Data);
if d^.ctxt = aCtxt then
List.Items.Delete(n);
end;
list.EndUpdate;
end;
procedure TMessagesWidget.clearByData(data: Pointer);
var
i: Integer;
msgdt: PMessageData;
i: integer;
d: PMessageData;
n: TTreeNode;
begin
if data.isNil then
exit;
@ -962,9 +977,10 @@ begin
TreeFilterEdit1.Filter := '';
for i := List.Items.Count-1 downto 0 do
begin
msgdt := PMessageData(List.Items[i].Data);
if (msgdt^.data = data) then
List.Items.Delete(List.Items[i]);
n := List.Items[i];
d := PMessageData(n.Data);
if (d^.data = data) then
List.Items.Delete(n);
end;
list.EndUpdate;
end;

View File

@ -850,7 +850,8 @@ procedure TSymbolListWidget.toolTerminated(sender: TObject);
var
i: Integer;
flt: string;
f: string;
n: TTreeNode;
begin
if ndAlias.isNil then
exit;
@ -866,7 +867,7 @@ begin
exit;
fSyms.LoadFromTool(fToolProc.StdoutEx);
flt := TreeFilterEdit1.Filter;
f := TreeFilterEdit1.Filter;
TreeFilterEdit1.Text := '';
tree.BeginUpdate;
for i := 0 to fSyms.symbols.Count-1 do
@ -880,18 +881,22 @@ begin
end;
if fSortSymbols then
for i:= 0 to tree.Items.Count-1 do
if Tree.Items[i].Count > 0 then
tree.Items[i].CustomSort(nil);
begin
n := Tree.Items[i];
if n.Count > 0 then
n.CustomSort(nil);
end;
if fSmartExpander then
smartExpand;
tree.EndUpdate;
if flt.isNotEmpty then
TreeFilterEdit1.Text := flt;
if f.isNotEmpty then
TreeFilterEdit1.Text := f;
end;
procedure TSymbolListWidget.smartExpand;
var
i: integer;
n: TTreeNode;
target: NativeUint;
nearest: NativeUint = 0;
toExpand: TTreeNode = nil;
@ -903,23 +908,24 @@ var
begin
for i := 0 to root.Count-1 do
begin
if root.Items[i].Data.isNil then
n := root.Items[i];
if n.Data.isNil then
continue;
if root.Items[i].Parent.isNil then
if n.Parent.isNil then
continue;
case root.Items[i].Parent.Text of
case n.Parent.Text of
'Alias', 'Enum', 'Import', 'Variable':
continue;
end;
{$PUSH}{$WARNINGS OFF}{$HINTS OFF}
line := NativeUInt(root.Items[i].Data);
line := NativeUInt(n.Data);
{$POP}
if line > target then
continue;
if line > nearest then
begin
nearest := line;
toExpand := root.Items[i];
toExpand := n;
end;
end;
end;

View File

@ -3056,11 +3056,13 @@ begin
IncPaintLock;
fDscannerResults.clear;
for i:= Marks.Count-1 downto 0 do
if marks.Items[i].ImageIndex = longint(giWarn) then
begin
n := marks.Items[i];
marks.Delete(i);
FreeAndNil(n);
if n.ImageIndex = longint(giWarn) then
begin
marks.Delete(i);
FreeAndNil(n);
end;
end;
DecPaintLock;
repaint;
@ -3851,10 +3853,14 @@ end;
procedure TDexedMemo.removeDebugTimeMarks;
var
i: integer;
n: TSynEditMark;
begin
IncPaintLock;
for i:= marks.Count-1 downto 0 do
Marks.Items[i].Visible := not (TGutterIcon(Marks.Items[i].ImageIndex) in debugTimeGutterIcons);
begin
n := Marks.Items[i];
n.Visible := not (TGutterIcon(n.ImageIndex) in debugTimeGutterIcons);
end;
DecPaintLock;
end;
@ -3898,8 +3904,9 @@ begin
if m.isNotNil then
for i := 0 to m.Count-1 do
begin
s := m.Items[i].ImageIndex = longint(value);
m.Items[i].Visible := s;
n := m.Items[i];
s := n.ImageIndex = longint(value);
n.Visible := s;
end;
if not s then
begin