(FILECREATED "18-Dec-86 18:27:09" {QV}<NOTECARDS>1.3K>NEXT>RGPATCH007.;2 2584 changes to: (FNS NC.MakeChildLink NC.EnsureNoCycles) (VARS RGPATCH007COMS) previous date: "18-Dec-86 18:26:12" {QV}<NOTECARDS>1.3K>NEXT>RGPATCH007.;1) (* Copyright (c) 1986 by Xerox Corporation. All rights reserved.) (PRETTYCOMPRINT RGPATCH007COMS) (RPAQQ RGPATCH007COMS ((* * new fn for NCLINKS) (FNS NC.EnsureNoCycles) (P (ADDTOFILE (QUOTE NC.EnsureNoCycles) (QUOTE FNS) (QUOTE NCLINKS) (QUOTE NC.MakeChildLink))) (* * changes to NCLINKS) (FNS NC.MakeChildLink))) (* * new fn for NCLINKS) (DEFINEQ (NC.EnsureNoCycles [LAMBDA (Parent Child LinkPredicate InterestedWindow) (* Randy.Gobbel "18-Dec-86 18:14") (* * Return T if no cycles via specified link predicate, else NIL.) (COND ([for Link in (NC.FetchToLinks Parent) thereis (AND (APPLY* LinkPredicate Link) (NC.SameCardP Child (fetch (Link DestinationCard) of Link] (NC.PrintMsg InterestedWindow NIL (NC.RetrieveTitle Child) " is already a child of " (NC.RetrieveTitle Parent) (CHARACTER 13)) NIL) ((AND (NEQ Parent Child) (NC.NotDaughterP Child Parent LinkPredicate)) T) (T (NC.PrintMsg InterestedWindow T (NC.RetrieveTitle Child) " is an ancestor of " (NC.RetrieveTitle Parent) (CHARACTER 13)) NIL]) ) (ADDTOFILE (QUOTE NC.EnsureNoCycles) (QUOTE FNS) (QUOTE NCLINKS) (QUOTE NC.MakeChildLink)) (* * changes to NCLINKS) (DEFINEQ (NC.MakeChildLink [LAMBDA (Child Parent Window) (* Randy.Gobbel "18-Dec-86 18:26") (* * Tries to add Child as a child of Parent using either FiledCard or SubBox link as appropriate. Won't allow if would cause a cycle. Returns new link if successful, else NIL.) (* * kirk 14Nov85: deleted use of PSA.Database) (* * rg 12/18/86: Cycle-checking code moved to NC.EnsureNoCycles) (DECLARE (GLOBALVARS NC.SubBoxLinkLabel NC.FiledCardLinkLabel)) (AND (NC.EnsureNoCycles Parent Child (FUNCTION NC.ChildLinkP) Window) (NC.MakeFilingLink Parent Child (if (NC.FileBoxP Child T) then NC.SubBoxLinkLabel else NC.FiledCardLinkLabel]) ) (PUTPROPS RGPATCH007 COPYRIGHT ("Xerox Corporation" 1986)) (DECLARE: DONTCOPY (FILEMAP (NIL (661 1565 (NC.EnsureNoCycles 671 . 1563)) (1700 2503 (NC.MakeChildLink 1710 . 2501))))) STOP