ZealOS/src/Demo/DolDoc/UnusedDefine.ZC
TomAwezome 3a33e6baaf Rename CosmiC to ZealC.
Rename all .CC files to .ZC extension.
2021-12-11 06:21:22 -05:00

94 lines
1.8 KiB
HolyC
Executable file

/*Scans the symbol table and checks
each $LK,"HTT_DEFINE_STR",A="MN:HTT_DEFINE_STR"$ entry to see if
it only occurs once in files.
It's a brute force solution, but
gets the job done... slowly.
$LK,"Find",A="MN:Find"$() returns a count of matches.
$LK,"FileOcc",A="MN:FileOcc"$() is $LK,"Find",A="MN:Find"$() with
output $LK,"Silent",A="MN:Silent"$().
*/
U0 UnusedDefineScan()
{
CDoc *old_put_doc, *old_display_doc, *doc;
I64 i, count = 0;
CHashTable *table;
CHash *tmph;
CDocEntry *doc_e, *doc_e2;
Bool old_silent = IsSilent;
try
{
table = Fs->hash_table;
while (table)
{
for (i = 0; i <= table->mask; i++)
{
tmph = table->body[i];
while (tmph)
{
if (tmph->type & HTT_DEFINE_STR)
count++;
tmph = tmph->next;
}
}
table = table->next;
}
progress1 = 0;
progress1_max = count;
StrCopy(progress1_desc, "Define Scan");
table = Fs->hash_table;
while (table)
{
for (i = 0; i <= table->mask; i++)
{
tmph = table->body[i];
while (tmph)
{
if (tmph->type & HTT_DEFINE_STR)
{
progress1++;
if (FileOcc(tmph->str, "/*", "+l-i+$$") == 1)
{
doc = DocNew;
old_put_doc = DocPut;
old_display_doc = DocDisplay;
Fs->put_doc = Fs->display_doc=doc;
Find(tmph->str, "/*", "+l-i+$$");
Fs->put_doc = old_put_doc;
Fs->display_doc = old_display_doc;
doc_e = doc->head.next;
while (doc_e != doc)
{
if (doc_e->type_u8 == DOCT_LINK)
{
"%s ", tmph->str;
doc_e2 = DocEntryCopy(doc, doc_e);
DocInsEntry(old_put_doc, doc_e2);
'\n';
}
doc_e = doc_e->next;
}
DocDel(doc);
}
}
tmph = tmph->next;
}
}
table = table->next;
}
}
catch
PutExcept;
Silent(old_silent);
'\n';
ProgressBarsReset;
}
UnusedDefineScan;