mirror of https://gitlab.com/basile.b/dexed.git
symlist, minor perf improvment
This commit is contained in:
parent
a4b604a60b
commit
015bdd6062
|
@ -3,7 +3,7 @@ module symlist;
|
||||||
import
|
import
|
||||||
core.stdc.string;
|
core.stdc.string;
|
||||||
import
|
import
|
||||||
std.array, std.traits, std.conv, std.json, std.format,
|
std.array, std.conv, std.json, std.format,
|
||||||
std.algorithm, std.string;
|
std.algorithm, std.string;
|
||||||
import
|
import
|
||||||
iz.memory: construct, destruct, MustAddGcRange, TellRangeAdded, NoGc;
|
iz.memory: construct, destruct, MustAddGcRange, TellRangeAdded, NoGc;
|
||||||
|
@ -85,6 +85,7 @@ enum SymbolType
|
||||||
|
|
||||||
string makeSymbolTypeArray()
|
string makeSymbolTypeArray()
|
||||||
{
|
{
|
||||||
|
import std.traits : EnumMembers;
|
||||||
string result = "string[SymbolType.max + 1] symbolTypeStrings = [";
|
string result = "string[SymbolType.max + 1] symbolTypeStrings = [";
|
||||||
foreach(st; EnumMembers!SymbolType)
|
foreach(st; EnumMembers!SymbolType)
|
||||||
result ~= `"` ~ to!string(st) ~ `",`;
|
result ~= `"` ~ to!string(st) ~ `",`;
|
||||||
|
@ -306,11 +307,6 @@ static assert (!MustAddGcRange!(SymbolListBuilder!(ListFmt.Pas)));
|
||||||
namedVisitorImpl!(AnonymousEnumMember, SymbolType._enum)(decl);
|
namedVisitorImpl!(AnonymousEnumMember, SymbolType._enum)(decl);
|
||||||
}
|
}
|
||||||
|
|
||||||
override void visit(const AnonymousEnumDeclaration decl)
|
|
||||||
{
|
|
||||||
decl.accept(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
override void visit(const AutoDeclarationPart decl)
|
override void visit(const AutoDeclarationPart decl)
|
||||||
{
|
{
|
||||||
otherVisitorImpl(decl, SymbolType._variable, decl.identifier.text,
|
otherVisitorImpl(decl, SymbolType._variable, decl.identifier.text,
|
||||||
|
@ -437,21 +433,38 @@ static assert (!MustAddGcRange!(SymbolListBuilder!(ListFmt.Pas)));
|
||||||
otherVisitorImpl(decl, SymbolType._function, "shared static dtor", decl.line, decl.column);
|
otherVisitorImpl(decl, SymbolType._function, "shared static dtor", decl.line, decl.column);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override void visit(const AliasInitializer) {}
|
||||||
|
override void visit(const AlignAttribute) {}
|
||||||
|
override void visit(const ArrayInitializer) {}
|
||||||
|
override void visit(const AsmStatement) {}
|
||||||
|
override void visit(const AtAttribute) {}
|
||||||
|
override void visit(const Attribute) {}
|
||||||
|
override void visit(const AttributeDeclaration) {}
|
||||||
|
override void visit(const BaseClassList) {}
|
||||||
|
override void visit(const BreakStatement) {}
|
||||||
|
override void visit(const Catches) {}
|
||||||
|
override void visit(const Constraint) {}
|
||||||
|
override void visit(const ContinueStatement) {}
|
||||||
|
override void visit(const Deprecated) {}
|
||||||
override void visit(const Expression) {}
|
override void visit(const Expression) {}
|
||||||
override void visit(const ExpressionNode) {}
|
override void visit(const ExpressionNode) {}
|
||||||
override void visit(const ExpressionStatement) {}
|
override void visit(const ExpressionStatement) {}
|
||||||
override void visit(const PragmaStatement) {}
|
override void visit(const FunctionAttribute) {}
|
||||||
override void visit(const Initializer) {}
|
|
||||||
override void visit(const FunctionContract) {}
|
override void visit(const FunctionContract) {}
|
||||||
override void visit(const AsmStatement) {}
|
|
||||||
override void visit(const ReturnStatement) {}
|
|
||||||
override void visit(const BreakStatement) {}
|
|
||||||
override void visit(const ContinueStatement) {}
|
|
||||||
override void visit(const GotoStatement) {}
|
override void visit(const GotoStatement) {}
|
||||||
|
override void visit(const Initializer) {}
|
||||||
|
override void visit(const LabeledStatement) {}
|
||||||
|
override void visit(const MemberFunctionAttribute){}
|
||||||
override void visit(const MixinDeclaration) {}
|
override void visit(const MixinDeclaration) {}
|
||||||
|
override void visit(const NamespaceList) {}
|
||||||
|
override void visit(const PragmaStatement) {}
|
||||||
|
override void visit(const ReturnStatement) {}
|
||||||
|
override void visit(const StaticAssertDeclaration){}
|
||||||
|
override void visit(const StaticAssertStatement){}
|
||||||
|
override void visit(const StructInitializer) {}
|
||||||
|
override void visit(const SynchronizedStatement){}
|
||||||
|
override void visit(const ThrowStatement) {}
|
||||||
override void visit(const Type) {}
|
override void visit(const Type) {}
|
||||||
override void visit(const Type2) {}
|
override void visit(const Type2) {}
|
||||||
override void visit(const StaticAssertStatement){}
|
|
||||||
override void visit(const StaticAssertDeclaration){}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -847,12 +847,12 @@ begin
|
||||||
if fTreeDataFromThread.isEmpty or ndAlias.isNil then
|
if fTreeDataFromThread.isEmpty or ndAlias.isNil then
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
|
tree.BeginUpdate;
|
||||||
clearTree;
|
clearTree;
|
||||||
updateVisibleCat;
|
updateVisibleCat;
|
||||||
fSyms.LoadFromString(fTreeDataFromThread);
|
fSyms.LoadFromString(fTreeDataFromThread);
|
||||||
f := TreeFilterEdit1.Filter;
|
f := TreeFilterEdit1.Filter;
|
||||||
TreeFilterEdit1.Text := '';
|
TreeFilterEdit1.Text := '';
|
||||||
tree.BeginUpdate;
|
|
||||||
for i := 0 to fSyms.symbols.Count-1 do
|
for i := 0 to fSyms.symbols.Count-1 do
|
||||||
symbolToTreeNode(nil, fSyms.symbols[i]);
|
symbolToTreeNode(nil, fSyms.symbols[i]);
|
||||||
if fAutoExpandErrors then
|
if fAutoExpandErrors then
|
||||||
|
@ -871,9 +871,9 @@ begin
|
||||||
end;
|
end;
|
||||||
if fSmartExpander then
|
if fSmartExpander then
|
||||||
smartExpand;
|
smartExpand;
|
||||||
tree.EndUpdate;
|
|
||||||
if f.isNotEmpty then
|
if f.isNotEmpty then
|
||||||
TreeFilterEdit1.Text := f;
|
TreeFilterEdit1.Text := f;
|
||||||
|
tree.EndUpdate;
|
||||||
minimizeGcHeap();
|
minimizeGcHeap();
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -881,14 +881,14 @@ procedure TSymbolListWidget.smartExpand;
|
||||||
var
|
var
|
||||||
i: integer;
|
i: integer;
|
||||||
n: TTreeNode;
|
n: TTreeNode;
|
||||||
target: NativeUint;
|
target: PtrUInt;
|
||||||
nearest: NativeUint = 0;
|
nearest: PtrUInt = 0;
|
||||||
toExpand: TTreeNode = nil;
|
toExpand: TTreeNode = nil;
|
||||||
|
|
||||||
procedure look(root: TTreeNode);
|
procedure look(root: TTreeNode);
|
||||||
var
|
var
|
||||||
i: integer;
|
i: integer;
|
||||||
line: NativeUint;
|
j: PtrUInt;
|
||||||
begin
|
begin
|
||||||
for i := 0 to root.Count-1 do
|
for i := 0 to root.Count-1 do
|
||||||
begin
|
begin
|
||||||
|
@ -897,19 +897,20 @@ var
|
||||||
continue;
|
continue;
|
||||||
if n.Parent.isNil then
|
if n.Parent.isNil then
|
||||||
continue;
|
continue;
|
||||||
case n.Parent.Text of
|
if (n.Parent = ndAlias)
|
||||||
'Alias', 'Enum', 'Import', 'Variable':
|
or (n.Parent = ndEnum)
|
||||||
|
or (n.Parent = ndImp)
|
||||||
|
or (n.Parent = ndVar) then
|
||||||
continue;
|
continue;
|
||||||
end;
|
|
||||||
{$PUSH}{$WARNINGS OFF}{$HINTS OFF}
|
{$PUSH}{$WARNINGS OFF}{$HINTS OFF}
|
||||||
line := NativeUInt(n.Data);
|
j := NativeUInt(n.Data);
|
||||||
{$POP}
|
{$POP}
|
||||||
if line > target then
|
if j > target then
|
||||||
continue;
|
continue;
|
||||||
if line > nearest then
|
if j > nearest then
|
||||||
begin
|
begin
|
||||||
nearest := line;
|
nearest := j;
|
||||||
toExpand := n;
|
toExpand := n;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
Loading…
Reference in New Issue