Files
context/_reports/sealing_line.ll
2019-09-28 10:14:18 -04:00

47 lines
1.3 KiB
LLVM

/*
* @progname sealing_line.ll
* @version none
* @author Tom Wetmore
* @category
* @output function, and driver writing Text
* @description
function sealing_line().
You pass it a person, and it returns the person's
sealing line (if there is one) or nothing (if there isn't). The main
program is only used here to test it. You would call "sealing_line" in the
place you need it in your own program. Yes, it is a little complicated,
but that's why we have modules. Write it, stick it in some library
somewhere, and just call it when you need the info.
Tom Wetmore
*/
proc main ()
{
getindi(i)
if (not(i)) { return() }
if (l, sealing_line(i)) {
print("yes\n")
print(tag(l), " ", value(l), "\n")
} else {
print("no")
}
}
func sealing_line (i)
{
set(f, parents(i))
if (not(f)) { return(0) }
set(ir, inode(i)) set(fr, fnode(f))
fornodes(fr, s) {
if(and(eqstr("CHIL", tag(s)), eqstr(xref(ir), value(s)))) {
fornodes(s, ss) {
if(eqstr("SLGC", tag(ss))) { return(ss) }
}
return(0)
}
}
return (0)
}