1 2(PUT '|TUBE;getCurve;$Curve;1| '|SPADreplace| '(XLAM (|plot|) (QVELT |plot| 0))) 3 4(SDEFUN |TUBE;getCurve;$Curve;1| ((|plot| $) ($ |Curve|)) (QVELT |plot| 0)) 5 6(PUT '|TUBE;listLoops;$L;2| '|SPADreplace| '(XLAM (|plot|) (QVELT |plot| 1))) 7 8(SDEFUN |TUBE;listLoops;$L;2| 9 ((|plot| $) ($ |List| (|List| (|Point| (|DoubleFloat|))))) 10 (QVELT |plot| 1)) 11 12(PUT '|TUBE;closed?;$B;3| '|SPADreplace| '(XLAM (|plot|) (QVELT |plot| 2))) 13 14(SDEFUN |TUBE;closed?;$B;3| ((|plot| $) ($ |Boolean|)) (QVELT |plot| 2)) 15 16(SDEFUN |TUBE;open?;$B;4| ((|plot| $) ($ |Boolean|)) (NULL (QVELT |plot| 2))) 17 18(PUT '|TUBE;setClosed;$2B;5| '|SPADreplace| 19 '(XLAM (|plot| |flag|) (QSETVELT |plot| 2 |flag|))) 20 21(SDEFUN |TUBE;setClosed;$2B;5| ((|plot| $) (|flag| |Boolean|) ($ |Boolean|)) 22 (QSETVELT |plot| 2 |flag|)) 23 24(PUT '|TUBE;tube;CurveLB$;6| '|SPADreplace| 'VECTOR) 25 26(SDEFUN |TUBE;tube;CurveLB$;6| 27 ((|curve| |Curve|) (|ll| |List| (|List| (|Point| (|DoubleFloat|)))) 28 (|b| |Boolean|) ($ $)) 29 (VECTOR |curve| |ll| |b|)) 30 31(DECLAIM (NOTINLINE |TubePlot;|)) 32 33(DEFUN |TubePlot| (#1=#:G410) 34 (SPROG NIL 35 (PROG (#2=#:G411) 36 (RETURN 37 (COND 38 ((LETT #2# 39 (|lassocShiftWithFunction| (LIST (|devaluate| #1#)) 40 (HGET |$ConstructorCache| 41 '|TubePlot|) 42 '|domainEqualList|)) 43 (|CDRwithIncrement| #2#)) 44 ('T 45 (UNWIND-PROTECT (PROG1 (|TubePlot;| #1#) (LETT #2# T)) 46 (COND ((NOT #2#) (HREM |$ConstructorCache| '|TubePlot|)))))))))) 47 48(DEFUN |TubePlot;| (|#1|) 49 (SPROG ((|pv$| NIL) ($ NIL) (|dv$| NIL) (DV$1 NIL)) 50 (PROGN 51 (LETT DV$1 (|devaluate| |#1|)) 52 (LETT |dv$| (LIST '|TubePlot| DV$1)) 53 (LETT $ (GETREFV 16)) 54 (QSETREFV $ 0 |dv$|) 55 (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL))) 56 (|haddProp| |$ConstructorCache| '|TubePlot| (LIST DV$1) (CONS 1 $)) 57 (|stuffDomainSlots| $) 58 (QSETREFV $ 6 |#1|) 59 (SETF |pv$| (QREFELT $ 3)) 60 (QSETREFV $ 7 61 (|Record| (|:| |parCurve| |#1|) 62 (|:| |loops| 63 (|List| (|List| (|Point| (|DoubleFloat|))))) 64 (|:| |closedTube?| (|Boolean|)))) 65 $))) 66 67(MAKEPROP '|TubePlot| '|infovec| 68 (LIST 69 '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) '|Rep| 70 |TUBE;getCurve;$Curve;1| 71 (|List| (|List| (|Point| (|DoubleFloat|)))) |TUBE;listLoops;$L;2| 72 (|Boolean|) |TUBE;closed?;$B;3| |TUBE;open?;$B;4| 73 |TUBE;setClosed;$2B;5| |TUBE;tube;CurveLB$;6|) 74 '#(|tube| 0 |setClosed| 7 |open?| 13 |listLoops| 18 |getCurve| 23 75 |closed?| 28) 76 'NIL 77 (CONS (|makeByteWordVec2| 1 '(0)) 78 (CONS '#(NIL) 79 (CONS 80 '#((|Join| 81 (|mkCategory| 82 (LIST '((|getCurve| (|#1| $$)) T) 83 '((|listLoops| 84 ((|List| 85 (|List| (|Point| (|DoubleFloat|)))) 86 $$)) 87 T) 88 '((|closed?| ((|Boolean|) $$)) T) 89 '((|open?| ((|Boolean|) $$)) T) 90 '((|setClosed| ((|Boolean|) $$ (|Boolean|))) 91 T) 92 '((|tube| 93 ($$ |#1| 94 (|List| 95 (|List| (|Point| (|DoubleFloat|)))) 96 (|Boolean|))) 97 T)) 98 (LIST) NIL NIL))) 99 (|makeByteWordVec2| 15 100 '(3 0 0 6 9 11 15 2 0 11 0 11 14 1 101 0 11 0 13 1 0 9 0 10 1 0 6 0 8 1 102 0 11 0 12))))) 103 '|lookupComplete|)) 104