mirror of
https://github.com/kennethreitz/context.git
synced 2026-06-05 23:00:17 +00:00
47 lines
1.3 KiB
LLVM
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)
|
|
}
|