in src/main/abi-symbols/abi-dumper.pl [5733:5796]
sub registerSymbolUsage($)
{
my $InfoId = $_[0];
my %FuncInfo = %{$SymbolInfo{$InfoId}};
if(my $S = $FuncInfo{"Source"}) {
$SourcesInfo{$S} = 1;
}
if(my $H = $FuncInfo{"Header"}) {
$HeadersInfo{$H} = 1;
}
if(my $RTid = getFirst($FuncInfo{"Return"}))
{
registerTypeUsage($RTid);
$SymbolInfo{$InfoId}{"Return"} = $RTid;
}
if(my $FCid = getFirst($FuncInfo{"Class"}))
{
registerTypeUsage($FCid);
$SymbolInfo{$InfoId}{"Class"} = $FCid;
if(my $ThisId = getTypeIdByName("Const", $TypeInfo{$FCid}{"Name"}."*const"))
{ # register "this" pointer
registerTypeUsage($ThisId);
}
if(my $ThisId_C = getTypeIdByName("Const", $TypeInfo{$FCid}{"Name"}." const*const"))
{ # register "this" pointer (const method)
registerTypeUsage($ThisId_C);
}
}
foreach my $PPos (keys(%{$FuncInfo{"Param"}}))
{
if(my $PTid = getFirst($FuncInfo{"Param"}{$PPos}{"type"}))
{
registerTypeUsage($PTid);
$SymbolInfo{$InfoId}{"Param"}{$PPos}{"type"} = $PTid;
}
}
foreach my $TPos (keys(%{$FuncInfo{"TParam"}}))
{
if(my $TTid = $FuncInfo{"TParam"}{$TPos}{"type"})
{
if($TTid = getFirst($TTid))
{
registerTypeUsage($TTid);
$SymbolInfo{$InfoId}{"TParam"}{$TPos}{"type"} = $TTid;
delete($SymbolInfo{$InfoId}{"TParam"}{$TPos}{"name"});
}
}
elsif(my $TPName = $FuncInfo{"TParam"}{$TPos}{"name"})
{
if(my $TTid = searchTypeID($TPName))
{
if(my $FTTid = getFirst($TTid))
{
registerTypeUsage($FTTid);
$SymbolInfo{$InfoId}{"TParam"}{$TPos}{"type"} = $TTid;
delete($SymbolInfo{$InfoId}{"TParam"}{$TPos}{"name"});
}
}
}
}
}