macro IsUsed(symbol)
{
var search_buf;
var search_count;
var link_recrod;
var link_buf;
var ref_sym;
var is_used;
var i;
is_used = False;
if (symbol == Nil) {
return is_used;
}
search_buf = NewBuf("Search");
if (search_buf == hNil) {
Msg("new buf failed.");
stop;
}
SearchForRefs(search_buf, symbol, False);
search_count = GetBufLineCount(search_buf);
i = 0;
while (i < search_count) {
link_recrod = GetSourceLink(search_buf, i);
i = i + 1;
if (link_recrod == Nil) {
continue;
}
link_buf = OpenBuf(link_recrod.File);
ref_sym = GetSymbolLocationFromLn(link_buf, link_recrod.ln);
// CloseBuf(link_buf);
if (ref_sym == Nil) {
continue;
}
// Msg(ref_sym.Symbol # " " # ref_sym.File # " " # ref_sym.lnFirst);
if (ref_sym.Symbol != symbol) {
is_used = True;
break;
}
}
CloseBuf(search_buf);
return is_used;
}
macro CheckIsUsed()
{
var data_file_name;
var data_file_buf;
var data_file_count;
var data_file_line;
var used_record_buf;
var used_record_name;
var i;
var is_used;
data_file_name = "Data.txt";
used_record_name = "used_record.txt";
used_record_buf = NewBuf(used_record_name);
SetCurrentBuf(used_record_buf);
data_file_buf = OpenBuf(data_file_name);
data_file_count = GetBufLineCount(data_file_buf);
i = 0;
while (i < data_file_count) {
data_file_line = GetBufLine(data_file_buf, i);
i = i + 1;
is_used = IsUsed(data_file_line);
AppendBufLine(used_record_buf, data_file_line # "," # is_used);
}
}